如何在haskell中进行简单的选择?

时间:2011-06-08 10:39:08

标签: haskell

我有问题,此代码不起作用,我不知道原因:

foo :: [String] -> IO [String]
foo input = do
    choice <- getLine
    if choice == "1" then do
        putStrLn "good choice"
        return input
    else
        return []

1 个答案:

答案 0 :(得分:2)

原样(有点重复)代码适合我。 if / else很难用标签搞定。 Wiki文章if/then/else应该有所帮助。

foo :: [String] -> IO [String]
foo input = do
  choice <- getLine
  if choice == "1" then do
    putStrLn "good choice"
    return input
    else
    return []

消除内部do表达式使得if / then块更容易缩进。

foo2 input = do
  choice <- getLine
  if (choice == "1") 
  then (putStrLn "good choice" >> return input)
  else (return [])