Hi everyone. I’m in the process of refactoring some libraries to target MicroHs (mhs). For users of these libraries, unfortunately a decision has been made and we are going to freeze development for a time, as opportunities for large refactorings such as this seldom present themselves. Fortunately for users, targeting mhs means continuing with using the ghc for most bits and bobs, so there will be hopefully little disruption, and we hope to build some strong foundations.
Libraries effected
For those of you who are not familiar with my library set, I maintain (I won’t link them to avoid too much promotion):
numhask - numerical classes we all might have enjoyed using if we could change base. Alternatively, this is what the basics of numpy would look like in Haskell.
harpie - an n-dimensional array library with a mirrored array shape api at the value and type levels.
chart-svg - a chart library targetting svg and my homage to the glories of haddock. A chart library should strut!
box - my “it’s not an effect system, it’s a profunctor” effects system. I have never known why it works as well as it does, but have just found a hyperfunction buried in the code base!
mealy - my badly named incremental statistics state-machine. Fast and composable as it gets.
perf - a performance library that is not criterion.
A keen eye will note that many of these elements would be key pieces of an ML pipeline, and you would be right. They pretty much all began in the initial dataHaskell project and are being spruced up for the relaunched efforts.
Call for participation
This is a big library set, and I will get through it somehow, but it could also be a great opportunity for some community collaboration.
Reasons to get involved:
- You are new to Haskell
These libraries are non-commercial and by that I mean they are driven by craft considerations above anything else. They are educational to a large extent, and, at their best, promote good coding practices and demonstrate what Haskell can do in a very concrete way.
I’ve started a tight compiler-development loop working on numhask as an initial point of entry, logging mhs errors into the readme.md of the branch: GitHub - tonyday567/numhask at mhs
If you glance through you see a log of every compiler error roughly matching commits. They are, so far, plain and crystal clear. They have to be because there’s no looking up a solution, or, at least, no AI training set yet. No haddock for the base even, so you need to hunt for analogous functions in mhs base and check back with ghc hq.
So the job doesn’t require deep Haskell experience, but it’s not boring, you’re not at much of a disadvantage, and it’s a strong path to learning the full toolkit.
- You are new to data science
The pipeline forming around the dataHaskell activity is a fantastic context within which to learn machine learning (that’s what I’m doing mainly). You get a view from the inside of an ML pipeline being rapidly developed, still in incubation, needing user input, but committed to exclusively using Haskell idioms and artifacts.
For an example of this kind of activity, and how new it all is, GitHub - tonyday567/mdata is a log of designing box and whisker charts for dataframe. It will soon be an entire dashboard for incoming csv data covering real and classification visualisations. Next up is a pie chart, and a pie chart, a really good pie chart with an ability to scale and offset pie slices is a fun project.
- Haskell Pride
One of my personal motivations is to be part of a Kaggle winning team that uses and showcases well-crafted, Haskell-built tools. But in the ten years that a haskell engine has been available a Haskell team has never won: the trophy cabinet bare. Firstly, we could win if we tried and kept our wits, huzza! If not, we can create a strong feedback loop and work with a core infrastructure piece needed to break into data science. You can just do it for Haskell pride.
Whatever the reason, I would love to collaborate. Please say hi in the dataHaskell discord, or just start putting issues up and saying hi in any library or project that catches your eye.
go team!