This issue is related to the way library functions are implemented. For instance, \cross may free both of its arguments.
A few years ago, I did a package for doing linear algebra: https://github.com/githwxi/ATS-Postiats-contrib/tree/master/contrib/libfloats And you may take a look at the function interface: https://github.com/githwxi/ATS-Postiats-contrib/tree/master/contrib/libfloats/SATS In this day and age of machine learning, I may need to revisit this package :) On Friday, October 20, 2017 at 10:11:00 AM UTC-4, Russoul wrote: > > Let's treat `list_vt(a,n)` as algebraic vector of dim 'n'. Then let's > perform some operations on a bunch of them: > > (*pseudocode*) > ... > val a = $list_vt(1,0,0) > val b = $list_vt(0,1,0) > val c = a \cross b > val d = c * PI > ... > val _ = free a > val _ = free b > val _ = free c > val _ = free d > (*end of code fragment*) > > Cleaning(freeing) after simple algebraic operations in the above example > is tedious. And I suppose it can become a real pain in math extensive code. > What is the way out ? > > -- You received this message because you are subscribed to the Google Groups "ats-lang-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/ats-lang-users. To view this discussion on the web visit https://groups.google.com/d/msgid/ats-lang-users/56e0fd58-9a0c-4ddb-889c-5e7c1f38f30c%40googlegroups.com.
