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)
Ответ на: комментарий от anonymous

Умеет компиляцию в эффективный байт-код по разные архитектуры

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

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

Cirno
() автор топика

Объеденение

Проверено

ага

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

Есть нечто свежее, даже сравнивается больше видов схемки. Но стоит учитывать, что берётся стабильная версия guile.

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

Тут. Ну а вообще, он больше как встраиваемый идет по своей идее.

Cirno
() автор топика
Последнее исправление: Cirno (всего исправлений: 1)

Старый throw & catch из Guile -> в более общепринятый в Scheme raise-exception & with-exception-handler.

А шо так коротко? Надо было так: raise-motherfucking-exception-from-hell-nuking-everything.

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

насчет модернизации синтаксиса сразу интерес убавился.

Ну, #lang же никто не отменяет?

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

Какие интересные проекты на нем написаны?

Guix.

Nervous ★★★★★
()

Guix иже с ними…

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

guix (кстати, там для бутстрапинга юзали mel, melcc), skribilo (skribe в racket менее фичаст), guile-emacs, texmacs (Qt+guile+emacs+tex + структурный редактор+repl типа org-mode babel), когда-то в gimp встраивался, ЕМНИП

на самом guile был интерпретатор js и питоносинтаксис для ниасиливших скобачки (SFRI с infix notation). ну и elisp ещё.

ещё есть emacsy

сабж интересен встраиваемостью – emacsy тому пример. ещё где-то рядом с emacsy лежала игрушка на sdl со встраиваемым guile и REPL: M-x C-x fly-butterfly :) на clojure + Unity выглядит как-то так обучающее видео

кажется, это: hello emacsy

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

пример того, как аналогичный емаксу REPL и M-x command можно встроить в своё приложение, любое.

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

встроить guile в своё приложение и запилить недоемакс с opengl и REPL

arcadia = unity + clojure вот это всё. только guile + GLUT а не clojure + Unity.

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

а вот это литературный грамотный исходник векторных гипертекстовых фидонетов Xanadu.

истинно многомерный гипертекст. ежели писать его не на nuweb, а на чём-то типа skribilo где есть много входных форматов и AST-представление в виде Sexprs с макросами,

то так и напрашивается какой-то OpenGL трёх и поболее многомерный структурный редактор этого гипертекста прикрутить. к гоферу VR, например.

чтобы было не текст в текст с чанками LitProg, а AST в AST макросами и семантически корректными моделями (и метамоделями этих моделей, да).

там кстати, рядом лежит какой-то процедурный генератор под Unity (+Arcadia).

на этом всём, сдаётся мне вполне себе можно запилить векторных гипертекстовых фидонетов.

многомерный метапрог (в хорошем смысле этого слова)

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

Это уже был бы общелисп, а не схема

anonymous
()

Java/Kotlin для мобильных, C/C++/C# для десктопа, Python для скриптов и можно ещё JS для веба. Всё остальное не нужно.

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

Java/Kotlin для мобильных, C/C++/C# для десктопа, Python для скриптов и можно ещё JS для веба. Всё остальное не нужно.

..Python/Tcl для скриптов…

anonymous
()

Не флейма ради.

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

anonymous
()
Ответ на: Не флейма ради. от anonymous

Я хеловорды на лиспе пишу. Ну то есть буквально хеловорды. (display «Hello Kitty»). Всё остальное решает C++, Perl, TCL/Tk и Lua

anonymous
()
Ответ на: Не флейма ради. от anonymous

какие практические задачи

Clojure и ClojureScript используют в вебе. Про другие не знаю.

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

Ага. Я к тому, что with-exception-handler вроде и не так уж длинно. Для лиспов, по крайней мере.

PamidoR
()

Если нужно переносимое и/или встраиваемое - почему не femtolisp или gambit ?

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

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

Это о том, что скобочки выкинуть хотят? Где вообще можно подробнее почитать?

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

как эту штуку под виндовс собрать?

1. mingw пробовал? нативный из винды либо через mxe.cc и прочую кроссборку?

2. в msys2 есть, но старый:

$ pacman -Qs guile
local/guile 2.2.6-1
    a portable, embeddable Scheme implementation written in C
local/libguile 2.2.6-1 (libraries)
    a portable, embeddable Scheme implementation written in C
local/libguile-devel 2.2.6-1 (development)
    a portable, embeddable Scheme implementation written in C

в репозиториях пакетов msys2 нужно проверить, есть ли порты посвежее.

вообще там исходники позиксанутые линуксанутые, так что насчёт порта под винду смотреть нужно рецепты сборки внимательно, и собирать руками через автолулзы. хотя, winpthreads и прочее в msys2 имеется, так что может даже без особых телодвижений соберётся. раньше до 2 версии с этим были проблемы, ну и не каждая версия собиралась. конкретно про 2.9.2 нужно пробовать.

на некоторых старых версиях до 2 падало и валилось на случайных местах. сейчас вроде всё более-менее норм, но и тут на коде с pthreads и прочим может иногда выпасть в корку или в отладчик.

так что нужно смотреть проверять свежие порты, и для надёжности

1) собрать руками именно 2.9.2

2) проверить в msys2 репозиториях свежие ебилды pkgbuild-ы

3) сделать ебилды через makepkg и свой репозиторий.

3. современая кроссборка вполне себе работает что через makepkg в msys2 и из недоарча, что через nix и прочий guix. в идеале, может даже без особых патчей соберётся. в реале, там всегда были какие-то патчи с вендопроблемами.

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

плюсую за gambit, вполне себе годная схема. и меньший объём позиксанутости в исходниках.

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

метапрог здорового человека

метапрог в принципе возможно запилить на плагинах к Texmacs: там Qt + Emacs + Guile scheme + древесный API документов, DOM/AST. есть какой-то плагин с рисовалкой диаграмм и картинок недоделанный. если бы его расковырять, вполне себе возможно запилить нечто LabVIEW/метапрог подобное или ДРАКОН-подобное, совмещённое с LitProg и AST представлением DOM литературного дркумента редактируемого. но тут нужно вникать в исходники этого плагина. теоретически в API плагинов и документов Texmacs есть достаточно возможностей для этого: плагины на том же Guile пишутся. нужно только skribilo прикрутить и вменяемый GUI к этому всему. опять же, texmacs из коробки умеет свой формат документов сохранять в PDF и AST представление.

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

Да нормально без скобочек выглядит:

define (handle input output)
  with-handlers
    group
      exn?
        compose
          curryr displayln output
          exn-message
    define data
      let ([json (read-json input)])
        begin
          close-input-port input
          json
    define-values (args stdin value)
      match data
        (hash-table
          ('file (? string? input-file-name))
          ('stdin (? string? stdin-file-name))
          ('args (? (listof string?) args-list)))
          begin
            values
              list->vector args-list
              open-input-file stdin-file-name
              read
                open-input-file input-file-name #:mode 'text
        _
          error "Invalid json"
    eval-with-io value
      (make-base-namespace)
      args
      stdin
      output

(c) https://github.com/jFransham/racketd/blob/master/racketd.rkt

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