LINUX.ORG.RU

GNU Guile 2.9.5 (beta)

 , , ,


1

1

Guile 2.9.5 — это пятый beta-выпуск реализации языка программирования Scheme от GNU, готовящийся к стабильной ветке 3.x.

Guile поддерживает многие SRFI, предоставляет модульную систему; полный доступ к системным вызовам POSIX; поддержку сети, динамической линковки и вызова внешних функций; мощную обработку строк. Guile может интерпретировать код интерактивно, компилировать его в байткод виртуальной машины и подключаться библиотекой в качестве встроенного в приложение интерпретатора.

Изменения по сравнению с прошлой бета-версией:

  • Объединение разных видов «записей» (Record) в один.
  • Новая реализация исключений:
    • Старый throw & catch из Guile -> в более общепринятый в Scheme raise-exception & with-exception-handler.
  • Оптимизация приведения целочисленных типов к типам с плавающей запятой.
  • Определение высокоуровневых биндингов для вспомогательного синтаксиса: else, =>, ..., _.
  • Общепринятый gettext-алиас теперь G_.
  • Добавлена опция --r6rs, но поддержка неполная.
  • Добавлена поддержка R7RS (!).
  • Объявлен устаревшим вызов record-constructor с двумя аргументами.

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



Проверено: a1batross ()
Последнее исправление: Virtuos86 (всего исправлений: 4)
Ответ на: комментарий от monk

Раньше просто ничего не понятно было, а сейчас вообще ничего не понятно стало.

Artamudo ★★★★
()

Новость о бете? Куда катится лор…

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

Я где-то отрицал факт правки, цитатчик вы наш?

А сами себе как вы отвечаете на этот вопрос?

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

Запятые – лишние, да. И ваши эмоции были лишними.

pac-man
()

Растаман [user]RazrFalcon[/user] пришёл в гости к Лисперам посрать? Лисперы, будет новоcть про Раст идите в их тред посрёте. Кстати, у них наркоманский систаксис.

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

Божемой, там монадический код или что? Вот этот begin как будто по pipeline что-то передает. Или я не так прочитал?

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

Божемой, там монадический код или что

Да нет, абсолютно линейный.

begin – просто блок. Как begin/end в паскале или {} в си.

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

В свете новостей о Racket даже не уверен, нужно ли…

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

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

Это компилируемый езыг?

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

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

Иначе к вашим услугам Tcl, ECL, Lua…

писать на lua желание может быть (у как то по иному одаренных да ?), ну такое себе. TCL тоже. ECL ? Emacs Common Lisp ?

на схеме можно таки фп юзать, но я так полагаю для многих это скорее минус.

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

Разве это новый синтаксис? Только формально, а по факту всё осталось как было. Как если бы из C убрали точки с запятой.

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

Если честно, то для Racket2, цитирую

There is no specific proposal for a new syntax, yet. Our next step will be creating a process to explore a possible new syntax.

Может просто скобки уберут. Может что-то вроде shill:

val executable/c = {args : listof(arg/c)}
                  +optional
                  {stdin  : maybe/c(readable/c),
                   stdout : maybe/c(writeable/c),
                   stderr : maybe/c(writeable/c),
                   extra  : listof(cap?),
                   timeout : timeout/c}
                  -> integer?;

val wallet-policy/c = maybe/c({key : string?} -> contract?);

val wallet-keys->policy/c = fun (specs, rest = false) {
  restfun = if rest then rest else fun (k) none/c;
  fun (key) {
    val entry = findf(fun (entry) first(entry) == key, specs);
    if entry then second(entry) else restfun(key)
  }
};

val wallet-keys/c = fun (puts = [], gets = [], put-others = false, get-others = false) {
  wallet/c(put = wallet-keys->policy/c(puts, rest = put-others),
           get = wallet-keys->policy/c(gets, rest = get-others))
};

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

Более наркоманский… Но как тут уже упомянули, #lang никто не отменял.

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

