
Hi, is it possible to write regular expressions in case .. of ? I tried it, with no success. a x = case x of "a1" -> "A1" "a2" -> "A2" "a*" -> "A*" "b1" -> "B1" _ -> "_" for x="a3", result is _, instead of A* that i wanted. Thks, Didier

Am Freitag 12 Februar 2010 22:05:57 schrieb legajid:
Hi, is it possible to write regular expressions in case .. of ?
I tried it, with no success.
a x = case x of "a1" -> "A1" "a2" -> "A2" "a*" -> "A*" "b1" -> "B1" _ -> "_"
for x="a3", result is _, instead of A* that i wanted.
Thks, Didier
No, case expressions use "pattern matching" as in http://haskell.org/onlinereport/exps.html#sect3.17 , that is, matching on constructors, not "pattern matching" as in matching a regex pattern. You can do a little like that with wildcard patterns, a x = case x of "a1" -> "A1" "a2" -> "A2" ('a':_) -> "A*" "b1" -> "B1" _ -> "_" in a simple case like the above. In more complicated situations, use a mix of pattern matching and guards, import Text.Regex.PCRE a' x = case x of "a1" -> "A1" ('a':rest) | rest =~ "[0-9]*" -> optAGen | cond1 rest -> opt1 | cond2 rest -> opt2 "b1" -> "B1" blah | blah =~ "[0-9]*" -> optNum _ -> defaultOption
participants (2)
-
Daniel Fischer
-
legajid