
Hello, Li-yao! I mean this: https://wiki.haskell.org/MultiCase
Hi Paul,
This looks like the or-patterns proposal:
You can see on github that it's just "dormant". But the examples in this thread made me have an interesting, even more general idea: we have functions on term-level and type-level – why not on pattern-level? Here's a very rough draft of what I imagine: {-# LANGUAGE PatternFamilies, PatternKinds #-} data Dt a = A a | B a | C a | D a deriving ( Show ) pattern (∥) ∷ (Pattern a → T) → (Pattern a → T) → (T → U) → (a → U) pattern (a ∥ _) f = f a pattern (_ ∥ b) f = f b infixl 2 pattern ∥ foo ∷ (Show a) ⇒ Dt a → String foo (A a) = … foo (B b) = … foo (C c ∥ D d) = … No, I don't think that's worth drawing up a proposal yet. I just want to document the idea. Maybe it can inspire someone who's building their own language or something. Cheers, MarLinn