Eksperymentuję z tworzeniem małej biblioteki/DSL do syntezy obrazu w Clojure. Zasadniczo chodzi o to, aby umożliwić użytkownikom biblioteki komponowanie zestawów funkcji matematycznych w celu proceduralnego tworzenia interesujących obrazów.DSL do syntezy obrazu Clojure
Funkcje muszą działać na podwójnych wartościach i przyjmować formę przekształcania wektora położenia na wartość koloru, np. (X, y, z) -> (r, g, b, a)
Jednakże ja skierowane kilka interesujących decyzji projektowych:
- Wejścia mogą mieć 1,2,3 lub może nawet 4 wymiary (x, y, z dodatkowym czasem)
- Dobrze byłoby wykonać operacje matematyczne wektorowe (produkty z kropkami, dodawanie, mnożenie itp.)
- Wartościowe byłoby komponowanie funkcji z operacjami takimi jak obrót, skala itp.
- Ze względów wydajnościowych ważne jest stosowanie w całym procesie pierwotnej podwójnej matematyki (np. oubles w szczególności). Zatem funkcja, która musi zwracać czerwony, zielony i niebieski komponent, być może musi stać się trzema osobnymi funkcjami, które zwracają odpowiednio prymitywne wartości koloru czerwonego, zielonego i niebieskiego.
Jakieś pomysły dotyczące tego, w jaki sposób DSL można rozsądnie osiągnąć w Clojure (1.4 beta)?
jakieś wczesne projekty kawałki go na github? – rplevy
https://github.com/mikera/clisk – mikera
jesteś świadomy pan (i mojego pancito, który był czysto-iskell kopię). to była biblioteka bazująca na haskellach, która właśnie to zrobiła. możesz prawdopodobnie podnieść niektóre informacje. może dać ci kilka pomysłów. [...] http: // conal.net/Pan/(jeśli masz nadzieję, że uda Ci się stworzyć coś pięknego, nie zniechęcaj się - wciąż jestem zaskoczony, jak koniom udało się wygenerować tak brzydkie obrazy z tak potężnej biblioteki). ps pancito też http://www.acooke.org/pancito-code/ –