Personal tools

Pattern guard

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(link to guard)
(link to GHC manual)
Line 14: Line 14:
 
*[http://research.microsoft.com/Users/simonpj/Haskell/guards.html Simon Peyton Jones' note] on pattern guards
 
*[http://research.microsoft.com/Users/simonpj/Haskell/guards.html Simon Peyton Jones' note] on pattern guards
 
*[http://research.microsoft.com/%7Esimonpj/Papers/pat.htm Pattern Guards and Transformational Patterns].
 
*[http://research.microsoft.com/%7Esimonpj/Papers/pat.htm Pattern Guards and Transformational Patterns].
  +
*[http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#PATTERN-GUARDS GHC Manual on pattern guards]
   
 
[[Category:Glossary]]
 
[[Category:Glossary]]

Revision as of 11:24, 5 November 2008

The idea is to change the syntax for guards by replacing the use of a single condition with a list of qualifiers. These qualifiers, which include both conditions and pattern guards of the form pat <- exp, serve to bind/match patterns against expressions. The syntax is comparable that of a list comprehension, where instead the types of pat and exp match. This makes it easy, for instance, to pattern match against (possibly failing) table lookups while deciding which definition of a function to use.

Stealing a function from the note,

addLookup env var1 var2
   | Just val1 <- lookup env var1
   , Just val2 <- lookup env var2
   = val1 + val2
{-...other equations...-}
will check to see if both lookups succeed, and bind the results to
val1
and
val2
before proceeding to use the equation.

See also