【发布时间】:2014-07-21 17:48:39
【问题描述】:
我正在尝试编写递归方案函数,该函数返回名称等于给定名称的绑定(对)。如果未找到此类绑定,则返回空列表。关联列表是名称与值的绑定列表:((name1 val1) ... (namet valuet))。
(define (lookup name assoc_list)
(cond
((null? assoc_list) '())
((equal? name (car (car assoc_list))) car(assoc_list))
(else (lookup name (cdr L)))))
我测试过
(define l1 '( (ben "short") (cara "walking") (dan "bald")))
(lookup (car(car l1)) l1)
它失败了 但如果我这样做了
(define (look name assoc_list)
(cond
((null? assoc_list) #f)
((equal? name (car (car assoc_list))) #t)
(else (lookup name (cdr L)))))
并在方案中运行它
(define l1 '( (ben "short") (cara "walking") (dan "bald")))
(lookup (car(car l1)) l1)
它返回#t
为什么不归还车(assoc_list) 接下来我要编写一个递归函数(lookup-env 名称环境),它返回一个环境中具有指定名称的绑定(即关联列表的列表),如果没有找到这样的绑定,则返回 null
环境可以由关联列表的列表(即符号表列表)表示,其中列表中的第一个元素是最近的范围,第二个是下一个周围的范围,最后一个是最外层的范围。
【问题讨论】:
-
您是否考虑接受任何答案?如果没有,现有答案中缺少什么?
标签: scheme