[Haskell-cafe] unary pattern matching

Cale Gibbard 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.

 - Cale


More information about the Haskell-Cafe mailing list