Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Lisp-интерпретатор на AS3 (чесно-чесно :)) (http://www.flasher.ru/forum/showthread.php?t=150011)

wvxvw 04.02.2011 21:09

Lisp-интерпретатор на AS3 (чесно-чесно :))
 
Вашему вниманию предоствляется следующий тест-кейс: порт макроса из Лиспа (progn (), (), ...()) в AS3 :)
Пример:

Код AS3:

package  
{
        import flash.display.Sprite;
        import tld.wvxvw.lasp.collect;
        import tld.wvxvw.lasp.Lasp;
        import tld.wvxvw.lasp.nth;
        import tld.wvxvw.lasp.progn;
        import tld.wvxvw.lasp.value;
 
        /**
        * ...
        * @author wvxvw
        */

        public class TestProgn extends Sprite
        {
                public function TestProgn()
                {
                        super();
                        this.testProgn();
                }
 
                private function testProgn():void
                {
                        trace (value
                                (nth (collect
                                        (progn (trace, "testing...", 123)
                                                (trace, "second round", 456)
                                                (trace, "third", 789)(isNaN, 100)
                                                (trace, /foo/g)), 4)));
                }
        }
}

Отредактировано для полноты эффекта :)))
Последняя редакция. Остальные исходники можно посмотреть тут:
http://pastebin.com/kF5RazSV

dark256 05.02.2011 02:28

Не. Не катит. Хочу Фортран.
Тыща форматов вывода и обобществленные области данных (COMMON)

Котяра 05.02.2011 02:51

Блин хотел бы порадоваться, но совсем не в теме)
До лиспа не дошёл ещё.. тем более до этого макроса.
Вижу, что с каким то конвеером связано.. можешь для совсем тупых разъяснить, что и куда? И главное, в чём прикол?

wvxvw 05.02.2011 16:14

Этот макрос просто позволяет последовательно выполнить несколько функций (то что вобщем-то делает в AS3 запятая). В Лиспе он часто нужен там, где нужно передать функцию, а нужно выполнить несколько функций, например в (if condition iftrue iffalse), вот iftrue / iffalse ожидают функцию, т.е. было бы: (if condition (progn (f1) (f2) ... (fN)) (progn (f1) (f2) ... (fN))). Ну а прикол в том, что синтаксис сохранен почти один в один (жаль, запятые в списках никак не побороть :D).
А вообще, у меня есть мысль написать интерпретатор Лиспа для Флеша. Ну это так, мЯчты пока что, но задел какой-то уже есть... только времени совсем нету...

Psycho Tiger 05.02.2011 20:45

Lisp я изучу в ближайшие полгода на мало-мальский уровень, но инетрпретаторы это круто )
Немного не в тему, но почему именно Lisp?

TanaTiX 05.02.2011 21:28

Цитата:

Сообщение от Psycho Tiger (Сообщение 970721)
Lisp я изучу в ближайшие полгода на мало-мальский уровень, но инетрпретаторы это круто )
Немного не в тему, но почему именно Lisp?

Мне больше интересно зачем оно надо, пытаться из одного языка сделать другой? Если уж на то пошло, почему бы свой язык не сочинить... :)

Psycho Tiger 05.02.2011 21:35

Это не попытки извращения, это как бы любовь.

TanaTiX 05.02.2011 22:14

Цитата:

Сообщение от Psycho Tiger (Сообщение 970732)
Это не попытки извращения, это как бы любовь.

Тогда присоединяюсь к вопросу

wvxvw 05.02.2011 22:56

Ммм... наверное потому что это чем-то на игрушку Portal похоже. :) А еще потому что мне интересно метапрограмирование. А еще потому что мне просто очень тяжело дается bash / sh и им подобные, ну и не писать же какие-то утилиты нужные по работе на PHP... Python мне не нравистся изза форматирования и динамической типизации. Вобщем, и выбирать не из чего осталось :)
Да, еще такой момент: в этом языке, ну, по крайней мере пока что мне так кажется, всегда есть ответ на вопрос "зачем" и "почему". Т.е. язык построен на логике а не на предрассудках / исторически сложившихся обстоятельствах. Т.е нету каких-то недоразумений типа "А почему Number с прописной а int со строчной?".

Psycho Tiger 05.02.2011 23:04

Цитата:

Да, еще такой момент: в этом языке, ну, по крайней мере пока что мне так кажется, всегда есть ответ на вопрос "зачем" и "почему". Т.е. язык построен на логике а не на предрассудках / исторически сложившихся обстоятельствах.
Речь про Lisp?


Ам... я если честно не понял часть про "утилитки по работе". Если нужен Lisp - нужно взять Lisp. Но тягу к таким глупостям, которые по сути не нужны, но очень забавные я одобряю :)


Часовой пояс GMT +4, время: 15:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.