# Learn

**URL:** https://discourse.haskell.org/c/learn/5.md?no_subcategories=false

[Latest](https://discourse.haskell.org/latest.md) · [Categories](https://discourse.haskell.org/categories.md) · [Tags](https://discourse.haskell.org/tags.md)

---

## [About the Learn category](https://discourse.haskell.org/t/about-the-learn-category/13)

<div class="topic-metadata">

**Author:** [@jaspervdj](https://discourse.haskell.org/u/jaspervdj)\
**Replies:** 1\
**Last updated:** [December 8, 2021, 6:17am UTC](https://discourse.haskell.org/t/about-the-learn-category/13 "2021-12-08T06:17:02Z")

</div>

You can ask Haskell-related questions here. Please try to include enough context so people can help you out appropriately: What are you trying to achieve? What versions of tools and libraries are you using? What is th…

---

## [Strict extension unexpectedly forcing lazy record field assignment](https://discourse.haskell.org/t/strict-extension-unexpectedly-forcing-lazy-record-field-assignment/14748)

<div class="topic-metadata">

**Author:** [@moll](https://discourse.haskell.org/u/moll)\
**Replies:** 3\
**Last updated:** [September 26, 2026, 7:25pm UTC](https://discourse.haskell.org/t/strict-extension-unexpectedly-forcing-lazy-record-field-assignment/14748 "2026-09-26T19:25:18Z")

</div>

Hey, I’m not sure if it’s me, a bug or just an unexpected outcome when record updating desugaring was changed, but I’m seeing a lazy record field being forced when updating it under the Strict extension. It’s not forced…

---

## [Can't compile unix-2.8.8.0 on AARCH64](https://discourse.haskell.org/t/cant-compile-unix-2-8-8-0-on-aarch64/14740)

<div class="topic-metadata">

**Author:** [@lmcyber](https://discourse.haskell.org/u/lmcyber)\
**Replies:** 5\
**Last updated:** [September 26, 2026, 7:37am UTC](https://discourse.haskell.org/t/cant-compile-unix-2-8-8-0-on-aarch64/14740 "2026-09-26T07:37:04Z")

</div>

I tried to compile a stack project on alpine 3.24 using a raspberry pi 4. Nonetheless, I could compile the same project successfully on an intel 64 bit computer. Here are my specs: LTS 24.60 GHC 9.10.3 During the comp…

---

## [Https://github.com/haskell-actions/run-ormolu archived?](https://discourse.haskell.org/t/https-github-com-haskell-actions-run-ormolu-archived/14724)

<div class="topic-metadata">

**Author:** [@arybczak](https://discourse.haskell.org/u/arybczak)\
**Replies:** 5\
**Last updated:** [September 24, 2026, 11:00am UTC](https://discourse.haskell.org/t/https-github-com-haskell-actions-run-ormolu-archived/14724 "2026-09-24T11:00:01Z")

</div>

I can’t see anywhere why. Anyone knows?

---

## [Why can (Cons i (q i)) -\> (Cons o (q o)) have an arrow instance, but not \[i\] -\> \[o\]](https://discourse.haskell.org/t/why-can-cons-i-q-i-cons-o-q-o-have-an-arrow-instance-but-not-i-o/14721)

<div class="topic-metadata">

**Author:** [@fp.monkey](https://discourse.haskell.org/u/fp.monkey)\
**Replies:** 1\
**Last updated:** [September 22, 2026, 1:37pm UTC](https://discourse.haskell.org/t/why-can-cons-i-q-i-cons-o-q-o-have-an-arrow-instance-but-not-i-o/14721 "2026-09-22T13:37:20Z")

</div>

I’m reading Arrows and Computation by Ross Paterson (2003), and in it he has a couple exercises where you need to produce Arrow instances for peculiar types (in fact, in 2026 you also need to make a Category instance to …

---

## [Running Haskell on Guix](https://discourse.haskell.org/t/running-haskell-on-guix/14669)

<div class="topic-metadata">

**Author:** [@ayo](https://discourse.haskell.org/u/ayo)\
**Replies:** 2\
**Last updated:** [September 15, 2026, 9:35pm UTC](https://discourse.haskell.org/t/running-haskell-on-guix/14669 "2026-09-15T21:35:12Z")

</div>

Goal: I want to run haskell programs in Guix, I’m using Guix OS/System. There are examples of how to package a haskell development environment using the Guix channels, packages and services, but some are dated and I’m w…

---

## [Generating files/errors from the source Haskell](https://discourse.haskell.org/t/generating-files-errors-from-the-source-haskell/14689)

<div class="topic-metadata">

**Author:** [@tobz619](https://discourse.haskell.org/u/tobz619)\
**Replies:** 1\
**Last updated:** [September 14, 2026, 8:20am UTC](https://discourse.haskell.org/t/generating-files-errors-from-the-source-haskell/14689 "2026-09-14T08:20:04Z")

</div>

Hi! I was wondering what options there are for performing the following actions from my Haskell source. Generating .hlsl / .glsl shader code (and other formats) from specific functions with specific type signatures: p…

---

## [Nullary operations on GADT with constraints](https://discourse.haskell.org/t/nullary-operations-on-gadt-with-constraints/14676)

<div class="topic-metadata">

**Author:** [@olf](https://discourse.haskell.org/u/olf)\
**Replies:** 5\
**Last updated:** [September 11, 2026, 10:31am UTC](https://discourse.haskell.org/t/nullary-operations-on-gadt-with-constraints/14676 "2026-09-11T10:31:12Z")

</div>

I am trying to define something similar to Data.Monoid.Ap but as GADT with constraints on the constructors: import Data.Monoid (Ap(..)) -- instance (Monoid a, Applicative f) =\> Monoid (Ap f a) data Lifted f a where …

---

## [Best way to create a typeclass dependency graph?](https://discourse.haskell.org/t/best-way-to-create-a-typeclass-dependency-graph/14666)

<div class="topic-metadata">

**Author:** [@B-rando](https://discourse.haskell.org/u/B-rando)\
**Replies:** 3\
**Last updated:** [September 9, 2026, 12:31am UTC](https://discourse.haskell.org/t/best-way-to-create-a-typeclass-dependency-graph/14666 "2026-09-09T00:31:56Z")

</div>

I was doing some refactors for a project I’m working on, and I found myself in a situation where it would be really handy if I could get a graph of the project’s typeclass dependencies. Including cross-module dependencie…

---

## [What’s needed to bootstrap GHC with hugs?](https://discourse.haskell.org/t/what-s-needed-to-bootstrap-ghc-with-hugs/6205)

<div class="topic-metadata">

**Author:** [@nomeata](https://discourse.haskell.org/u/nomeata)\
**Replies:** 81\
**Last updated:** [September 8, 2026, 5:04am UTC](https://discourse.haskell.org/t/what-s-needed-to-bootstrap-ghc-with-hugs/6205 "2026-09-08T05:04:36Z")

</div>

I was recently reminded that we still don’t have a bootstrappable GHC build (in the sense of https://bootstrappable.org/), and that it would would be nice to have. Somehow this caused me to try to combine all of GHC’s s…

---

## [Operating systems written in Haskell](https://discourse.haskell.org/t/operating-systems-written-in-haskell/14607)

<div class="topic-metadata">

**Author:** [@swell\_miguell](https://discourse.haskell.org/u/swell_miguell)\
**Replies:** 11\
**Last updated:** [September 5, 2026, 10:37pm UTC](https://discourse.haskell.org/t/operating-systems-written-in-haskell/14607 "2026-09-05T22:37:58Z")

</div>

Greetings. I have found many sites discussing various projects to build a full operating system in haskell. All of them seem to be a good decade old. This indicates that there was definite interest in this at one time…

---

## [Hundreds of newtypes versus worse API](https://discourse.haskell.org/t/hundreds-of-newtypes-versus-worse-api/14644)

<div class="topic-metadata">

**Author:** [@AliceRixte](https://discourse.haskell.org/u/AliceRixte)\
**Replies:** 28\
**Last updated:** [September 5, 2026, 8:30pm UTC](https://discourse.haskell.org/t/hundreds-of-newtypes-versus-worse-api/14644 "2026-09-05T20:30:40Z")

</div>

Hi there ! TL;DR Which is best and why ? Practice 1 : Lots of newtypes, but nice API newtype Second a = Second a deriving ( Show, Eq, Ord, Num, Fractional, Floating, Real, RealFrac, RealFloat) newtype Minute a = M…

---

## [Is anyone using MicroHs?](https://discourse.haskell.org/t/is-anyone-using-microhs/11437)

<div class="topic-metadata">

**Author:** [@augustss](https://discourse.haskell.org/u/augustss)\
**Replies:** 46\
**Last updated:** [September 2, 2026, 12:46am UTC](https://discourse.haskell.org/t/is-anyone-using-microhs/11437 "2026-09-02T00:46:27Z")

</div>

Some of you might have heard the MicroHs; a small Haskell compiler. I’m not getting much feedback on MicroHs, so I’m simply curious to hear if any of you have been using it, and if so, for what? – Lennart

---

## [How do you best mitigate HSEC-2026-0007?](https://discourse.haskell.org/t/how-do-you-best-mitigate-hsec-2026-0007/14342)

<div class="topic-metadata">

**Author:** [@janus](https://discourse.haskell.org/u/janus)\
**Replies:** 4\
**Last updated:** [August 30, 2026, 8:54pm UTC](https://discourse.haskell.org/t/how-do-you-best-mitigate-hsec-2026-0007/14342 "2026-08-30T20:54:26Z")

</div>

I rely on http-api-data, and it is not compatible with text-iso8601-0.2. phadej has said that an upcoming release will be compatible: Relax upper bound for text-iso8601 to 0.3 by dancewithheart · Pull Request #161 · fizr…

---

## [..another "broken link".. this time, probably not on the wayback machine](https://discourse.haskell.org/t/another-broken-link-this-time-probably-not-on-the-wayback-machine/14614)

<div class="topic-metadata">

**Author:** [@swell\_miguell](https://discourse.haskell.org/u/swell_miguell)\
**Replies:** 3\
**Last updated:** [August 26, 2026, 9:04pm UTC](https://discourse.haskell.org/t/another-broken-link-this-time-probably-not-on-the-wayback-machine/14614 "2026-08-26T21:04:47Z")

</div>

---

## [Advent of Code 2025](https://discourse.haskell.org/t/advent-of-code-2025/13350)

<div class="topic-metadata">

**Author:** [@benjamin-thomas](https://discourse.haskell.org/u/benjamin-thomas)\
**Replies:** 15\
**Last updated:** [August 24, 2026, 6:50pm UTC](https://discourse.haskell.org/t/advent-of-code-2025/13350 "2026-08-24T18:50:47Z")

</div>

Please post your repo here if you’re doing it. I tend do enjoy reading other people’s solutions, usually I always learn from it. Here’s my day 1 solution: multi-playground/aoc/2025/haskell/Day01.hs at 36057441c62acbf42…

---

## [Profiling monadic code](https://discourse.haskell.org/t/profiling-monadic-code/14542)

<div class="topic-metadata">

**Author:** [@pestrada](https://discourse.haskell.org/u/pestrada)\
**Replies:** 6\
**Last updated:** [August 23, 2026, 12:47am UTC](https://discourse.haskell.org/t/profiling-monadic-code/14542 "2026-08-23T00:47:13Z")

</div>

The problem I have been trying to profile some code using the Eff monad from effectful but have been having trouble with the costs not being attributed properly to the effectful action. Any SCC annotation I add to an eff…

---

## [Like "deriving Read" but faster?](https://discourse.haskell.org/t/like-deriving-read-but-faster/14585)

<div class="topic-metadata">

**Author:** [@jwaldmann](https://discourse.haskell.org/u/jwaldmann)\
**Replies:** 6\
**Last updated:** [August 21, 2026, 1:14pm UTC](https://discourse.haskell.org/t/like-deriving-read-but-faster/14585 "2026-08-21T13:14:32Z")

</div>

I could use a parser that is equivalent to the one produced by “deriving Read” but … A) faster, and using less space (Data.Text(.Lazy) instead of String) B) streaming (parse a long list literal “\[0,1,2, … \]” in constan…

---

## [\`Arbitrary\` instances for GADTs](https://discourse.haskell.org/t/arbitrary-instances-for-gadts/14580)

<div class="topic-metadata">

**Author:** [@6d03](https://discourse.haskell.org/u/6d03)\
**Replies:** 1\
**Last updated:** [August 20, 2026, 10:17am UTC](https://discourse.haskell.org/t/arbitrary-instances-for-gadts/14580 "2026-08-20T10:17:45Z")

</div>

I have a need to define QuickCheck Arbitrary instances for GADTs, of course genericArbitrary does not work, because GHC does not derive Generic for GADTs. But kind-generics: Generic programming in GHC style for arbitrary…

---

## [Kind evaluation in HLS](https://discourse.haskell.org/t/kind-evaluation-in-hls/14582)

<div class="topic-metadata">

**Author:** [@reuben](https://discourse.haskell.org/u/reuben)\
**Replies:** 3\
**Last updated:** [August 18, 2026, 10:20pm UTC](https://discourse.haskell.org/t/kind-evaluation-in-hls/14582 "2026-08-18T22:20:04Z")

</div>

I am curious if there’s a way to see the evaluation of a type family in the Haskell Language Server. For example, I have some type (details not important, just included for the sake of a concrete example) type ThreeHalf…

---

## [Questions about Haskell and Wasm](https://discourse.haskell.org/t/questions-about-haskell-and-wasm/14336)

<div class="topic-metadata">

**Author:** [@vocas](https://discourse.haskell.org/u/vocas)\
**Replies:** 8\
**Last updated:** [August 18, 2026, 8:42am UTC](https://discourse.haskell.org/t/questions-about-haskell-and-wasm/14336 "2026-08-18T08:42:27Z")

</div>

Hi, I’m writing a bug-finding tool called Owi. It already works for C/C++/Go/Rust/Zig/LLVM/Wasm, see the Quickstart if you’re curious about it. I’m currently adding Haskell support, and I have a few questions. The way …

---

## [Can the Arrow type class be more general?](https://discourse.haskell.org/t/can-the-arrow-type-class-be-more-general/14392)

<div class="topic-metadata">

**Author:** [@mastarija](https://discourse.haskell.org/u/mastarija)\
**Replies:** 18\
**Last updated:** [August 13, 2026, 5:40pm UTC](https://discourse.haskell.org/t/can-the-arrow-type-class-be-more-general/14392 "2026-08-13T17:40:10Z")

</div>

I’ve been thinking. Arrows are nicer than Monads for static analysis. The main issue with a Monad is that the bind expects a function that outputs the next effect. The reason why this is an issue is because we can’t real…

---

## [FFI Questions (Wrapping C++ code, and callbacks)](https://discourse.haskell.org/t/ffi-questions-wrapping-c-code-and-callbacks/14549)

<div class="topic-metadata">

**Author:** [@tsuraan](https://discourse.haskell.org/u/tsuraan)\
**Replies:** 9\
**Last updated:** [August 12, 2026, 9:33pm UTC](https://discourse.haskell.org/t/ffi-questions-wrapping-c-code-and-callbacks/14549 "2026-08-12T21:33:51Z")

</div>

So, I’m not new to Haskell, but I’ve never worked much with the C FFI. I figured a fun place to start would be adding some really basic Botan.TLS bindings to the botan-bindings package, just to see how rough it would be …

---

## [Derived data family instance](https://discourse.haskell.org/t/derived-data-family-instance/14419)

<div class="topic-metadata">

**Author:** [@olf](https://discourse.haskell.org/u/olf)\
**Replies:** 6\
**Last updated:** [August 9, 2026, 12:21pm UTC](https://discourse.haskell.org/t/derived-data-family-instance/14419 "2026-08-09T12:21:42Z")

</div>

Related question from 2023: Choosing data representation based on type As far as I understand, a GADT is like a closed data family. I want to construct an open data family, where the library user can add her own instanc…

---

## [Haskell Report 2024?](https://discourse.haskell.org/t/haskell-report-2024/14475)

<div class="topic-metadata">

**Author:** [@mpilgrem](https://discourse.haskell.org/u/mpilgrem)\
**Replies:** 29\
**Last updated:** [August 7, 2026, 7:26am UTC](https://discourse.haskell.org/t/haskell-report-2024/14475 "2026-08-07T07:26:20Z")

</div>

Does the following have any legs as an idea? If it is misconceived, please say so! The Haskell Report 2010 is (a) authoritative (b) all in one place and (c) acts as a ‘landmark’ (something that other things are describe…

---

## [Why doesn't GHC provide (isWHNF :: a -\> IO Bool)?](https://discourse.haskell.org/t/why-doesnt-ghc-provide-iswhnf-a-io-bool/14499)

<div class="topic-metadata">

**Author:** [@BurningWitness](https://discourse.haskell.org/u/BurningWitness)\
**Replies:** 12\
**Last updated:** [August 3, 2026, 2:25pm UTC](https://discourse.haskell.org/t/why-doesnt-ghc-provide-iswhnf-a-io-bool/14499 "2026-08-03T14:25:24Z")

</div>

I’m quite comfortable with laziness as is in the language, there’s just one thing I find missing: an ability to guarantee that any given value is correctly evaluated. A good example of a bad way to do this is deepseq: r…

---

## [Common legal questions around LLMs?](https://discourse.haskell.org/t/common-legal-questions-around-llms/14489)

<div class="topic-metadata">

**Author:** [@AndreasPK](https://discourse.haskell.org/u/AndreasPK)\
**Replies:** 7\
**Last updated:** [July 31, 2026, 4:02pm UTC](https://discourse.haskell.org/t/common-legal-questions-around-llms/14489 "2026-07-31T16:02:33Z")

</div>

I think there are a lot of things that are unclear in this area. In light of recent policy discussions for GHC I’ve contacted the HF to ask if they could facilitate getting a legal expert to shed some light on some of th…

---

## [Line of code not working as expected](https://discourse.haskell.org/t/line-of-code-not-working-as-expected/14435)

<div class="topic-metadata">

**Author:** [@Gray4605](https://discourse.haskell.org/u/Gray4605)\
**Replies:** 15\
**Last updated:** [July 26, 2026, 4:06pm UTC](https://discourse.haskell.org/t/line-of-code-not-working-as-expected/14435 "2026-07-26T16:06:32Z")

</div>

i have a line of code which doesn’t work as i expect it too: parentspermission x y = if x && y == False then print(“no”) else print (“yes”) when i run parentspermission False False in ghci it gives me “yes” instead of …

---

## [Another Lens Optics type difference](https://discourse.haskell.org/t/another-lens-optics-type-difference/13335)

<div class="topic-metadata">

**Author:** [@feature-not-a-bug](https://discourse.haskell.org/u/feature-not-a-bug)\
**Replies:** 3\
**Last updated:** [July 22, 2026, 6:21pm UTC](https://discourse.haskell.org/t/another-lens-optics-type-difference/13335 "2026-07-22T18:21:00Z")

</div>

I’m working through the Servant tutorial using genericServeTWithContext to serve an endpoint that’s serving a JWKSet as JSON along the lines of this guide Hoist Server With Context for Custom Monads — Servant documentati…

---

## [Typeclass Evidence Scope](https://discourse.haskell.org/t/typeclass-evidence-scope/14440)

<div class="topic-metadata">

**Author:** [@Turtle](https://discourse.haskell.org/u/Turtle)\
**Replies:** 5\
**Last updated:** [July 20, 2026, 2:08pm UTC](https://discourse.haskell.org/t/typeclass-evidence-scope/14440 "2026-07-20T14:08:06Z")

</div>

So lately I’ve found myself reifying a bunch of typeclasses from variables in my code base. The basic pattern looking a little like the following (using the constraints package from hackage): example0 x = case evidence …

[Next page](https://discourse.haskell.org/c/learn/5.md?no_subcategories=false&page=1)
