Я узнал в Scheme и Lisp, как сделать let
, который заключает в себе map
, который принимает анонимную (лямбда) функцию и список и возвращает список «или обработанный функцией» или ответ.Может кто-нибудь показать мне простую версию этого в SML?
Обновление:
Вот очень простая комбинация map
и анонимной функции в схеме:
(map (lambda (x) (+ x 1)) ’(4 5 8))
который создает список
’(5 6 9)
Опять же, это очень распространено.
Вот функция Lisp, использующая все три:
(defun sequence1_v1 (vallist)
(let ((a 4))
(mapcar #'(lambda (val)
(/ (+ (* -3 val a) 10) (+ (* (expt val 2) (expt a 2)) 1)))
vallist)
))
Математика - это просто последовательностьгенератор и значение a
установлено в 4 означает 4-й элемент последовательности.Если мы спросим, какое из следующих значений k
будет a_4 положительным, -2, -1, 0, 1 или 2, мы получим
(sequence1_v1 '(-2 -1 0 1 2)) ->
(34/65 22/17 10 -2/17 -14/65)
Итак, первые три положительные.,,,Так что да, мир Lisp / Scheme много чего делает.Просто интересно, как это будет выглядеть в ML.