Pattern guard
From HaskellWiki
(Difference between revisions)
(Change category "Language" to subcategory "Language extensions") |
(link to guard) |
||
| Line 1: | Line 1: | ||
| - | The idea is to change the syntax for | + | The idea is to change the syntax for [[guard]]s 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, | Stealing a function from the note, | ||
Revision as of 12:44, 3 July 2007
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...-}
val1
val2
See also
- Simon Peyton Jones' note on pattern guards
- Pattern Guards and Transformational Patterns.
