Serge D. Mechveliani wrote:
>
> Here is a strange compilation:
>
> --------------------------------------------------- t.spad -------
> INT ==> Integer
> NNI ==> NonNegativeInteger
> GDMP ==> GeneralDistributedMultivariatePolynomial
> )abbrev package FOO Foo
> Foo() : with makeGDMP : List Symbol -> Type
> == add
> makeGDMP(vars : List Symbol) : Type ==
>
> ppo := DirectProduct(# vars, NNI)
> GDMP(vars, INT, ppo)
> ------------------------------------------------------------------
> -->
>
> ...
> $x:= ppo
> $m:= (DirectProductCategory (# vars) (NonNegativeInteger))
> $f:=
> ((((|ppo| #) (|vars| # #) (|#| #) (< #) ...)))
> >> Apparent user error:
> Cannot coerce ppo
> of mode (DirectProductCategory (call LENGTH vars) (NonNegativeInteger))
> to mode (DirectProductCategory (# vars) (NonNegativeInteger))
> ----------------------
>
> (1) I discover that appending :: DirectProductCategory(# vars, NNI)
> to the line of "ppo := "
>
> makes it compiled (and hope that it will work correctly).
>
> (2) Alternatively, inserting the lines
>
> makeDP(vars : List Symbol) : OrderedSet ==
> DirectProduct(# vars, NNI)
>
> after " == add" in the initial program also makes it compiled!
>
> The necessity of (1) looks a bit strange: why the compiler does not
> find that ppo := DirectProduct(# vars, NNI) belongs to the needed
> category?
> And the effect of (2) looks totally enigmatic.
>
This is a compiler bug -- routines doing typechecking take too
simplistic approach.
--
Waldek Hebisch
[email protected]
--
You received this message because you are subscribed to the Google Groups
"FriCAS - computer algebra system" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/fricas-devel?hl=en.