A Haskell implementation of GraphQL providing AST data types, parser, printer, and future schema and interpreter tools.
graphql-haskell is a Haskell library that implements the GraphQL specification, providing data types for the GraphQL AST, a parser for GraphQL queries, and a printer for output. It solves the need for type-safe GraphQL tooling in Haskell ecosystems, enabling developers to build and manipulate GraphQL APIs with functional programming rigor.
Haskell developers building GraphQL servers or clients, or those needing to parse, generate, or process GraphQL queries and schemas in a type-safe environment.
Developers choose graphql-haskell for its alignment with the official GraphQL spec via porting from graphql-js, offering a reliable, type-safe foundation that reduces errors and integrates seamlessly with Haskell's functional paradigms.
Haskell GraphQL implementation
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides Haskell data types for the GraphQL Abstract Syntax Tree, leveraging strong static typing to reduce errors and ensure correctness in query representation.
Faithfully ports the GraphQL language parser from graphql-js, enabling accurate parsing of queries according to the official GraphQL specification.
Built in Haskell, it seamlessly fits into functional codebases, offering a natural choice for developers using monads, type classes, and other FP paradigms.
The README explicitly lists future features like schema tools and interpreter, showing active planning and commitment to expanding functionality.
Critical components such as the interpreter for executing queries and schema definition utilities are marked as future work, severely limiting out-of-the-box usability.
The printer is described as 'not pretty yet,' meaning it lacks advanced formatting options, which can be a drawback for generating human-readable GraphQL.
Beyond basic AST usage, the project offers minimal tutorials or guides, making it difficult for newcomers to implement more complex scenarios.