我正在Haskell中编写一个小命令行实用程序,该实用程序应接受带有可选命令行参数的命令 - 但如果该参数不存在,则应提示用户输入*.例如:
$ my_prog add item_name
Adding... done
$ my_prog add
Enter item name: item_name
Adding... done
Run Code Online (Sandbox Code Playgroud)
我最初的尝试看起来像这样:
add args = do
let id = if length args > 0
then head args
else input where
input <- readLine
-- Do stuff with id
putStrLn id
Run Code Online (Sandbox Code Playgroud)
哪个无法解析<-.
*我已经决定这是一个愚蠢的想法,但我想我还是会问这个问题.
你试图在do里面使用-notation if,这将无法工作(此外,由于整体if不在IOmonad中,因此不会进行类型检查).
add args = do
id <- if length args > 0
then return $ head args
else readLine
putStrLn id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |