2004-11-03 23:35:36 -05:00
|
|
|
IN: scratchpad
|
|
|
|
USE: test
|
|
|
|
USE: inference
|
2004-11-04 21:36:33 -05:00
|
|
|
USE: math
|
2004-11-03 23:35:36 -05:00
|
|
|
USE: stack
|
|
|
|
USE: combinators
|
|
|
|
USE: vectors
|
2004-11-05 17:41:54 -05:00
|
|
|
USE: kernel
|
2004-11-06 21:03:35 -05:00
|
|
|
USE: lists
|
2004-11-20 16:57:01 -05:00
|
|
|
USE: namespaces
|
2004-11-03 23:35:36 -05:00
|
|
|
|
2004-11-20 16:57:01 -05:00
|
|
|
[
|
|
|
|
[ 1 | 2 ]
|
|
|
|
[ 2 | 1 ]
|
|
|
|
[ 0 | 3 ]
|
|
|
|
[ 4 | 2 ]
|
|
|
|
[ 3 | 3 ]
|
|
|
|
[ 0 | 0 ]
|
|
|
|
[ 1 | 5 ]
|
|
|
|
[ 3 | 4 ]
|
|
|
|
] "effects" set
|
|
|
|
|
|
|
|
[ t ] [
|
|
|
|
"effects" get [
|
|
|
|
dup [ 7 | 7 ] decompose compose [ 7 | 7 ] =
|
|
|
|
] all?
|
|
|
|
] unit-test
|
2004-11-03 23:35:36 -05:00
|
|
|
[ 6 ] [ 6 gensym-vector vector-length ] unit-test
|
|
|
|
|
2004-11-17 20:59:28 -05:00
|
|
|
[ 3 ] [ [ { 1 2 } { 1 2 3 } ] max-vector-length ] unit-test
|
|
|
|
|
2004-11-05 17:41:54 -05:00
|
|
|
[ t ] [
|
2004-11-17 20:59:28 -05:00
|
|
|
[ { 1 2 } { 1 2 3 } ] unify-lengths [ vector-length ] map all=?
|
2004-11-05 17:41:54 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
[ [ sq ] ] [ [ sq ] [ sq ] unify-result ] unit-test
|
|
|
|
|
2004-11-03 23:35:36 -05:00
|
|
|
[ [ 0 | 2 ] ] [ [ 2 "Hello" ] infer ] unit-test
|
|
|
|
[ [ 1 | 2 ] ] [ [ dup ] infer ] unit-test
|
|
|
|
|
|
|
|
[ [ 1 | 2 ] ] [ [ [ dup ] call ] infer ] unit-test
|
|
|
|
[ [ call ] infer ] unit-test-fails
|
|
|
|
|
|
|
|
[ [ 2 | 4 ] ] [ [ 2dup ] infer ] unit-test
|
|
|
|
[ [ 2 | 0 ] ] [ [ set-vector-length ] infer ] unit-test
|
|
|
|
[ [ 1 | 0 ] ] [ [ vector-clear ] infer ] unit-test
|
|
|
|
[ [ 2 | 0 ] ] [ [ vector-push ] infer ] unit-test
|
|
|
|
|
|
|
|
[ [ 1 | 0 ] ] [ [ [ ] [ ] ifte ] infer ] unit-test
|
|
|
|
[ [ ifte ] infer ] unit-test-fails
|
|
|
|
[ [ [ ] ifte ] infer ] unit-test-fails
|
|
|
|
[ [ [ 2 ] [ ] ifte ] infer ] unit-test-fails
|
|
|
|
[ [ 4 | 3 ] ] [ [ [ rot ] [ -rot ] ifte ] infer ] unit-test
|
|
|
|
|
|
|
|
[ [ 4 | 3 ] ] [
|
|
|
|
[
|
|
|
|
[
|
|
|
|
[ swap 3 ] [ nip 5 5 ] ifte
|
|
|
|
] [
|
|
|
|
-rot
|
|
|
|
] ifte
|
|
|
|
] infer
|
|
|
|
] unit-test
|
2004-11-04 21:36:33 -05:00
|
|
|
|
|
|
|
[ [ 1 | 1 ] ] [ [ dup [ ] when ] infer ] unit-test
|
|
|
|
[ [ 1 | 1 ] ] [ [ dup [ dup fixnum* ] when ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ [ dup fixnum* ] when ] infer ] unit-test
|
|
|
|
|
|
|
|
[ [ 1 | 0 ] ] [ [ [ drop ] when* ] infer ] unit-test
|
|
|
|
[ [ 1 | 1 ] ] [ [ [ { { [ ] } } ] unless* ] infer ] unit-test
|
2004-11-05 17:41:54 -05:00
|
|
|
|
|
|
|
[ [ 0 | 1 ] ] [
|
|
|
|
[ [ 2 2 fixnum+ ] dup [ ] when call ] infer
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
[
|
|
|
|
[ [ 2 2 fixnum+ ] ] [ [ 2 2 fixnum* ] ] ifte call
|
|
|
|
] unit-test-fails
|
2004-11-06 21:03:35 -05:00
|
|
|
|
|
|
|
: infinite-loop infinite-loop ;
|
|
|
|
|
|
|
|
[ [ infinite-loop ] infer ] unit-test-fails
|
|
|
|
|
|
|
|
: simple-recursion-1
|
|
|
|
dup [ simple-recursion-1 ] [ ] ifte ;
|
|
|
|
|
|
|
|
[ [ 1 | 1 ] ] [ [ simple-recursion-1 ] infer ] unit-test
|
|
|
|
|
|
|
|
: simple-recursion-2
|
|
|
|
dup [ ] [ simple-recursion-2 ] ifte ;
|
|
|
|
|
|
|
|
[ [ 1 | 1 ] ] [ [ simple-recursion-2 ] infer ] unit-test
|
|
|
|
|
2004-11-06 21:20:05 -05:00
|
|
|
: bad-recursion-1
|
|
|
|
dup [ drop bad-recursion-1 5 ] [ ] ifte ;
|
|
|
|
|
|
|
|
[ [ bad-recursion-1 ] infer ] unit-test-fails
|
|
|
|
|
|
|
|
: bad-recursion-2
|
|
|
|
dup [ uncons bad-recursion-2 ] [ ] ifte ;
|
|
|
|
|
|
|
|
[ [ bad-recursion-2 ] infer ] unit-test-fails
|
|
|
|
|
2004-11-17 17:11:09 -05:00
|
|
|
! Simple combinators
|
2004-11-17 20:59:28 -05:00
|
|
|
[ [ 1 | 2 ] ] [ [ [ car ] keep cdr ] infer ] unit-test
|
|
|
|
|
|
|
|
! Mutual recursion
|
|
|
|
DEFER: foe
|
|
|
|
|
|
|
|
: fie ( element obj -- ? )
|
|
|
|
dup cons? [ foe ] [ eq? ] ifte ;
|
|
|
|
|
|
|
|
: foe ( element tree -- ? )
|
|
|
|
dup [
|
|
|
|
2dup car fie [
|
|
|
|
nip
|
|
|
|
] [
|
|
|
|
cdr dup cons? [
|
|
|
|
foe
|
|
|
|
] [
|
|
|
|
fie
|
|
|
|
] ifte
|
|
|
|
] ifte
|
|
|
|
] [
|
|
|
|
2drop f
|
|
|
|
] ifte ;
|
|
|
|
|
|
|
|
[ [ 2 | 1 ] ] [ [ fie ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ foe ] infer ] unit-test
|
2004-11-17 17:11:09 -05:00
|
|
|
|
2004-11-06 21:03:35 -05:00
|
|
|
[ [ 2 | 1 ] ] [ [ 2list ] infer ] unit-test
|
|
|
|
[ [ 3 | 1 ] ] [ [ 3list ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ append ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ swons ] infer ] unit-test
|
|
|
|
[ [ 1 | 2 ] ] [ [ uncons ] infer ] unit-test
|
|
|
|
[ [ 1 | 1 ] ] [ [ unit ] infer ] unit-test
|
|
|
|
[ [ 1 | 2 ] ] [ [ unswons ] infer ] unit-test
|
|
|
|
! [ [ 1 | 1 ] ] [ [ last* ] infer ] unit-test
|
|
|
|
! [ [ 1 | 1 ] ] [ [ last ] infer ] unit-test
|
|
|
|
! [ [ 1 | 1 ] ] [ [ list? ] infer ] unit-test
|
2004-11-17 20:59:28 -05:00
|
|
|
|
2004-11-20 16:57:01 -05:00
|
|
|
[ [ 2 | 1 ] ] [ [ bitor ] infer ] unit-test
|
2004-11-17 20:59:28 -05:00
|
|
|
[ [ 2 | 1 ] ] [ [ bitand ] infer ] unit-test
|
2004-11-20 16:57:01 -05:00
|
|
|
[ [ 2 | 1 ] ] [ [ bitxor ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ mod ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ /i ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ /f ] infer ] unit-test
|
|
|
|
[ [ 2 | 2 ] ] [ [ /mod ] infer ] unit-test
|
2004-11-21 03:29:18 -05:00
|
|
|
[ [ 2 | 1 ] ] [ [ + ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ - ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ * ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ / ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ < ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ <= ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ > ] infer ] unit-test
|
|
|
|
[ [ 2 | 1 ] ] [ [ >= ] infer ] unit-test
|
2004-11-17 20:59:28 -05:00
|
|
|
[ [ 2 | 1 ] ] [ [ number= ] infer ] unit-test
|
2004-11-21 03:29:18 -05:00
|
|
|
|
|
|
|
[ [ 2 | 1 ] ] [ [ = ] infer ] unit-test
|
|
|
|
|
|
|
|
[ [ 1 | 0 ] ] [ [ >n ] infer ] unit-test
|
|
|
|
[ [ 0 | 1 ] ] [ [ n> ] infer ] unit-test
|