В чем разница между сложением и применением в схеме? - PullRequest
1 голос
/ 08 октября 2019

Язык программирования: Scheme / DrRacket

Я не вижу разницы в использовании между foldr и apply

Может кто-нибудь объяснить, чем они отличаются? Насколько я могу сказать, вы можете сделать то же самое с Foldr, что вы можете применить. Спасибо!

1 Ответ

6 голосов
/ 08 октября 2019

Они очень разные, хотя в некоторых случаях они могут быть эквивалентными.


(apply func '(1 2 3))

эквивалентно

(func 1 2 3)

(foldr func 0 '(1 2 3))

эквивалентнона

(func (func (func 3 0) 2) 1)

В случаях, когда функция является ассоциативной и коммутативной, и она позволяет предоставить переменное число аргументов, результаты будут одинаковыми. Например,

(apply + '(1 2 3)) == (foldr + 0 '(1 2 3))

Но foldr можно использовать для объединения результатов функций, которые принимают только два аргумента, или использовать более гибкие способы объединения результатов.

Для получения дополнительной информации оfoldr, см. Карта, Фильтр, Foldr в DrRacket / Схема

...