簡體   English   中英

然后,否則解析Haskell List Comprehension中的錯誤

[英]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

但是,我確實在那兒有thenelse子句,而且據我所知,我的功能與書中已驗證有效的另一個示例相差很遠:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM