[Haskell-cafe] F# active patterns versus GHC's view
Luke Palmer
lrpalmer at gmail.com
Thu Jan 15 20:31:57 EST 2009
2009/1/15 Peter Verswyvelen <bugfact at gmail.com>
> When I first read about active patterns in F#, I found it really cool idea,
> since it allows creating fake data constructors that can be used for pattern
> matching, giving many views to a single piece of data, and allowing
> backwards compatibility when you completely change or hide a data structure.
> So for example one could define a Polar pattern and a Rect pattern that
> give different views of a Complex number, e.g (pseudo code follows)
>
> pattern Polar c = (mag c, phase c)
> pattern Rect c = (real c, imag c)
>
> This seems handy:
>
> polarMul (Polar m1 p1) (Polar m2 p2) = mkComplexFromPolar (m1*m2) (p1+p2)
>
> However, I think it is flawed, since the following
>
> case c of
> Polar _ _ -> "it's polar!"
> Rect _ _ -> "it's rect!"
>
> seems like valid code but does not make any sense.
>
I think it's okay, given that we understand the meanings involved. To me it
makes about as much sense as this;
case c of
x -> "it's x!"
y -> "it's y!"
Which is just wrong code.
Maybe the capital letters on Polar and Rect are the confusing bit?
Luke
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090115/42d82b06/attachment.htm
More information about the Haskell-Cafe
mailing list