Невозможно применить защитное выражение в понимании списка запросов - PullRequest
1 голос
/ 21 октября 2019

Я пытаюсь понять список запросов:

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

Но я получаю сообщение об ошибке exception error: undefined function when/1.

Можно ли применить защитные операторы к lc?

1 Ответ

3 голосов
/ 22 октября 2019

Согласно Руководству пользователя LFE , в квалификаторе понимания списка охранник должен предшествовать выражению списка:

(<- pat {{guard}} list-expr) </p>

Это означает, что ваш пример должен быть записан следующим образом:

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)
...