home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 2
/
DATAFILE_PDCD2.iso
/
utilities
/
_gofer
/
!Gofer
/
archives
/
Demos
/
Lamvar
/
lnexamples
< prev
next >
Wrap
Text File
|
1993-02-12
|
2KB
|
63 lines
--
-- Examples for use with LambdaNu
--
imap f xs = begin
(new
(\t ->
assign t xs >>
let loop = deref t >>= \ys ->
case ys of
(y:ys') -> out (f y :) >>
assign t ys' >>
loop
[] -> outConst []
in loop))
imap' f xs = newvar >>= \t ->
assign t xs >>
let loop = t ? \ys ->
case ys of (z:zs) -> out (f z :) >>
assign t zs >>
loop
[] -> outConst []
in loop
ones = 1:ones
test1 = imap (+1) [1,2,3]
test2 = imap (+1) ones
funny x = begin (new (\t -> assign t x >>
deref t >>= \x' ->
outConst x'))
funny' x y = begin (new (\t ->
(new (\s -> assign t x >>
assign s y >>
deref t >>= \x' ->
deref s >>= \y' ->
outConst (x',y')))))
double xs = begin
(new
(\t -> assign t xs >>
let loop = deref t >>= \zs ->
case zs of
(y:ys) -> out (\zs -> y:y:zs) >>
assign t ys >>
loop
[] -> out (const [])
in loop))
double' xs = begin
(let loop (y:ys) = out (\zs -> y:y:zs) >> loop ys
loop [] = out (const [])
in loop xs)
double'' (y:ys) = y : y : double'' ys
double'' [] = []