blob: 67084e3fb121ad6ba0e1a1df15c24db44d7e8421 [file]
allocNode : [a]
.
Unit -> rec t {l : <Cons {data : a,rest : rec t}#|Nil Unit> take};
push : [a]
.
{data : a,list : rec t {l : <Cons {data : a,rest : rec t}#|Nil Unit>}}#
-> rec t {l : <Cons {data : a,rest : rec t}#|Nil Unit>};
push r = let node = (allocNode[a] : Unit
-> rec t {l : <Cons {data : a,rest : rec t}#
|Nil Unit> take}) (Unit : Unit) : rec t {l : <Cons {data : a
,rest : rec t}#
|Nil Unit> take}
in take r2 { data = x } = r : {data : a
,list : rec t {l : <Cons {data : a
,rest : rec t}#
|Nil Unit>}}#
in take r3 { list = y } = r2 : {data : a take,list : rec t}#
in put node : rec t {l : <Cons {data : a,rest : rec t}#
|Nil Unit> take}.l := Cons ({data = x : a
,rest = y : rec t} : {data : a
,rest : rec t}#) : <Cons {data : a
,rest : rec t}#
|Nil Unit>
end : rec t {l : <Cons {data : a,rest : rec t}#|Nil Unit>}
end : rec t {l : <Cons {data : a,rest : rec t}#|Nil Unit>}
end : rec t {l : <Cons {data : a,rest : rec t}#|Nil Unit>}
end : rec t {l : <Cons {data : a,rest : rec t}#|Nil Unit>};