2017-10-27 9 views
0

は、私は最近、Haskellでこれを試してみました:この場合、(地図f)xをマップしないのはなぜですか?

> :t getEqs 
getEqs :: [Char] -> [Char] -> ([Bool], [Bool]) 
> :t mixpairs 
mixpairs :: [[[Char]]] 
> :t map 
map :: (a -> b) -> [a] -> [b] 
> map (map getEqs) mixpairs 

しかし、一見何の理由もなく、それはこれを返さ:

<interactive>:38:1: error: 
    • No instance for (Show ([Char] -> ([Bool], [Bool]))) 
     arising from a use of ‘print’ 
     (maybe you haven't applied a function to enough arguments?) 
    • In a stmt of an interactive GHCi command: print it 
> 

AFAICS何が起こるべきことであるリストとリターンのリストを取る関数別のものがリストのリストの別のリストにマッピングされます。
それはうまくいくようです。

+2

動作します。あなたは式に型エラーを起こしていません。 – Carl

+0

代わりに、 '>:t map(map getEqs)mixpairs'を試してください。これは動作して結果の型を与えることを示します。 (逆に、同じ方法で "失敗"する '> map'だけを試してください...) –

+0

明確化:私は"これを返しました:... ... [意図した[Bool] [ブール])] "。 –

答えて

10

これはうまくいくはずですが、実際にはうまくいくようです。プロンプトでこれを行う場合

はしかし、GHCiのはプリントアウト結果に望んでいる、との結果が関数のリストがあるので、それは、ない作業を行い、および機能は、印刷することができません。

+0

はい、ただし、(map getEqs)は[[Char]] - >([Bool]、[Bool])型であるため、[[[Char]]にマッピングすると[([Bool]、[Bool] ])]、a - > bまたはt(a - > b)ではない。 –

+5

'' map getEqs'は '' [[Char]] - >([Bool]、[Bool]) '型ですか?あなたは 'getEqs'の第2引数' [Char] 'を忘れてしまいました。 (さらに、引数が1つだけあっても、 'map [getEqs']は' [[Char]] - [([Bool]、[Bool])] ')の型を持ちます。 – leftaroundabout

関連する問題