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 Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe