let head = \lst. lst (\h sofar. h) junk in
let tail = \lst. (\shift lst. lst shift (make_pair empty junk) get_2nd)
; where shift is
- (\h p. p (\t y. make_pair (make-list h t) t)) in
+ (\h p. p (\t y. make_pair (make_list h t) t)) in
let length = \lst. lst (\h sofar. succ sofar) 0 in
let map = \f lst. lst (\h sofar. make_list (f h) sofar) empty in
let filter = \f lst. lst (\h sofar. f h (make_list h sofar) sofar) empty in ; or