Есть эти примеры, которые я хотел бы понять, но они есть в Схеме.Я хотел бы, чтобы они были в Clojure: D
Пример 1 - подсчет длины списка
(define length
(lambda (ll)
(cond
((null? ll) 0)
(#t (add1
(length (cdr ll)))))))
Пример 2 - квадрат каждого элементасписка
(define squares
(lambda (li)
(cond
((null? li) ())
(#t (cons
(* (char li) (char li))
(squares(cdr
li)))))))
Пример 3 - функция "map" (как на карте / уменьшить)
(define map (lambda (func lst)
(cond ((null? lst) ())
(#t (cons (func (car lst))
(map func (cdr lst)))))))
Curried "map"
(define map2
(lambda (func)
(lambda (lst)
(cond ((null? lst) ())
(#t (cons (func (car lst))
((map2 func) (cdr lst)))))))
Мотивация
Примеры взяты из презентации по функциональному программированию, которой может заинтересоваться кто-то другой: Функциональные языки 101: Что всеО суете?
Как только вы отправите ответ, я хотел бы, чтобы вы согласились опубликовать его в качестве комментария на этой презентации, чтобы люди Clojure могли понять исходный код