Finally, the language for agile software development.
- Concise, unambiguous syntax
- Time-tested suite of primitive datatypes
- Syntax tools to meet changing requirements
- Fully compatible with the Racket programming language and build tools
Agile programs start with #lang agile
. The rest is up to you.
#lang agile
(begin-for-syntax (define-syntax-class principle
#:attributes (message)
(pattern (word*:id ...)
#:attr message #'(word* ...))))
(define-syntax make-manifesto
(syntax-parser
[(_ p*:principle ...)
#:with (i* ...)
(for/list ([p (in-list (syntax-e #'(p* ...)))]
[i (in-naturals 1)])
i)
#'(lambda (n)
(case n
[(i*) 'p*.message]
...
[else '(Responding to change over following a plan)]))]))
(define agile
(make-manifesto
[satisfy the customer]
[welcome changing requirements]
[deliver working software]
[work together daily]
[support and trust]
[face-to-face conversation]
[working software is the primary measure of progress]
[sustainable development]
[attention to excellence]
[simplicity is essential]
[self-organizing teams]
[reflect tune adjust]))
(agile 12)
;; '(reflect tune adjust)