2016-04-10 3 views
0

В схеме я пытаюсь выполнить итерацию по списку, добавляя каждый элемент из части списка.Добавление элементов в схему списка

Например, если у меня есть ((1 2 5) (1 2) (1 5) (1) (2 5) (2) (5)()) для списка, я пытаюсь добавить первая часть (1 2 5), а затем вторая часть (1 2) и т. д., чтобы увидеть, добавляет ли каждый элемент к определенному числу.

Надеюсь, что это имеет смысл, попытался изо всех сил объяснить это.

Если кто-то может помочь мне разобраться в этой проблеме, я бы очень признателен.

ответ

0

Для добавления номера из (небольшой) список можно использовать apply:

> (apply + '(1 2 3)) 
6 

, который так же, как

> (+ 1 2 3) 
6 

Для того, чтобы применить это к списку подсписков, использование map:

(define (f lst) 
    (map (lambda (sublst) (apply + sublst)) 
     lst)) 

> (f '((1 2 5) (1 2) (1 5) (1) (2 5) (2) (5)())) 
'(8 3 6 1 7 2 5 0) 

для большего списка вы можете заменить apply от foldl или эквивалент.

+0

спасибо !! Это именно то, что я искал. – Rosie

Смежные вопросы