3

私は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

での解析に失敗します<-

*それ以来、これはばかげた考えだと判断しましたが、とにかく質問したいと思いました。

4

1 に答える 1

8

do内で-表記を使用しようとしていますがif、これは機能しません(さらに、全体がモナドifの外にあるため、タイプチェックは行われません)。IO

add args = do
    id <- if length args > 0
              then return $ head args
              else readLine
    putStrLn id
于 2013-03-24T08:00:50.483 に答える