Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Нет, не проще, если у вас есть правильный инструмент.
Честно говоря, в обоих представленных пакетах не нашел такого, что нельзя было бы написать на том же python просто немного другими синтаксическими конструкциями.
Не совсем понимаю, зачем нужен dsl, если он не уменьшает количество информации. Для уменьшения количества символов?
txtadv
не удастся, но вот тут лежит статья Matthew Flatt и его запускаемые исходники.#lang br/quicklang
(define (read-syntax path port)
(define src-lines (port->lines port))
(define src-datums (format-datums '(handle ~a) src-lines))
(define module-datum `(module stacker-mod stacker-demo/stacker
,@src-datums))
(datum->syntax #f module-datum))
(provide read-syntax)
(define-macro (stacker-module-begin HANDLE-EXPR ...)
#'(#%module-begin
HANDLE-EXPR ...
(display (first stack))))
(provide (rename-out [stacker-module-begin #%module-begin]))
(define stack empty)
(define (pop-stack!)
(define arg (first stack))
(set! stack (rest stack))
arg)
(define (push-stack! arg)
(set! stack (cons arg stack)))
(define (handle [arg #f])
(cond
[(number? arg) (push-stack! arg)]
[(or (equal? * arg) (equal? + arg))
(define op-result (arg (pop-stack!) (pop-stack!)))
(push-stack! op-result)]))
(provide handle)
(provide + *)
Зачем ЯОП? Зачем Racket?