rest of stuff

This commit is contained in:
2024-01-03 23:18:32 +01:00
parent 2926f07a0e
commit 8c542226aa
9 changed files with 91 additions and 14 deletions

35
clitests/comb.psil Normal file
View File

@@ -0,0 +1,35 @@
(define (equal? a b)
(if (nil? a) (if (nil? b) 1 0)
(if (atom a)
(if (atom b) (= a b) 0)
(if (atom b) 0 (if (equal? (car a) (car b)) (equal? (cdr a) (cdr b)) 0))
)
)
)
(define (empty? l)
(equal? l (nil))
)
(define (comb-impl list cur n)
(if (empty? list)
(if (= cur n) 1 0)
(+
(comb-impl (cdr list) cur n)
(comb-impl (cdr list) (+ cur (car list)) n)
)
)
)
(define (comb list n)
(comb-impl list 0 n))
(comb (quote(1)) 1)
(comb (quote(1 1)) 1)
(comb (quote(1 1)) 2)
(comb (quote(1 1 1 2)) 3)
(comb (quote(1 2 1 2)) 3)
(comb (quote(1 3 4 2)) 3)
(comb (quote(1 2 3 4 5)) 15)
(comb (quote(1 2 3 4 5)) 10)
(comb (quote(1 2 3 4 5)) 5)

9
clitests/comb.psil.ex Normal file
View File

@@ -0,0 +1,9 @@
1
2
1
4
4
2
1
3
3

20
clitests/decorate.psil Normal file
View File

@@ -0,0 +1,20 @@
(define (decorate f g)
(lambda (x) (g (f x)))
)
(define (foldl op acc l)
(if (nil? l)
acc
(op (car l) (foldl op acc (cdr l)))
)
)
(define (plus a b)
(+ a b)
)
((decorate (lambda (x) (+ x 1)) (lambda (x) (+ x 2))) 1)
((decorate (lambda (lst) (foldl plus 0 lst)) (lambda (x) (* x x))) (quote(1 2 3)))
((decorate (lambda (lst) (foldl plus 0 lst)) (lambda (x) (/ x 2))) (quote(1 2 3)))
((decorate (lambda (lst) (foldl plus 0 lst)) (lambda (x) (= x 0))) (nil))
((decorate (lambda (lst) (foldl plus 0 lst)) (lambda (x) (= x 0))) (quote(1)))

View File

@@ -0,0 +1,5 @@
4
36
3
1
0

View File

@@ -5,7 +5,7 @@ FAILED=()
for FILE in *.psil; do
echo "TESTING $FILE"
$PSIL -f $FILE --repl- > $FILE.res
$PSIL -f $FILE --repl- --default_log_level:0 > $FILE.res
if [ $? -ne 0 ]; then
FAILED+=("test-"$FILE)
continue