Some of the Lisp and Haskell code examples aren&#x27;t doing the same thing.  For example, these two do completely different things:<p><pre><code>    (remove-if-not #&#x27;p xs :count 5 :start 3)

    take 5 . filter p . drop 3
</code></pre>
I don&#x27;t like Haskell, and it&#x27;s not immediately obvious to me how to achieve what the Common Lisp is doing, so I won&#x27;t bother, but one way of writing the Haskell in CL would be:<p><pre><code>    (loop for x in (subseq xs 3)
          when (p x) collect x into result
          until (= (length result) 5)
          finally (return result))
</code></pre>
Another option would be to use subseq and remove-if-not, etc, but without lazy evaluation, the loop version will be more efficient.  And though some Lisp people dislike LOOP, I like that it&#x27;s easy to read, if not always easy to write ;-)<p>About the topic of the article, though, to me this seems like less a philosophical difference than a result of Haskell not having easy to use default and optional parameters.  There&#x27;s currying, but it&#x27;s not a great substitute, and it&#x27;s a little awkward to use.<p>I like the Common Lisp way, even if it&#x27;s crufty at times, because the keyword arguments to functions like remove-if-not and sort are easier for me to use than chaining a half dozen functions.  I don&#x27;t have to think about whether I need to call filter before or after take or drop, etc.  At the end of the day, it&#x27;s a personal preference, though.<p>Another advantage is that I don&#x27;t have to &quot;roll my own&quot; for common idioms.