Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
Нет, не проще, если у вас есть правильный инструмент.
Честно говоря, в обоих представленных пакетах не нашел такого, что нельзя было бы написать на том же 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?