Hi Ander Programming in factor is best done in a bottom-up approach - break down that long bubble-sort word into the most elementary operations each assigned to their own word, then combine them.
Try to at least replace every quotation with a word eg. [ drop drop ] is a standard word in factor = [ 2drop ]. Once you do that the answer/problem will become obvious. Basically, the two quotations passed to the if word consume a different number of stack objects. I'm a bit of a newbie myself so can't quickly point you at the exact spot of the problem, and do not have time right now to go through it. Finally, try using the walker (Ctrl-W) to inspect your code and you'll see exactly where/why factor complains. Vlad. On Wed, Aug 11, 2010 at 2:53 PM, Андрей Полищук <ander-skir...@mail.ru>wrote: > Hello, > Sorry for bad english, > I am a newbie in factor, > came from common-lisp fields. > > I've tried to implement bubble-sort, and got error i cannot deal with for > few hours. > Can someone please help? > > Sorry for maybe weird and not true-factor-way code: > :: bubble-sort! ( seq cmp -- sorted-seq ) > seq [ dup 0 = [ drop drop ] [ > swap over 1 - seq nth cmp [ :> j! > [ j 0 > [ j j 1 - [ seq nth ] bi@ < ] [ f ] if ] [ > j j 1 - seq exchange j 1 - j! > ] while > ] [ drop ] if > ] if > ] each-index seq ; > > The error is: > The input quotations to "if" don't match their expected effects > Input Expected > Got > [ drop drop ] (( ..a > -- ..b )) (( x x -- )) > [ _ _ 2 load-locals swap over 1 - -1 get-local nth 0 get-local... (( ..a > -- ..b )) (( x x -- x x )) > > And second, as you can see i've used that construction: j 0 > [ j j 1 - [ > seq nth ] bi@ < ] [ f ] if > as analog for binary lazy left-to-right `and'. It's because standart Factor > `and' operators are working just with booleans from stack. So im interested > whats an idiomatic way to do things like this? Maybe it could be useful to > have lazy left-to-right logical operators that work on quotations in > standart library? > > Thanks. > Ander > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by > > Make an app they can't live without > Enter the BlackBerry Developer Challenge > http://p.sf.net/sfu/RIM-dev2dev > _______________________________________________ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/factor-talk >
------------------------------------------------------------------------------ This SF.net email is sponsored by Make an app they can't live without Enter the BlackBerry Developer Challenge http://p.sf.net/sfu/RIM-dev2dev
_______________________________________________ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk