-------------------------------------------------------------------- -------------------------------------------------------------------- -- Sequence auxiliary operations -------------------------------------------------------------------- -------------------------------------------------------------------- -- Overriding insert(<>,i,x) = <> insert(^s,n,x) = if (n==1) then ^s else ^insert(s,n-1,x) -------------------------------------------------------------------- -- Indexing at(^s,n) = if (n==1) then x else at(s,n-1) -------------------------------------------------------------------- -- Sequence of 0s zeroSeq(n) = if (n==1) then <0> else <0>^zeroSeq(n-1) -------------------------------------------------------------------- map(f,<>) = <> map(f,^xs) = ^(map(f,xs)) e2l(x) = addHead(e,<>) = <> addHead(e,^xs) = <^x>^(addHead(e,xs)) seqCons(<>,xxs) = <> seqCons(^xs,xss) = (addHead(x,xss))^(seqCons(xs,xss)) distCartProd(<>) = <> distCartProd() = map(e2l,xs) distCartProd(^xxs) = seqCons(xs, distCartProd(xxs))