haskell-jp / questions #100 at 2022-02-20 01:41:43 +0900

type families に data-type families と closed type-synonym families があるけど closed data-type families はないという認識で合ってますか?
data family Foo a where
  Foo Int = Bar
  Foo Char = Buzz

みたいなのはできない?
https://gitlab.haskell.org/ghc/ghc/-/wikis/type-functions/
https://wiki.haskell.org/GHC/Type_families
GADTでできるのではないでしょうか
@mod_poppo GADT でできるというのがどういうものかイメージできてないです
例示してもらえますか?
最初の投稿の例でやりたいことはGADTで
data Foo a where
  Bar :: Foo Int
  Buzz :: Foo Char

と書けると思います。
おっ おお 確かに
GADT だとレコードのラベル名は諦めないといけないんでしたっけ?
Hiromi ISHII / mr_konn
data Foo a where
  Bar :: { intA :: Int, intB :: Word} -> Foo Int
  Buz :: {str :: String} -> Foo String

みたいにできます
Hiromi ISHII / mr_konn
GHC のユーザマニュアルが参考になります
https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/exts/gadt.html
:exclamation: ありがとうございます