Estoy experimentando con la creación de una pequeña biblioteca/DSL para la síntesis de imágenes en Clojure. Básicamente, la idea es permitir que los usuarios de la biblioteca compongan conjuntos de funciones matemáticas para crear imágenes interesantes de manera procesal.DSL para la síntesis de imágenes Clojure
Las funciones deben operar en valores dobles, y tomar la forma de convertir un vector de ubicación en un valor de color, p. (X, y, z) -> (r, g, b, a)
Sin embargo estoy frente a algunas decisiones de diseño interesante:
- entradas podrían tener 1,2,3 o incluso 4 dimensiones (x, y, z más tiempo)
- Sería bueno proporcionar operaciones vectoriales de matemáticas (productos de puntos, suma, multiplicación, etc.)
- Sería valioso componer funciones con operaciones tales como rotar, escalar etc.
- Por razones de rendimiento, es importante utilizar matemáticas dobles primitivas en todas partes (es decir, evitar crear d oubles en particular). De modo que una función que necesite devolver componentes rojo, verde y azul tal vez necesite convertirse en tres funciones separadas que devuelven los valores primitivos rojo, verde y azul, respectivamente.
¿Alguna idea sobre cómo este tipo de DSL se puede lograr razonablemente en Clojure (1.4 beta)?
consiguió cualquier proyecto de primeras piezas de arriba en GitHub? – rplevy
https://github.com/mikera/clisk – mikera
conoces pan (y mi pancito, que era una copia pura de haskell). esa fue una biblioteca basada en Haskell que hizo justamente esto. probablemente puedas buscar información en google. podría darte algunas ideas. [...] http: // conal.net/Pan/(si esperas generar algo hermoso, no te desanimes, todavía estoy sorprendido de cómo logró generar esas feas imágenes de una biblioteca tan poderosa). ps pancito también http://www.acooke.org/pancito-code/ –