2

bounds1Accum という関数があります。この機能はうまく機能します

bounds1Accum ::  [Integer] -> Integer -> Integer -> (Integer, Integer)
bounds1Accum l min max = (minimum (min:l), maximum (max:l))

私が問題を抱えているのは、リストだけを取り、最小最大ペアを返すbounds1という別の関数が必要なことです。この関数は、bounds1accum をラップして、渡されるリストが空かどうかを最初に確認することになっています。リストが空の場合は Nothing を返すか、bounds1Accum 関数を呼び出した結果のみを返します。

2つのケースが必要で、署名用に持っています

bounds1 :: [l] -> Maybe(min,max)
bounds1 [] = Nothing (which I am unsure if this will be correct)

次に、2番目のケースは、私が最初に持っていた困惑した場所です

bounds1 l  min max  = if null l then Nothing else Just $ bounds1 bounds1Accum min max

しかし、これはコンパイルさえしないので、誰かが提案や別の方法でこの問題を見ることができれば、それは素晴らしいことです。これは課題のためなので、答えは必要ありませんが、問題を解決するためのガイダンスまたはヘルプが必要です. ありがとうございました

4

1 に答える 1

1

2 番目のケースでは、引数としてminandがありません。maxこれらの値をリストから取得する必要があります。

if最初のケースですでに空のリストを処理しているため、これは不要です。

そして、なぜbounds1使用する前にあるのbounds1Accumですか?

于 2013-04-19T15:58:00.327 に答える