Так, сегодня настроение для срачиков. Своё мнение насчёт одарённости желающих писать используя Tcl/ECL/Lua/Scheme у меня тоже есть, но хотелось бы сначала выслушать Ваше. Что не так с каждым из четырёх?

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

Так макросы забористые, только когда их пишешь (и в Лишпе в том числе), а использовать их нормально. К регулярному синтаксису никакого отношения они не имеют.

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

Не в CL всё по-божески, более-менее. И никаких ’ }); ’ Вообще макросы на шаблонах - это не интуитивно, даже в скиме, но там хотя бы символов для их набора поменьше.

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

Ага-ага. А квазиквотация (епти ж кот, слово-то какое)? Да и еще раз повторюсь, макросы пишутся и отлаживаются единожды, дальше ты туда не лезешь. А вот скобки они всегда будут с тобой, хотя в скиме их поменьше.

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

В тикле: вложенные выражения когда «всё строка» - боль, ‘$’ -боль, инфиксные выражения через expr - боль. А так нормальный язык. У EmacsLisp есть один фатальный недостаток - дизайн, это просто трэш, он неинтуитивен, просто ни капли. Чтение референса поможет хрен знает с какого раза, даже гуглинг готовых решений поможет хрен знает с какого раза. Мне бы очень хотелось видеть схему на его месте.

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

EmacsLisp

facepalm Давно его встроить можно в приложение на плюсах, например?

вложенные выражения когда «всё строка» - боль

Да.

‘$’ -боль

По крайней мере в Tcl у $ очевидная логика в отличие от… всех остальных языков где это есть.

инфиксные выражения через expr - боль.

Больше двух лет как есть стандартные префиксные функции, но стандартная библиотека не сильно на них рассчитана, поэтому да. Числодробилки на Tcl - только для альтернативно одарённых.

Такъ, остались Lua и ECL. Полагаю, по Вашему мнению в Scheme вообще недостатков нет.

Gentooshnik ★★★★★
()
Последнее исправление: Gentooshnik (всего исправлений: 1)
Ответ на: комментарий от Virtuos86

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

if( 6 == 9,{ «hello».postln; },{ «hello».postln; })

Суперколлаидер(диалект смолтолка), это просто самый гениальный синтаксис для if оператора, учитывая, то что он может быть вложенным. Лисп тут отдыхает пять раз.

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

Так в регулярном растосинтаксисе с тобой всегда будут

типы, типы и типы, в отличие от динамического говнолишпега с необязательными тайпхинтами. Вон, Typed Racket выглядит столь же ужасно, как и Раст.

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

Больше двух лет как есть стандартные префиксные функции

да, я знаю, смотри пункт первый, ключевое слово - инфиксный.

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

Про луа не знаю что сказать, я им особо не пользовался, что обычно говорят - глобалы по дефолту, индексация с еденички(по-моему это здорово), неконсистентные таблицы, нет критмассы, кто-то «end» не осилил

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

Ок, но я бы «существование инфиксного синтаксиса» записал в большие минусы Lua, и небольшие Tcl, ибо только в expr.

Про Lua это мелочи. Надеюсь кто-нибудь сможет пояснить подробнее.

медленная скорость стандарта

Да, но это смягчается макросами и «слепи себе удобный синтаксис».

навязчивая рекурсия, … отсутствие в последнем [стандарте] тех же динамических массивов.

Да, но стоит заметить что ECL данных двух недостатков лишён.

излишняя вложенность(как и у всех лиспов)

Единственное что производит новый уровень вложенности в сравнении с другими яп - это LET, и именно в Scheme часто принято вместо LET использовать вложенный DEFINE. Так что это только к ECL, но в целом мелочь.

актуален лозунг типа «слепи удобный себе синтаксис»,

Что в этом плохого если удобный себе синтаксис делать очень удобно? И оформить в виде библиотеки тоже достаточно удобно.

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

Да, но это смягчается макросами и «слепи себе удобный синтаксис».

как отсутствие упомянутых массивов смягчается макросами?(никак)

