rjmh at cs.chalmers.se
Fri Jan 27 05:50:19 EST 2006
>>Personally I think ~ patterns are great, and we are now talking about !
>>patterns, a kind of dual to ~ patterns. So at least I think we should
>>un-couple the two discussions.
>I think so too. Removing ~ patterns seems like a fairly poor idea to
>me. Sure, they're not very much explicitly used (though everyone uses
>them implicitly in pattern bindings), but when you want them, they can
>be fairly important. I think perhaps we just need better coverage of ~
>in the tutorials. Now that I think about it, I rather like the idea of
>! patterns as well. They make ~ patterns seem more natural by
>contrast. Strictness can on occasion be just as important as laziness,
>and this notation makes it more convenient to obtain in simple cases.
>How to get a similarly pretty notation for more structured strictness
>annotations is a bit of a concern. I wonder whether some of the
>Control.Parallel.Strategies library should be more strategically
> - Cale
I'd be fairly horrified at the removal of ~ patterns. I've used them to
fix very serious space-leaks that would have been awkward to fix in any
other way. I suppose if lazy pattern matching were provided by some
other mechanism, say via let bindings, then I should always in principle
be able to translate away a ~ pattern. But the translation will often be
much more awkward.
Actually, I think it's a much bigger wart that pattern matching in let
and where is lazy, and everywhere else is strict, than that we have an
operator ~ on patterns with a clean compositional semantics. Way back in
the Haskell 98 process I tried to get that changed--so that patterns
would be matched strictly EVERYWHERE unless you wrote ~ --but I lost
More information about the Haskell-prime