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

Yes. And this is tiny compared to what's there in mathematics, limited mostly to people who write Haskell fanfic (from Haskell proper to Scalaz), and, to be blunt: the terminology is used more as a shibboleth than as an abstraction tool. Contrast this with F#'s terminology ("computation expressions"), for example. I mean, if your goal is to have adoption levels for Haskell rival that for abstract algebra and to keep the unwashed masses out, then the more arcane and unrelatable your terminology is for the average person, the better.

To give another example. "Strength reduction" as a compiler optimization relies basically on the fact that the distributive laws apply to rings. Yet you won't find a mention of rings in compiler textbooks that explain the technique. It's unnecessary to convey the idea and confuses more than it explains, unless you're one of the few people who already are familiar with rings as algebraic structures.



I don't really think mass adoption is a goal for Haskell. It's still a really inspiring system, and I've seen it bring a lot of people into contact with the rich traditions of pure functional programming and the use of algebra in code. Which is pretty cool, even if some people think it's irritating when these people write excited blog posts about a concept they find trivial, like monads.

I linked to a paper about composing monoids to build a graphics library. For me that particular paper was, years ago, one of the most interesting things I'd seen on how to structure programs.

Maybe this whole experiment with using algebraic concepts in programming is a dead end, and maybe it is even just a way for a bunch of nerds to feel smart. But it seems like a pretty valuable tradition to me.

There probably wouldn't be "computation expressions" in F# if it hadn't been for Moggi and the Haskell gang. Sure it's great that we can take these concepts and rebrand them to make them nice and cuddly (although "computation expression" is no paragon of simple english).

Blah blah blah. I'm kinda tired of the programming forum dialectics...


> Contrast this with F#'s terminology ("computation expressions")

OK, great! And what did F# call monoids, profunctors, semigroups, free constructions, adjoints ... ? The fact is that there are a lot of concepts we use in computer science (maybe not your corner, but yes in computer science) that already have names and history in the mathematical world. If you can suggest better names that we can use in computer science then that's great! Please tell me. Otherwise it seems reasonable to stick with the existing names.




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

Search: