[英]then and else parse error in Haskell List Comprehension
因此,“ 學習您的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
但是,我確實在那兒有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 ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.