在程序中使用过程和映射

时间:2010-08-03 11:24:27

标签: list scheme racket

我是Scheme的新手,我正在慢慢找到解决方法。

我对程序和地图有些怀疑,我希望可以回答。

(map plus1 (list 1 2 3 4))

基本上会把结果归还给我:

(2 3 4 5)

如果过程将列表作为唯一参数,则可以。我的问题是我如何能够使用像Map这样的过程来获取2个参数?

(define plus(m list)
    (+ m list))

提前感谢您的帮助和建议。

3 个答案:

答案 0 :(得分:2)

也许是这样的?

(define (plus m n) (+ m n))

(map plus (list 1 2 3) (list 4 5 6))

; => (list 5 7 9)

答案 1 :(得分:1)

(define (plus m xs)
  (map (lambda (x) (+ m x)) xs))

(define (adder m)
  (lambda (x) (+ m x)))

(define plus (m xs)
  (map (adder m) xs))

允许您将adder函数重用于其他内容。

答案 2 :(得分:0)

使用两个列表。看看会发生什么:

guile> (map (lambda (x y) (+ x y)) '(1 2 3) '(4 5 6))
(5 7 9)