Просмотр полной версии : Lisp-интерпретатор на AS3 (чесно-чесно :))
Вашему вниманию предоствляется следующий тест-кейс: порт макроса из Лиспа (progn (), (), ...()) в 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
Не. Не катит. Хочу Фортран.
Тыща форматов вывода и обобществленные области данных (COMMON)
Блин хотел бы порадоваться, но совсем не в теме)
До лиспа не дошёл ещё.. тем более до этого макроса.
Вижу, что с каким то конвеером связано.. можешь для совсем тупых разъяснить, что и куда? И главное, в чём прикол?
Этот макрос просто позволяет последовательно выполнить несколько функций (то что вобщем-то делает в 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?
Lisp я изучу в ближайшие полгода на мало-мальский уровень, но инетрпретаторы это круто )
Немного не в тему, но почему именно Lisp?
Мне больше интересно зачем оно надо, пытаться из одного языка сделать другой? Если уж на то пошло, почему бы свой язык не сочинить... :)
Psycho Tiger
05.02.2011, 21:35
Это не попытки извращения, это как бы любовь.
Это не попытки извращения, это как бы любовь.
Тогда присоединяюсь к вопросу
Ммм... наверное потому что это чем-то на игрушку Portal похоже. :) А еще потому что мне интересно метапрограмирование. А еще потому что мне просто очень тяжело дается bash / sh и им подобные, ну и не писать же какие-то утилиты нужные по работе на PHP... Python мне не нравистся изза форматирования и динамической типизации. Вобщем, и выбирать не из чего осталось :)
Да, еще такой момент: в этом языке, ну, по крайней мере пока что мне так кажется, всегда есть ответ на вопрос "зачем" и "почему". Т.е. язык построен на логике а не на предрассудках / исторически сложившихся обстоятельствах. Т.е нету каких-то недоразумений типа "А почему Number с прописной а int со строчной?".
Psycho Tiger
05.02.2011, 23:04
Да, еще такой момент: в этом языке, ну, по крайней мере пока что мне так кажется, всегда есть ответ на вопрос "зачем" и "почему". Т.е. язык построен на логике а не на предрассудках / исторически сложившихся обстоятельствах.
Речь про Lisp?
Ам... я если честно не понял часть про "утилитки по работе". Если нужен Lisp - нужно взять Lisp. Но тягу к таким глупостям, которые по сути не нужны, но очень забавные я одобряю :)
Например, мне осталось в наследство гора яваскрипта, в котором разобраться, ну очень тяжело... но зато автор оставил комментарии. Проблема в том, что эти комментарии нельзя автоматически вырезать из файлов каким-нибудь генератором документации - надо самому чего-то написать. Не обязательно, чтобы красиво, главное, чтобы удобно и быстро. Вот, Lisp мне идеально для этого подошел :)
Psycho Tiger
05.02.2011, 23:49
Да, но почему нельзя взять чистый Lisp? )
Или суть в движении энтузиазмом?
Что значит "чистый"? Common Lisp вроде не грязный :)
Psycho Tiger
06.02.2011, 01:59
Всмысле взять Lisp без самодельных интерпретаторов на AS )
Ну так язык это одно дело, а где он выполняется / во что компилируется - другое. На лиспе нет написаных плагинов для отображения векторной графики в браузере :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.