blob: 85c12a5a65b6c9bc4d915a68c31a122b3fc466a3 [file] [log] [blame] [edit]
alloc : [x] . Unit -> rec t {l : <Cons {data : x,rest : rec t}#|Nil Unit> take};
map : [a, b]
.
{f : a -> b,list : rec t {l : <Cons {data : a,rest : rec t}#|Nil Unit>}!}#
-> rec t {l : <Cons {data : b,rest : rec t}#|Nil Unit>};
map l = take l2 { list = node } = l : {f : a -> b
,list : rec t {l : <Cons {data : a
,rest : rec t}#
|Nil Unit>}!}#
in take l3 { f = fun } = l2 : {f : a -> b
,list : rec t {l : <Cons {data : a
,rest : rec t}#
|Nil Unit>}! take}#
in take node2 { l = head } = node : rec t {l : <Cons {data : a
,rest : rec t}#
|Nil Unit>}!
in case head : <Cons {data : a,rest : rec t}#|Nil Unit> of
Nil u -> let newNode = (alloc[b] : Unit
-> rec t {l : <Cons {data : b
,rest : rec t}#
|Nil Unit> take}) (Unit : Unit) : rec t {l : <Cons {data : b
,rest : rec t}#
|Nil Unit> take}
in put newNode : rec t {l : <Cons {data : b
,rest : rec t}#
|Nil Unit> take}.l := Nil (Unit : Unit) : <Cons {data : b
,rest : rec t}#
|Nil Unit>
end : rec t {l : <Cons {data : b,rest : rec t}#
|Nil Unit>}
end : rec t {l : <Cons {data : b,rest : rec t}#
|Nil Unit>}
| v2 -> case v2 : <Cons {data : a,rest : rec t}#
|Nil Unit take> of
Cons remaining -> take remaining2 { data = x } = remaining : {data : a
,rest : rec t}#
in let newNode = (alloc[b] : Unit
-> rec t {l : <Cons {data : b
,rest : rec t}#
|Nil Unit> take}) (Unit : Unit) : rec t {l : <Cons {data : b
,rest : rec t}#
|Nil Unit> take}
in put newNode : rec t {l : <Cons {data : b
,rest : rec t}#
|Nil Unit> take}.l := Cons ({data = (fun : a
-> b) (x : a) : b
,rest = (map[ a
, b ] : {f : a
-> b
,list : rec t {l : <Cons {data : a
,rest : rec t}#
|Nil Unit>}!}#
-> rec t) ({list = (remaining2 : {data : a take
,rest : rec t {l : <Cons {data : a
,rest : rec t}#
|Nil Unit>}!}#).rest : rec t {l : <Cons {data : a
,rest : rec t}#
|Nil Unit>}!
,f = fun : a
-> b} : {f : a
-> b
,list : rec t {l : <Cons {data : a
,rest : rec t}#
|Nil Unit>}!}#) : rec t} : {data : b
,rest : rec t}#) : <Cons {data : b
,rest : rec t}#
|Nil Unit>
end : rec t {l : <Cons {data : b
,rest : rec t}#
|Nil Unit>}
end : rec t {l : <Cons {data : b
,rest : rec t}#
|Nil Unit>}
end : rec t {l : <Cons {data : b
,rest : rec t}#
|Nil Unit>}
end : rec t {l : <Cons {data : b,rest : rec t}#
|Nil Unit>}
end : rec t {l : <Cons {data : b,rest : rec t}#|Nil Unit>}
end : rec t {l : <Cons {data : b,rest : rec t}#|Nil Unit>}
end : rec t {l : <Cons {data : b,rest : rec t}#|Nil Unit>}
end : rec t {l : <Cons {data : b,rest : rec t}#|Nil Unit>};