我正在学习Haskell,我想把列表作为输入,并使用函数minimum输出最小值。
module Main where
main = do putStrLn "Enter list"
list <- readLn
putStr "minimum list = "
print (minimum list)
但是我遇到了一些错误:
No instance for (Show a0) arising from a use of `print'
The type variable `a0' is ambiguous
和
No instance for (Ord a0) arising from a use of `minimum'
The type variable `a0' is ambiguous
我一直在阅读Haskell类型类并从网络上的各种来源中键入签名,但到目前为止,没有任何内容能够阐明最适合上述窘境的行动方案。
答案 0 :(得分:3)
这是因为您的类型 是不明确的:代码可以用于实现Ord
和Show
的任何类型,以及编译器不知道选择哪一个。要解决此问题,请在某处添加类型注释,以告诉它您希望它使用哪种类型。例如。获取Integer
s的列表:
module Main where
main = do putStrLn "Enter list"
list <- readLn
putStr "minimum list = "
print (minimum list :: Integer)