[Haskell-cafe] unary pattern matching
cgibbard at gmail.com
Fri Jan 27 04:57:14 EST 2006
On 27/01/06, Brian Hulley <brianh at metamilk.com> wrote:
> John Meacham wrote:
> > On Fri, Jan 27, 2006 at 12:28:23PM +1100, Donald Bruce Stewart wrote:
> >> john:
> >>> I have often wanted a shorthand syntax for testing if a value
> >>> matches a given pattern. I want to implement such an extension for
> >>> jhc but can't decide an appropriate syntax so I thought I'd ask the
> >>> group. basically I want something like
> >>> /Left (Just _)/ expands to
> >>> \x -> case x of
> >>> Left (Just _) -> True
> >>> _ -> False
> >> Something like pattern guards?
> >> f x | Just _ <- x = putStrLn "something"
> > hmm.. how about
> > (| Left (Just _) |)
> > since | cannot be used as a section so it can be unambigously lexed
> > as a different symbol. I think I like it. any other ideas?
> > John
> (@ Left (Just _) @) would fit in with the use of @ in as-patterns
> Also, the as-pattern syntax could be stolen for expressions so that exp at pat
> would evaluate to True or False when this syntactic form appears in an
> expression instead of a pattern ie to give the following equivalence:
> (@ pat @) exp === exp @ pat
> Regards, Brian.
Or if we're going to allow @ as an infix operator, we could use (@
pat), reminiscent of section notation. (exp @) of course would make no
sense, seeing as there's no representation for patterns as values.
More information about the Haskell-Cafe