Использование процедуры и карты в схеме - PullRequest
0 голосов
/ 03 августа 2010

Я очень новичок в Схеме и постепенно нахожу способ обойти ее.

У меня есть некоторые сомнения по поводу Процедур и Карты, на которые, я надеюсь, можно будет ответить.

(map plus1 (list 1 2 3 4))

будетв основном возвращает мне результат:

(2 3 4 5)

Хорошо, если процедура принимает в качестве единственного параметра список.Мой вопрос заключается в том, как я могу использовать процедуру, подобную такой, которая использует два параметра с картой?

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

Заранее спасибо за помощь и советы.

Ответы [ 3 ]

3 голосов
/ 03 августа 2010

Может быть вот так?

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

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

; => (list 5 7 9)

1 голос
/ 03 августа 2010
(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 и для других целей.

0 голосов
/ 03 августа 2010

Используйте два списка.Посмотрите, что происходит:

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