summaryrefslogtreecommitdiff
path: root/com/simatime/core.scm
diff options
context:
space:
mode:
Diffstat (limited to 'com/simatime/core.scm')
-rw-r--r--com/simatime/core.scm46
1 files changed, 7 insertions, 39 deletions
diff --git a/com/simatime/core.scm b/com/simatime/core.scm
index 6a4f09d..611aaca 100644
--- a/com/simatime/core.scm
+++ b/com/simatime/core.scm
@@ -1,21 +1,12 @@
(define-module (com simatime core))
-;;
-;; old core, do i still need this?
-;;
-
-(define (not x) (if x #f #t))
-(define (null? obj) (if (eqv? obj '()) #t #f))
-(define (list objs) objs)
-(define (identity obj) obj)
(define (flip f) (lambda (x y) (f y x)))
(define (curry f a) (lambda (b) (apply f (cons a (list b)))))
-(define (compose f g) (lambda (x) (f (apply g x))))
-(define zero? (curry = 0))
-(define positive? (curry < 0))
-(define negative? (curry > 0))
-(define (odd? n) (= (mod n 2) 1))
-(define (even? n) (= (mod n 2) 0))
+(define pos?
+ (curry < 0))
+
+(define neg?
+ (curry > 0))
(define (foldr f end lst)
(if (null? lst)
@@ -27,40 +18,17 @@
acc
(foldl f (f acc (car lst)) (cdr lst))))
-(define fold foldl)
+(define fold foldl)
(define (unfold f init pred)
(if (pred init)
(cons init '())
(cons init (unfold f (f init) pred))))
-(define (mem* pred op)
- (lambda (acc next)
- (if (and (not acc) (pred (op next)))
- next
- acc)))
-
(define (sum lst) (fold + 0 lst))
(define (produce lst) (fold * 0 1 lst))
-(define (max nums)
- (fold (lambda (x y) (if (> x y) x y))
- (car nums) (cdr nums)))
-
-(define (min nums)
- (fold (lambda (x y) (if (< x y) x y))
- (car nums) (cdr nums)))
-
-(define (length lst) (fold (lambda (x y) (+ x 1)) 0 lst))
-(define (reverse lst) (fold (flip cons) '() lst))
-(define (memq obj lst) (fold (mem* (curry eq? obj) identity) #f lst))
-(define (memv obj lst) (fold (mem* (curry eqv? obj) identity) #f lst))
-(define (member obj lst) (fold (mem* (curry equal? obj) identity) #f lst))
-(define (assq obj alist) (fold (mem* (curry eq? obj) car) #f alist))
-(define (assv obj alist) (fold (mem* (curry eqv? obj) car) #f alist))
-(define (assoc obj alist) (fold (mem* (curry equal? obj) car) #f alist))
-(define (map f lst) (foldr (lambda (x y) (cons (f x) y)) '() lst))
-(define (filter pred lst) (foldr (lambda (x y) (if (pred x) (cons x y) y)) '() lst))
+(define count length)
;;