Я пытался понять следующий код:
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
, но я мало что узнал, поверхностно прочитав их документы по хаскелю. У них также есть let...in
, чего я не понял, но было бы неплохо узнать, есть ли он у FFL.
Итак, каково значение использования let
по сравнению с where
? Нужно ли было использовать здесь let
? (Также, возможно, еще один вопрос: зачем нужны эти точки с запятой?)