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
located? :)

- 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 that argument.

John
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://haskell.org/mailman/listinfo/haskell-prime

Reply via email to