2017-04-23 10 views
0

私は与えられたリストから、すべての数字を加算してから6整数リストの平均を計算するのがなぜ機能しないのですか?

average :: [Integer] -> Integer 
average m = (sum m) quot 6 

で除算しかし、これは私が受けてるのエラーメッセージで機能させるためにしようとしている:

Couldn't match type `Integer'                     
       with `(a0 -> a0 -> a0) -> a1 -> Integer'              
Expected type: [(a0 -> a0 -> a0) -> a1 -> Integer]               
    Actual type: [Integer]                      
In the first argument of `sum', namely `m'                 
In the expression: (sum m) quot 6 
+2

'(sum m)quot 6 'は' 'sum'を取って' m'に適用し、得られた関数を取り出して 'quot'に適用し、結果の関数をとり、' 6 ''これは 'sum m quot 6 'と同じです。しかし、 'sum m'は関数を返さないので、型エラーが発生します。 – chi

答えて

5

あなたはquotの周りにバッククォートを必要とする、または我々は、引数の前に関数名を書くHaskellでも最初

0

を書きます。 QUOT について以下のように記述します:

あなたのケースではそう
quot 17 2 

を:

quot (sum m) 6 

Haskellはあなたが、いわゆる中置表記で関数を記述することができますいくつかのsytactic砂糖を持っています。これはユーザーmb14が参照するものです。

関連する問題