Login
7 branches 0 tags
Ben (X13/Void) Made [append] variadic and added tests 34a3e2c 4 years ago 307 Commits
nujel / stdlib / core.nuj
; Nujel - Copyright (C) 2020-2021 - Benjamin Vincent Schulenburg
; This project uses the MIT license, a copy should be included under /LICENSE

;; Contains native nujel implementations of some
;; core language constructs and essential macros

[defmacro comment [...body]
          "Does nothing"
          #nil
]

[defmacro += [val inc]
          `[set! ~val [+ ~val ~inc]]
]

[defmacro cdr! [l]
          "[set! l [cdr l]]"
          `[set! ~l [cdr ~l]]
]

[defun not [v]
           "Return true if V is false"
           [if v #f #t]
]

[defun list [...arguments]
        "Return ARGUMENTS as a list"
        ...arguments
]

[defun default [arg default-value]
        "Returns ARG or DEFAULT-VALUE if ARG is #nil"
        [if arg arg default-value]
]

[defun caar [p]
        "[car [car p]]"
        [car [car p]]
]

[defun cadr [p]
        "[car [cdr p]]"
        [car [cdr p]]
]

[defun cdar [p]
        "[cdr [car p]]"
        [cdr [car p]]
]

[defun cddr [p]
        "[cdr [cdr p]]"
        [cdr [cdr p]]
]

[defun cadar [p]
        "[cdr [car p]]"
        [car [cdr [car p]]]
]

[defun caddr [p]
        "[car [cdr [cdr p]]]"
        [car [cdr [cdr p]]]
]

[defun cdddr [p]
        "[cdr [cdr [cdr p]]]"
        [cdr [cdr [cdr p]]]
]

[defun cadddr [p]
        "[car [cdr [cdr [cdr p]]]]"
        [car [cdr [cdr [cdr p]]]]
]

[defun caddddr [p]
        "[car [cdr [cdr [cdr p]]]]"
        [car [cdr [cdr [cdr [cdr p]]]]]
]