You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scheme单词翻译器运行报错:In procedure cadr: Wrong type (expecting pair): #f

Scheme单词翻译器错误修复

错误根源在于类型不匹配:data列表中的键是符号(如hallo),但你传入的查询值是字符串(如"hallo")。assoc函数默认使用eq?进行比较,不同类型的值永远不相等,导致assoc返回#f,后续调用cadr处理#f时触发类型错误。

以下是两种可行的修复方案:

方案1:统一使用符号作为查询键

将查询列表中的字符串改为符号,让assoc能正确匹配到对应条目:

(define data '((hallo hello)
               (apfel apple)
               (welt world)))

(map (lambda (i) (display (cadr (assoc i data)))) (list 'hallo 'apfel 'welt))

方案2:兼容字符串输入

如果需要保留字符串作为查询输入,可以自定义一个基于字符串比较的查找函数,将data中的符号转换为字符串后再匹配:

(define data '((hallo hello)
               (apfel apple)
               (welt world)))

(define (assoc-str str lst)
  (cond
    ((null? lst) #f)
    ((string=? str (symbol->string (caar lst))) (car lst))
    (else (assoc-str str (cdr lst)))))

(map (lambda (i) (display (cadr (assoc-str i data)))) (list "hallo" "apfel" "welt"))

内容的提问来源于stack exchange,提问作者Etlam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:50:04