Haskell中列表推導(dǎo)是怎么工作的

小億
82
2024-04-16 12:05:05

在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)的工作流程如下:

  1. 從左到右依次處理生成器,取出 list 中的元素,并將其綁定到 pattern 上。
  2. 對(duì)于每一組綁定的值,計(jì)算 expression 的值,并將其加入到結(jié)果列表中。
  3. 重復(fù)上述步驟,直到所有生成器都被處理完畢。
  4. 返回最終的結(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]。

0