1
は本当に基本的な質問のように思えるが、私は持っている場合:異種データコンストラクタのテスト方法
data LogLevel = Info | Warning | Error Int
x = Info
y = Error 13
私は
if (x==Info)
を書くことができますが、どのように私はタイプエラーのためにテストを書くでしょうか?
は本当に基本的な質問のように思えるが、私は持っている場合:異種データコンストラクタのテスト方法
data LogLevel = Info | Warning | Error Int
x = Info
y = Error 13
私は
if (x==Info)
を書くことができますが、どのように私はタイプエラーのためにテストを書くでしょうか?
Error
はタイプではありません。それはデータコンストラクタです。パターンマッチングを使用して、タイプLogLevel
のさまざまな値を区別できます。ここで
case x of
Info -> ...
Warning -> ...
Error n -> ...
だけでなく、あなたがx
の値に応じて、正しい「ブランチ」を取るが、そのパターンが一致したときにも(n
に)Error
に関連付けられた特定の整数を取得します。
ありがとう - それは私が行方不明だったものです – RoyM
[データ型のEqを定義せずにHaskellがパターンマッチングを行う方法](http://stackoverflow.com/questions/4718084/how-does-haskell-do-pattern-matching-without (正確にはそうではありませんが、そのスレッドを読むことであなたの質問に答えることができますが、投稿した質問への短い答えは「パターンマッチング」です) – jberryman
とても有難い。 – RoyM