Le mer. 22 oct. 2025 à 03:14, Waldek Hebisch <[email protected]> a écrit :
>
> On Tue, Oct 21, 2025 at 07:54:14AM +0200, 'Ralf Hemmecke' via FriCAS - 
> computer algebra system wrote:
> > Now this might be a report that is perhaps not reproducible.
> > I still want to report although I no longer have the files to demoonstrate.
>
> It is hard to do anything without a reproducible testcase.

+1

-- Greg

> > Suppose I have two functions
> >
> > ZZ ==> Integer
> > foo: ZZ -> ZZ -> Boolean
> > foo: ZZ -> (ZZ, ZZ) -> ZZ
> >
> > in a package/doman A and I want to call them from another domain that also
> > has such functions.
> >
> > Conclusion is that I have to package-call them using foo $ A.
> > Somehow the compiler was (for my situation) unable to distinguish the two
> > functions from the context.
> > I should have been able to discriminate using the  @-notation.
> > However, how exactly do I specify such double post-fix stuff?
> >
> >   ((foo $ A) @ (ZZ -> Boolean))(2)(4)
> >
> > did not compile.
>
> In principle it should compile.
>
> > I just want to know what actually should work for such situation or whether
> > that is not implemented at all.
>
> Both Spad compiler and interpreter try to handle such things.  Why
> it did not work for you?  Code to handle this case could be a missing.
> Some other case can declare your code as an error, before handler for
> right case can do anything.  There are many possibilities for bugs.
> For example:
>
> (1) -> parse("((foo $ A) @ (ZZ -> Boolean))(2)(4)")$InputForm
>
>    (1)  (((@ ($elt A foo) (Mapping Boolean ZZ)) 2) 4)
>                                                               Type: InputForm
>
> This shows that interpreter parser transforms "ZZ -> Boolean" into
> "Mapping(Boolean, ZZ)".  Conseqently, in right places interpreter
> needs special handling for Mapping.
>
> > Another issue that I saw recently was that I had a construction like
> >
> >   (foo $ A)(a)(b)
> >
> > where the error message of the compiler claimed that elt a b does not work.
> > After I added a dot like this
> >
> >   (foo $ A).(a)(b)
> >
> > it compiled. Obviously the parenthesis around the first object change
> > something in the associativity of function application. Sorry, that is also
> > something I can currently no longer reproduce.
>
> I get:
> (2) -> parse("(foo $ A)(a)(b)")$InputForm
>
>    (2)  ((($elt A foo) a) b)
>                                                               Type: InputForm
> (3) -> parse("(foo $ A).(a)(b)")$InputForm
>
>    (3)  (($elt A foo) (a b))
>                                                               Type: InputForm
>
> So, at least intepreter thinks that in second case it should apply 'a'
> to 'b' first, and than take result as argument to 'foo'.   That is
> quit different than applying 'foo' to 'a' and than applying result
> to 'b'.
>
> > Has someone seen similar situations?
>
> When I do my calculation I see various weird cases.  When it is
> looks like a bug I am trying to fix it.  But in borderline cases
> I frequently just do things in a sligthly different way to
> avoid weirdness.  And there is a lot of cases waiting to
> be fixed.
>
> --
>                               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 [email protected].
> To view this discussion visit 
> https://groups.google.com/d/msgid/fricas-devel/aPgv_lEQrEw3eGG6%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 [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/fricas-devel/CAHnU2dZTjcTf2O-KzdecoGaboH5gFUyNxCx5QjLpT9h%3DtNcBCQ%40mail.gmail.com.

Reply via email to