1

我正在尝试查询列表理解:

> (set xs '(1 2 3 4 5 6 7 8))
> (lc ((<- x xs) (when (> x 5))) x) 

但我得到了错误exception error: undefined function when/1

是否可以将警卫语句应用于lc

4

1 回答 1

3

根据LFE User Guide,在列表理解限定符中,守卫必须在列表表达式之前:

(<- pat {{guard}} list-expr)

这意味着您的示例应编写如下:

lfe> (set xs '(1 2 3 4 5 6 7 8))
(1 2 3 4 5 6 7 8)
lfe> (lc ((<- x (when (> x 5)) xs)) x)
(6 7 8)

您也可以将大于表达式视为普通的布尔表达式限定符:

lfe> (lc ((<- x xs) (> x 5)) x)
(6 7 8)
于 2019-10-21T23:01:47.660 回答