この機能が必要です:
blubb :: ??? -> Int
blubb (n :: Int) = n
blubb (n :: Char) = 42
これがどのように機能するかです: 関数は を取得し、Int
それを返します。関数が を取得した場合Char
、定数値が返され、その他の場合は関係ありません。
Haskell の型システムのため、不可能かもしれませんが、これを機能させる必要があります...
この機能が必要です:
blubb :: ??? -> Int
blubb (n :: Int) = n
blubb (n :: Char) = 42
これがどのように機能するかです: 関数は を取得し、Int
それを返します。関数が を取得した場合Char
、定数値が返され、その他の場合は関係ありません。
Haskell の型システムのため、不可能かもしれませんが、これを機能させる必要があります...
これが型クラスの目的です。
class Blubb t where
blubb :: t -> Int
instance Blubb Int where
blubb n = n
instance Blubb Char where
blubb _ = 42
これは、 と の両方で機能するようにオーバーロードしblubb
ます。コンパイラは、引数の型に基づいて、使用する正しいものを選択します。Int
Char
ただし、実際に必要な場所で型クラスを使用していないことに注意してくださいEither
。あなたは実際にこれを望んでいたかもしれません:
blubb :: Either Int Char -> int
blubb (Left n) = n
blubb (Right _) = 42