Я экспериментирую с созданием небольшой библиотеки/DSL для синтеза изображений в Clojure. В принципе, идея состоит в том, чтобы позволить пользователям библиотеки составлять наборы математических функций для процедурного создания интересных изображений.DSL для синтеза изображений Clojure
Функции должны работать с двойными значениями и принимать форму преобразования вектора местоположения в значение цвета, например. (Х, у, г) -> (г, г, б, а)
Однако я столкнулся несколько интересных дизайнерских решений:
- Входы могут иметь 1,2,3 или, возможно, даже 4 измерения (x, y, z плюс время)
- Было бы полезно предоставить векторные математические операции (точечные произведения, сложение, умножение и т. Д.)
- Было бы полезно составлять функции с такими операциями, как вращение, масштабирование и т. д.
- По соображениям производительности важно использовать примитивные двойные математические схемы (т.е. избегать создания в штучной упаковке d в частности). Таким образом, функция, которая должна возвращать красные, зеленые и синие компоненты, возможно, должна стать тремя отдельными функциями, которые возвращают примитивные красные, зеленые и синие значения соответственно.
Любые идеи относительно того, как этот вид DSL можно разумно достичь в Clojure (1.4 beta)?
Got любые ранние проекты части его на GitHub? – rplevy
https://github.com/mikera/clisk – mikera
Вы знаете панораму (и мой pancito, который был копией чистого-haskell). это была библиотека на основе haskell, которая сделала именно это. вы, вероятно, можете добавить некоторую информацию в Google. это может дать вам некоторые идеи. [...] http: // conal.net/Pan/(если вы надеетесь создать что-то красивое, не отчаивайтесь - я все еще удивляюсь, как коналю удалось создать такие уродливые образы из такой мощной библиотеки). ps pancito too http://www.acooke.org/pancito-code/ –