(* * Do some basic testing on the value form of concrete obj declaration. *) obj foo; value x = integer; value l = [ [1,2,3], [4,5,[6]] ]; obj TupType = ThreeTup and ThreeTwoTup; obj ThreeTup = integer and integer and integer; obj ThreeTwoTup = integer and integer and TwoTup; obj TwoTup = integer and integer; value tup = { {1,2,3}, {4,5,{6,7}} }; op main(tt:TupType) = ( main({ {1,2,3}, {4,5,{6,7}} }); (* OK *) main({ {1,2,3}, {4,5,{6,7,8}} }); (* ERROR -- 3rd component of 2nd arg is 3-tuple when it should be 2-tuple *) main({ {1,2,3}, {4,5,{6}} }); (* ERROR -- 3rd component of 2nd arg is 1-tuple when it should be 2-tuple *) main(tup) (* Doesn't work yet, but it should. *) );