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

Iirc, it isn’t even assignment, it’s a monad extraction.

e.g.

a <- [2] …

gives a the value of 2, unwrapping the List monad (only works if the return value of the function is a List of some kind).

The above could also be written:

[2] >> (\a -> …)

It’s been a while since I’ve done much with haskell, so forgive me if I’ve mis-remembered something.



I know that's what it does under the covers, but is there any reason not to think of it as assignment in your head? That's the mental construct I use in my extremely limited Haskell coding, anyway.


Because if you think of it as assignment, the fact that

a <- [2]

binds a to 2, rather than [2], makes no sense.

edit:

a better example (because it is more useful) would be:

a <- Just 2

which, again, binds a to 2, unwrapping the Maybe monad in the process. (I forget what happens if you try to do a <- Nothing)


I accidentally downvoted this...


Aw :(

I think I’ll live with 1 less karma ;)


Compensated. Now nobody vote this parent up or down lest we disturb the gods.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

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

Search: