Любой способ отобразить функции с более чем одним аргументом в схеме / ракетке? - PullRequest
1 голос
/ 03 октября 2019

В настоящее время я делаю вводный курс по Ракетке / Схеме, и в настоящее время я изучаю карту, применять и складывать. По большей части я предполагал, что карта может работать только на лямбдах, которые принимают один аргумент. Тем не менее, для определенных проблем я бы счел невероятно полезным обойти это несколько - скажем, имея функцию, которая может быть отображена в список, в то же время имея аккумулятор, который обновляется независимо для каждого рекурсивного вызова функции. Хотя я не могу получить более конкретную информацию, чем это, опасаясь нарушения Кодекса чести, есть ли способ обойти невозможность давать каждому рекурсивному вызову аккумулятор, если вы планируете использовать карту?

1 Ответ

4 голосов
/ 03 октября 2019

map принимает столько списков, сколько вы хотите:

(map + '(1 2 3) '(3 2 1) '(3 3 3)) ; ==> (7 7 7)

fold имеет аккумулятор:

(foldl (lambda (a b c acc) (+ a b c acc)) 1 '(1 2 3) '(3 2 1) '(3 3 3)) ; ==> 22
...