Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> One of the strengths that Java has over Lisp is that it's statically typed.

With the caveat that Java's type system can be subverted and isn't expressive enough to catch any more than the most trivial kinds of errors a type system can catch.



Most type systems (including Haskell's) can be subverted. Java does catch many common errors, typically of the form "I refaxtored, now this function takes 4 args instead of 3" or "this function returns an X now".

The latter sort are, in my experience, the most common form of type error and catching g them is awesome.


"Expressive" tends towards "complex". I would argue that Java's type system is pretty simple which is a good thing - a pragmatic choice. You sound like you're making "perfect" the enemy of "good"


That's a straw man, we're comparing Java to Lisp, not to another statically typed language.

Because Java is statically typed, it catches a lot more errors at compile time than Lisp can.


Lisp is optionally statically-typed. I am not aware of any type error Java can catch at compile time which Lisp cannot catch at compile time.

Now, whether or not a particular implementation does catch it is an entirely different affair.




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

Search: