| (PUBLIC SERVICE ANNOUNCEMENT If you're new here, don't get suckered by the outdated install instructions on this site. Use the community-maintained instructions at the arc wiki: http://sites.google.com/site/arclanguagewiki. Then come back here to ask us questions!) Kartik Agaram -- http://akkartik.name -- arc@akkartik.com My arc repo with keyword args and generic functions: http://github.com/akkartik/arc Now I'm working on a small, thoroughly-tested language with an emphasis on readability: http://github.com/akkartik/wart. Code sample: def (fact n)
if (n = 0)
1
(n * (fact n-1))
; Alternatively
def (fact n)
(n * (fact n-1))
def (fact n) :case (n = 0)
1
The implementation uniformly uses generic functions to separate concerns. All language primitives (let, len, +, ..) can be extended using :case.Key features: first-class macros (fexprs) also open to extension, pervasive python-style keyword args, it can deduce parens from indentation (but lisp-with-parens will always work), and support infix operations without compromising macros. -- |