LINUX.ORG.RU

[вещества][лиспы]скобочный веб

 


1

4

Мечта идиота. Чтобы все эти разнабойные языки (html, css, js, xml, xlst, ...) померли и был один веб на s-expr. Макросы обязательно (и это лучше чем xlst)
Типичная вебстраничка была бы такой.

(html
  (head
    (title '(Web page))
    (style
      (match '(body .footer)
        :color red
      )
    )
    (script
      (alert 'Hello world')
    )
  )
  (body
    (div :id 'foo')
  )
)
Прошу прощения на неканоничные скобки. CL конечно же как скриптовый язык. html и css - доменные. И браузер на лиспе, расширяемый.
Что думают многоуважаемные лисперы? Подьемно сделать революцию?

★★★★

Зачем оно:

……………………………………..________
………………………………,.-‘”……………….“~.,
………………………..,.-”……………………………..“-.,
…………………….,/………………………………………..”:,
…………………,?………………………………………………\,
………………./…………………………………………………..,}
……………../………………………………………………,:`^`..}
……………/……………………………………………,:”………/
…………..?…..__…………………………………..:`………../
…………./__.(…..“~-,_…………………………,:`………./
………../(_….”~,_……..“~,_………………..,:`…….._/
……….{.._$;_……”=,_…….“-,_…….,.-~-,},.~”;/….}
………..((…..*~_…….”=-._……“;,,./`…./”…………../
…,,,___.\`~,……“~.,………………..`…..}…………../
…………(….`=-,,…….`……………………(……;_,,-”
…………/.`~,……`-………………………….\……/\
………….\`~.*-,……………………………….|,./…..\,__
,,_……….}.>-._\……………………………..|…………..`=~-,
…..`=~-,_\_……`\,……………………………\
……………….`=~-,,.\,………………………….\
…………………………..`:,,………………………`\…………..__
……………………………….`=-,……………….,%`>–==“
…………………………………._\……….._,-%…….`\
……………………………..,<`.._|_,-&“…………….`\

enep ★★★★★
()
Ответ на: комментарий от Deleted

нет наверное лучше писать сразу 4(!) скобочки и один слеш. <> </> да еще дублировать имя тега

bga_ ★★★★
() автор топика

Подьемно сделать революцию?

Нет, ибо результат будет слишком убог. Лисп это инструмент. Не надо превращать его в религию.

archimag ★★★
()

Я только учусь, так что буду подавать патроны...

le_legioner ★★
()
Ответ на: комментарий от bga_

Он слишком громоздкий. Нужно что-то более легкое, типа как в андроиде.

note173 ★★★★★
()
Ответ на: комментарий от archimag

зато макросы то общие будут. Только представь себе как полезны макросы в css. Актуальная проблема - префиксы. Но ты умный. Сделал себе макрос который сразу превило со всеми 4 префиксами сделает и без него. Или в html генерить контент без ручног копипаста. Сплошные профиты

bga_ ★★★★
() автор топика
Ответ на: комментарий от bga_

зато макросы то общие будут.

Макросы это не серебрянная пуля.

Я в начале так и пробовал делать (всё на s-выражениях) - получается полная срань.

archimag ★★★
()

Ну и ужас. Не, уж лучше противный js.

cipher ★★★★★
()

Не взлетит. По одной простой причине: браузеры не только интерпретируют HTML, но и автоматически исправляют в нём ошибки. А в этом плане секспры отсасывают у XML-подобных хреней.

Вот поступает в браузер от сервера текст: «<x><y>foo bar</x> baz». На самом деле там должно быть <x><y>foo</y> bar</x>baz, но закрывающий тег разработчик пропустил. Браузер, балансируя теги, сможет исправить этот текст как «<x><y>foo bar</y></x> baz». Если же перейти на скобочный синтаксис, то будет что-то вроде "(x (y 'foo bar') 'baz'" - и у браузера нет иной возможности, нежели исправить это как "(x (y 'foo bar') 'baz')" - то есть, переводя обратно в XML-синтаксис, как «<x><y>foo bar</y> baz</x>». Оба варианта исправлений неверны, но первый гораздо лучше.

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

Ты чушь какую-то несешь. Если открывающий/закрывающий тег опущен, то это ситуацию в плане исправления полностью эквивалентна отсутствию закрывающей/открывающей скобки.То есть в твоем примере все исправляется одинаково.

anonymous
()

Я, когда лисп учил, сначала написал веб-сервер, потом к нему жалкое подобие веб-фреймворка, шаблоны страниц хранились в sexp, как у тебя, или в хтмл, но парсились и кешировались в sexp. И вот с этими шаблонами было очень удобно работать, модифицировать, дублировать, выполнять из них вспомогательный код. Когда архитектура и каркас были сделаны, разработку бросил - веб не люблю, стало неинтересно, и за это мне никто не платил.

Тогда мне тоже казалось что в sexp-html куча ништяков как на сервере, так и на клиенте, сейчас не знаю... Вот archimag говорит, что есть много проблем, но деталей не приводит. В веб-кодерстве у него скиллы явно выше моих, было бы интересно все же узнать у него, с какими именно проблемами он столкнулся.

staseg ★★★★★
()
Ответ на: комментарий от Miguel

Не взлетит. По одной простой причине: браузеры не только интерпретируют HTML, но и автоматически исправляют в нём ошибки. А в этом плане секспры отсасывают у XML-подобных хреней.

Ну коли мы придумываем новые стандарты :) можем просто запретить несбалансированные скобки.

staseg ★★★★★
()
Ответ на: комментарий от anonymous

Если открывающий/закрывающий тег опущен, то это ситуацию в плане исправления полностью эквивалентна отсутствию закрывающей/открывающей скобки.

Нифига. При наличии закрывающих тегов можно отыскать для каждого закрывающего тега можно найти подходящую пару, поднимаясь наверх по дереву документа и отбрасывая незакрытые теги, при их отсутствии люборй незакрытый тег делает документ сразу невалидным. Попробуй сам сделать парсер html и поймешь о чем речь.

Absurd ★★★
()
Ответ на: комментарий от anonymous

Ты чушь какую-то несешь. Если открывающий/закрывающий тег опущен, то это ситуацию в плане исправления полностью эквивалентна отсутствию закрывающей/открывающей скобки.То есть в твоем примере все исправляется одинаково.

В хтмл открывающие и закрывающие скобки (теги) именованы, больше инфы -> выше шанс исправить правильно.

staseg ★★★★★
()
Ответ на: комментарий от archimag

Лисп это инструмент. Не надо превращать его в религию.

Именем Императора! Умри, еретик!

anonymous
()
Ответ на: комментарий от archimag

Я в начале так и пробовал делать (всё на s-выражениях)

А ты смотрел Scala Lift? Насколько помню, там делается на xml, что очень похоже на s-выражения. Но я сильно не углублялся.

dave ★★★★★
()

Займись, напиши сервер и клиент (на лиспе, разумеется), которые перебрасываются s-expr и развивай.

O02eg ★★★★★
()

Не совсем то, но — hop.inria.fr

buddhist ★★★★★
()

Посмотри на picolisp. Там все это уже есть (кроме CL и его макросов)

An introduction to writing browser-based applications in PicoLisp, using the XHTML/CSS GUI-Framework, can be found in the «PicoLisp Application Development» (http://www.software-lab.de/doc/app.html) tutorial. In the last section, it describes a minimal but quite complete Application. ERP in 800 lines! :-)

anonymous
()

Что думают многоуважаемные лисперы?

знал бы ты, какой по счёту

lazyklimm ★★★★★
()
Ответ на: комментарий от Miguel

браузеры не только интерпретируют HTML, но и автоматически исправляют в нём ошибки.

могу предложить глупую идею - ошибок быть не должно

lazyklimm ★★★★★
()
Ответ на: комментарий от O02eg

Без проблем! Наслаждайся:

(tell ['cnt] 'sym ['any ..]) -> any
Family IPC: Send an executable list (sym any ..) to all family members (i.e.
all children of the current process, and all other children of the parent
process, see fork) for automatic execution. When the cnt argument is given and
non-zero, it should be the PID of such a process, and the list will be sent
only to that process. tell is also used internally by commit to notify about
database changes. When called without arguments, no message is actually sent,
and the parent process may grant sync to the next waiting process. See also
hear.

: (call 'ps «x») # Show processes
PID TTY STAT TIME COMMAND
..
1321 pts/0 S 0:00 /usr/bin/picolisp .. # Parent process
1324 pts/0 S 0:01 /usr/bin/picolisp .. # First child
1325 pts/0 S 0:01 /usr/bin/picolisp .. # Second child
1326 pts/0 R 0:00 ps x
-> T
: *Pid # We are the second child
-> 1325
: (tell 'println '*Pid) # Ask all others to print their Pid's
1324
-> *Pid

anonymous
()

берешь, шлепаешь сначала разборщик этого дела, потом браузер, который это понимает, потом сервант, который это генерит, потом сайт на этом. кто не может прочитать идет на йух.

можно попробовать сделать плуг к ФФ, который будет такие конструкции разбирать.

не вижу проблемы.

Rastafarra ★★★★
()
Ответ на: комментарий от lazyklimm

могу предложить глупую идею - ошибок быть не должно

HTML это документ, а не программа. Документ должен быть читаем даже если в нем есть ошибки.

Absurd ★★★
()
Ответ на: комментарий от Absurd

Документ должен быть читаем даже если в нем есть ошибки.

я посмотрю, как ты прочитаешь без ошибок битый doc-файл, например

Опять же, откуда ошибкам взяться, если документ _изначально_ корректен? (если некорректен - может всё-таки проблема генератора документа?)

А ошибки передачи - на совести протокола. Кодирование уже давно придумали.

lazyklimm ★★★★★
()
Ответ на: комментарий от anonymous

А зачем лисп непохож на питон? Один хрен же отступы делают...

GateKeeper ★★
()
Ответ на: комментарий от lazyklimm

Документ должен быть читаем даже если в нем есть ошибки.

я посмотрю, как ты прочитаешь без ошибок битый doc-файл, например

Нашел на кого равняться.

Опять же, откуда ошибкам взяться, если документ _изначально_ корректен?

Та страница которую ты сейчас читаешь крешит пистоновский парсер HTML, например. Да и вообще, буква V в любом реальном MVC это всегда жеванное мочало из костылей. Да и не программисты его обычно делают.

Absurd ★★★
()

Мой вариант

html:
    head:
        title: 'Page'
        style:
            body:
                color: 'white'
                background-color: 'black'
    body:
        table:
            tr:
                th: 'first'
                th: 'second'
            tr:
                td: '1'
                td: '2'
        ul:
            li: 'item1'
            li: 'item2'
            li: 'item3'
        a href='http://google.com': Google
anonymous
()
Ответ на: комментарий от anonymous

То есть в твоем примере все исправляется одинаково.

Опиши мне, пожалуйста, приблизительную логику действий браузера, которая исправляет во втором случае так же, как в первом.

В первом случае она проста: читаем пришедший XML, видим, что закрывающий тег </x> не соответствует текущему элементу y, смотрим выше в дереве элементов, видим, что родителем y является как раз x, делаем вывод: обнаруженный закрывающий тег должен закрывать именно его, и, по необходимости, закрываем также и элемент y.

Miguel ★★★★★
()
Ответ на: комментарий от staseg

Ну коли мы придумываем новые стандарты :) можем просто запретить несбалансированные скобки.

W3C уже запретило несбалансированные теги. Кто-нибудь от этого пошевелился?

Miguel ★★★★★
()
Ответ на: комментарий от lazyklimm

могу предложить глупую идею - ошибок быть не должно

Получилось.

Miguel ★★★★★
()
Ответ на: комментарий от lazyklimm

я посмотрю, как ты прочитаешь без ошибок битый doc-файл, например

О, поступило предложение сделать веб, где вместо HTML - вордовские файлы. Обдумаем?

Miguel ★★★★★
()
Ответ на: комментарий от ugoday

А компиляторы должны ошибки в программах исправлять? Вот и браузеры не должны.

Есть один браузер, который и не исправляет. Соответственно, никто им и не пользуется.

И вообще, шёл бы ты отсюда, валидатор на этой самой странице двадцать ошибок находит, зачем ты её читаешь?

Miguel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.