TGViewer
Библиотека Go-разработчика | Golang Библиотека Go-разработчика | Golang @goproglib · 24.1K subscribers
Post #7162 3.14K
⚙️ Clojure-диалект внутри Go-приложения

Иногда нужно дать пользователям или операторам возможность менять поведение программы без пересборки — конфиги не всегда справляются, а встраивать Lua кажется чужеродным.

let-go предлагает другой вариант: язык в духе Clojure, написанный на Go и встраиваемый прямо в приложение.

Что это такое

let-go — это компилятор байткода и виртуальная машина для языка, который вплотную копирует Clojure. Реализован на Go, распространяется как обычный модуль.

Это не замена оригинального Clojure и не инструмент для его форматирования, а именно встраиваемый язык расширения.

Статус проекта — WIP, но уже работающий: автор решал на нём задачи Advent of Code 2022.

Что уже есть

Из реализованного: макросы с syntax quote, деструктуризация, функции с несколькими арностями, атомы, каналы и go-блоки в стиле core.async, регулярные выражения, простые пространства имён json, http и os, REPL с подсветкой синтаксиса и автодополнением, базовый nREPL-сервер совместимый с Calva.

Установка и запуск
go install github.com/nooga/let-go@latest


Запустить REPL:
let-go


Выполнить выражение напрямую:
let-go -e '(+ 1 1)'


Запустить файл:
let-go test/hello.lg


Запустить файл, а потом открыть REPL:
let-go -r test/simple.lg


Как выглядит код


Синтаксис — чистый Clojure. Пример с каналами и go-блоками:
(def ch (chan 10))

(go (>! ch "hello from goroutine"))

(println (<! ch))


Деструктуризация и работа со списками:
(let [[a b & rest] [1 2 3 4 5]]
(println a b rest))
; => 1 2 (3 4 5)


➡️ Попробовать без установки | Репозиторий

📍 Навигация: Вакансии • Задачи • Собесы

🐸 Библиотека Go-разработчика

#GoToProduction
  • 👍 6
  • 😁 2
More from @goproglib
  1. Sep 30, 2026🧑‍💻 Эмулятор AWS-сервисов Kumo — это небольшой инструмент на Go для локальной имитации A…
  2. Sep 29, 2026👨‍💻 Библиотека для написания LSP-серверов Написать свой Language Server с нуля на Go сло…
  3. Sep 28, 2026🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — 1 true / 0 false 🔥 — 1 true /…
  4. Sep 28, 2026👩‍💻 Что на самом деле происходит внутри Go map? После Go 1.24 обычный map внутри работае…
  5. Sep 26, 2026🔥 В Go 1.27 появился portable SIMD До этого SIMD-оптимизации в Go требовали архитектурног…
  6. Sep 25, 2026🤡🤡 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoGiggle
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →