Я пытался понять следующий код:
def() ->commands
if(deferred_passive_abilities != [],
let [{ability: class passive_ability, creature: class creature}] items = [];
let found = false;
map(deferred_passive_abilities,
if(cmd = null, add(items, [value]), [cmd, set(found, true)])
where cmd = value.ability.static_effect(me, value.creature));
if(found,
set(deferred_passive_abilities, items);
evaluate_deferred_passive_abilities(),
set(deferred_passive_abilities, []))
)
Похоже, что в Haskell есть и let
, и where
, но я не многому научился, поверхностно читая их документы по Haskell.У них также есть let...in
, что я не понял, но было бы хорошо узнать, есть ли у FFL это.
Итак, каково значение использования let
против where
?Нужно ли было использовать let
здесь?(Также возможно другой вопрос: зачем нужны эти точки с запятой?)