1

3 または 5 で割り切れない 1 から 2000 までの奇数のリストの平均を見つけるために、haskell で短いプログラムを作成しています。コンパイルできず、さまざまなエラーが発生し続けます。いくつか変更を加えたところ、コードの 5 行目 9 列目で「入力 'sum' の解析エラー」が表示されました。

--Write a Haskell function that calculates the mean of a list of odd numbers that
--are not divisible by 3 or 5 and whose sum is less than 2000.
mean :: Int
mean = let nums = [x|x <- [1,3..1999], x 'mod' 3 != 0, x 'mod' 5 != 0]
    sum nums/length nums

私はGHCIでコンパイルしています。ありがとう

4

2 に答える 2

4

DiegoNolan が言及した欠落の他inに、定義にはいくつかの小さな問題があります。まず、二項関数中置を使用するには、それをバッククォートで囲む必要があります。さらに、Haskell は/=不等式を使用し、 を使用しません!=/最後に、整数除算には使用できませんが、 function div.

mean = let nums = [x|x <- [1,3..1999], x `mod` 3 /= 0, x `mod` 5 /= 0]
       in
       sum nums `div` length nums
于 2013-08-07T19:39:08.383 に答える
2

あなたが必要in

mean :: Int
mean = let nums = [x|x <- [1,3..1999], x 'mod' 3 != 0, x 'mod' 5 != 0]
       in sum nums/length nums
于 2013-08-07T19:30:51.827 に答える