While the runtime optimizations are cool, I think ClojureScript could benefit from just having compile time optimized expressions. Mostly thinking about the applicability for certain interactive applications and games.
On Fri, Aug 30, 2013 at 3:45 AM, Maik Schünemann <maikschuenem...@gmail.com>wrote: > Hi David, > The core of expresso wouldn't be much work to port to clojurescript. > The rule based translator is built on top of core.logic, so porting > that should be straightforward. > Also the manipulation routines are very much purely algorithmic so > should work without much trouble in clojurescript. > > There are two things which need to be resolved, though: > 1.) what execution engine: expresso is very close to core.matrix and > uses its functions to execute the expressions and it's function names > and semantics for the encoded expressions. > 2.) compiling optimized expressions to functions at runtime: > In clojure I managed to compile optimized expressions to optimized > code at runtime through a code-emitting protocol and a call to eval to > create the function. Without eval in clojurescript this couldn't be > done easily. With compile-time constant expressions this could be made > to work with a macro. At runtime there would still be the normal > evaluate function which however traverses the whole expression tree. > > So if anyone knows a good execution engine for expresso in > clojurescript or has thoughts about the compiling issue please post! > > I think it would be a good showcase for clojurescript to bring > symbolic manipulation cababilities including solving equations etc to > the browser. > > On Thu, Aug 29, 2013 at 10:19 PM, David Nolen <dnolen.li...@gmail.com> > wrote: > > Very cool stuff :) How much work would it take for this to work with > > ClojureScript? > > > > David > > > > > > On Mon, Aug 26, 2013 at 4:47 AM, Maik Schünemann < > maikschuenem...@gmail.com> > > wrote: > >> > >> Hi, > >> I released a first version of my gsoc project expresso [1]. > >> This is an important Milestone in my gsoc project. > >> What is there: > >> an expressive and powerful rule based translator, on top of which many > >> transformations can be based. > >> functions to simplify (currently without ratio test), differentiate, > >> rearrange, solve expressions. > >> functions to optimize an expression (includes > >> common-sub-expression-elimination, constant-folding, replacement > >> with special operators, matrix-chain-optimization, ...) > >> > >> The solver can solve multiple simultaneous equations. > >> currently it solves equations, which are polynomials up to degree 2, in > >> which the number of occurrences of the unknown > >> can be reduced to one by simplifying the expression or which consists of > >> factors in above form. variables as parameters > >> are supported everywhere. > >> > >> The last weeks of gsoc I will be making the above transformations more > >> stable, eliminate as many bugs as I can find > >> (feel free to report some you notice), and extending the range of > >> expressions which can be transformed by these transformations, > >> as well as thoroughly documenting the work that has been done. > >> See the github repository and README.md for details [1] > >> > >> [1] https://github.com/clojure-numerics/expresso > >> > >> -- > >> -- > >> You received this message because you are subscribed to the Google > >> Groups "Clojure" group. > >> To post to this group, send email to clojure@googlegroups.com > >> Note that posts from new members are moderated - please be patient with > >> your first post. > >> To unsubscribe from this group, send email to > >> clojure+unsubscr...@googlegroups.com > >> For more options, visit this group at > >> http://groups.google.com/group/clojure?hl=en > >> --- > >> You received this message because you are subscribed to the Google > Groups > >> "Clojure" group. > >> To unsubscribe from this group and stop receiving emails from it, send > an > >> email to clojure+unsubscr...@googlegroups.com. > >> For more options, visit https://groups.google.com/groups/opt_out. > > > > > > -- > > -- > > You received this message because you are subscribed to the Google > > Groups "Clojure" group. > > To post to this group, send email to clojure@googlegroups.com > > Note that posts from new members are moderated - please be patient with > your > > first post. > > To unsubscribe from this group, send email to > > clojure+unsubscr...@googlegroups.com > > For more options, visit this group at > > http://groups.google.com/group/clojure?hl=en > > --- > > You received this message because you are subscribed to the Google Groups > > "Clojure" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to clojure+unsubscr...@googlegroups.com. > > For more options, visit https://groups.google.com/groups/opt_out. > > -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.