Hacker News new | past | comments | ask | show | jobs | submit login
Smug Lisp Weenies and Lateral Thinking (dorophone.blogspot.com)
20 points by nickb on May 30, 2008 | hide | past | favorite | 7 comments



It's not a lisp thing. It's the smart way to approach the problem of helping folks in trouble. Start from goals.

This is also not why lisp users tend to be smug.

Lisp users tend to be smug because they know they are smarter than most people. And, to be fair, on the basis of IQ, they probably are.

They are smug because they prefer the "correct" to the "effective" and will make extended academic arguments to support this point.

They advance "worse is better" as if it were a criticism of the technologies that are successful in the marketplace.

Perhaps this is even true in a strict academico-logical sense.

But this is also why Lisp has had such limited success in that marketplace which they love to criticise.

If you want to mostly live in a cloister, then being the Confucian master of correctness is fine.

If you want to make it in the hurly-burly, you must adopt a different attitude.


This is not a Lisp thing, everyone on IRC does this. "Step back. Explain what you are trying to achieve." is the cute catchphrase.


It may not be solely a Lisp thing, but I think it is much more prevalent in the communications betweem Lisp devotees and folks used to procedural programming. People tend to see solutions in terms of what they are comfortable with, and functional programming approaches are different, not merely translations of procedural notions into a different syntax.


I disagree. Here's a typical conversation on #catalyst (Catalyst is a Perl web framework that I develop):

  <newbie> How can I make the start of a request die if a precondition isn't met?
  <@developer> Step back.  Explain what you are trying to achieve.
  <newbie> Well, I want the user to be redirected to the login page if a session cookie hasn't been created.
  <@developer> Don't do that manually.  Use the Session and ACL plugins.
What happened here is that newbie was half way into his half-baked solution, and couldn't figure out how to get it to work. The developer knew that they were solving the wrong problem, and pushed them in the right direction. (It does come down to reputation in cases like this, I admit. If it's someone we've never heard of, they're probably just trying to write an app and they don't need to understand the internals. If I asked the same question, someone would probably immediately give me the answer. Or flame me for asking a dumb question ;)

Anyway, I don't think Lisp will throw off imperative programmers; Lisp can be as imperative as you want it to be. Compare:

    (do ((i 1 (1+ i))) ((> i 10)) (format t "~d" i))
To:

    for(int i = 1; i <= 10; i++){
        fprintf(STDOUT, "%d", i);
    }
Edit: I replaced the loop macro with do, because it looks more like C. (ugly though ;)

Pretty much exactly the same.

As for other functional languages, you are probably right. I'm sure people ask #haskell "how do I do a for loop" and are told about recursion. I think that's the same as the use-the-right-libraries example above.


Well put. I'm still a lisp newbie (I've only made one useful thing with lisp), and I still end up trying to do [[x]] :/


[[x]] looks like Tcl to me :-)


Hecl too:

    hecl> proc x {} {return y}
    hecl> proc y {} {return z}
    hecl> proc z {} {puts "hello world"}
    hecl> [[x]]
    hello world




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: