Hello Ralf, * Relatively difficult to explain for a non-English speaker...
Le mar. 25 nov. 2025 à 21:39, 'Ralf Hemmecke' via FriCAS - computer algebra system <[email protected]> a écrit : > > On 11/25/25 18:58, Grégory Vanuxem wrote: > > HelloRalf, *, > > I was a bit lost until I figured out that you refer to > https://groups.google.com/g/fricas-devel/c/MZEoqkRMo0Y/m/Dec-ihJGAgAJ Yes, one my first principal concern is that CL structures are too much used. Take FRAC(INT): (1) -> 1/2 1 (1) - 2 (2) -> (2) -> % pretend SExpression (2) (1 . 2) (3) -> TYPE_-OF(1/2)$Lisp (3) CONS Personally, my "FRAC(INT)" are implemented in C using FLINT (via Julia): (1) -> QQ(1/2) 1 (1) - 2 (2) -> % pretend SExpression (2) #<JLREF 3 #x302000A2C9DD> (3) -> )juliad refs Dict{Int64, Any} with 2 entries: 6 => 1 3 => 1//2 I need a CL class (<JLREF... >) to GC-it in Julia when it's CL GC-ed in FriCAS. My principal concern here is that it's tightly related in Spad and Boot code to CL. So in some place CL cons take place instead of numerator/denominator stuff. I finally managed to modify the boot code to take into account NMfraction, but it's an horror to me, I do not want to modify the FriCAS internals (NM means Nemo [1] here): (3) -> x:=x::NUP(NINT,'x) (3) x Type: NMUnivariatePolynomial(NMInteger,x) (4) -> x/4 x (4) - 4 (5) -> )set mess type on (5) -> x/4 x (5) - 4 Type: NMFraction(NMUnivariatePolynomial(NMInteger,x)) This is my first principal concern. The second one is that SUP is almost everywhere in FriCAS (at Category level in fact - ???). I can understand its use, it's "universal" in the sense that SingletonAsOrderedSet (the "?", the indeterminate) allows you to create polynomials without specifying the indeterminate/variable, but again, its CL structure is heavily used at Spad and Boot level. Moreover I have some difficulties, my fault, in creating them. All the POLYs stuff is somewhat a big piece of code, and for sure well done, but I am not in the head of the code's writers. Hope I was more clear, Greg [1] https://nemocas.github.io/Nemo.jl/stable/ > > My principal concern is that SUP, or FRAC(*) for example, are too > > tightly related to Common Lisp (CL) programming structures. > > Oh, maybe, this time you have targeted the wrong person. ;-) > I mostly look at SPAD without ever thinking about its underlying LISP > structure. > > Fraction is a quite generic constructor that choses to represent its > element as pairs. > > https://github.com/fricas/fricas/blob/master/src/algebra/fraction.spad#L276 > > Rep := Record(num : S, den : S) > > Where do you see a Lisp connection? > > > From my point of view SPAD is somewhat object oriented but the > > encapsulation is not respected. > > Unless someone convinces me of something else, I would say SPAD *is* > object-oriented with the domains being the objects. > However, I would never dare to program in an object-oriented way in > SPAD. Objects/domains are 'heavy' things. We only tend to create a view > of them. And the compiler tries to ensure that there is only *one* > Fraction(Integer) lying around. Now I better shut up, since I am no > programming language expert. > > > Take rational numbers, FRAC(INT), in a lot of places, at default > > level, a CL CONS is expected. From my point of view this is _highly_ > > unsatisfactory. > > Can you explain, *why* this is unsatisfactory for you? > > Ralf > > -- > You received this message because you are subscribed to the Google Groups > "FriCAS - computer algebra system" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion visit > https://groups.google.com/d/msgid/fricas-devel/6e35ca04-07fd-4c7f-be4b-098ae7f868d2%40hemmecke.org. -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/fricas-devel/CAHnU2daWtA-SVM5%3DGXjZ5%2BfbLxSO%2BKEp3sT7Yx-kJq7b8fPnCg%40mail.gmail.com.
