Ответ Михала превосходен, но я подумал, что добавлю еще пару интересных примеров, которые я лично нашел полезными / интересными.
Первый - пост (и код) о функциональной гидродинамике Лау Дженсона.Хотя он определенно идет по этому пути с изменчивой скоростью, стиль довольно функциональный.Бьюсь об заклад, с помощью Clojure 1.3 это можно сделать (в основном!) Неизменно с разумной производительностью.
Следующей является простая игра Snake , реализованная в Clojure.Достаточно легко читать, хотя через час или около того, и стиль действительно приятный и сплоченный.
Кроме того, некоторый аккуратный код, на который следует обратить внимание (я думаю!), - это моделирование кода нейронных сетей.У Джеффа Фостера есть однослойный код персептрона и еще несколько идиоматических версий кода .Стоит посмотреть, даже если вы не знакомы с NNs.У него также есть несколько недавних постов, касающихся динамики жидкости, хотя на этот раз в Хаскелле.( Часть I и Часть II ) Думаю, также забавно, что его реализация Game of Life (& Часть II ).
Наконец, как упоминал до меня Михал, Брайан Карпер работает над RPG в Clojure .он недавно опубликовал несколько иллюстраций для игры, так что держу пари, что над этим все еще ведется работа;)
Мне нравится использовать библиотеки последовательностей для работы с множеством данных;он кажется более естественным с использованием абстракций, таких как map
и reduce
, и забавных, удобных инструментов, таких как juxt
, а не простых императивных итераций.Я обнаружил, что вы платите налог, используя Clojure / функциональные языки для переопределения известных и хорошо реализованных императивных алгоритмов.
Веселись!