2

私はかなり混乱したクラスでこの質問をされました、私たちは以下を提示されました:

以下の型宣言の場合:

ranPositions :: Image -> Dims -> [Point] 
getBlockSums :: Image -> Dims -> [Point] -> [BlockSum]
i :: Image
d :: Dims

次の種類は何ですか?上記じゃないですか!

ranPositions i d
getBlockSums i d

だから私が答えたのはこれでした:

type ranPositions = Array Point Int, (Int, Int)
type getBlockSums = Array Point Int, (Int, Int)

// Because (this was given)

type Image = Array Point Int 
type Dims = (Int, Int)

::間違っていることは別として、関数のタイプは後に宣言されたものであり、したがってすでに与えられていると思ったので、この質問は私を混乱させました、そうではありませんか?

私は少し説明することで行うことができました、そして私は本当にどんな助けにも感謝します。

4

2 に答える 2

8

タイプranPosition i d[Point]-です(カリー化すると、を返す関数が得られます[Point]

タイプgetBlockSums i dは-です(カリー化すると、からへ[Point] -> [BlockSum]の関数を返す関数が得られます)[Point][BlockSum]

于 2011-04-07T13:10:48.920 に答える
3

もちろんですが、関数ではなく、の種類を求めていました。

次の式のタイプが明らかではありませんか?

foo 
foo a
foo a b

すべて異なっている必要がありますか?これが明確でない場合は、戻って関数適用について読んでください。

于 2011-04-07T13:10:00.147 に答える