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

Generic programming is missing #127

Open
nponeccop opened this issue Jan 27, 2018 · 2 comments
Open

Generic programming is missing #127

nponeccop opened this issue Jan 27, 2018 · 2 comments

Comments

@nponeccop
Copy link
Collaborator

No description provided.

@anka-213
Copy link

anka-213 commented Apr 9, 2018

What do you mean? Generic programming is a very vague term. Can you give some examples?

@nponeccop
Copy link
Collaborator Author

We can stick to something like this:

Generic programming centers around the idea of abstracting from concrete, efficient algorithms to obtain generic algorithms that can be combined with different data representations to produce a wide variety of useful software.

So how well Haskell supports the generic programming? It does extremely well compared to other languages. How we can substantiate this claim? It's not very easy unfortunately because there are so many facilities in Haskell to support various generic styles.

  • Type system - type classes, algebraics, parametric polymorphism
  • Template Haskell to generate code at compile time
  • Data.Generic, Data.Data, Data.Typable and so on (integrated with compiler)
  • dozens of libraries for specific techniques (such as Scrap Your Boilerplate, Datatypes a la carte, Recursion schemes etc)
  • dozens of very abstract primitives (start from Typeclassopedia and go on to profunctors, lenses, conduits etc)
  • hundreds of unusually abstract algorithms (e.g. abstract breadth first search, abstract structural unification)
  • Generics category on Hackage
  • etc

So the question is how do we describe all of that concisely, and what is already covered elsewhere?

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

2 participants