On Wed, Nov 13, 2024 at 12:11:50PM +0100, 'Ralf Hemmecke' via FriCAS - computer
algebra system wrote:
> The output of the following function is strange.
> Why is dbgPrint executed twice?
>
> %%% (9) -> fooo(2)
> Compiling function bar with type (Integer, Integer) -> List(Integer)
>
> Compiling function fooo with type Integer -> Integer
> [:> , ab, [1, 2]]
> [:> , ab, [1, 2]]
>
> (9) 2
> Type: PositiveInteger
> fooo(n: ZZ): ZZ == (_
> n < 2 => error "argument must be > 2";_
> [P1n, Q1n, R1n] := bar(1, n);_
> Q1n)
Concerning reasons, in interpreter such assignment uses pattern
matching. 'bar' is evaluated once to get argument to pattern
matching function. But assignment also produces a value and
'bar' is evaluated second time to get (ignored) return value
of the assignment.
ATM I am not sure if it is easy or difficult to fix, just I am
answering the question ('why').
--
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/ZzVBsu-FcdQtIvv1%40fricas.org.