小编Mar*_*aro的帖子

为交互式IO编写循环:编号和布局的问题

我刚开始使用Haskell,它让我感到困惑.我之前做过Java和Python,对我来说更有意义.

我正在尝试获取用户输入,检查它是否有效,如果没有:打印错误并再次获取输入; 如果有效:从中生成一个布尔值.

更确切地说,我想要一个是/否输入,其中'y'将产生True,'n'将产生False,并且任何其他输入将在命令行中打印消息并要求再次输入y/n.

例如:

Continue? y/n:
> assd
Invalid input.
Continue? y/n:
> y
(something happens)
Continue? y/n:
> n
(Close program)
Run Code Online (Sandbox Code Playgroud)

用farmiliar格式编写,这样的函数:

boolean inputBool() {
    while(True) {
       str = input("Continue? y/n: ");
       if (str == "y") {
           return True;
       } else if (str == "n") {
           return False;
       } else {
           print("Invalid input");
       }
}

--main program--

while(inputBool()) {
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

自从我刚开始使用haskell(今天实际上)以来,我不知道我能做什么或不能做什么.我在想类似的东西:

yesno :: Bool
yesno = do
        putStr "Continue? y/n: " 
        str <- readLn
        if (str == …
Run Code Online (Sandbox Code Playgroud)

io haskell loops

12
推荐指数
1
解决办法
6067
查看次数

标签 统计

haskell ×1

io ×1

loops ×1