On Wednesday 08 Jun 2011 17:51:19 Waldek Hebisch wrote: > - You implement a bunch of "expression like" domains. Have you checked > if existing domains have needed functionality? One obvious alternative > is to base you implementation on Kernel. Another is to use > SEexpression as representaion.
I've been thinking about this and I agree that the computation domains are "expression like" .... sort of .... but .... it seems that an expression would be in some algebra, for instance perhaps there could be an expression where the symbols are elements of a group, or a boolean algebra, or even a mixture of algebras? So if lambda-calculus, combinators and intuitionistic logic are like expressions then, what is the algebra that they are expressions in? For instance imagine I had an algebra (don't take this very loose pseudo-code laterally): myAlgebra(baseAlgebra).... .... with e:Record(baseAlgeba,baseAlgeba) -> % -- constructor m:(%,%) -> % -- binary op .... ==> Rep:=Record(A,B) Then I could have some expression manipulator for that algebra: myExpression().... .... with e:% -> Symbol -- code to read out a given expression m:% -> Record(%,%) eval:% -> myAlgebra -- apply myAlgebra recursively to get single term ... ==> Rep:=Union(e:Symbol,m:Record(%,%)) But I can't see a way to define lambda-calculus, combinators or intuitionistic logic in this sort of way? Somehow they seem to need to be defined in terms of a inductively defined co-datatype like this: Rep:=Union(e:base,m:Record(%,%)) rather than a datatype like this: Rep:=Record(A,B) I am coming at this in abstract terms here, but in practical terms I haven't yet seen a practical reason to use the domains you mention, for instance I haven't yet noticed a need for caching of terms, but that may change? However I do like the idea that when the compiler compiles an algebra like myAlgebra then why not allow it to generate expression manipulator code for the algebra at the same time? Martin -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/fricas-devel?hl=en.