Вложенный define, вложенный define. В начале или в произвольном месте, и в какой реализации? (вопрос риторический). Да и вложенности останется столько же.

Кстати в скиме ещё везде свой I/O, и r5rs, которая оставляет на усмотрение реализации «не/существование файла»?, те r5rs уже не обойдёшься.

За CL как таковой могу только сказать, что лисп-N - это уродство, и дизайн языка по-логике - вместо локального defun у нас будут labels, и так абсолютно для всего. Я понимаю/предполагаю, что всё наследие которое понапридумывали лисперы вынужден был принять CL, но было бы здорово если бы в ядре гипотетический не «коммон» лисп был бы прост как валенок, питон, или ским. И hyperspec (не хочу сказать ничего плохого) просто ужасна как документация.

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

как отсутствие упомянутых массивов смягчается макросами?(никак)

На макросах и обычных массивах легко пишутся упомянутые. В C++ динамические массивы тоже не на уровне компилятора реализованы.

Вложенный define, вложенный define. В начале или в произвольном месте, и в какой реализации? (вопрос риторический). Да и вложенности останется столько же.

Вот поэтому я предпочитаю Racket. В нём define можно втыкать в качестве любого выражения блока, а не только в начале.

define (f)
  (define a 1)
  (set! a (+ a 1))
  (define b 2)
  (+ a b))
monk ★★★★★
()
Ответ на: комментарий от anonymous

У хаскеля компилятор значительно поумнее будет, поэтому типы не везде надо проставлять. И синтаксис такой, что я бы не сказал, что его просто читать по сравнению с традиционными ЯП с полным набором скобок.

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

У хаскеля компилятор значительно поумнее будет, поэтому типы не везде надо проставлять.

Там система типов существенно другая. У каждого значения может быть только один тип, у каждой функции только один аргумент и только один результат. В отличие от Typed Racket с подтипами, произвольным количество аргументов и возвращаемых значений.

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

А что, от освоения другого языка они перестали быть лисперами? Emacs вон кто-то пользуется, клиент к ii на Lisp написали — значит, жив.

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

А что, от освоения другого языка они перестали быть лисперами? Emacs вон кто-то пользуется, клиент к ii на Lisp написали — значит, жив.

Угу. А если я к Саблайм Тексту плагин на питоне напишу, значит я питонщег. Или вот к фуррифоксу аддон написал на JS, значит веб-макака. И т.д. Даже mv емнип про лишп позабыл как инструмент заработка.

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

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

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

Так, сегодня настроение для срачиков. Своё мнение насчёт одарённости желающих писать используя Tcl/ECL/Lua/Scheme у меня тоже есть, но хотелось бы сначала выслушать Ваше. Что не так с каждым из четырёх?

у меня нет настроения для срачиков. но ничего плохого в Scheme не вижу. или же вы считаете что все надо на c/c++/go/rust писать?

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

или же вы считаете что все надо на c/c++/go/rust писать?

С чего вы это взяли?

ничего плохого в Scheme не вижу

Я догадался. Что с остальными тремя? Или вы считаете что не думая всё надо на Scheme писать?

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

Я понимаю/предполагаю, что всё наследие которое понапридумывали лисперы вынужден был принять CL, но было бы здорово если бы в ядре гипотетический не «коммон» лисп был бы прост как валенок, питон, или ским. И hyperspec (не хочу сказать ничего плохого) просто ужасна как документация.

ISO ISLISP здесь поаккуратнее выглядит, чем ANSI CL. из реализаций либо OpenLisp без исходников (кстати emact тоже более правильный емакс c OpenLisp-ом, чем GNU Emacs с elisp-ом), либо японский easy-ISLISP гитхаб сайт книжка

более компактный и продуманный стандарт, ООП система ILOS похожая на CLOS из коробки, большинство типов объекты, и т.п.

там же у этого же автора рядом есть и реализации пролога и форта, тоже с книжками. и LISP 1.5 с M-expressions

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