Re[2]: Что мы потеряли?
От: Mirrorer  
Дата: 28.08.06 07:54
Оценка: 95 (12) :))) :))) :))) :)))
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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.