Hacker News Digest

Тег: #racket

Постов: 3

A Friendly Introduction to Racket (geometridae.bearblog.dev)

Язык программирования Racket — это современный потомок Lisp, родившийся в 1995 году как эволюция PLT Scheme. Он сочетает минималистичный синтаксис с мощной системой создания новых языков, что делает его идеальным для обучения и экспериментов. В отличие от «классического» Lisp, Racket предлагает гибкую архитектуру, где язык можно адаптировать под конкретную задачу — будь то анализ данных, генерация кода или визуализация.

Главная идея Racket — homoiconicity: код представлен как данные, что позволяет писать макросы и динамически модифицировать язык. Например, через (define-syntax-rule (while condition body ...) ...) можно добавить цикл while, которого нет в базовом синтаксисе. Это не просто текстовая замена, а полноценная языковая конструкция, генерируемая во время компиляции. Такие возможности делают Racket уникальным: вы не просто пишете программы, вы создаёте инструменты для их написания. Для понимания достаточно открыть DrRacket, ввести простой пример вроде (factorial 5) и увидеть результат — 120. Экспериментируйте с графикой через #lang racket и библиотекой 2htdp/image, чтобы увидеть, как код превращается в визуальные образы.

by signa11 • 22 августа 2026 г. в 14:08 • 206 points

ОригиналHN

#2htdp-image#drscheme#graphics#homoiconicity#lisp#macros#programming-language#racket#scheme

Комментарии (107)

Racket поддерживает создание нативных исполняемых файлов, включая кросс-компиляцию GUI-приложений (например, с macOS на Windows); официальное руководство содержит инструкции по сборке, подтверждая встроенные средства деплоя. Существуют реальные приложения — camp от Joël Dueck и remember от defn.io — что опровергает утверждение об отсутствии практического применения. Сообщество предоставляет ресурсы: Awesome Racket, Beautiful Racket, Racket Stories, собирающие библиотеки, учебные материалы и примеры проектов. Споры возникают вокруг вводной части статьи: одни считают её «не дружелюбной» из-за предположений о знании λ и синтаксиса, другие — что она достаточна для мотивированного читателя. Исторически Lisp утратил лидерство в ИИ из-за падения финансирования и появления Prolog, что объясняет его нишевый статус. Многие пользователи Emacs не осознают, что используют Emacs Lisp как язык программирования. Рекомендации: обратить внимание на дополнительные литералы (хеш-таблицы, регулярные выражения), не упомянутые в вводной статье; для оценки производительности макросов сравнивать с SBCL, где функции компилируются в нативный код, а макросы исполняются до компиляции. Изучение проектов camp и remember, а также ресурсов beautifulracket.com и racket-stories.com, помогает глубже освоить язык. Личный опыт показывает, что знание Racket может открыть профессиональные возможности — например, контракт в сфере CAD. Некоторые ценят в Racket горячую перезагрузку кода, другие — гомоиконичность как ключевое преимущество.

Why I chose Lua for this blog (andregarzia.com)

Автор перевел свой блог с Racket на Lua, чтобы снизить сложность и обеспечить долгосрочную стабильность. Основная причина — разочарование в быстро меняющихся экосистемах вроде JavaScript и Ruby, где постоянные обновления и ломающие изменения усложняют поддержку. Lua привлек медленным развитием: между версиями 5.1 (2006) и 5.4 (2020) различия минимальны, а язык требует лишь компилятора C89.

Блог работает по старинке — через CGI-скрипты, с SQLite в качестве базы и шаблонизацией Mustache. Несмотря на кажущуюся архаичность, автор ценит простоту, минимальное количество зависимостей (около десяти) и возможность писать собственные легковесные библиотеки. Ключевой вывод: блог — это пространство для экспериментов, где можно отказаться от модных инструментов в пользу того, что действительно работает и приносит удовольствие.

by nairadithya • 02 октября 2025 г. в 16:58 • 186 points

ОригиналHN

#cgi#hugo#javascript#lua#mustache#python#racket#ruby#sqlite

Комментарии (135)

  • Предложение возродить создание собственных движков для блогов как учебного проекта для инженеров из-за его низкого риска и возможностей для экспериментов.
  • Обсуждение выбора Lua как стабильного и минималистичного языка для веб-разработки, несмотря на его недостатки (1-based индексация, разрыв между версиями, мало стандартных библиотек).
  • Критика сложности современных стеков для блогов и аргументы в пользу простых решений: статические генераторы (Hugo), чистый HTML или минимальные скрипты (Python, Lua).
  • Упоминание альтернативных технологий и подходов: Redbean, Perl, Caddy, XSLT, Web Components, Fennel, OpenResty и другие.
  • Подчёркивание важности личного выбора, удовольствия от процесса и независимости от внешних сервисов при создании блога.

Knotty: A domain-specific language for knitting patterns (t0mpr1c3.github.io) 🔥 Горячее

Knotty — это предметно-ориентированный язык (DSL) для описания вязальных паттернов, реализованный в Racket. Он позволяет программировать схемы вязания, используя код вместо традиционных графических или текстовых инструкций. Основная идея заключается в автоматизации создания сложных узоров, что упрощает работу дизайнеров и энтузиастов.

Язык предоставляет модули для ввода-вывода данных, примеры кода и справочник, облегчая освоение и применение. Knotty демонстрирует, как нишевые DSL могут решать специализированные задачи, сочетая программирование с ремеслом.

by todsacerdoti • 25 сентября 2025 г. в 06:13 • 323 points

ОригиналHN

#automation#diy#domain-specific-language#functional-programming#racket

Комментарии (49)

  • Обсуждение исторических связей между программируемыми ткацкими станками (Жаккардовы машины) и современными компьютерами.
  • Восхищение проектом как примером элегантного и практичного инженерного решения, продолжающего исторические традиции.
  • Размышления о параллелях между вязанием и функциональным программированием, где физические ограничения сравниваются с системой типов.
  • Интерес к современным DIY-станкам для вязания и возможностям автоматизации создания узоров с помощью ИИ.
  • Шуточные комментарии об ожиданиях увидеть что-то другое (например, терминальный эмулятор) и отсылки к поп-культуре.