I didn't notice your email, I just saw it. Modified accordingly,
that's better! Thanks.

Le sam. 4 mai 2024 à 15:40, Waldek Hebisch <de...@fricas.org> a écrit :
>
> On Sat, May 04, 2024 at 06:43:42AM +0200, Grégory Vanuxem wrote:
> > Hello,
> >
> > I have found 'devaluate' in some Spad files and it can be handy.
> <snip>
> > But, this is not my question, sometimes using 'devaluate' breaks
> > completely the code after, it's still compilable but not executable.
> > Any ideas why?
> > R is a Ring.
> > ===== spad ===============
> >         NRing :String := string CAR((devaluate(R)$Lisp))$Lisp
> >
> >         Rep := SExpression
> >         pprint := true
> >
> >         getind(m)  ==> concat(["getindex(", "refs,_"", jlId m, "_")"])
> > =====
> > And later, the above macro is incorrectly treated (jlId is defined in
> > a category, and call the JLREFID *method*):
> >
> >    >> System error:
> >    There is no applicable method for the generic function
> >   #<STANDARD-GENERIC-FUNCTION BOOT::JLREFID (1)>
> > when called with arguments
> >   (|NemoIntegerMod|).
> > See also:
> >   The ANSI Standard, Section 7.6.6
> >
> >
> > A work around is:
> > ================================================
> >         NRing := CAR((devaluate(R)$Lisp))$Lisp pretend String
> >         --NRing :String := string CAR((devaluate(R)$Lisp))$Lisp
>
> Robust use is
>
>     op_of_PS : Symbol := CAR(devaluate(PS)$Lisp)$Lisp
>
> Usage like in 'fmtjfricas.spad':
>
>       n: String := string CAR(devaluate(f)$Lisp)$Lisp
>
> is error prone: essentially Spad compiler can call _any_ function
> 'string' which returns a String.  Namely, '$Lisp' disables normal
> Spad typechecking and Spad compiler belives you that type is
> right one.  Without further restictions (like 'string$Symbl')
> Spad will assume that call is OK.  But the Lisp expression
> returns Lisp symbol, so return value of Symbol is fine.
> 'pretend String' is wrong, Lisp symbol is _not_ a string.
> Lisp symbol can be treated as SExpression, but 'string' in
> SExpression requires Lisp string so will fail on Lisp symbols.
> One you messed types 'sbcl' is free to generate wrong code.
>
>
>                               Waldek Hebisch
>
> --
> 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 fricas-devel+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/fricas-devel/ZjY64A3C5CtsmZJD%40fricas.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 fricas-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/fricas-devel/CAHnU2dZ%3D1ncjU7THwRRqemYtMQkfaPd%2BOk79x_1VCPcGojrnbg%40mail.gmail.com.

Reply via email to