#data Foo = Bar1 | Bar2 | ... | Bar 123456
deriving Enum
と、たとえば、型コンストラクタがたとえば 123456 個あるとき、
型 Foo から個数 123456 をどうやって取り出したらいいのかな。
(magicぽい)
#例えば maxBound=123456 を書いた上で deriving Bounded するのだろうか…
プログラミングしているときに、気軽に型 Foo を変更したとき、コンストラクタの個数をうっかりしたくないという背景です。
#Bar 123456 は Bar123456 の間違いです(空白はとる)
#Template Haskell をつかう?
#data Foo =
Bar --^ 0
| Baz --^ 1
と書いていますが、かなしみがあります
#何が何番であるか、はプログラマが保証すべきことはわかりますが、ぜんぶで何個あるかくらいは取り出すことができてほしい
#だめかなあ…それもプログラマが保証すべきような気もしてきました(書いてみるとじぶんの考えが整理されてくる)
#data Foo = ...
#makeLength ''Foo とかTHで関数を生やすくらいしかないような気がします
#コンパイル時の話なんですよね。動的なら length $ enumFrom Bar1 とか。
#関数生やす系はもっと便利に使っていい気がする。THだけど。derivingも関数生やしてるようなものだし。
#DeriveAnyClassあたりで出来るだろか
#deriving Bounded はぼくの勘違いです maxBound :: Foo だったから、個数はわからない
#deriving (Lens)はまだですか
#generic-deriving パッケージで簡単にできました
https://www.reddit.com/r/haskell/comments/3txy65/better_deriving_of_enum/cxa8yjn
https://hackage.haskell.org/package/generic-deriving
#ruicc さんの DeriveAnyClass のヒントからぐぐりました、ありがとうございます
#generic-deriving のソース見るかあ
#[1..100]>=pen さんの方法でもいいのか、先頭をしっていれば同じことですね、なるほど
#4月12日(火)「平日夜にすごいH本をちょびちょび読む会 29回目」(定員5名) #Hちょびよみ http://hchobi.connpass.com/event/29107/