繁体   English   中英

Haskell案例陈述

[英]Haskell case statement

我有这样的代码

main :: [[String]] -> IO ()
main st = do
    answer <- getLine
    case answer of
      "q" -> return ()
      "load" x -> main $ parseCSV $ readFile x

这是行不通的,所以我的问题是如何使用case switch语句来更改输入内容。例如,在我的代码中,我希望用户的输入是q或负载,但是负载将不断变化:

load "sample.csv"
load "test.csv"
load "helloworld.csv"

在我的代码中,我将不断变化的输入表示为X,但这并不符合我的预期。

帮助将不胜感激,谢谢。

正如其他人提到的那样,问题在于您的模式匹配。

这是解决此问题的一种简单方法(并且仍然具有可读性)。

  1. answer分为单词以进行匹配(带有words功能)。
  2. 使用模式匹配中的第一个单词。
  3. 如果要使用其余的“单词”,只需unwords列表中其余unwords的单词的单词即可。

例:

main :: IO ()
main = do
    answer <- getLine
    case words answer of
        ("q":_)    -> putStrLn "I'm quitting!"
        ("load":x) -> putStrLn ("Now I will load " ++ unwords x)
        otherwise  -> putStrLn "Not sure what you want me to do!"

注意-您上面的x实际上是此处的unwords x

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM