Haskell:输入一个列表并输出其最小值

时间:2014-08-11 08:37:08

标签: list haskell io

我正在学习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类型类并从网络上的各种来源中键入签名,但到目前为止,没有任何内容能够阐明最适合上述窘境的行动方案。

1 个答案:

答案 0 :(得分:3)

这是因为您的类型 是不明确的:代码可以用于实现OrdShow任何类型,以及编译器不知道选择哪一个。要解决此问题,请在某处添加类型注释,以告诉它您希望它使用哪种类型。例如。获取Integer s的列表:

module Main where

main = do putStrLn "Enter list"
          list <- readLn
          putStr "minimum list = "
          print (minimum list :: Integer)