Login
7 branches 0 tags
Benjamin Vincent Schulenburg Increased heap size cb588f5 4 years ago 263 Commits
nujel / stdlib / collection.nuj
; A bunch of procedurs that work on all collections where the collection primitives are implemented

[defun sum [c]
       "Return the sum of every value in collection C"
       [reduce + c 0]
]

[defun join [l glue]
       "Join every element of α together into a string with GLUE inbetween"
       [when-not glue [set! glue ""]]
       [if l
           [reduce [λ [a b] [if a [cat a glue b] b]] l #nil]
           ""]
]

[defun for-each [f l]
       "Runs F over every item in collection L and returns the resulting list"
       [reduce [λ [a b] [f b]] l #nil]
]

[defun count [p l]
       "Count the number of items in L where P is true"
       [reduce [λ [a b] [+ a [if [p b] 1 0]]] l 0]
]