本地繫結
列表推導可以引入變數的本地繫結來儲存一些臨時值:
[(x,y) | x <- [1..4], let y=x*x+1, even y] -- [(1,2),(3,10)]
用技巧可以達到同樣的效果,
[(x,y) | x <- [1..4], y <- [x*x+1], even y] -- [(1,2),(3,10)]
像往常一樣,列表推導中的 let
是遞迴的。但生成器繫結不是,它允許陰影 :
[x | x <- [1..4], x <- [x*x+1], even x] -- [2,10]