Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality. Learn more →
Top 23 Haskell HacktoberFest Projects
-
ihp
🔥 The fastest way to build type safe web apps. IHP is a new batteries-included web framework optimized for longterm productivity and programmer happiness
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
haskell-language-server
Official haskell ide support via language server (LSP). Successor of ghcide & haskell-ide-engine.
-
servant
Main repository for the servant libraries — DSL for describing, serving, querying, mocking, documenting web applications and more!
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
monocle
Monocle helps teams and individual to better organize daily duties and to detect anomalies in the way changes are produced and reviewed. (by change-metrics)
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Short version: no type classes (yet)
Longer version:
Building upon what Quekid5 mentioned, Unison abilities are an implementation of what is referred to as algebraic effects in programming language literature. They represent capabilities like IO, state, exceptions, etc. They aren't really a replacement for type classes, though in some cases you can shoehorn abilities in where you might otherwise use a type class.
For someone coming from a Haskell background, I think that abilities are closer to a replacement for monad transformers. But in my opinion they are much more ergonomic.
Discusson of type classes comes up a lot. Here is a long-standing GitHub issue: https://github.com/unisonweb/unison/issues/502
For what it's worth, I've written Unison quite a lot over the past few years and while I've missed type classes at times, I think that reading unfamiliar code is easier without them. There's no implicit magic; you can see exactly what is being passed into a function. So far I've been happy with a bit more verbosity for the sake of readability.
Project mention: Ask HN: Why are all of the best back end web frameworks dynamically typed? | news.ycombinator.com | 2023-10-05I found IHP straightforward:
https://ihp.digitallyinduced.com/
despite not remembering much haskell!
This assumes you can get past nix for the install.
I find IHP well-designed. I just wish the licensing scheme were more transparent.
The official guide and the archwiki do say that it's okay to just install it via pacman, but I've also found some issues on the official repo that strongly suggest against installing via pacman and to use stack instead, as sometimes pacman breaks dependencies.
The advent of language server protocol made possible the creation of HLS (Haskell Language Server), and there are plugins for many editors, such as vscode-haskell, that allow you to have auto-complete, auto-import, and automatic function signatures—also available to your editor of choice. The whole feedback loop of editing, compiling, and running is greatly improved.
Project mention: What downsides exist to Futhark? Seems almost too good to be true? | /r/CUDA | 2023-06-29Why Futhark? (futhark-lang.org)
> do you really have to understand language extensions?
You do when your code doesn't compile and you're trying to figure out what the error message means, or when the library you want to use makes heavy use of it for even basic functionality.
> These days one just enables GHC2021
My experience was pre-GHC2021. I basically had to enable at a minimum 5-6 language extensions in every single file.
> Mostly they're just about removing unnecessary restrictions from the older standard.
Yeah, those ones are usually fine. I have zero objection to things like FlexibleInstances or DeriveFoldable.
> Could you give an example?
I believe I was trying to implement Central Authentication Service using Servant. However, that required returning a custom HTTP status code. There has been an open Github issue for this since 2017, but it seems to require basically rewriting the entire framework: https://github.com/haskell-servant/servant/issues/732
Looking back at it now Servant does have "ServerError", but that basically requires giving up all the advantages Servant claims to have and I believe it was not a viable option at the time. Looking at the timeline I was probably also on Servant 0.15, and there seems to have been a rewrite since then.
I vaguely recall running into a similar issue trying to interact with a database, but I can't remember the details of that.
Excellent recommendation!
For reference: https://github.com/utdemir/nix-tree
Or, to test without installing:
$ nix-shell -p nix-tree
$ nix-tree
etc.
Anyway, excellent suggestion!
Can you please make a write up how momentu works!? 🥺 Would be an awesome addition to the Haskell documentation ecosystem. (… and my gloss UI of Perspec sucks and I'd be happy for some references on how to rebuild it from scratch 😄)
Haskell HacktoberFest related posts
- Unison Programming Language
- An alternative front end for Haskell?
- Unison Language
- A minimal Nix-shell (2021)
- Is there any alternative other than JavaScript to deal with web frontend?
- Is it just me or it nix becoming more common
- Is there anyway to extract the first page of an epub as image so I can use it in lf previewer
-
A note from our sponsor - InfluxDB
www.influxdata.com | 19 Apr 2024
Index
What are some of the best open-source HacktoberFest projects in Haskell? This list will help you:
Project | Stars | |
---|---|---|
1 | unison | 5,540 |
2 | ihp | 4,218 |
3 | xmonad | 3,236 |
4 | haskell-language-server | 2,565 |
5 | futhark | 2,283 |
6 | servant | 1,768 |
7 | course-plan | 1,193 |
8 | learn4haskell | 970 |
9 | stylish-haskell | 967 |
10 | egison | 900 |
11 | accelerate | 886 |
12 | Rome | 812 |
13 | summoner | 691 |
14 | nix-tree | 605 |
15 | Perspec | 579 |
16 | xmonad-contrib | 571 |
17 | stan | 558 |
18 | hindent | 554 |
19 | termonad | 391 |
20 | Haskell | 370 |
21 | monocle | 352 |
22 | compendium-client | 326 |
23 | purenix | 281 |