tag:blogger.com,1999:blog-4348519741358344123.post1619924503187376621..comments2023-04-16T06:46:23.339-04:00Comments on functional orbitz: Impressed with Haskell's concurrencyUnknownnoreply@blogger.comBlogger4125tag:blogger.com,1999:blog-4348519741358344123.post-46767459452158711502009-09-07T22:46:51.529-04:002009-09-07T22:46:51.529-04:00From my experience (both learning and teaching Has...From my experience (both learning and teaching Haskell) it doesn't take any more effort to learn to write code in Haskell to the same quality as you write in another language (though obviously you're learning slightly different stuff - there are numerous code smells Haskell lacks support for ;) but Haskell gives you a lot of opportunities to learn a little _more_ than that and write even _better_ code.Greghttp://www.blogger.com/profile/07637024036051297719noreply@blogger.comtag:blogger.com,1999:blog-4348519741358344123.post-89768951340032537382009-09-07T13:13:27.123-04:002009-09-07T13:13:27.123-04:00Try Mythryl.Try Mythryl.StoneCypherhttp://www.blogger.com/profile/07701245705928548668noreply@blogger.comtag:blogger.com,1999:blog-4348519741358344123.post-63326305433102743002009-09-07T11:02:31.760-04:002009-09-07T11:02:31.760-04:00Yes, Haskell does have exceptions, but I and a lot...Yes, Haskell does have exceptions, but I and a lot of others discourage exceptions whenever possible. They are not good functional style, in my subjective opinion. However, things like the Maybe or Error monad also allow you to do best-case programming as long as you are willing to use some monadic combinators in place of purely functional combinators. (Thinking about it, I hate the terminology for that distinction. There is nothing about monads that is inherently impure.)<br><br>I disagree with your deeming of laziness as unpredictable in optimizations. I have mistakenly introduced laziness or strictness to a function before, which caused problems until I figured out what I did, but it was never the fault of the compiler. My own mistakes have dramatically dropped in frequency now that I have internalized most of what (I think) there is to know about programming with laziness.<br><br>I definitely agree with the lack of a reasonable distributed model being a negative for Haskell. It also turns out that Haskell's semantics doesn't lend itself to easy distributed execution, either. For example, the behavior of Int is platform specific (and a source of impurity, by my perhaps overly-strict definition of purity). I think the only manageable way to get distributed execution would be with some sort of embedded DSL, which is a shame considering the potential we could have if only we would guarantee that our pure computations return the same things on any machine.<br><br>I've not found that there is much you must keep in your head when coding in Haskell. The main problem for beginners is realizing that when you are working with an abstraction, the point is to pretend it's not there. Haskell has a lot of abstractions, and a lot of things can happen, operationally, in very few characters, so the only way to manage that complexity is to treat the abstractions as real abstractions.Jake McArthurhttp://www.blogger.com/profile/09019947214862464461noreply@blogger.comtag:blogger.com,1999:blog-4348519741358344123.post-70352046704528560742009-09-07T05:05:29.141-04:002009-09-07T05:05:29.141-04:00I'd be curios to get your take on mythryl: htt...I'd be curios to get your take on mythryl: http://mythryl.org/<br><br>thx!Anonymousnoreply@blogger.com