204
What the f*ck is a monad
(feddit.de)
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
I wasn't even thinking of IO - I'm very good at avoiding that when possible - what I end up doing is writing giant functions like
bigChungus :: a -> a
wherea
is a large agglomeration of mostly auxiliary data, and then I calliterate
on it to search for a member of[a]
signifying completion, often with a version offind
. If you think about it that's just a loop with the parts ofa
working as mutable variables.I have to be suspicious that GHC runtime is actually building such a linked list and not turning that back into a loop in the imperative assembly code, like it should. And really, if I'm writing that way why Haskell.
Hmm no, I can't say that I've ever writen code like that. For one, it might be better to use
loop :: (a -> Either a b) -> a -> b
instead so that you don't have to sort through the result afterwards withfind
.I'm not sure exactly what you're trying to do, but maybe using the
State
monad could be a good idea? Ifa
is an object with fields that you want to be able to read and update that sounds a bit like what you might want to useState
for. This can be combined with maybe something from the loop section of Control.Monad.Extra to make the intention of the code a bit clearer.If performance is critical you might be better of using a different language anyway (Haskell performance is okay but not amazing) but otherwise I don't think that this is really gonna slow down your code unacceptably much.
Lol. Yep, I'm a lame Haskeller.
This is a pattern that has repeated on different things, and the main reason I haven't done much Haskell in the past couple years. Maybe
State
is what I need, I'll have to look into it.See, I come from a maths background, and I have a bit of perfectionism going even if it's not a big deal. Maybe the processor can do a stupid thing and get away with it, but why should it?
What's that? Valuable programmer time you say? Pffft. I'll be over here designing a chess predicament with a multiply-infinite but well-defined solution to reach check (Yes, I've seen it done).