在if中执行readLine

时间:2013-03-24 07:43:34

标签: haskell io

我正在Haskell中编写一个小命令行实用程序,该实用程序应接受带有可选命令行参数的命令 - 但如果该参数不存在,则应提示用户输入*。例如:

$ my_prog add item_name
Adding... done

$ my_prog add
Enter item name: item_name
Adding... done

我最初的尝试看起来像这样:

add args = do
    let id = if length args > 0
        then head args
        else input where
            input <- readLine
    -- Do stuff with id
    putStrLn id

无法解析<-

*我已经决定这是一个愚蠢的想法,但我想我还是会问这个问题。

1 个答案:

答案 0 :(得分:8)

您正试图在do内使用if - 符号,这不起作用(此外,由于整个if超出{{1},因此不会进行类型检查} monad)。

IO