テンプレートHaskellを学ぼうとしています。isLeft
演習として、 and (この質問isRight
に触発された)のようなものを生成できる関数を作成しました。これが私の謙虚な試みです:
isA connam = do
ConE nam <- connam
nn <- newName "p"
lamE [varP nn] $ caseE (varE nn) [
match (conP nam [wildP]) ( normalB [| True |] ) [],
match wildP ( normalB [| False |] ) []
]
$(isA [| Left |])
問題は、より直感的なものではなく、書く必要があるということisA Left
です。醜い構文を取り除くことは可能ですか?ドキュメントに答えが見つからないようです。
この関数は1つの引数のコンストラクターでのみ機能しますが、これは別の質問です。