diff --git a/par/prime.scm b/par/prime.scm new file mode 100644 index 0000000..ef5925b --- /dev/null +++ b/par/prime.scm @@ -0,0 +1,38 @@ +(define first car) +(define rest cdr) + +(define (prime-numbers amount from) + (if (= amount 0) + '() + (if (prime? from) + (cons from (prime-numbers (- amount 1) (+ from 1))) + (prime-numbers amount (+ from 1))))) + +(define (divisors n from) + (if (> from n) + '() + (if (= (remainder n from) 0) + (cons from (divisors n (+ from 1))) + (divisors n (+ from 1))))) + +(define (prime? number) + (equal? (divisors number 1) (list 1 number))) + +(define (square x) (* x x)) + +(define (squares list-of-numbers) + (if (eq? list-of-numbers '()) + '() + (cons (square (first list-of-numbers)) (squares (rest list-of-numbers))))) + +(define (map f list) + (if (eq? list '()) + '() + (cons (f (first list)) (map f (rest list))))) + +(define (sum numbers) + (if (eq? numbers '()) + 0 + (+ (first numbers) (sum (rest numbers))))) + +;; (sum (map square (prime-numbers 7 1))) diff --git a/par/proplogic.scm b/par/proplogic.scm new file mode 100644 index 0000000..44657cd --- /dev/null +++ b/par/proplogic.scm @@ -0,0 +1,9 @@ +(let ((pamphlet (string-append (getenv "HOME") "/src/pamphlet/libraries"))) + (add-to-load-path pamphlet)) +(use-modules (ice-9 nice-9) (srfi srfi-1) (pamphlet)) + +(define (lookup key mapping) + (let* ((((name . value) . remaining) mapping)) + (if (eq? name key) + value + (lookup key remaining))))