Martin Rubey <[email protected]> writes:
> Dear Ralf,
>
> I'm extremely grateful that you answered...
>
> Ralf Hemmecke <[email protected]> writes:
> N := Union(Symbol, List Integer)
> BT := BinaryTree N
> B ==> binaryTree -- the 3-argument version
> V ==> binaryTree -- the 1-argument version
> bt:BT:=B(V e,[5,1],B(B(V a,[1,1],V b),[1,1],B(V c,[1,2],V d)))
>
> [...]
>
> S==>Symbol
> L==>List Integer
> construct(x: S, l: L, y: S): BT == binaryTree(V(x::N), l::N, V(y::N))
> bt2: BT := [e,[5,1],[[a,[1,1],b],[1,1],[c,[1,2],d]]]
>
> ['a, [1,3], 'b...@bt
>
> works for me
>
> but
>
> [e,[5,1],[[a,[1,1],b],[1,1],[c,[1,2],d...@bt
>
> cannot work, I think, because the argument types don't match. You
> will need to allow also binary trees.
construct(x: Union(S, BT), l: L, y: Union(S, BT)): BT == binaryTree((if x case
S then V(x::N) else x::BT), l::N, (if y case S then V(y::N) else y::BT))
will work *almost*:
(20) -> ['a, [1,3], ['d, [1,3], 'c...@bt]@BT
(20) [a,[1,3],[d,[1,3],c]]
Type:
BinaryTree(Union(Symbol,List(Integer)))
(21) -> ['a, [1,3], ['d, [1,3], 'c...@bt
Conversion failed in the compiled user function construct .
Cannot convert from type List(Any) to Union(Symbol,BinaryTree(Union(
Symbol,List(Integer)))) for value
[d,[1,3],c]
Not sure whether this is an improvement.
Martin
_______________________________________________
Axiom-mail mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/axiom-mail