Оба примера кода приведены для формулы суммирования
Нет, они этого не делают.В то время как вторая суммирует числа, первая вызывает функцию с номером в качестве аргумента и суммирует результат.Он будет иметь f(i)
вместо i
после сигмы в математической записи.В высшем порядке функция lingo это термин функция.Вот несколько примеров, использующих 10
:
(sigma (lambda (v) 1) 10) ; ==> 10 in CL I'd use (sigma (constantly 1) 10)
(sigma #'1+ 10) ; ==> 65
(sigma #'identity 10) ; ==> 55
Во втором случае будет получен только третий пример:
(sigma 10) ; ==> 55
PS: в ваших функциях есть синтаксические ошибки и опечатки, которые я только что проигнорировал.Вам нужно будет это исправить, прежде чем это сработает.Самым сложным, возможно, является отсутствие завершающей круглой скобки в первом термине cond
, из-за которого cond
имеет только один термин, а вторая функция также передает func
, что не имеет смысла, поскольку его версия принимает только один аргумент.