Hi Miguel, > See, in let or where constructs you don't have a choice; you can't do > different things depending on whether some value is Just x or > Nothing. Therefore, there is no need to perform pattern matching > strictly.
This is not entirely true. This is actually one of those niches in Haskell where the left to right is not quite the same as right to left. A let can be converted to a where but the other way round may require a case introduction. So just like you can define: f (Just x) = x f Nothing = error "Nothing" You can also define: f x = g x where g (Just x) = x g Nothing = error "Nothing" g is strict in its first argument. Declared in a let it would look like: f x = let g x = case x of (Just y) -> y Nothing -> error "Nothing" in g x Again, g must be strict in its first argument. Chris. > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe