【发布时间】:2013-07-14 21:14:43
【问题描述】:
基本上,我想使用地图在列表中进行选择
(define tbl '(a b c d))
(map (lambda (item 'c) (if (eq? item 'c) item (...what in else?) )))
我想要的结果是
'(c)
我尝试将 else 部分留空,它抱怨需要 else 部分。 我试过了
(display "foo")
作为其他部分并得到了
(#<void> #<void> c #<void>)
这很接近。
有什么方法可以使用 map 来获取 '(c)?我知道递归方式,但我想知道 map 是否也可以这样做。如果不是 '(c),至少 (##c#) 但不使用显示 hack 来实现 void 类型的返回值。
【问题讨论】:
-
顺便说一句:
lambda作为参数传递给map必须接收一个 single 参数,你传递了两个,这将不起作用:@987654327 @ -
你用的是什么解释器?我的猜测是球拍,但请确认
-
@Óscar López,是的,是 Racket,但我希望解决方案可以通用
-
使用
filter和lambda,我知道的任何解释器都可以使用。 -
@ÓscarLópez MIT Scheme 说:
;Unbound variable: filter.
标签: functional-programming scheme lisp racket map-function