должно ли предложение FFL where разрешать ссылку на предыдущую переменную?

Итак, в языке формул Frogatto у нас может быть предложение where с несколькими присваиваниями, например, где a = yadda, b = foo

Однако я не могу ссылаться на a в назначении b?

Я надеялся упростить, разбив его на шаги, where a = ..., b = ...(refers to var a)...

Примечание: похоже, он не работает и в порядке where b,a:

EVALUATING: [a,b] where b=a+1, a=1
ASSERTION FAILED: Unknown symbol 'a'
[a,b] where b=a+1, a=1
              ^^

person Patrick Parker    schedule 20.05.2018    source источник


Ответы (1)


Используйте лестницу предложений where, например:

[a,b] where b = a+1 where a = 1

person Denivarius    schedule 20.05.2018
comment
Хорошо, это работает. Как вы думаете, следует ли поддерживать синтаксис a=1, b=a+1 в будущей версии? - person Patrick Parker; 20.05.2018
comment
Я думаю, что мы могли бы в конечном итоге поддержать это. Это, безусловно, устранило бы некоторую путаницу, такую ​​как ваша. - person Denivarius; 20.05.2018
comment
Я бы порекомендовал новичкам как можно чаще использовать лестницы из where вместо параллельных where переменных, поэтому каждая запятая явно представляет собой разделение между двумя элементами в самой верхней области видимости. Параллельное предложение where вводит сложность, поэтому запятая может находиться внутри области where, и у движка могут возникнуть проблемы с определением того, заканчивается ли запятая предложение where или вместо этого заканчивается элемент FFL, для которого это предложение where определяет дополнительные переменные. - person 1737973; 22.05.2018