E>Не хочу никого обижать, все вышесказанное является моим субьективным мнением. Поскольку лично моих способностей не хватает, чтобы понимать код вида (* (+ n 1) k). Не судьба, да и хрен с ней.
[Скорее всего оффтоп]
По поводу (* (+ n 1) k)
Не могу сказать что я большой спец в лиспе
, скорее даже наоборот.
Но с пониманием такого кода проблем нет. Попробую объяснить как я его вижу, может кому-то покажется полезным
возьмем всеми любимый XML
<multiply>
<operands>
<operand>
<add >
<operands>
<operand>
n
</operand>
<operand>
1
</operand>
</operands>
</add>
</operand>
<operand>
k
</operand>
</operands>
</multiply>
фууу.. как объемно и некрасиво.
попробуем попроще.
Уберем уродливые Operands и operand теги
ХМЛ легким движением руки превращается ....
<multiply>
<add>
<n></n>
<1></1>
</add>
<k></k>
</multiply>
О.. не совсем ХМЛ, но понять то можно, не правда ли ?
А теперь финт ушами..
превращаем
<tag>
</tag>
в такую вот вещь
<tag
/tag>
Сбалансированных скобок достаточно чтобы обеспечить корректность, верно ?
И еще чуть- чуть упростим. Зачем нам закрывающий тег ? Достаточно и закрывающей угловой скобки.
<tag
>
И преобразовываем все теги в примере к такому виду.
было
<multiply>
<add>
<n></n>
<1></1>
</add>
<k></k>
</multiply>
стало
<multiply
<add
<n>
<1>
>
<k>
>
И еще небольшое косметическое усовершенстование...
заменяем
<tag>
на
tag
в том случае, если у него нету никаких внутренностей
<multiply
<add
n
1
>
k
>
Вуаля.
Теперь записываем это все дело в одну строку
<multiply <add n 1> k>
и сравниваем
(* (+ n 1) k)
В чем же отличие.. ах да.. "*" и "+" намного сложнее воспринимаются чем multiply и add. Но я думаю к этому можно привыкнуть
Равно как и к замене <> на ()
[/Скорее всего оффтоп]
... << RSDN@Home 1.1.4 silent>>