Hacker News new | past | comments | ask | show | jobs | submit login

I've read something quite contrary on reddit.

It was about Clojure vs Haskell and more specifically, dynamic vs static typing. Person was claiming that it was so much easier to change statically typed languages. It get more difficult to maintain large projects that are Lisps.

From what I've learned so far about languages, it makes sense. It looks that Lisps are more suitable for implementing algorithms because of the reductionism, but in more realistic systems world, you build interfaces, add random strings, and so on.

If you are patient and good enough, you can probably build significant part of a system, but not all of it. I do not know any systems built entirely on Lisp, but I might be wrong.




Since Lisp in many variants (Common Lisp, for example) does have static type checking [1], that argument is not very strong.

For some examples of systems built on Lisp: Emacs, Hacker News, Paul Graham's startup Viaweb, the original Reddit.

[1]: http://www.sbcl.org/manual/#Type-Errors-at-Compile-Time


Common Lisp doesn't have full static type checking, and very little polymorphic type checking. Only one Lisp compiler (and its derivative) can even do something that's remotely close to static type checking, and even then it's woefully incomplete.

It's nowhere near Haskell/ML, or even C/Java.


Yeah, it was wrong to say that Common Lisp has static type checking, as it's not part of the standard, and I'm not familiar with many implementations.

All I really know is that when I've programmed with SBCL, I've gotten useful type checking warnings at compile time.

I agree that static type checking is very useful for less stressful refactoring, and so on, and I'm a huge fan of Haskell. But I think very simple kinds of type checking can often be enough.

The argument was that Lisp lacks types to such an extent that building large Lisp systems becomes very difficult (due to the lack of typing). Well, there are lots of large JavaScript systems these days, and Common Lisp, in my experience with SBCL, provides at least more compile-time type checking than that.


It totally depends on what you're doing with your software; different tasks map better or worse to the respective paradigms, depending on what you're trying to do.

Static typing certainly makes it easier to maintain large systems, but it's certainly not a requirement.

You can certainly write entire systems in Lisp; people have made entire computers in order to run Lisp in hardware; there have been operating systems etc.

Moreover, you don't really need to use it for whole systems; use it where it works. There need not be One True Language.

At the moment, Clojure is used in production at Netflix, Twitter, Amazon, Akamai, etc etc etc.


> dynamic vs static typing

And some lisps, such as Racket, allow you to switch from untyped to typed with nominal changes.




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: