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.

Reply via email to