then 和 else 解析 Haskell 列表理解中的错误
then and else parse error in Haskell List Comprehension
所以 Learn You A Haskell 中有一个示例,我想使用列表推导重写。基本上应该是一个简单的函数f:[a]->[Char]
如下
let sayMe xs = [ if x <- [1..5] then show x else "Not a desired value" | x <- xs]
不幸的是,当我尝试定义函数时出现以下错误:
parse error in if statement: missing required then and else clauses
但是,我 do 有 then
和 else
子句,而据我所知,我的功能不是很远与我已验证有效的书中的另一个示例不同:
let sayMe xs = [if x<10 then "Bang!" else "Boom!"|x<-xs, odd x]
我知道还有其他方法可以做到这一点,但我想了解为什么这种特定方法没有按照我认为的方式工作。
一个if-then-else
表达式包含三个部分:条件、True
分支和False
分支。这些部分中的每一个都必须是一个表达式。 x <- [1..5]
不是表达式;它是列表理解语法的一部分。但是,您可以用表达式来表达该概念。
[ if 1 <= x && x <= 5 then show x else "Not a desired value" | x <- xs ]
如果你感兴趣的东西不是连续的,可以使用elem
功能:
[ if x `elem` [1,17,94,12] then show x else "Not a desired value" | x <- xs ]
所以 Learn You A Haskell 中有一个示例,我想使用列表推导重写。基本上应该是一个简单的函数f:[a]->[Char]
如下
let sayMe xs = [ if x <- [1..5] then show x else "Not a desired value" | x <- xs]
不幸的是,当我尝试定义函数时出现以下错误:
parse error in if statement: missing required then and else clauses
但是,我 do 有 then
和 else
子句,而据我所知,我的功能不是很远与我已验证有效的书中的另一个示例不同:
let sayMe xs = [if x<10 then "Bang!" else "Boom!"|x<-xs, odd x]
我知道还有其他方法可以做到这一点,但我想了解为什么这种特定方法没有按照我认为的方式工作。
一个if-then-else
表达式包含三个部分:条件、True
分支和False
分支。这些部分中的每一个都必须是一个表达式。 x <- [1..5]
不是表达式;它是列表理解语法的一部分。但是,您可以用表达式来表达该概念。
[ if 1 <= x && x <= 5 then show x else "Not a desired value" | x <- xs ]
如果你感兴趣的东西不是连续的,可以使用elem
功能:
[ if x `elem` [1,17,94,12] then show x else "Not a desired value" | x <- xs ]