- pure JS
- leverage JS ecosystem
- no compilation needed
- pluggable datastructures
- fully qualified naming
:foo
:foo.bar.baz/foo
(:foaf:gender {:http://xmlns.com/foaf/0.1/gender “foo”})
- [X] new instance syntax
- [X] Package imports
- [X] PrefixName to QName expansion
- [X] varargs
- [X] Module expansion context
- [X] dictionary syntax
- [-] let and destructuring
- [X] list / array destructuring
- [ ] dict destructuring
- [X] metadata syntax
- [X] JS imports (string)
- [X] constructor shorthand
- [X] proper printer
- [X] print dicts
- [X] with-meta
- [X] truthy? -> use for conditionals
- [ ] backtick/unquote/unquote-splice
- [ ] dynamic var bindings
- [ ] pluggable data structures
- [ ] var shorthand
- [ ] vary-meta
- [ ] try/catch
- [ ] AOT compilation to modules
- [X] range
- [X] repeat
- [X] various convenience functions
- [X] inc
- [X] dec
- [-] threading macros
- [X] ->
- [X] ->>
- [ ] <<-
- [ ] some->
- [ ] some->>
- [ ] as->
- [X] cond->
- [ ] cond->>
- [-] predicates
- [ ] some?
- [X] array?
- [-] full set of seq operations (filter/remove/some)
- [X] filter
- [X] remove
- [ ] some
- [ ] keep
- [ ] collection operations (includes?/has-key?/assoc/dissoc/disj)
- [ ] seq/collection macros (doseq/for)
- [ ] doseq
- [-] functional composition
- [ ] comp
- [ ] juxt
- [X] complement
- [ ] fnil
- [X] identity