LINUX.ORG.RU

R6RS released


0

0

Вышла окончательная редакция нового стандарта языка программирования Scheme. Основные новвоведения:

  • unicode
  • стандарт разделен на базовую часть и стандартные библиотеки
  • многие нюансы, описанные раньше на пальцах, получили подробное описание и разъяснения. В частности все ошибки описываются через исключения.

Так что открывается новая страница в летописи этого языка с длинной и непростой судьбой ;)

>>> Подробности

anonymous

Проверено: Shaman007 ()

2 недели назад обсуждали?

dilmah ★★★★★
()

> Так что открывается новая страница в летописи этого языка с длинной и непростой судьбой ;)

Прямо таки книга Медведей Гамми, а не LOR

anonymous
()

http://community.livejournal.com/ru_scheme/22277.html

>Насколько пока известно, R6RS собираются поддерживать PLT, Scheme 48 и Chez. >В Larceny будет "R6RS-compatible" режим, но не "R6RS-conformant", при >этом Will Clinger -- один из главных идеологов альтернативного проекта ERR5RS. >Не собираются реализовывать R6RS: Bigloo, Gambit, Chicken, Stalin, SCM.

anonymous
()

Читаю я эти маны по Scheme... имхо оч странный язык.

Запись выражений в обратной польской записи, вместо true и false - #t и #f, появился оператор let (вспоминается бейсик)...

Не пойму, нафик оно нужно, поэтому скажите мне, это реально фигня или я чего-то не фтыкаю?

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

> Запись выражений в обратной польской записи

Не-а

> Не пойму, нафик оно нужно, поэтому скажите мне, это реально фигня или я чего-то не фтыкаю?

Сейчас должна нарисоваться толпа безумных лисперов, и они объяснят тебе, что ты ниудачнег^Wбыдлокодер^Wзаблуждаешься, и Схема рулит.

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

>выражений в обратной польской записи,

чтобы легче парсилось и чтобы не писать + перед каждым аргументом

>вместо true и false - #t и #f,

(define true #t )
(define false #f )

еще вопросы?

Muromec ☆☆
()

Хорошая новость... Предрекаю флейм на 1000+ постов;)

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

>У нас маны на вызов не хватит :)

ну, если все вместе.

[достает свиток с заклинанием] цмук-цмук, 16-битный цвет, gimp! опс не то.

[прячет этот, достаёт другой] це-пэ-пэ рулед, це-пэ-пэ универсальный язык, лисп поделка для красноглазых студентиков! явись!

Muromec ☆☆
()

(begin

(define V 1.0)
(define r 0.01)
(define g 9.8)

(define x1 0.0)
(define x2 0.4)
(define n 30)

(define dx (/ (- x2 x1) n))

(define 4rt
 (lambda (x)
  (sqrt (sqrt x)
   )))

(define y
 (lambda (x)
  (/ r (4rt (+ 1.0 (* 2.0 g x (/ 1.0 V V))))
   )))


(do ((x x1 (+ x dx))) ((> x x2))
 (begin
  (display x) (display " ") (display (y x)) (newline)
   ))

)

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

Ещё бы PLT не поддерживало, учитывая не последнюю роль Matthew Flatt в разработке стандарта. Собственно, MzScheme и до принятия R6RS была весьма близка к нему.

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

>В Larceny будет "R6RS-compatible" режим, но не "R6RS-conformant", при
>этом Will Clinger -- один из главных идеологов альтернативного проекта ERR5RS.
>Не собираются реализовывать R6RS: Bigloo, Gambit, Chicken, Stalin, SCM.

Это всё понятно ... и совсем не страшно. Не одна из этих реализаций не используется в production. Это академические проекты.

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

> Не пойму, нафик оно нужно, поэтому скажите мне, это реально фигня или я чего-то не фтыкаю?

Воистину нефтыкаешь, ибо ламер редкостный. Это ж надо, префиксную запись с постфиксной перепутать...

reitetsu
()
Ответ на: комментарий от ip1981

> (define y
> (lambda (x)
> (/ r (4rt (+ 1.0 (* 2.0 g x (/ 1.0 V V))))
> )))


Что ни говори, а Лисп рулит для вычислительных задач. Четкая
математическая нотация, эффективный код :D

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

Это как раз пример того, как _не надо_ (в смысле coding style) писать длинные математические выражения на Лиспе :)

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

> Не одна из этих реализаций не используется в production. Это академические проекты.

Странно, а я вот, почему-то, chicken использую... хотя раз анонимус сказал свое слово, то, разумеется, я признаю себя неправым =)

swizard
()
Ответ на: комментарий от tche

> Это как раз пример того, как _не надо_ (в смысле coding style) писать длинные математические выражения на Лиспе :)

Тогда спрошу уже серьезно - а как надо?

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

Отступами надо пользоваться. Есть очень простое правило касательно
форматирования лиспоподобного кода, в результате применения которого
читаемость больших выражений ИМХО лучше, чем в инфиксной нотации.

(/ r
   (rt4 (+ 1.0
           (* 2.0 g x (/ 1.0 V V)))))

или, если место не жалко:

(/ r
   (rt4 (+ 1.0
           (* 2.0
              g
              x
              (/ 1.0 V V)))))

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

> Отступами надо пользоваться. Есть очень простое правило касательно

На питон надо переходить.. (убегает в кусты)

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

> На питон надо переходить.. (убегает в кусты)

