tag:blogger.com,1999:blog-1777990983847811806.post3141756150056914872..comments2024-03-16T16:29:29.582-07:00Comments on Haskell for all: Sometimes less is more in language designGabriella Gonzalezhttp://www.blogger.com/profile/01917800488530923694noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-1777990983847811806.post-4806682255387261052013-08-04T08:40:17.960-07:002013-08-04T08:40:17.960-07:00http://axisofeval.blogspot.com/2011/01/why-lisp-is...http://axisofeval.blogspot.com/2011/01/why-lisp-is-big-hack-and-haskell-is.html<br /><br />also addresses this, contrasting with common lispAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-35371321679429901132013-08-03T12:09:59.612-07:002013-08-03T12:09:59.612-07:00The problem of unsafePerformIO used to annoy me to...The problem of unsafePerformIO used to annoy me too. But now we have SafeHaskell which addresses this problem.<br /><br />I suppose one could argue that in Haskell, undefined is the equivalent of null pointers in other languages. The difference is that null pointers are used in the normal functioning of bug-free programs. That is not the case for undefined in Haskell.<br /><br />As for space and time usage with laziness, I think that is mostly a function of what we are used to.mightybytehttps://www.blogger.com/profile/15198998578494149797noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-14118789259922560502013-08-02T09:17:11.861-07:002013-08-02T09:17:11.861-07:00I agree, particularly about the laziness part. Th...I agree, particularly about the laziness part. This still supports the premise of the post, though: the parts that Haskell does not reflect in the types are precisely the parts that people complain the most about:<br /><br />* exceptions (especially asynchronous exceptions)<br /><br />* laziness<br /><br />* cheating (unsafePerformIO)<br /><br />Let me try to work that into the post for balance.Gabriella Gonzalezhttps://www.blogger.com/profile/01917800488530923694noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-91794041112051442982013-08-02T09:14:25.041-07:002013-08-02T09:14:25.041-07:00I mostly agree, but it is not entirely true that H...I mostly agree, but it is not entirely true that Haskell gives by default less than other languages.<br /><br />For example, "x :: Bool" does not say that x is a boolean as is usually understand from other languages. Bool is a lazy boolean. You could have "x = undefined" and not realize until well into running a program using x that you didn't intend to crash.<br /><br />Also, lazy evaluation makes it harder to reason about time and space usage.<br /><br />Haskell has chosen certain tradeoffs that happen to be different from those chosen by other languages.<br /><br />(Also, there is unsafePerformIO.)Franklin Chenhttps://www.blogger.com/profile/14762341306710286314noreply@blogger.com