のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

real world haskell 第3章 練習問題 P71

1.リスト中の要素数を数える関数を書きなさい。
2.ソースファイルに1.で作った関数の型シグネチャを追加しなさい。

myLength :: [a]->Int   <=型シグネチャ
myLength (_:xs) = 1 + myLength(xs)
myLength [] = 0
=================================
ghc> myLength []
0
ghc> myLength [1]
1
ghc> myLength [1,2]
2
ghc> myLength [1,2,5]
3
ghc> myLength "abcde"
5

3.リストの平均値を計算する関数を書きなさい。

myAverage x = (fromIntegral (sum x)) / (fromIntegral (length x))

myAverage x = sum' / length'
  where  sum'     = fromIntegral (sum x)
         length'  = fromIntegral (length x)
myAverage [1,2,3]
2.0
myAverage []
NaN