mirror of
https://github.com/usatiuk/psil.git
synced 2025-10-28 18:57:48 +01:00
rest of stuff
This commit is contained in:
35
clitests/comb.psil
Normal file
35
clitests/comb.psil
Normal 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
9
clitests/comb.psil.ex
Normal file
@@ -0,0 +1,9 @@
|
||||
1
|
||||
2
|
||||
1
|
||||
4
|
||||
4
|
||||
2
|
||||
1
|
||||
3
|
||||
3
|
||||
20
clitests/decorate.psil
Normal file
20
clitests/decorate.psil
Normal 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)))
|
||||
5
clitests/decorate.psil.ex
Normal file
5
clitests/decorate.psil.ex
Normal file
@@ -0,0 +1,5 @@
|
||||
4
|
||||
36
|
||||
3
|
||||
1
|
||||
0
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user