可以在 Haskell 列表推导式中使用 if 结构吗?

Mir*_*nov 1 haskell if-statement list-comprehension

是否可以if在列表推导式中使用某种语句来确定列表中每个元素的多个结果之一?

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

如果值为 a 0,则字符串"off"需要存储在另一个列表中的相同位置。如果该值1"on"

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

Tho*_*mas 5

是的,您当然可以:

on_or_off_list xs = [if x == 0 then "off" else "on" | x <- xs]
Run Code Online (Sandbox Code Playgroud)

或者以更无点的风格:

on_or_off 0 = "off"
on_or_off _ = "on"
on_or_off_list = map on_or_off
Run Code Online (Sandbox Code Playgroud)