Wolfgang Jeltsch writes:
> If we use an implementation of State *without lazy patterns*, it
> becomes something like this:
>
> \s -> case next s of
> (x,s') -> case everyting s' of
> (xs,s'') -> ((x : xs),s'')
>
> Note that I used case expressions to realize strict patterns because
> pattern binding in let expressions is implicitely lazy.
>
> Now lets apply the function denoted by the last code fragment to some
> initial state and try to extract just the first element of the
> output. In order to do so we have to take the result of the function
> and match it against ((x : _),_). Especially, we have to reduce the
> pair, i.e., we have to make sure that it's really an application of
> (,) and not _|_.
Would the lazy pattern match be equivalent to using fst and snd?
\s -> case next s of
p1 -> case everything (snd p1) of
p2 -> (fst p1 : fst p2, snd p2)
--
David Menendez <[EMAIL PROTECTED]> | "In this house, we obey the laws
<http://www.eyrie.org/~zednenem> | of thermodynamics!"
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe