Haskell good first issues

78 open Haskell issues currently match the default 10+ star filter. Scored difficulty: 5,943 at 1/5, 8,722 at 2/5, 12,675 at 3/5, 12,093 at 4/5, 856 at 5/5. This hub uses the same feed as the homepage, limited to repositories whose GitHub language is Haskell.

All languages · Browse projects · How to find good first issues · Hacktoberfest 2026

Active projects

Unique repos with open help-wanted issues updated in the last 30 days

Showing 30 of ~78 matching filters (Haskell · 10+ stars)

List

Output to STDOUT blocks reporting to STDERR

AI summary

This issue describes a bug where compilation errors are not reported to STDERR when the output is redirected to STDOUT using the `--output=/dev/stdout` flag in Gren. When output is directed to a file, errors are correctly sent to STDERR, but this behavior breaks when STDOUT is used for output.

buggood first issue
497
Difficulty
3/5

`//` truncates its result to 32 bits when inlined, but not when passed as a function

AI summary

The `//` operator in the Gren language produces different results depending on whether it's inlined or called as a function. When inlined, the result is truncated to 32 bits due to a `(a / b) | 0` operation, while the function call uses `Math.trunc` which handles larger numbers correctly. This discrepancy was introduced when `Math.trunc` was updated and the code generator was not synchronized.

buggood first issue
497
Difficulty
3/5

Haskell-based compiler 0.6.5 crashes when compiling a package that has a summary field >= 80 chars

AI summary

The Haskell-based compiler version 0.6.5 crashes when compiling a package with a `summary` field exceeding 79 characters. This issue appears specific to the `package` type in `gren.json` and not the `application` type. The error message indicates a `DecodeProblem` related to the `summary` field's input validity.

buggood first issuehelp wanted
497
Difficulty
2/5

HLS in docker fail to launch

AI summary

The Haskell Language Server (HLS) fails to launch within a Docker container on an ARM macOS system. The error message indicates that a compatible GHC installation (specifically 9.10.3) cannot be found, suggesting it needs to be installed via ghcup or HLS needs to be built from source.

bughelp wantedDocker
156
Difficulty
3/5

Move external integrations from shared-kernel dependency to current codebase

AI summary

This issue proposes refactoring the codebase by moving external integration code from the `shared-kernel` dependency into the `nammayatri/Backend/lib` directory. This is because the `shared-kernel` repository is currently only used by the `nammayatri` mobility use case, making its current location redundant and inefficient.

good first issuebackendrefactor
2.6K
Difficulty
2/5

Update node version on linting Actions runner?

AI summary

The linting workflow is encountering a deprecation warning because it's targeting Node.js 20, which is being forced to run on Node.js 24. This issue is specifically related to the `haskell-actions/hlint-run` and `haskell-actions/hlint-setup` actions. The user is asking if this needs to be addressed and if it's related to the Ubuntu runner's Node.js version.

help wantedgithub_actions
156
Difficulty
2/5
haskell/cabal

cabal update underdocumented

AI summary

The documentation for `cabal update` is missing information about the `repo[,timestamp]` argument and the specific behavior of the timestamp. The user is trying to manage dependency updates for AUR packaging scripts and found this lack of documentation to be a significant hurdle.

documentationattention: pr-welcomegood first issue
1.7K
Difficulty
2/5

Renamer accepts annotations using type names as constructors

AI summary

The F# renamer incorrectly accepts annotations using type names as constructors, such as `#Colour` when `Colour` is a discriminated union. This should ideally result in a compiler error, but the current implementation does not enforce this. The issue is labeled as a 'good first issue'.

good first issue
18
Difficulty
2/5

Make an easy way to create pages from markdown files

AI summary

This issue proposes a feature to easily create web pages from Markdown files. The system would render Markdown content similarly to READMEs, requiring a 'title' in the frontmatter and optionally a 'description'. Users could define a route pointing to a Markdown file to create a page, with potential for automatically generating routes from a folder structure.

help wanted
156
Difficulty
3/5

Front Page Readme Source Code Examples not Styled in Candidate Uploads

AI summary

The user has observed that source code examples in the README.md file are not styled when viewed on the 'candidate' version of a package on Hackage. They are asking if this is the intended behavior and if it can be fixed, providing links to compare a candidate and published version of a package.

enhancementgood first issuecomponent: uxhelp wanted
468
Difficulty
2/5

Avoid displaying empty version in package list

AI summary

This issue requests a frontend fix to prevent the display of empty version strings in the package dependency list on flora.pm. The goal is to improve the user interface by not rendering version elements when no version information is available for a dependency.

good first issuefrontendHackathon
156
Difficulty
2/5

Add meta title+description for the Feed page

AI summary

This issue proposes adding a meta title and description to the `/feed` page, similar to how it's done for the `/about` page. The suggested title is 'Packages feed — Flora' and the description is 'Generate an Atom feed to follow updates'. This is a straightforward task focused on improving SEO and user experience for the feed page.

good first issueHackathonImprovement
156
Difficulty
1/5

Serve compressed assets

AI summary

This issue proposes serving compressed assets (like JavaScript bundles) to improve website performance by reducing data transfer size. The suggested approaches include on-the-fly compression by the web server or pre-compression during the build process, with the latter requiring more changes to the asset pipeline and server configuration.

enhancementhelp wantedperformanceHackathon
156
Difficulty
3/5

Remove dependency on `colourista`

AI summary

