Я изучаю экзамен прямо сейчас, но я не уверен, понял ли я процедуру list
на Схеме. Я знаю, что его можно использовать для создания переменных списка, например (define x (list 'a 'b 'c))
. Однако я видел другое использование его в создании процедуры:процедура списка на схеме
1 ]=> (define foo3
(lambda (b lst)
(if b
(car lst)
(cadr lst)
)
)
)
;Value: foo3
1 ]=> (foo3 #f ’(a b))
;Value: b
1 ]=> ((foo3 #t (list cdr car)) ’(a b c))
;Value: (b c)
Что делает (список корд автомобиль) означает? (Я знаю, что cdr
и car
означает в отношении ссылок на первый и весь список)
Оу, я вижу. Я все еще думаю, что список в основном представляет собой массив в C. Я не думал, что мы можем хранить в нем процедуры. Большое спасибо. –
Да, это одна из приятных вещей в функциональных языках программирования: процедуры подобны любым другим типам данных, и вы можете передавать их как параметры, возвращать их из других процедур, хранить их в структурах данных и т. Д. –
@MertToka: http://stackoverflow.com/q/252748/166749 –