2017-10-17 20 views
0

私はHaskellの初心者であり、リストの内容を一緒に乗算する関数を実装しようとしています。ここに私のコードです:コマンドラインでHaskellのリストの内容を乗算する

product' :: Num a => [a] -> a 
product' [] = 1 
product' (_:xs) = foldl (*) 1 xs 

、私は、製品を入力します。

product' [2,3,4] 

と私はそれがリストの最初の要素に関係している知っている12の代わりに24の取得します私はそれを理解することはできません。どんな助けや指導も大歓迎です。あなたは、パラメータを保持したい場合

+2

なぜ最初の要素を_で省略しますか? – qxg

+0

@qxg _と変数xの違いは分かりませんでした。 – legoniko

+0

_は未使用の変数を意味します。 – qxg

答えて

2

だけ

product' :: Num a => [a] -> a 
product' = foldl (*) 1 

または

product' :: Num a => [a] -> a 
product' [] = 1 
product' (x:xs) = foldl (*) x xs 

を書きます。

+1

その2番目の方程式は正しくはありません。空集合の積は、その総和が「0」であるように、それらがアイデンティティであるため、「1」である。あなたはその事件を処理しません。 – HTNW

+0

訂正していただきありがとうございます。 – qxg

+0

私は実際に最初の方程式を 'product 'xs = foldl(*)1 xs'に向けることを考えていましたが、それもうまくいきます。 – HTNW

関連する問題