Re: [Factor-talk] ternary-search-tries confusion
2drop should have stack effect ( x y -- ) . I have no idea why it should refuse to do that in the compiler. Maybe try replacing it with drop drop ? Marshall On Sun, Dec 11, 2011 at 3:13 AM, CW Alston wrote: > Greetings, Factorials - > I've been working through mrjbq7's re-factor utilities, particularly a pet > interest of mine, ternary search trees. > Thrilled to see an implementation in Factor, but I can't get the code to > compile. Here's the error I get with > *USE: ternary-search-trees* in the listener: > > *resource:work/ternary-search-trees/ternary-search-trees.factor* > * > * > * 9: <<* > *12: >>* > * ^* > *The word define-maybe cannot be executed because it failed to compile* > * > * > *The input quotations to “if” don't match their expected effects* > *Input > Expected Got* > *[ ~quotation~ ~quotation~ make define-inline ] (( ..a -- ..b )) (( x x > -- ))* > *[ 2drop ](( ..a > -- ..b )) (( x -- ))* > > > '*define-maybe*' is in the required file, *accessors.maybe* -- I planted > all code in the 'work' directory of factor. > The untouched code there reads: > - > *USING: accessors arrays kernel make quotations sequences* > *slots words ;* > * > * > *IN: accessors.maybe* > * > * > *: maybe-word ( name -- word )* > *"maybe-" prepend "accessors" create ;* > * > * > *: define-maybe ( name -- )* > *dup maybe-word dup deferred? [* > *[* > *over setter-word \ drop 2array >quotation* > *[ keep ] curry , \ compose ,* > *swap reader-word [ dup ] swap 1quotation compose* > *[ [ nip ] ] compose , \ dip , \ if* ,* > *] [ ] make ( object quot: ( -- x ) -- value ) define-inline* > *] [ 2drop ] if ;* > * > * > *: define-maybe-accessors ( class -- )* > *"slots" word-prop [* > *dup read-only>> [ drop ] [ name>> define-maybe ] if* > *] each ;* > - > > I just can't untangle the stack effects in '*define-maybe*' to see where > the stack is disrupted. Any insights from folks > better initiated? Note that: > --- > *9: <<* > *12: >>* > * ^* > --- > in the error output (lines 9-12) points to: > --- > *<<* > *TUPLE: tree-node ch value exists lt eq gt ;* > *tree-node define-maybe-accessors* > *>>* > --- > in file 'ternary-search-trees.factor' . > > Thanks, all, and keep up the good work, > CW Alston > -- > *~ Memento Amori* > > > -- > Learn Windows Azure Live! Tuesday, Dec 13, 2011 > Microsoft is holding a special Learn Windows Azure training event for > developers. It will provide a great way to learn Windows Azure and what it > provides. You can attend the event by watching it streamed LIVE online. > Learn more at http://p.sf.net/sfu/ms-windowsazure > ___ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/factor-talk > > -- Learn Windows Azure Live! Tuesday, Dec 13, 2011 Microsoft is holding a special Learn Windows Azure training event for developers. It will provide a great way to learn Windows Azure and what it provides. You can attend the event by watching it streamed LIVE online. Learn more at http://p.sf.net/sfu/ms-windowsazure___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk
Re: [Factor-talk] ternary-search-tries confusion
I updated "re-factor" to work with the latest Factor which changes stack effect declarations to be single parentheses. If you want it to work with your version, change accessors.maybe from "( object quot: ( -- x ) -- value )" to "(( object quot: ( -- x ) -- value ))". Best, John. On Sunday, December 11, 2011 at 12:13 AM, CW Alston wrote: > Greetings, Factorials - > I've been working through mrjbq7's re-factor utilities, particularly a pet > interest of mine, ternary search trees. > Thrilled to see an implementation in Factor, but I can't get the code to > compile. Here's the error I get with > USE: ternary-search-trees in the listener: > > resource:work/ternary-search-trees/ternary-search-trees.factor > > 9: << > 12: >> > ^ > The word define-maybe cannot be executed because it failed to compile > > The input quotations to “if” don't match their expected effects > InputExpected > Got > [ ~quotation~ ~quotation~ make define-inline ] (( ..a -- ..b )) (( x x -- )) > [ 2drop ](( ..a -- > ..b )) (( x -- )) > > > > 'define-maybe' is in the required file, accessors.maybe -- I planted all code > in the 'work' directory of factor. > The untouched code there reads: > - > USING: accessors arrays kernel make quotations sequences > slots words ; > > IN: accessors.maybe > > : maybe-word ( name -- word ) > "maybe-" prepend "accessors" create ; > > : define-maybe ( name -- ) > dup maybe-word dup deferred? [ > [ > over setter-word \ drop 2array >quotation > [ keep ] curry , \ compose , > swap reader-word [ dup ] swap 1quotation compose > [ [ nip ] ] compose , \ dip , \ if* , > ] [ ] make ( object quot: ( -- x ) -- value ) define-inline > ] [ 2drop ] if ; > > : define-maybe-accessors ( class -- ) > "slots" word-prop [ > dup read-only>> [ drop ] [ name>> define-maybe ] if > ] each ; > > - > > I just can't untangle the stack effects in 'define-maybe' to see where the > stack is disrupted. Any insights from folks > better initiated? Note that: > --- > 9: << > 12: >> > ^ > --- > > in the error output (lines 9-12) points to: > --- > << > TUPLE: tree-node ch value exists lt eq gt ; > tree-node define-maybe-accessors > >> > > --- > in file 'ternary-search-trees.factor' . > > Thanks, all, and keep up the good work, > CW Alston > -- > ~ Memento Amori > -- > Learn Windows Azure Live! Tuesday, Dec 13, 2011 > Microsoft is holding a special Learn Windows Azure training event for > developers. It will provide a great way to learn Windows Azure and what it > provides. You can attend the event by watching it streamed LIVE online. > Learn more at http://p.sf.net/sfu/ms-windowsazure > > ___ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net (mailto:Factor-talk@lists.sourceforge.net) > https://lists.sourceforge.net/lists/listinfo/factor-talk > > -- Learn Windows Azure Live! Tuesday, Dec 13, 2011 Microsoft is holding a special Learn Windows Azure training event for developers. It will provide a great way to learn Windows Azure and what it provides. You can attend the event by watching it streamed LIVE online. Learn more at http://p.sf.net/sfu/ms-windowsazure___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk
[Factor-talk] ternary-search-tries confusion
Greetings, Factorials - I've been working through mrjbq7's re-factor utilities, particularly a pet interest of mine, ternary search trees. Thrilled to see an implementation in Factor, but I can't get the code to compile. Here's the error I get with *USE: ternary-search-trees* in the listener: *resource:work/ternary-search-trees/ternary-search-trees.factor* * * * 9: <<* *12: >>* * ^* *The word define-maybe cannot be executed because it failed to compile* * * *The input quotations to “if” don't match their expected effects* *InputExpected Got* *[ ~quotation~ ~quotation~ make define-inline ] (( ..a -- ..b )) (( x x -- ))* *[ 2drop ](( ..a -- ..b )) (( x -- ))* '*define-maybe*' is in the required file, *accessors.maybe* -- I planted all code in the 'work' directory of factor. The untouched code there reads: - *USING: accessors arrays kernel make quotations sequences* *slots words ;* * * *IN: accessors.maybe* * * *: maybe-word ( name -- word )* *"maybe-" prepend "accessors" create ;* * * *: define-maybe ( name -- )* *dup maybe-word dup deferred? [* *[* *over setter-word \ drop 2array >quotation* *[ keep ] curry , \ compose ,* *swap reader-word [ dup ] swap 1quotation compose* *[ [ nip ] ] compose , \ dip , \ if* ,* *] [ ] make ( object quot: ( -- x ) -- value ) define-inline* *] [ 2drop ] if ;* * * *: define-maybe-accessors ( class -- )* *"slots" word-prop [* *dup read-only>> [ drop ] [ name>> define-maybe ] if* *] each ;* - I just can't untangle the stack effects in '*define-maybe*' to see where the stack is disrupted. Any insights from folks better initiated? Note that: --- *9: <<* *12: >>* * ^* --- in the error output (lines 9-12) points to: --- *<<* *TUPLE: tree-node ch value exists lt eq gt ;* *tree-node define-maybe-accessors* *>>* --- in file 'ternary-search-trees.factor' . Thanks, all, and keep up the good work, CW Alston -- *~ Memento Amori* -- Learn Windows Azure Live! Tuesday, Dec 13, 2011 Microsoft is holding a special Learn Windows Azure training event for developers. It will provide a great way to learn Windows Azure and what it provides. You can attend the event by watching it streamed LIVE online. Learn more at http://p.sf.net/sfu/ms-windowsazure___ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk