2005-09-17 22:52:02 -04:00
|
|
|
IN: inference
|
2006-08-24 02:09:54 -04:00
|
|
|
USING: arrays generic kernel math namespaces
|
2006-08-15 03:01:24 -04:00
|
|
|
sequences words parser ;
|
2005-09-17 22:52:02 -04:00
|
|
|
|
|
|
|
: infer-shuffle-inputs ( shuffle node -- )
|
2006-09-15 20:52:13 -04:00
|
|
|
>r shuffle-in length 0 r> node-inputs ;
|
2005-09-17 22:52:02 -04:00
|
|
|
|
|
|
|
: shuffle-stacks ( shuffle -- )
|
2006-09-15 20:52:13 -04:00
|
|
|
meta-d [ swap shuffle ] change ;
|
2005-09-17 22:52:02 -04:00
|
|
|
|
|
|
|
: infer-shuffle-outputs ( shuffle node -- )
|
2006-09-15 20:52:13 -04:00
|
|
|
>r shuffle-out length 0 r> node-outputs ;
|
2005-09-17 22:52:02 -04:00
|
|
|
|
|
|
|
: infer-shuffle ( shuffle -- )
|
2006-09-14 16:14:27 -04:00
|
|
|
#shuffle dup node,
|
2005-09-17 22:52:02 -04:00
|
|
|
2dup infer-shuffle-inputs
|
|
|
|
over shuffle-stacks
|
2006-09-14 16:14:27 -04:00
|
|
|
infer-shuffle-outputs ;
|
2005-09-17 22:52:02 -04:00
|
|
|
|
|
|
|
: shuffle>effect ( shuffle -- effect )
|
2006-09-15 20:52:13 -04:00
|
|
|
dup shuffle-in swap shuffle-out <effect> ;
|
2005-09-17 22:52:02 -04:00
|
|
|
|
|
|
|
: define-shuffle ( word shuffle -- )
|
2006-09-09 00:12:46 -04:00
|
|
|
[ "shuffle" set-word-prop ] 2keep
|
2005-09-17 22:52:02 -04:00
|
|
|
[ shuffle>effect "infer-effect" set-word-prop ] 2keep
|
|
|
|
[ , \ infer-shuffle , ] [ ] make "infer" set-word-prop ;
|
|
|
|
|
2005-10-29 23:25:38 -04:00
|
|
|
{
|
2006-09-15 20:52:13 -04:00
|
|
|
{ drop T{ shuffle f 1 { } } }
|
|
|
|
{ 2drop T{ shuffle f 2 { } } }
|
|
|
|
{ 3drop T{ shuffle f 3 { } } }
|
|
|
|
{ dup T{ shuffle f 1 { 0 0 } } }
|
|
|
|
{ 2dup T{ shuffle f 2 { 0 1 0 1 } } }
|
|
|
|
{ 3dup T{ shuffle f 3 { 0 1 2 0 1 2 } } }
|
|
|
|
{ rot T{ shuffle f 3 { 1 2 0 } } }
|
|
|
|
{ -rot T{ shuffle f 3 { 2 0 1 } } }
|
|
|
|
{ dupd T{ shuffle f 2 { 0 0 1 } } }
|
|
|
|
{ swapd T{ shuffle f 3 { 1 0 2 } } }
|
|
|
|
{ nip T{ shuffle f 2 { 1 } } }
|
|
|
|
{ 2nip T{ shuffle f 3 { 2 } } }
|
|
|
|
{ tuck T{ shuffle f 2 { 1 0 1 } } }
|
|
|
|
{ over T{ shuffle f 2 { 0 1 0 } } }
|
|
|
|
{ pick T{ shuffle f 3 { 0 1 2 0 } } }
|
|
|
|
{ swap T{ shuffle f 2 { 1 0 } } }
|
2005-10-29 23:25:38 -04:00
|
|
|
} [ first2 define-shuffle ] each
|
2006-09-15 20:52:13 -04:00
|
|
|
|
|
|
|
\ >r [
|
|
|
|
#>r dup node,
|
|
|
|
1 0 pick node-inputs
|
|
|
|
pop-d push-r
|
|
|
|
0 1 rot node-outputs
|
|
|
|
] "infer" set-word-prop
|
|
|
|
|
|
|
|
\ >r { object } { } <effect> "infer-effect" set-word-prop
|
|
|
|
|
|
|
|
\ r> [
|
|
|
|
#r> dup node,
|
|
|
|
0 1 pick node-inputs
|
|
|
|
pop-r push-d
|
|
|
|
1 0 rot node-outputs
|
|
|
|
] "infer" set-word-prop
|
|
|
|
|
|
|
|
\ r> { } { object } <effect> "infer-effect" set-word-prop
|