質問

mifun s = foldr op 0 s
          where op x r = head x + r 

GHCIに教えてもらう方法はありますか?

役に立ちましたか?

解決

試す :t mifun (ショート :type mifun)

それは与えます

*Main> :t mifun
mifun :: (Num b) => [[b]] -> b

だから、aの b のインスタンス num, mifun のリストのリストを取得します b シングルを出力します b (この場合、リストの最初の要素の合計です)。

他のヒント

これは本当に答えではありませんが、フォーマットが必要でした。

NB: mifun 含まれているリストのいずれかが空の場合はinthです。例えば:

> mifun [[3], [5, 8], [], [1, 2, 3]]
*** Exception: Prelude.head: empty list

上記の例の結果を9にする場合(空のリストを合計に貢献していないものとして扱います)、OPを次の方法のいずれかとして定義する必要があります。

mifun s = foldr op 0 s
          where op []    r = r
                op (x:_) r = x + r 

mifun s = foldr op 0 s
          where op x r = (if null x then 0 else head x) + r 

mifun s = foldr op 0 s
          where op x r = sum (take 1 x) + r 

私はおそらく最初を好むでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top