在Haskell中,列表推導(dǎo)是一種用來(lái)生成新列表的表達(dá)式。它的基本形式是 [ expression | generator1, generator2, ..., generatorN ]
。其中,expression
是一個(gè)關(guān)于生成器的表達(dá)式,generator
是一個(gè)形如 pattern <- list
的表達(dá)式,它用來(lái)從 list
中取出元素,并將其綁定到 pattern
上。
列表推導(dǎo)的工作流程如下:
list
中的元素,并將其綁定到 pattern
上。expression
的值,并將其加入到結(jié)果列表中。舉個(gè)例子,下面是一個(gè)簡(jiǎn)單的列表推導(dǎo)示例:
-- 生成一個(gè)包含 1 到 10 的偶數(shù)的列表
evens = [ x | x <- [1..10], x `mod` 2 == 0 ]
在這個(gè)例子中,我們使用了一個(gè)生成器 x <- [1..10]
來(lái)遍歷從 1 到 10 的所有元素,然后通過(guò)篩選條件 x
mod 2 == 0
來(lái)選取偶數(shù),最終得到結(jié)果為 [2, 4, 6, 8, 10]
。