Hello, thank you! I like this solution. By the way, there are already standart seq swap - exchange.
> Hi, > here's my modest implementation of the mighty bubble-sort : > http://paste.factorcode.org/paste?id=1858 > > If you want to look at it, I think it's a more idiomatic solution. But > it can surely be improved. > Cheers, > Jon > > 2010/8/11 Vladimir Darmanian <[email protected]>: > > 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, Андрей Полищук <[email protected]> > > 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 > >> [email protected] > >> 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 > > [email protected] > > 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 [email protected] https://lists.sourceforge.net/lists/listinfo/factor-talk
