Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Homomorphic machine learning
| Date | Stars |
|---|---|
| 2026-07-31 | 1662 |
| 2026-08-01 | 1662 |
| 2026-08-06 | 1662 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# HLearn
<!---->
HLearn is a high performance machine learning library written in [Haskell](http://haskell.org).
For example, it currently has the fastest nearest neighbor implementation for arbitrary metric spaces (see [this blog post](http://izbicki.me)).
HLearn is also a research project.
The research goal is to discover the "best possible" interface for machine learning.
This involves two competing demands:
The library should be as fast as low-level libraries written in C/C++/Fortran/Assembly;
but it should be as flexible as libraries written in high level languages like Python/R/Matlab.
[Julia](http://julialang.org/) is making amazing progress in this direction,
but HLearn is more ambitious.
In particular, HLearn's goal is to be *faster* than the low level languages and *more flexible* than the high level languages.
To achieve this goal, HLearn uses a very different interface than standard learning libraries.
The H in HLearn stands for three separate concepts that are fundamental to HLearn's design:
1. The H stands for [Haskell](http://haskell.org).
Machine learning is about estimating *functions* from data,
so it makes sense that a functional programming language would be well suited for machine learning.
But Functional programming languages are not widely used in machine learning because they traditionally lack strong support for the fast numerical computations required for learning algorithms.
HLearn uses the [SubHask](http://github.com/mikeizbicki/subhask) library to get this fast numeric support in Haskell.
The two libraries are being developed in tandem with each other.
<!--Languages like Agda/Coq/Idris provide more advanced type systems,-->
<!--but their compilers lack the support for real world optimizations needed for numerical applications.-->
<!--Haskell strikes a nice balance.-->
1. The H stands for [Homomorphisms](https://en.wikipedia.org/wiki/Homomorphism).
Homomorphisms are a fundamental concept in [abstract algebra](https://en.wikipedia.org/wiki/Abstract_algebra),
and HLearn exploits the algebraic structures inherrent in learning systems.
The following table gives a brief overview of what these structures give us:
| Structure | What we get |
|:--------------|:--------------------------------------|
| Monoid | parallel batch training |
| Monoid | online training |
| Monoid | fast cross-validation |
| Abelian group | "untraining" of data points |
| Abelian group | more fast cross-validation |
| R-Module | weighted data points |
| Vector space | fractionally weighted data points |
| Functor | fast simple preprocessing of data |
| Monad | fast complex preprocessing of data |
1. The H stands for the [History monad](https://github.com/mikeizbicki/HLearn/blob/master/src/HLearn/History.hs).
One of the most difficult tasks of developing a new learning algorithm is debugging the optimization procedure.
There has previously been essentially no work on making this debugging process easier,
and the `History` monad tries to solve this problem.
It lets you thread debugging information throughout the optimization code *without modifying the original code*.
Furthermore, there is no runtime overhead associated with this technique.
The downside of HLearn's ambition is that it currently does not implement many of the popular machine learning techniques.
## More Documentation
Due to the rapid pace of development, HLearn's documentation is sparse.
That said, the [examples](https://github.com/mikeizbicki/HLearn/tree/master/examples) folder is a good place to start.
The haddock documentation embedded within the code is decent;
but unfortunately, hackage is unable to compile the haddocks because it uses an older version of GHC.
HLearn has several academic papExcerpt of 6,054 characters
Read on GitHub683
16
4
2
2
2
2
2
2
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:0155c5fe45f7b69a, llm:Repository description: 'Homomorphic machine learning' (project name HLearn). Language: Haskell. No topics provided.
matched fp:0155c5fe45f7b69a, llm:Repository description: 'Homomorphic machine learning' (project name HLearn). Language: Haskell. No topics provided.
matched fp:0155c5fe45f7b69a, llm:Repository description: 'Homomorphic machine learning' (project name HLearn). Language: Haskell. No topics provided.