application/octet-stream
•
800 B
•
29 lines
; 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]]