On Wed, Jun 24, 2026 at 06:39:44PM +0200, 'Ralf Hemmecke' via FriCAS - computer algebra system wrote:
> Thank you, Waldek. That works fine for me. Can you commit it.
>
> The bad thing is now tha my former
>
> Foo(S: with One: () -> %): with
>
> works for 1.3.13, but not with current 'master' and
>
> Foo(S: with 1: () -> %): with
>
> works with current master, but not with 1.3.13. That is somehow a bad
> situation for my QEta package, since I would have to release different code
> for different FriCAS versions.
>
> My using 'One: () -> %' came from the fact that 1:()->% did not work at that
> time. In fact I would have liked that '1: %' should work (which is a kind of
> shorter form of '1:constant->%'.
>
> Any suggestion how to solve my problem?
>
> Can I add some
>
> )if version<=1.3.13
> Foo(S: with One: () -> %): with
> )else
> Foo(S: with 1: () -> %): with
> )endif
>
> or must I patch my source code by a script, before I can compile the
> package?
I think that rather ugly hack will work. Namely, AFAIK all version
of FriCAS, up to 1.3.13 assert AIX. That changed recently.
So
)if AIX
Foo(S: with One: () -> %): with
)else
Foo(S: with 1: () -> %): with
)endif
should with version that can work. There is a gap between removal
of One and fixing 1, QEta will not work with corresponding git
snapshots.
Concerning more general question of conditions, currently condition
is just an identifier which is considered true or false. That
is rather inflexible, so I would like to allow more general
condition. Long ago Spad compiler allowed arbitrary Boot
expressions os conditions, that is reasonably general. But
I prefer to avoid exposing Boot via conditions, so want
something different.
Before we have better handling I prefer to limit use of conditions,
to limit problems with transion. The ')if false' form that
I used should be compatible with any possible replacement,
other probably not.
--
Waldek Hebisch