<story><title>Factor 0.96 now available – over 1,100 commits</title><url>http://re-factor.blogspot.com/2013/04/factor-0-96-now-available.html</url><text></text></story><parent_chain></parent_chain><comment><author>zvrba</author><text>Having been a long-time user of HP series of calculators (HP48g, HP50g), postfix notation is not foreign to me. So I tried Factor, and gave up on it for several reasons.&lt;p&gt;First, there were obligatory stack effect declarations on each word. Want to refactor your program? Sure, rewrite your words, together with stack effect declarations. That part was extremely annoying when it came to exploratory programming. For the uninitiated: stack effect declarations are akin to function prototypes in C, only lacking type information. IMO, once you have them, and they&apos;re obligatory, you get all the drawbacks of postfix languages, and no benefits.&lt;p&gt;Second, the language and standard library rely heavily on stack combinators. Reading the standard library code requires intimate familiarity of what words like bi, bi@ and bi* do (among a whole lot of others).&lt;p&gt;Third, I find Factor&apos;s documentation extremely confusing. For example, there are &quot;Vocabulary index&quot; and &quot;Libraries&quot; sections, with little or no overlap between them. But vocabulary is a library (or package, whatever, same thing), so WTF?!&lt;p&gt;Then there are important and powerful features like generic words, but if you click on the &quot;Language reference&quot; link on the docs homepage, you get a menu with no mention of generics, and you have little clue in which section to look for them. (It&apos;s under objects.) Then you eventually find out (sorry, I was unable to dig up reference to the docs) that generics support only single dispatch, and only &quot;math&quot; generics (plus, minus, etc.) support double dispatch.&lt;p&gt;In short, the manual is a maze of cross-references with no head or tail.&lt;p&gt;Fourth, I dislike writing control structures in postfix. This is the part that, IMO, RPL on HP&apos;s calculators got right.  Instead of forcing you to write something like&lt;p&gt;&lt;pre&gt;&lt;code&gt;    10
    &quot;Less than 10&quot;
    &quot;Greater than 10&quot;
    [ &amp;#60; ] 2dip if ! 2dip is a stack combinator, guess what it does!
&lt;/code&gt;&lt;/pre&gt;
you could write&lt;p&gt;&lt;pre&gt;&lt;code&gt;    IF 10 &amp;#60; THEN &quot;Less than 10&quot; ELSE &quot;Greater than 10&quot; END
&lt;/code&gt;&lt;/pre&gt;
(Postfix conditionals were available for the rare cases where they were the most convenient form.)&lt;p&gt;Last but not least, it supports only cooperative threads.</text></comment>
<story><title>Factor 0.96 now available – over 1,100 commits</title><url>http://re-factor.blogspot.com/2013/04/factor-0-96-now-available.html</url><text></text></story><parent_chain></parent_chain><comment><author>bjourne</author><text>It takes a few hours to get used to, but once you get the hang of it it becomes an amazing language. For most things postfix notation that Factor uses reads better than applicative (prefix) notation other languages uses. It&apos;s like jQuery&apos;s or linq&apos;s method chaining, only better :) and with less syntax. For example here is the solution to problem 22 in Project Euler (&lt;a href=&quot;http://projecteuler.net/problem=22&quot; rel=&quot;nofollow&quot;&gt;http://projecteuler.net/problem=22&lt;/a&gt;):&lt;p&gt;&lt;pre&gt;&lt;code&gt;    : names ( -- seq )
         &quot;names.txt&quot; ascii file-contents [ quotable? ] filter &quot;,&quot; split ;
    : score ( str -- n ) [ 64 - ] map sum ;
    : solution-22 ( -- n )
        names natural-sort [ 1 + swap score * ] map-index sum ;&lt;/code&gt;&lt;/pre&gt;</text></comment>