This issue proposes removing the `colourista` dependency from the project. The current usage of `colourista` is limited to displaying blue/red messages during executable startup, and the suggestion is to "vendor" these specific functionalities instead of relying on the external library.

good first issueHackathon
156
Difficulty
2/5

Resurrecting the MySQL backend

AI summary

This issue proposes reintroducing MySQL support to the project by migrating from an unmaintained library (`beam-mysql`) to a maintained alternative (`mysql-haskell`). The core task involves importing the existing `beam-mysql` code and then adapting it to work with the new `mysql-haskell` backend.

enhancementhelp wanted
629
Difficulty
4/5

Ship via ghcup

AI summary

This issue announces a new process for shipping software via ghcup, allowing developers to add their tools without direct maintainer involvement. The linked documentation provides instructions on how to add new tools to ghcup.

help wanted
147
Difficulty
2/5

New-pipeline: use Parlaylib allocator on Windows

AI summary

This issue proposes re-enabling the Parlaylib allocator on Windows for the new-pipeline, as it was previously disabled due to linking issues. The goal is to remove the conditional compilation switch and always use the Parlaylib allocator, potentially by fixing a Cabal configuration error. Developers with Windows access are requested to test this change.

help wanted
1.0K
Difficulty
3/5

Update utility packages for Accelerate 1.4

AI summary

This issue details necessary updates for several utility packages to be compatible with Accelerate 1.4. It outlines specific changes required for packages like `lens-accelerate`, `accelerate-io`, `linear-accelerate`, `accelerate-fft`, `accelerate-bignum`, `accelerate-blas`, and `containers-accelerate`, including version bumps, dependency updates, and potential rewrites. Some tasks require familiarity with the native backend or system package installations.

help wanted
1.0K
Difficulty
4/5

New pipeline: atrace on PTX

AI summary

This issue requires implementing tracing functionality (similar to `Debug.Trace`) for the PTX backend within Accelerate's new compiler pipeline. The task involves identifying and fixing missing `atrace` implementations for the PTX platform by writing and running Accelerate programs that utilize tracing on this backend.

good first issue
1.0K
Difficulty
3/5
rzk-lang/rzk

Add `--version` command

AI summary

This issue requests the addition of a `--version` or `-v` command-line flag to the `rzk` tool. This feature would allow users to easily check the currently installed version of the tool, which is particularly helpful for those who find Haskell package management confusing.

good first issue
303
Difficulty
1/5

`match` without `--pattern` exits 0 with no output and never checks `--when`

AI summary

The `phino match` command incorrectly exits with a status code of 0 and produces no output when used without the `--pattern` flag, even when a `--when` condition is provided. This behavior is inconsistent with the expected error handling and the fix implemented in issue #631, which mandates a non-zero exit code for no substitutions.

bughelp wanted
18
Difficulty
2/5

--abridged leaves long byte strings uncut in delta and known protocol records

AI summary

The `--abridged` flag in the protocol output is intended to shorten long byte strings, but it currently only applies this to byte strings within expression nodes. Byte strings embedded directly in other protocol record types, such as delta operand data or known datums, are not abbreviated, leading to inconsistent formatting and potential file bloat. The proposed solution is to extend the abbreviation logic to handle these raw `Bytes` values.

bughelp wanted
18
Difficulty
3/5

Use label name as a Value in data section

AI summary

This issue proposes using the label name 'buffer' directly as a value in the data section, specifically for the 'cursor' variable. The current implementation uses a string literal, and the goal is to have 'cursor' point to the memory address of 'buffer'. This is a common pattern for initializing pointers in assembly.

help wanted
34
Difficulty
2/5

Trusted registries don't work correctly for multi-part repo names

AI summary

The Hadolint linter incorrectly handles trusted registries for multi-part repository names. It fails to recognize specific sub-registries like 'gcr.io/distroless' as trusted, while conversely, it incorrectly trusts the broader 'gcr.io' domain when it should flag it as untrusted for private GCR repositories.

enhancementhelp wanted
11.5K
Difficulty
3/5

MySQL backend generates foreign keys over length limit

AI summary

The MySQL backend for persistent-mysql is creating foreign key constraint names that exceed MySQL's 64-character limit, causing errors. The issue requires implementing a truncation strategy for these names, potentially reusing logic from a related PostgreSQL issue, to ensure compliance with MySQL's naming conventions.

MySQLSQLgood first issuebugfix
486
Difficulty
2/5

replaceExpressionFast loops forever on an empty formation pattern

AI summary

The `replaceExpressionFast` function enters an infinite loop when attempting to replace an empty formation pattern. This occurs because the function fails to consume input when the pattern is empty, leading to a recursive call with the same list, causing the loop. The expected behavior is a single replacement of bindings, not infinite recursion.

bughelp wanted
18
Difficulty
3/5

Liquid Haskell should accept `UnicodeSyntax`

AI summary

This issue requests that Liquid Haskell support the `UnicodeSyntax` language extension, which allows for the use of Unicode characters like '→' and '∷' as alternatives to '->' and '::'. Currently, Liquid Haskell does not recognize these Unicode symbols, forcing users to choose between standard Haskell syntax or abandoning Unicode syntax in projects that use Liquid Haskell.

good first issue
1.3K
Difficulty
2/5

Document missing options in readme

AI summary

This issue requests that the command-line arguments for the 'weeder' tool be documented in the README file. The user found it difficult to discover certain options, like `-j`, without this documentation, and suggests adding them to both the README and the command-line help text.

documentationhelp wantedgood first issue
189
Difficulty
1/5

Also browsing: Python , TypeScript , JavaScript