2016-12-01 9 views

答えて

5

はい。そうでなければ引数を無視する関数でこれを見ることができます。

foo :: a -> a -> Bool 
foo _ _ = True 

同じタイプの作品の二つの引数でそれを呼び出します。

Prelude> foo 1 1 
True 
Prelude> foo 'x' 'x' 
True 

異なるタイプの2つの引数を使用して呼び出すと、タイプエラーが発生します。正確なエラーは、選択するタイプによって異なります。

Prelude> foo 1 'x' 

<interactive>:5:5: 
    No instance for (Num Char) arising from the literal ‘1’ 
    In the first argument of ‘foo’, namely ‘1’ 
    In the expression: foo 1 'x' 
    In an equation for ‘it’: it = foo 1 'x' 
Prelude> foo 'x' (1::Int) 

<interactive>:8:10: 
    Couldn't match expected type ‘Char’ with actual type ‘Int’ 
    In the second argument of ‘foo’, namely ‘(1 :: Int)’ 
    In the expression: foo 'x' (1 :: Int) 
    In an equation for ‘it’: it = foo 'x' (1 :: Int) 
Prelude> foo (1::Int) 'x' 

<interactive>:9:14: 
    Couldn't match expected type ‘Int’ with actual type ‘Char’ 
    In the second argument of ‘foo’, namely ‘'x'’ 
    In the expression: foo (1 :: Int) 'x' 
    In an equation for ‘it’: it = foo (1 :: Int) 'x'