tree-sitter-haskell
Haskell grammar for tree-sitter
What it is and what it does
tree-sitter-haskell is a parser grammar for the tree-sitter incremental parsing framework, targeting the Haskell language. It translates Haskell source code into a concrete syntax tree that tools can query and analyze. The grammar supports most modern Haskell features, including many GHC language extensions (BangPatterns, GADTs, TypeFamilies, TemplateHaskell, and many others), though a few extensions remain unsupported or are not applicable to parsing.
The package is primarily used by developers building code analysis tools, linters, refactoring engines, or editor integrations that need to understand Haskell syntax. It does not parse or execute Haskell code itself; it only produces a tree representation. The grammar includes supertypes (expression, pattern, type, declaration, statement, etc.) that allow queries to match nodes at different levels of abstraction, making it suitable for both simple token extraction and complex semantic queries.
Use it for:
- Build a Haskell linter or style checker that traverses the syntax tree to detect code patterns.
- Implement editor features (syntax highlighting, code folding, go-to-definition) using tree-sitter queries.
- Create a code refactoring tool that identifies and transforms specific Haskell syntax patterns.
- Analyze Haskell codebases to extract metrics (function count, module dependencies, type usage).
- Develop a documentation generator that parses Haskell source to extract type signatures and comments.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides a tree-sitter parser grammar for Haskell, enabling incremental parsing and syntax tree generation for Haskell source code.
Yes, if you are building a Haskell code analysis or editor tool and need incremental parsing. The grammar is comprehensive and actively maintained. However, install only if you already use tree-sitter; this package is a grammar plugin, not a standalone parser. Be aware that the last release was 642 days ago, so check whether recent language extensions you need are supported.
Install
tree-sitter-haskell on PyPI
pip
pip install tree-sitter-haskelluv
uv add tree-sitter-haskellpoetry
poetry add tree-sitter-haskellInstalling tree-sitter-haskell
Before you install
Medium install friction due to compiled wheels; prebuilt binaries available for common platforms (x86_64, ARM, Windows). Package is aging—last release was 642 days ago, though the repository remains active with recent commits.
License in practice
MIT license is permissive; you may use, modify, and distribute this package freely in commercial and private projects with minimal restrictions.
Quickstart
pip install tree-sitter-haskell
from tree_sitter import Language, Parser
HASKELL = Language('/path/to/haskell.so')
parser = Parser()
parser.set_language(HASKELL)
tree = parser.parse(b'main = putStrLn "Hello"')
Requires tree-sitter core library and compiled parser binary; you must obtain or build the haskell.so parser library separately (not bundled by this package).
Verify before relying
- Whether the package includes precompiled parser binaries or requires manual compilation of the grammar.
- How to obtain or generate the haskell.so parser library needed by the usage example.
- Support status for GHC language extensions marked as unsupported (Arrows, LexicalNegation, Modifiers, StaticPointers).
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | aging — 642 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 121,369/month — #11,983 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: tree_sitter_haskell-0.23.1-cp39-abi3-macosx_10_9_x86_64.whl; tree_sitter_haskell-0.23.1-cp39-abi3-macosx_11_0_arm64.whl; tree_sitter_haskell-0.23.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; tree_sitter_haskell-0.23.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; tree_sitter_haskell-0.23.1-cp39-abi3-musllinux_1_2_x86_64.whl; tree_sitter_haskell-0.23.1-cp39-abi3-win_amd64.whl; tree_sitter_haskell-0.23.1-cp39-abi3-win_arm64.whl
Keywords: incremental, parsing, tree-sitter, haskell
Tags
More Linguistic packages
Detects and normalizes text encoding from…
permissive · top 100 on PyPI
tiktokentiktoken is a fast BPE tokenizer that converts…
permissive · top 1,000 on PyPI
chardetDetects character encoding and language in byte…
permissive · top 1,000 on PyPI
text-unidecodeConverts Unicode text to ASCII by…
copyleft · top 1,000 on PyPI
larkLark is a parsing library that builds abstract…
permissive · top 1,000 on PyPI
tree-sitterPython bindings to the tree-sitter parsing…
permissive · top 1,000 on PyPI
tree-sitter-pythonProvides a Python grammar for tree-sitter,…
permissive · top 5,000 on PyPI
trailmarkParses source code into a queryable graph of…
permissive · top 15,000 on PyPI
tree-sitter-swiftProvides a tree-sitter grammar for parsing…
permissive · top 5,000 on PyPI
tree-sitter-javaProvides a Java language grammar for…
permissive · top 5,000 on PyPI
tree-sitter-goProvides a Go language grammar for tree-sitter,…
permissive · top 5,000 on PyPI
tree-sitter-kotlinProvides a Kotlin language grammar for…
permissive · top 5,000 on PyPI
tree-sitter-rubyProvides a Ruby language grammar for…
permissive · top 5,000 on PyPI
tree-sitter-typescriptProvides TypeScript and TSX language grammars…
permissive · top 5,000 on PyPI
tree-sitter-cssProvides a CSS grammar parser for tree-sitter,…
permissive · top 5,000 on PyPI
spanishconjugatorConjugates Spanish verbs by tense, mood, and…
permissive · top 15,000 on PyPI