Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/Alterator/synonym ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.

Scheme: велопипеды и синонимы


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


Сначала коллекция из srfi-1


Вариант 1 Вариант 2
not + pair not-pair
car + last-pair last
fold + reverse fold-right
list-tail drop, а заодно есть и take.
(delq #f)+ map  filter-map
apply + append + map append-map
apply + append concatenate
contatenate+ map  append-map

Ну и несколько заметок про стандартный R5RS


Вариант 1 Вариант 2
(= x 0) (zero? x)
(> x 0) (positive? x)
(< x 0) (negative? x)
(lambda(x) x) values
(list->vector x) (apply vector x)
(and (< a b) (b c)) (< a b c)

Просто рекомендации:


Очень полезно бывает скрывать некоторые «склеивающие» операции внутри функции – выглядеть будет гораздо нагляднее.
Например, (my-url «/aaa» «/bbb» “ccc”) выглядит гораздо понятнее, чем (my-url (string-append «/aaaa” «/bbb” «ccc)).


Опасные моменты


fold-left – это итеративный процесс, но fold-right – рекурсивный, соотв., на больших списках может закончится стек.


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]