0

タプル値の入力を許可するために、関数をアンカリー化する必要があるこのコードを書いています。これは私のコードです:

printField :: Int -> String -> String
--the function to be uncurried

printRow :: [(Int, String)] -> String
printRow d = map (uncurry printField) d

しかし、次のエラーが表示され、理由がわかりません。

Couldn't match type '[Char]' with 'Char'
Expected type: Int -> String -> Char
  Actual type: Int -> String -> String
In the first argument of 'uncurry', namely 'printField'
In the first argument of 'map', namely '<uncurry printField>'
In the expression: map <uncurry printField> d

これが何を意味し、どのように修正するかを知っている人はいますか?

前もって感謝します!

よろしく、スカイフ。

4

1 に答える 1

2

Satvik が既に述べたように、 を使用しますconcatMap

ここで eta リダクションを使用して冗長を削除できますd

printRow = concatMap (uncurry printField)

于 2013-09-29T13:35:56.243 に答える