データ型がある場合
data Something = foo Integer
| bar Bool
とにかく、何かの型をアンラップして整数またはブールだけを取得する「ゲッター」を定義していますか? 今は (foo Integer) と (bar Bool) のようになります。整数値またはブール値が必要です。
まず、タイプミスがあります: データ コンストラクターは大文字でなければなりません:
data Something = Foo Integer
| Bar Bool
あなたが求めているのは、まさにパターンマッチングの目的です。Something
という値がある場合s
:
case s of
Foo f -> ... -- f is of type Integer in this "block"
Bar b -> ... -- b is of type Bool in this "block"
これは、この種のデータ型のゲッターが「間違った」コンストラクターで構築された場合にエラーをスローするため、一般的にこの問題に対処する方法です。これにより、そのケースを処理できます。のようなものを使用して安全なゲッターを作成できますMaybe
が、多くの場合、いずれにしてもボイラープレートがさらに必要になります。