Haskellでこれらの同様の機能をどのように組み合わせることができますか?
getGroup [] acc = reverse acc
getGroup ((Letter x):letfs) acc = getGroup letfs ((Letter x):acc)
getGroup ((Group x):letfs) acc = getGroup letfs ((Group (makeList x)):acc)
getGroup ((Star x):letfs) acc = getGroup letfs ((Star (makeList x)):acc)
getGroup ((Plus x):letfs) acc = getGroup letfs ((Plus (makeList x)):acc)
getGroup ((Ques x):letfs) acc = getGroup letfs ((Ques (makeList x)):acc)
Letter、Group、Star、Plus、および Ques はすべて、データ型定義の一部です。
data MyData a
= Operand a
| Letter a
| Star [RegEx a]
| Plus [RegEx a]
| Ques [RegEx a]
| Pipe [RegEx a] [RegEx a]
| Group [RegEx a]
deriving Show
それらの類似性のために、これらの関数を記述するより良い方法があるのではないかと思います。たいていはグループ、スター、プラス、キューの機能が同じなのでまとめたいのですが、全部をまとめられる方法があればいいなと思います。