Carlos Aya wrote:
>I want to to this:
>------------------ umatrix.dcl
>---------------------------------------------------------------------
>definition module UMatrix
>
>import StdArray
>// UMatrix : Unboxed matrix, elemType must be one of the available unboxed
>types
>::UMatrix elemType | Array {#} elemType
>..
>
>but I don't know (couldn't find) how to define the abstract type UMatrix in
>the definition module, annotated with corresponding class constraint.
Class constraints cannot be used in type definitions (synonym, algebraic,
record or abstract).
>..
>::UMatrix elemType = { rows :: Int
> , cols :: Int
> , vals :: {#} elemType
> }
>
>make :: .Int .Int elemType -> .(UMatrix elemType)
>make n m v
>| n > 0 && m > 0 = { rows = n
> , cols = m
> , vals = createArray (n*m) v
> }
>..
>therefore the compiler complains that "internal overloading of createArray"
>cannot be solved.
>
>My questions
>- if UMatrix e is annotated with Array {#} e, why do I need to especify that
>in make if e appears in the return type? Isn't this inferred?
You cannot annotate UMatrix e with Array {#} e, therefore you have to
add the context Array {#} e at the end of the type of make.
Kind regards,
John van Groningen
_______________________________________________
clean-list mailing list
[email protected]
http://mailman.science.ru.nl/mailman/listinfo/clean-list