Добрый вечер!
Во-первых, мне не нравится, что вместо
a.b.c я пишу (c-of (b-of a)). Я уже писал про то, что язык должен
быть правильно построен по частотам - более часто встречаемые идиомы
должны быть более короткими. Лисп позволяет выделять такие идиомы и
делать их более короткими, но в начальной точке он сильно уступает
быдлоязыкам (таким, как JavaScript). А поскольку 90% программирования
всё же сосредоточено вокруг простых операций, то лисп тяжёл.
Я было подумал про Яву... Но ява - это не динамический язык.
Возможность поменять 1-строчку в многомегабайтном коде и приступить
к его отладке через доли секунды имеется только в лиспе...
Поэтому возникает такая идея:
сделать новый синтаксис для лиспа. Который бы на первом этапе
преобразовывал
function m(a) {
let u=a.b;
let count=u.count();
<comment>бебебе</>;
u.c(x) = 34*5;
return u.count()-count;
}
сначала в
(" " function (".()" m a)
("{;"
(" " let (= u (dot a b)))
(:t comment "bebebe")
(" " let (= count (".()" (dot u count))))
(= (".()" (dot u c) x) (* 34 5))
(" " return (- (".()" (dot u count)) count)))
и потом - в
(defun m (a)
(let* ((u (a-of b))
(count (count u)))
(setf (funcall (u-of c) x) (* 34 5))
(- (count u) count))
(последнее преобразование, причём, чтобы по выбору рендерило код либо на лиспе, либо на php, либо на javascript).
плюс к тому, чтобы можно было привязывать
атрибуты (например, декларацию типа) не только в
лексической видимости, но и динамически в ходе компиляции (хотя,
признаться, я и сам это не понимаю).
плюс к тому, чтобы
(defComposedFun fooBar (x) foo bar) не порождало функцию
(defun fooBar () (bar (foo x)))
а производило inline-подстановку foo в bar и возвращало исходник.
Плюс к тому, чтобы можно было писать не только include, но и
exclude, чтобы можно было генерить и страницу, и аякс-скрипт в ней
в одном файле, типа:
atCompileTime {
<defmacro webFile args = (string relativePathname,&body body)>{
<quote>exclude(<unquote>getenv(www-root) + relativePathname</>,
<unquote>body<//>
}</defmacro>
webFile("application.html",
<html><head> ... </html>)
webFile("ajax.php",
<?php>...</>)
}
Уф. Хватит на сегодня. Жалко, что на ЛОРе темы не всплывают, а то можно было бы теперь долго здесь флудить...
←
1
2
3
→
Ответ на:
комментарий
от den73
Ответ на:
комментарий
от www_linux_org_ru
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Лисп (2002)
- Форум лисп (2005)
- Форум Рефакторинг лиспа средствами самого лиспа (2011)
- Форум Закапывателям лиспа (2012)
- Форум Знатокам лиспа (2008)
- Форум лисп биллинг (2009)
- Форум Лисп, итератор (2008)
- Форум О Лиспе. (2008)
- Форум о ЛИСПе (2008)
- Форум Мир Лиспа (2006)