If statement if结构可以用于Haskell列表理解吗?

If statement if结构可以用于Haskell列表理解吗?,if-statement,haskell,list-comprehension,If Statement,Haskell,List Comprehension,是否可以在列表理解中使用某种if语句来确定列表中每个元素的几个结果之一 假设我对包含0或1元素的列表有一个列表理解 如果值为0,则字符串“off”需要存储在同一位置的另一个列表中。如果值为1,则“打开” 这只是一个例子。递归看起来很容易实现,但如果需要在列表列表上实现,该怎么办?还是列表列表列表?是,在带保护的单例列表中使用互斥测试: foo :: (Num a, Eq a) => [a] -> [String] foo xs = [s | x <- xs, s <- [

是否可以在列表理解中使用某种
if
语句来确定列表中每个元素的几个结果之一

假设我对包含
0
1
元素的列表有一个列表理解

如果值为
0
,则字符串
“off”
需要存储在同一位置的另一个列表中。如果值为
1
,则
“打开”


这只是一个例子。递归看起来很容易实现,但如果需要在列表列表上实现,该怎么办?还是列表列表列表?

是,在带保护的单例列表中使用互斥测试:

foo :: (Num a, Eq a) => [a] -> [String]
foo xs = [s | x <- xs, s <- ["off" | x==0] ++ ["on" | x==1]]

这就回答了您的具体问题。

是的,在带保护的单例列表中使用互斥测试:

foo :: (Num a, Eq a) => [a] -> [String]
foo xs = [s | x <- xs, s <- ["off" | x==0] ++ ["on" | x==1]]

这回答了您的具体问题。

是的,您当然可以:

on_or_off_list xs = [if x == 0 then "off" else "on" | x <- xs]

是的,你当然可以:

on_or_off_list xs = [if x == 0 then "off" else "on" | x <- xs]

请澄清您的一般性问题,它不清楚。请澄清您的一般性问题,它不清楚。
[“开”,“关”!!fromnum(x==0)| x最后不得不查找冒号三个表情符号。:)我明白您的意思,但我的第一反应是避免使用“如果”和“那么”以及“其他”,如果可以的话。我应该写的实际上是
s我想我一开始误解了这个问题,认为它要求一种LC方式来做与
if
等价的事情;然后意识到它可能要求使用
if
本身,而不是“某种
if
”.我故意使用了
let
,因为这样代码更容易进一步更改,因为问题说这只是一个示例,所以我认为应该很容易更改。
[[“开”,“关”]!!fromEnum(x==0)| x最后不得不查找冒号三符号:)我明白你的意思,但我的第一反应是避免使用“如果”、“那么”和“其他”,如果可以的话。我应该写的实际上是
s我想我一开始误解了这个问题,认为它要求一种LC方式来做与
if
等价的事情;然后意识到它可能要求使用
if
本身,而不是“某种
if
”.我故意使用了
let
,因为这样代码更容易进一步更改,因为问题说这只是一个示例,所以我认为应该很容易更改。