Mal

Mal Web REPL

 

Mal at a glance

Datatypes

Maps {"key1" "val1", "key2" 123}
Lists (1 2 3 "four")
Vectors [1 2 3 4 "a" "b" "c" 1 2]
Scalars a-symbol, "a string", 123, nil, true, false

Functions

Calling (<function> <args*>)
Defining named functions (def! <name> (fn* [<args*>] <action*>))
Anonymous function (fn* |name| [<args*>] <action*>)

Useful Macros and Special Forms

Conditionals if cond or
Multiple Actions (side-effects) (do <action*>...)
Defining things def! defmacro! let*

Useful Functions

Math + - * /
Comparison/Boolean = < > <= >= not
Predicates nil? true? false? symbol? list? vector? map? sequential?
Data processing map apply
Data create list vector hash-map
Data inspection first rest get keys vals count get nth contains? empty?
Data manipulation conj cons concat assoc dissoc
Lists and Vectors first rest nth
Hash Maps get keys vals contains?

JavaScript Interop

Evaluate JavaScript (js* "JS string to eval")
Method call/access (. js-fn arg...)