(no subject)
May. 6th, 2009 09:57 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
I'm posting to dreamWIDTH in hand-built OS X Chromium while taking a break from hacking Haskell!
Somebody get a tourniquet. You know, for the edge. Because it's bleeding.
A thing I'm noticing in Haskell is that it is badly short of whipuptitude. I ditched Perl a long time ago because Ruby had pulled ahead of it in that respect. Haskell is great for manipulexity, but it fails at whipuptitude for exactly one reason, which is the IO monad. If you walk up to Haskell with a simple task (say, writing "du", so that you can later develop a massively parallel memoizing map/foldr-based extension of du for efficient filesystem accounting on heterogenous multi-petabyte storage systems), you're inevitably going to run into the fact that all interacting with the world outside your program (e.g., the filesystem, the user) goes through the IO monad, and so you have to either borrow some cargo-cult gibberish and hope it works or sit down for a serious grokking session to internalize this particular paradigm shift for real, and in the meantime, you're not Getting Things Done.
I thought strong types were going to piss me off, but it's true, they're implicit until you need them not to be, and so I have learned to love Haskell's type system. IO, though, I haven't learned to love; I have just learned to get it out of my way as quickly as possible.
Languages shouldn't hurt.
Somebody get a tourniquet. You know, for the edge. Because it's bleeding.
A thing I'm noticing in Haskell is that it is badly short of whipuptitude. I ditched Perl a long time ago because Ruby had pulled ahead of it in that respect. Haskell is great for manipulexity, but it fails at whipuptitude for exactly one reason, which is the IO monad. If you walk up to Haskell with a simple task (say, writing "du", so that you can later develop a massively parallel memoizing map/foldr-based extension of du for efficient filesystem accounting on heterogenous multi-petabyte storage systems), you're inevitably going to run into the fact that all interacting with the world outside your program (e.g., the filesystem, the user) goes through the IO monad, and so you have to either borrow some cargo-cult gibberish and hope it works or sit down for a serious grokking session to internalize this particular paradigm shift for real, and in the meantime, you're not Getting Things Done.
I thought strong types were going to piss me off, but it's true, they're implicit until you need them not to be, and so I have learned to love Haskell's type system. IO, though, I haven't learned to love; I have just learned to get it out of my way as quickly as possible.
Languages shouldn't hurt.