LINUX.ORG.RU

GNU Guile 2.9.5 (beta)

 , , ,


0

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 ()

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

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

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

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

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

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

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

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

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

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

anonymous ()

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

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

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

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

метапрог в принципе возможно запилить на плагинах к 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 ★★★★★ ()