为什么在这种情况下不映射(映射f)x工作?

时间:2017-10-27 14:14:38

标签: haskell

我最近在Haskell中试过这个:

> :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应该发生的事情是,一个获取列表并返回另一个东西的函数被映射到另一个列表列表列表。
这似乎应该有效。

1 个答案:

答案 0 :(得分:10)

这似乎应该有效,而且确实有效。

但是,如果你在提示符处这样做,GHCi想要打印出结果,那工作,因为结果是一个函数列表,和功能无法打印。