方案错误未知标识符:使用高阶函数时映射



本质上,我正在尝试编写一个scheme方法,该方法将使用map函数对列表中的每个项进行多维数据集。因此它将从‘(1 2 3 4(变为‘(1 8 27 64(。这是我当前的代码:

(define (cube-all lst) 
(map (lambda (x) (* (* x x) x)) lst)
)

这是错误消息:

SchemeError: unknown identifier: map
Current Eval Stack:
-------------------------
0: map
1: (cube-all (quote (1 2 3 4)))
2: (println (cube-all (quote (1 2 3 4))))

这是因为语法不正确吗?还是我必须用地图做其他事情?

编辑:println是另一个只显示答案的功能

如果您被限制使用注释中提到的"scheme",则不能使用map

但是。。。您可以写入map:

(define (reverse l)
(define (reverse-loop lt into)
(if (null? lt)
into
(reverse-loop (cdr lt) (cons (car lt) into))))
(reverse-loop l '()))
(define (map f l)
(define (map-loop lt into)
(if (null? lt)
(reverse into)
(map-loop (cdr lt) (cons (f (car lt)) into))))
(map-loop l '()))
(define (cube-all lst) 
(map (lambda (x) (* (* x x) x)) lst))
(cube-all '(1 2 3))

最新更新