【发布时间】:2013-08-04 11:51:42
【问题描述】:
我仍在努力学习 Haskell 的语法,因为它不同于我以前见过的任何其他编程语言。在大多数命令式编程语言中,可以像这样创建嵌套条件语句:
function thing1(x){
if(x > 2){
if(x < 5){
return 3;
}
else if(x < 10){
return 10;
}
else if(x >= 10){
return 6;
}
}
else{
return 4;
}
}
但是,经过几次尝试,我仍然没有弄清楚 Haskell 中的等效语法:我尝试在 Haskell 中创建等效函数,但出现语法错误:prog.hs:10:1: parse error on input main':
thing1 x =
if x > 2 then
if x < 5 then
3
else if x < 10 then
10
else if(x >= 10)
6
else
4
main = do
putStr(show(thing1 6))
我不确定这里的语法有什么问题:是否可以像在其他语言中一样在 Haskell 中创建嵌套条件语句?
【问题讨论】:
-
这里的错误与if/else无关,而与
main的缩进有关。它必须与thing1在同一列中开始。 -
如果 x >= 10 结果是什么?
-
@chirlu 如果程序格式正确,它将返回
4。 -
@AndersonGreen 不,不会。当然不是任何流行的带大括号的语言。在 JS 中是
undefined. -
一个不相关的小提示 --
putStrLn . show有一个别名print。
标签: haskell conditional-statements