我正在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
无法解析<-
。
*我已经决定这是一个愚蠢的想法,但我想我还是会问这个问题。
答案 0 :(得分:8)
您正试图在do
内使用if
- 符号,这不起作用(此外,由于整个if
超出{{1},因此不会进行类型检查} monad)。
IO