Зачем убежал? На питон _можно_ переходить, если:

1. не нужны макры
2. не нужна скорость работы программы
   (http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=psyco
&lang2=sbcl)
   и это с "костылём" psyco, без него - вообще труба.
3. выбор между ФВП и "list comprehensions" делается в пользу последнего
4. что я ещё забыл? (lambda не упоминаю, ибо это вроде как оставили?) :)

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

> Не пойму, нафик оно нужно, поэтому скажите мне, это реально фигня или я чего-то не фтыкаю?

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

ftp://ftp.cs.utexas.edu/pub/garbage/cs345/schintro-v14/schintro_toc.html

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

>Это всё понятно ... и совсем не страшно. Не одна из этих реализаций не используется в production. Это академические проекты.

Кот ж тогда используется?

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

>Странно, а я вот, почему-то, chicken использую... хотя раз анонимус сказал свое слово, то, разумеется, я признаю себя неправым =)

Что за проект?

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

>А как у него с хвостовой рекурсией ?
Scheme первый в мире язык где она была прописана в стандарте ;)

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

Dude!

(asdf:operate 'asdf:load-op :asdf-install) (asdf-install:install :infix)

anonymous
()

А у Common Lisp-а или у Схемы макросы мощьнее?

Devix
()
Ответ на: комментарий от NonHuman

> Scheme считается дилектом лиспа. Imho значительно удачнее получился, чем оргинальный Lisp

В Схеме уже появились полноценные Лисповые макры ?

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

"Полноценные лисповые макры" -- это типа круто? Макросистема Схемы появилась не просто так -- это попытка избавится от косяков, присущих простым как топор макросам Лиспа. Насколько удачная попытка, сложно сказать.

Тем не менее, некоторых реализациях Схемы аналог Лисповых макр есть (см, например, defmacro.ss в MzScheme).

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

> "Полноценные лисповые макры" -- это типа круто?

Это не круто, это просто необходимо для полноценного метапрограммирования.

> Макросистема Схемы появилась не просто так -- это попытка избавится от косяков, присущих простым как топор макросам Лиспа.

А можно описание косяков ?

> Тем не менее, некоторых реализациях Схемы аналог Лисповых макр есть (см, например, defmacro.ss в MzScheme).

Но нет (сходу в гугле не видно) полноценных компиляторов с поддержкой инкрементальной разработки типа CMU CL, SBCL. Batch compiler это не то.

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

>Это не круто, это просто необходимо для полноценного метапрограммирования.

Почему метапрограммирование на Схеме неполноценное? Да и вообще, непонятно, зачем на метапрограммировании зацикливаться. Для меня, например, отсутствие полноценной поддержки такового никак не является критерием отстойности ЯП.

>А можно описание косяков ?

Читать, например, ftp://ftp.cs.indiana.edu/pub/scheme-repository/doc/prop/macinsch.ps.gz Да и вообще, в Google: hygienic macro, lisp vs scheme macro, и т.п. Пересказывать всё это смысла мало.

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

> Почему метапрограммирование на Схеме неполноценное?

loop facility на Схеме можно реализовать ? А reader macro ?

> Да и вообще, непонятно, зачем на метапрограммировании зацикливаться.

А при чём здесь "зацикливаться" ? Просто обьективно удобная вещь, без которой многое делается криво/неочевидно.

> Для меня, например, отсутствие полноценной поддержки такового никак не является критерием отстойности ЯП.

Я где-то заявлял про отстойность Схемы ?

> Читать, например, ftp://ftp.cs.indiana.edu/pub/scheme-repository/doc/prop/macinsch.ps.gz Да и вообще, в Google: hygienic macro, lisp vs scheme macro, и т.п. Пересказывать всё это смысла мало.

Большинство из описанного спокойно обходится с помощью пакетной системы, package lock'ов, (gensym) и соблюдения naming convertions. Понятно, конечно, что Схема как язык использующийся в обучении должен в некоторых случаях бить по рукам. Но в реальной жизни всё-таки вводят и CL макры.

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

> >А можно описание косяков ?

> Читать, например,...

Вопрос был скорее в том - считать ли это ("негигиену макр в лиспе") косяком? Часто видел, как эту "негигиену" используют себе во благо. Для гигиены есть gensym. Да, и в "гигиеничных" макрах можно нарушать гигиену. Вопрос только в том, что макры в лиспе "по умолчанию" не гигиеничны.

Так косяк ли это или личные предпочтения?

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

>Loop facility на Схеме можно реализовать ? А reader macro ?

Вопросом на вопрос отвечать не нужно. Я спросил, почему метапрограммирование на Схеме *неполноценное*. С интересом (без подкола) выслушаю, почему же.

>Понятно, конечно, что Схема как язык использующийся в обучении должен в некоторых случаях бить по рукам

В данном случае, не битьё по рукам, а превентивная ликвидация класса ошибок. Утверждение, что это полезно лишь для обучения, выглядит странным. При обучении, как раз, подобного рода косяки совершенно несущественны.

>Большинство из описанного спокойно обходится с помощью пакетной системы, package lock'ов, (gensym) и соблюдения naming convertions.

Т.е. требует определенных танцов с бубном. Этого при разработке макросистемы Схемы пытались избежать. Возможно, то что получилось в итоге, не слишком удобно или слишком сложно. Но требовать от Схемы Лисповых макр (т.е. как раз того, от чего хотели уйти) как-то неразумно.

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