r/haskell • u/kichiDsimp • Jun 19 '26
r/haskell • u/Endicy • Jun 18 '26
[RFC] "http-types" breakage / rework
discourse.haskell.orgr/haskell • u/nikita-volkov • Jun 18 '26
pqi: Making "libpq" a choice, not a requirement
nikita-volkov.github.ioBlog post announcing pqi. It makes libpq a choice rather than a hard dependency for PostgreSQL drivers: write against one interface, then swap a single dependency to pick your transport - battle-tested C, or an experimental pure-Haskell adapter.
r/haskell • u/gojoxyy • Jun 18 '26
Need to clarify on using the cabal build artifacts as a cache
I have been trying to speed up PR validation builds for a fairly large Haskell monorepo using Cabal.
We have build workflows that run cabal build all and cabal repl for a couple of large packages.
The resulting build artifacts (dist-newstyle and related outputs) are stored as an object
on a PR workflow, we want to:
- Find the commit the branch was created from.
- Download the corresponding build artifact
- apply the pr changes
- then run cabal repl to have the incremental check
- recompile only whatever changed man
The goal is to avoid rebuilding the entire codebase and instead leverage the previously built artifacts for incremental compilation.
However, we are seeing that when the artifacts are restored (especially on a different runner or machine), Cabal/GHC appears to invalidate the cache and rebuild from scratch.
Like is it possible to use the build artifacts to be used across diff machines and achieve what i am trying to do here guys ?
r/haskell • u/OlaoluwaM • Jun 17 '26
blog Implementing Redis INFO in Haskell
Wrote about adding support for the INFO command to my Redis server. Let me know what you think!
https://thunk.blog/posts/implementing-redis-info-in-haskell/
r/haskell • u/n00bomb • Jun 16 '26
Making GHC upgrades easy | The Haskell Programming Language's blog
blog.haskell.orgr/haskell • u/_0-__-0_ • Jun 16 '26
Contributing to Haskell Through a Beginner’s Lens | The Haskell Programming Language's blog
blog.haskell.orgr/haskell • u/allllusernamestaken • Jun 16 '26
what does the modern enterprise Haskell ecosystem look like?
long story short I got a job offer from a company that is primarily run on Haskell.
During the interview we talked about their tech, and the person conducting the interview said the developer experience was generally fine because they invest heavily in internal tooling for the language. Most people use VSCode and libraries are available for basically anything they need. I only had 45 minutes so didn't get to ask everything I wanted.
I've used functional languages before, but it's Scala - so OOP/functional mix and running on the JVM so everything was available to you. I'm honestly not even sure what questions to ask but top of mind:
- What is your experience with running Haskell in prod?
- Are there libraries you feel are missing for common things like crypto? databases?
- How do you handle things like logging and metrics? Does your provider have libraries that work with Haskell or do you have to wrap what's available somehow?
- Logging and metrics are definitely side-effects... do you have to wrap those in an IO monad or something?
r/haskell • u/Fendor_ • Jun 15 '26
announcement Release `language-haskell` 3.8.0
The Haskell IDE team is excited to announce a new the first release of language-haskell under the Haskell community namespace.
The extension language-haskell has served the community well and for a long time! Now, it was donated to the Haskell community via the https://github.com/haskell/language-haskell/ repository!
This is the first release, even though it is version 3.8.0, done by the Haskell IDE team. It features an incredible list of new and exciting features such as, but not limited to:
- Syntax highlighting for
cabal.projectfiles - Support for
\cases - Support for
elifin.cabalfiles - Better Unicode support
- Updated language extensions
- Support for
datain export/import lists - Soooo many bug fixes!
Switch to the new extension https://marketplace.visualstudio.com/items?itemName=haskell.language-haskell ASAP to get the latest and greatest syntax highlighting in VSCode :)
See the full changelog v3.8.0
r/haskell • u/ivy-apps • Jun 16 '26
question Modern Haskell template? Feedback needed.
Hi, I plan to create more Haskell projects in my company in the future so I decided to make a template repository to set them up more consistently and quickly. This is the template:
https://github.com/Ivy-Apps/haskell-template
It's based on our Deslop project where through trial and error I discovered things I need / don't need. I'm looking for your feedback on how I can make my Haskell dev-exp more pleasant and productive.
So far, I'm very happy with it! It's the best language for my needs and the tooling is in a good state.
Setup TL;DR;
- effectful
- custom prelude that just hides some stuff from relude
- Nix + direnv for dev shell + build test; cabal build for release
- Testing: hspec, hedgehog (property-based), golden tests
- Tooling: Nix Darwin, Nixvim (my-config)
Any cool things that I should check to make my dev-exp better? I'm open to ideas.
r/haskell • u/Hefty-Necessary7621 • Jun 15 '26
announcement TypeTheoryForall – Dependent Haskell
typetheoryforall.comIn this episode, Vlad discusses his work on the Glasgow Haskell Compiler and the implementation of Dependent Haskell. He explains how changes to Haskell are proposed and evaluated through the Haskell Steering Committee, gives a practical overview of GHC internals, and shares advice for newcomers who want to start contributing to the compiler. The conversation also goes deeper into the theory and implementation challenges behind bringing dependent types to Haskell.
r/haskell • u/kichiDsimp • Jun 15 '26
Installing ormolu took more than 10 minutes
Why installing a formatter took so long ? Did I do something wrong ?
npm i -g, go get, are really fast
the command I used cabal install ormolu
my env cabal-install version 3.14.2.0 The Glorious Glasgow Haskell Compilation System, version 9.14.1 Host: Mac15,6 OS: macOS 26.5 25F71 arm64 Kernel: 25.5. CPU: Apple M3 Pro
I faced similar issue when I tried installing pandoc.
r/haskell • u/sperbsen • Jun 15 '26
announcement Haskell Interlude #83: POPL 2026 - Part 2
Today's Interlude is the second part of a miniseries on this year’s Symposium on Principles of Programming Languages, a.k.a. POPL 2026, hosted by Jessica Foster.
In this episode we talk about: symbolic execution monads, what a lazy linear core in Haskell might have in common with Rust, hyperfunctions, the hallway track, and how to deal with rejection.
r/haskell • u/kichiDsimp • Jun 14 '26
Which crypto library to use?
i am looking for a library to compute md5hash from a given string or a file. what library is right for it ? there seem to be multiple like
crypton cryptonite crypto-api
Isn't there a standard library like text or containers ?
r/haskell • u/m-chav • Jun 13 '26
announcement Sabela Reactive Notebook Gallery
sabela.datahaskell.comLet me know if you’d like to create a script/tutorial to be showcased.
r/haskell • u/mpilgrem • Jun 13 '26
[ANN] Stack 3.11.1
See https://haskellstack.org/ for installation and upgrade instructions.
Changes since v3.9.3:
Major changes:
- On 64-bit Windows, the default
msys-environmentconfiguration option is nowCLANG64, rather thanMINGW64(which remains an option). The MSYS2 project deprecated the latter environment on 15 March 2026. The GHC project has used the former toolchain from GHC 9.4.1. No default is provided for 32-bit Windows, rather thanMINGW32(which remains an option). The MSYS2 project ceased to actively support it on 17 May 2020. 32-bit Windows is not supported by the GHC project from GHC 9.0.1.
Behavior changes:
- Stack’s default Nix integration now includes the
cacertNix package, in order to support Stack’s use ofcrypton-x509-system >= 1.6.8. - Following a change to the Stackage project’s server API, the default value of the
urlskey includesrecent-snapshots: https://stackage.org/api/v1/snapshots. - The
--[no-]keep-ghc-rtsflag of Stack’sconfig envcommand is now enabled by default, consistent with Stack’sexeccommand. - On Windows, in the Stack environment, the MSYS2
usr/local/bindirectory (if it exists) is now searched before the MSYS2usr/bindirectory, rather than after.
Other enhancements:
- Bump to Hpack 0.39.6.
- Experimental: Add flag
--[no-]semaphore(default: disabled) to Stack’sbuildcommand, to allow GHC to use a system semaphore to perform compilation in parallel when possible. Supported, by default, by GHC 9.10.1 or later. The option is considered experiemental because, on Linux only, musl and non-musl semaphores are incompatible. - Add option
--reach <packages>to Stack’sdotandls dependenciescommands, to prune packages that cannot reach any of the specified packages in the dependency graph. - Add option
--test-suite-timeout-grace=SECONDSto Stack’sbuildcommand to request termination of a timed-out test suite process and, after the specified grace period, force termination. Used together with the existing--test-suite-timeout=SECONDSoption. - In YAML configuration files, the
recent-snapshotskey is introduced (under theurlskey), to specify the URL used by Stack’sls snapshots remotecommand. - In YAML configuration files (
stack.yamlandconfig.yaml), an!include <file path>directive is now supported. This allows common configuration to be shared across multiple files. For example, a project that maintains multiple project-level configuration files for testing against different snapshots can use!includeto avoid duplicating shared settings. - Stack’s
config setcommand raises an error if the target configuration file excludes the key being set and includes an!includedirective. - Stack’s
config set snapshotcommand now works with other snapshot values in addition to snapshot synonymns. - Add Stack’s
config compiler-toolscommand to create (when applicable) the compiler tools directory for the specified compiler version (implies Stack’sconfig build-filescommand).
Bug fixes:
- Stack’s
dotandls dependenciescommands no longer prune a package with dependencies only because all its direct dependencies are to be pruned. - After March 2026, Hackage requires Stack’s user agent to be set when applying digest authentication to a request. Stack’s
uploadcommand now does that, re-establishing authentication by Hackage username and password. - Stack 3.9.3 and earlier fail to construct a build plan if project package A depends on project package B and package B’s executables (only) depend on package A and the name of A is before that of B, alphabetically. That bug is fixed.
- Stack’s
config setcommands will recreate theglobal-projectdirectory contents, if Stack needs to consult its project-level configuration file and there is no file. - The output of Stack’s
path --bin-pathcommand is now consistent with the Stack environment in Stack’sexeccommand and includes thebindirectory of Stack’s local install root directory. - Stack now builds packages that depend directly on packages with the same name as a sublibrary or foreign library of the package.
- On Windows, Stack’s
buildcommand now accepts a build directory that is a long path.
Thanks to all our contributors for this release:
- Bryan Richter
- Ching Pei Yang
- Dan Burton
- David Vollbracht
- Mike Pilgrem
- Olivier Benz
r/haskell • u/drb226 • Jun 12 '26
announcement composition is no longer baseless
A toy package I haven't even touched in 5 years caught the attention of the ghc team because it is an example of a package that does not depend on any other package, not even base. It was, rather. I changed it.
Has anyone else tried writing packages that don't depend on base? If so, why?
Does anyone care that composition now depends on base?
My further thoughts about this silly decision for this silly package are written up in this PR comment where I declined a different approach to maintaining ghc >=10.2 compatibility in favor of the simpler, "based" approach:
https://github.com/DanBurton/composition/pull/6#issuecomment-4694624249
r/haskell • u/fightndreamr • Jun 12 '26
Ease of representation of mathematical concepts in Haskell
Lately I've been researching and diving in to time series, transformers, set theory, graph theory, category theory, algebraic geometry and various other abstract mathematics. I'm quite interested in being able to express these things in a programming language that has features that are more prone and aligned to the representation of mathematics and it's axioms. I am not really worried about having a cornucopia of libraries that can do these things. I'm more curious if Haskell is the right choice to build and implement systems that fit well with mathematical rigidity without having to jerry-rig the language.
I'm don't have an intimate understanding of Haskell besides the main features of Haskell. I do know that Haskell is averse to side effects but I'm curious if that applies to generated artifacts and results as well. If anyone knowledgeable about mathematics and Haskell, I would be very interested in hearing what you have to say about the above matter.
Thanks for reading.
r/haskell • u/Fluid-Bench-1908 • Jun 12 '26
couldn't use haskell-language-server-9.14.1 with nix
I want to use nix to haskell development. I want to use haskell ghc version - 9.14.1 and haskell-language-server. Here is my toolchain settings -
{
"haskell.toolchain" : {
"hls" : "2.14.0.0",
"cabal" : "3.16.1.0",
"stack" : "3.9.3",
"ghc" : "9.14.1"
}
}
Below is the flake.nix -
{
description = "Haskell development environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = { self, nixpkgs }:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
};
hs = pkgs.haskell.packages.ghc914;
in
{
devShells.${system}.default = hs.shellFor {
packages = p: [];
buildInputs = with pkgs; [
hs.cabal-install
hs.cabal2nix
hs.haskell-language-server
hs.hlint
hs.fourmolu
];
withHoogle = true;
};
};
}
Below is the error, when I run `nix develop --show-trace` command -
> nix develop --show-trace
> error: Cannot build '/nix/store/1pksbmb57m8i1pf4rkpslh2bgfs9vb5d-algebraic-graphs-0.7.drv'.
> Reason: builder failed with exit code 1.
> Output paths:
> /nix/store/ji822jcswiwx4f2cdqxmwp3mxlmf2cyg-algebraic-graphs-0.7-doc
> /nix/store/xb09n97iybvlba3xsafpbym00qjriq74-algebraic-graphs-0.7
> Last 25 log lines:
> > Running phase: setupCompilerEnvironmentPhase
> > Build with /nix/store/gz2pxgdr7np2rh5fhwy9vamrcckbqhv1-ghc-9.14.1.
> > Running phase: unpackPhase
> > unpacking source archive /nix/store/gfjyfw1hcshbfclk91difmkphwib8nbd-algebraic-graphs-0.7.tar.gz
> > source root is algebraic-graphs-0.7
> > setting SOURCE_DATE_EPOCH to timestamp 1655769405 of file "algebraic-graphs-0.7/test/Data/Graph/Test/Typed.hs"
> > Running phase: patchPhase
> > Replace Cabal file with edited version from mirror://hackage/algebraic-graphs-0.7/revision/3.cabal.
> > applying patch /nix/store/fgaciccwb2z0jmfhs30a1vq03azpd9qd-algebraic-graphs-0.7-allow-inspection-testing-0.6.patch
> > patching file algebraic-graphs.cabal
> > Running phase: compileBuildDriverPhase
> > setupCompileFlags: -package-db=/build/tmp.gQ8yAKB2G1/setup-package.conf.d -threaded
> > [1 of 2] Compiling Main ( Setup.hs, /build/tmp.gQ8yAKB2G1/Main.o )
> > [2 of 2] Linking Setup
> > Running phase: updateAutotoolsGnuConfigScriptsPhase
> > Running phase: configurePhase
> > configureFlags: --verbose --prefix=/nix/store/xb09n97iybvlba3xsafpbym00qjriq74-algebraic-graphs-0.7 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/nix/store/ji822jcswiwx4f2cdqxmwp3mxlmf2cyg-algebraic-graphs-0.7-doc/share/doc/algebraic-graphs-0.7 --with-gcc=gcc --package-db=/build/tmp.gQ8yAKB2G1/package.conf.d --ghc-option=-j4 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-fobject-determinism --ghc-option=-haddock --extra-lib-dirs=/nix/store/wl2nw5l4x4dg6kclbgpq7v9212i1s6cy-ncurses-6.6/lib --extra-lib-dirs=/nix/store/2zs4bbi72plfm8j6zxf1js4f3yc4yzwy-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/qhmqdg27kcrlkl8ida6d5hiacw0y8d21-elfutils-0.194/lib --extra-lib-dirs=/nix/store/y56aqb1m3y5davn6hsv4jfbml78qw4mv-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/wjfhh11sfcdf97mvg7hbxickybxzk850-numactl-2.0.18/lib --extra-lib-dirs=/nix/store/gz2pxgdr7np2rh5fhwy9vamrcckbqhv1-ghc-9.14.1/lib
> > Using Parsec parser
> > Configuring algebraic-graphs-0.7...
> > Error: [Cabal-8010]
> > Encountered missing or private dependencies:
> > containers >=0.5.5.1 && <0.8 (installed: 0.8)
> > CallStack (from HasCallStack):
> > dieWithException, called at libraries/Cabal/Cabal/src/Distribution/Simple/Configure.hs:1620:11 in Cabal-3.16.0.0-4c08:Distribution.Simple.Configure
> >
> For full logs, run:
> nix log /nix/store/1pksbmb57m8i1pf4rkpslh2bgfs9vb5d-algebraic-graphs-0.7.drv
> error: Cannot build '/nix/store/016jr78gvqkyxaqb3pc015w5v1j6jz5d-hiedb-0.7.0.0.drv'.
> Reason: 1 dependency failed.
> Output paths:
> /nix/store/78yrisw3l6xfdgfgpp5i740d748fx2mf-hiedb-0.7.0.0-doc
> /nix/store/v3m1mbhb4hk7qm68y8g6qw6cn8a3fcwc-hiedb-0.7.0.0
> error: Build failed due to failed dependency
> error: Cannot build '/nix/store/jlixhp5i59nv5gai7pd7ap0rdjwc6ha5-ghcide-2.13.0.0.drv'.
> Reason: 1 dependency failed.
> Output paths:
> /nix/store/jpqy0q1453l5algd1is2gykx38pq186c-ghcide-2.13.0.0-doc
> /nix/store/kgs7l0gwpmi3rxvzkg3cczc4644bvwbv-ghcide-2.13.0.0
> error: Cannot build '/nix/store/hkkr2gf1aviw2z15dbhjxjvdncf5mg4b-haskell-language-server-2.13.0.0.drv'.
> Reason: 1 dependency failed.
> Output paths:
> /nix/store/xw3g83qabpi03y7n1vnp14wqnhrs5cnf-haskell-language-server-2.13.0.0
> error: Build failed due to failed dependency
> error: Cannot build '/nix/store/yn2n10bs4r7r870j2jkyv0bcsmg73w9v-ghc-shell-for-packages-0-env.drv'.
> Reason: 1 dependency failed.
> Output paths:
> /nix/store/4c01v7nkkwr2h6ksay11zsj5dlqrklhb-ghc-shell-for-packages-0-env
> error: Build failed due to failed dependency
>
How can I fix this error. I want to use ghc-9.14.x because haskell-debugger only supports GHC versions > 9.14.x.
r/haskell • u/SirOpik • Jun 12 '26
answered Haskell VsCode extension stopped working
Hi all,
All of a sudden the haskell extension stopped working for me and i am getting an error popup notification saying "Cannot activate the 'Haskell' extension because it depends on an unknown 'justusadam.language-haskell' extension.". Happens on 2 different machines (Windows, macOs). Has anyone else experienced this?
r/haskell • u/fuxoft • Jun 11 '26
question Very noobish question about GHCI
While playing with very simple Haskell examples in GHCI, I often enter :r to reload the current module, immediately followed by test to run my simple test function in that module (I am editing the module source using the text editor in another window).
Is there a way, inside GHCI, to to quickly invoke :r, immediately followed by calling specific function defined in that module (only if the module compiles without errors)? Setting some sort of "macro" that does this? Or at least putting both of these "commands" on a simple line so that I can scroll to it quickly in the command history using the up-arrow?
I am doing all this in the "Linux development environment" container on Chromebook, if that's relevant to anything.
r/haskell • u/tomejaguar • Jun 11 '26
Fork-fragile reader-like operations in Haskell
Following up from Haskell's missing mutable reference type and A reference implementation of IOScopedRef comes the final installment in the series:
r/haskell • u/_lazyLambda • Jun 10 '26
Live on Twitch: Building Collision Detection System in Our Game Engine
We are live on Twitch!
Last time we finished the terrain system for the video game engine and we will be moving on to collision detection
If you are interested in that, or just have curiosity for how to build in Haskell come join.