質問
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
私はおそらく最初を好むでしょう。
所属していません StackOverflow