hython
grenade
hython | grenade | |
---|---|---|
2 | 5 | |
572 | 1,440 | |
- | - | |
10.0 | 5.6 | |
almost 7 years ago | 5 months ago | |
Haskell | Haskell | |
GNU General Public License v3.0 only | BSD 2-clause "Simplified" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
hython
-
Leaving Haskell Behind
This really resonates with me.
I’ve been using it in a decidedly industrial application for about 1.5 years now. I had some fairly significant experience with it prior (https://github.com/mattgreen/hython).
For the first time in a long time (20 years experience) I’ve needed to learn a significant amount of things. It’s a combo of the domain and the language. It’s rather exhilarating, and also exhausting. Could also be a lot to bite off on with a busy home life too.
Regardless, the language is brilliant. My manager exhorts me to generally write in a top-down manner a lot because Haskell’s flexibility really conveys dev intent well, so think hard about how it should read, and start from there. This is a huge mindset shift from most langs, where you can feel your brain shut off to save cycles as you type “function” over and over. It really feels like it is meant to be write-friendly. Point-free functions are wonderfully terse to write. I joke that TH is my favorite language: a type-checked macro language that lets me write almost anything I want.
And there’s the rub: even with controlled effects via monads, the syntax is still hard for me to scan and read. I don’t know if this comes eventually or what, but this feels like a function of how dense a line could be. I miss early return dearly, and understand why it isn’t a thing (except if you have a MonadZero at hand) but I know it’s a syntactic transformation that won’t make it in. I really miss the amazing Rust LSP. Haskell’s recently lost the ability to flesh out pattern matches due to Haskell internals shifting with 9.x. I still hate and screw up stacking monads. Compile times can be brutal, esp if you hit the lens library.
I really think the community is one of the strongest group of programmers I’ve already seen. I don’t want to belabor this and dwell on the big brain memes, it’s more that they think hard on this stuff and actually push forward, vs just telling each other that web frameworks are rocket science and it’s impossible to do better than what it exists.
Ultimately, Haskell fits like a glove for our domain of program analysis. Beyond that, I’d still be a bit wary. I’m still thirsty for a PL that is essentially OCaml but with a better syntax. But that’s just me.
- Dhall: A Gateway Drug to Haskell
grenade
-
Haskell deep learning tutorials [Blog]
Grenade is fun, but it does not support CUDA, so it will limit you. I would say that this was a great experiment that has influenced the Hasktorch library in different ways (let me know if I am wrong).
- Dhall: A Gateway Drug to Haskell
-
Haskell for Artificial Intelligence?
FWIW there's an interesting library called grenade which offers nice types for constructing neural nets. I haven't used it, and this is not my areas of expertise, but it looks cool!
-
Rank 3 Stencils for "Efficient Parallel Stencil Convolution in Haskell" (Repa)
When I wrote grenade I used the im2col trick to turn convolutions into a single matrix multiplication, which could then be done in hmatrix.
- What are some ways I could tickle my (beginner) haskell-brain with something *useful*?
What are some alternatives?
hasktorch - Tensors and neural networks in Haskell
liblinear-enumerator - Haskell bindings to liblinear
simple-neural-networks - Simple parallel neural networks implementation in pure Haskell
CV - Haskell wrappers and utilities for OpenCV machine vision library
nn - A tiny neural network 🧠
hnn - haskell neural network library
csp - Constraint satisfaction problem (CSP) solvers for Haskell
GA - Haskell module for working with genetic algorithms
HSGEP - Haskell Gene Expression Programming Library
tensorflow - Haskell bindings for TensorFlow
moo - Genetic algorithm library for Haskell. Binary and continuous (real-coded) GAs. Binary GAs: binary and Gray encoding; point mutation; one-point, two-point, and uniform crossover. Continuous GAs: Gaussian mutation; BLX-α, UNDX, and SBX crossover. Selection operators: roulette, tournament, and stochastic universal sampling (SUS); with optional niching, ranking, and scaling. Replacement strategies: generational with elitism and steady state. Constrained optimization: random constrained initialization, death penalty, constrained selection without a penalty function. Multi-objective optimization: NSGA-II and constrained NSGA-II.
opencv - Haskell binding to OpenCV-3.x