1 -- LML original: Sandra Foubister, 1990
    2 -- Haskell translation: Colin Runciman, May 1991
    3 
    4 module Interstate(inter) where
    5 
    6 inter :: (a->[b]) -> (a->c->Bool) -> (a->c->([b],a,c)) -> (a->c->[b])
    7 inter prompt endp transact =
    8         interprog
    9         where
   10         interprog state inpt =
   11           prompt state ++
   12           if endp state inpt then []
   13           else response ++ interprog newstate restofinput
   14                where
   15                (response,newstate,restofinput) = transact state inpt
   16 
   17 
   18