Login
7 branches 0 tags
Ben (X13/Void) Better wasm error/console output ce090dd 4 years ago 338 Commits
nujel / stdlib / tree.nuj
; Nujel - Copyright (C) 2020-2021 - Benjamin Vincent Schulenburg
; This project uses the MIT license, a copy should be included under /LICENSE

;; Some functions about trees

[defun tree/zip [keys values]
       "Return a tree where KEYS point to VALUES"
       [def ret [tree/new]]
       [while keys
	      [tree/set! ret [car keys] [car values]]
	      [cdr! keys]
	      [cdr! values]]
       ret]

[defun tree/+= [t k v]
       "Increment value at K in T by V"
       [tree/set! t k [+ v [int [tree/get t k]]]]]

[defmacro tree/-= [t k v]
       "Decrement value at K in T by V"
       `[tree/+= ~t ~k [- ~v]]]

[defmacro tree/++ [t k]
       "Increment value at K in T by 1"
       `[tree/+= ~t ~k 1]]

[defmacro tree/-- [t k]
       "Increment value at K in T by 1"
       `[tree/-= ~t ~k 1]]