# neb ### an attempt at a language ## ideas - **Lisp-y**: I hope you like parentheses! - **Strongly typed**: types are Good, and could enable future compilation - **We <3 Linux**: strong support for pipelines and shell-ing out - **Immutable variables**: mutability is scary and makes for strange bugs - **Pure functions**: side effects are also scary ## things that (hopefully) work ### housekeeping - `(debug-on) => :bool ; turn on debugging (default)` - `(debug-off) => :bool ; turn off debugging` - `(exit [[status :int]]) => :bool` ### io - `(print [out :string]) => :bool ; print to stdout` ### math - `(+ [left :number] [right :number]) => :number` - `(- [left :number] [right :number]) => :number` - `(* [left :number] [right :number]) => :number` ### string - `(concat [arg1 :string] [arg2 :string]) => :string` ### flow control - `(if [cond :bool] [t-branch :any] [[f-branch :any]]) => :any` ### type checking - `(string? [arg :any]) => :bool` - `(int? [arg :any]) => :bool` - `(float? [arg :any]) => :bool` - `(number? [arg :any]) => :bool ; returns #true for :int or :float` - `(bool? [arg :any]) => :bool` ### other - pretty much nothing else ## TODO (this section may be incomplete) ### math - [ ] division (float) - [ ] division (int) - [ ] mod (int) - [ ] exponent ### strings - [x] concat - [ ] substring - [ ] lower/uppercase ### flow control - [x] if - [x] if with empty else - [ ] branch - [ ] pipe ### lists - [ ] lex - [ ] parse - [ ] evaluate ### other structure things - [ ] generic struct? - [ ] dict? ### symbols - [ ] define - [ ] access ### shell - [ ] call out - [ ] pipe