Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Friendlier type class names #6

Open
jayrbolton opened this issue May 17, 2017 · 2 comments
Open

Friendlier type class names #6

jayrbolton opened this issue May 17, 2017 · 2 comments

Comments

@jayrbolton
Copy link

I'd say a chief obstacle for new developers in learning algebraic type classes is the terminology. To people who are already comfortable with it, they probably find this concern trifling. But I think it's more significant than they think, and I think that friendlier type class names would make a big difference towards accessibility.

Simon Peyton-Jones himself has said he dislikes the choice of the name "Monad" and prefers "Workflow", which they use in F#. Similar renaming could be thought of for Functor, Semigroup, etc. A reference page could be kept to map these custom names to the Haskell/Category theory names.

Would be curious to hear your thoughts on this

@paldepind
Copy link
Member

I think that is a very good idea 😄. I have previously thought about it a bit myself.

I choose to go with the typical names just because it was easier.

Here are a few name ideas: Functor could be called Mapable or Container. Monoid might be called Combinable.

I'm not sure I fully understand the idea behind Workflow for Monad. But still, I'd say it's much better than Monad.

I'm curious to hear what other names you have in mind?

@foxdonut
Copy link

I agree that the names are somewhat daunting and not particularly beginner-friendly.

But they are standard names used in numerous documents, articles, libraries, and languages, so trying to come up with different names, even if they are more friendly and intuitive, would ultimately be a disservice.

Just my 5c. (Because we've abolished pennies here.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants