Popularity
2.5
Declining
Activity
0.0
Stable
4
2
1

Monthly Downloads: 10
Programming language: Haskell
License: BSD 3-clause "New" or "Revised" License
Tags: Data    
Latest version: v0.0.1.0

recursion-schemes-ix alternatives and similar packages

Based on the "Data" category.
Alternatively, view recursion-schemes-ix alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of recursion-schemes-ix or a related project?

Add another 'Data' Package

README

recursion-schemes-ix

Recursion schemes over indexed datatypes

Heavily inspired by multirec, this library uses PolyKinds and SingI constraints to achieve the same dependent typing as multirec.

This library defines the IFunctor typeclass and recursion-schemes on IFunctors.

Goals:

  • Minimal dependencies
    • This library depends only on singlethongs, which in turn only depends on template-haskell. As a result, it should be easy to include in any project
  • GHCJS compatibility
    • This package is used in a compiler that I want to be able to run in the browser
  • Ease of use
    • Once everything is set-up, writing a recursion-scheme should not be overly complex (looking at you, mulrirec)

Non-Goals:

  • Eliminating boilerplate
    • This library requires hand-written IShow, IRead, IEq, IOrd, ITraversable instances. I also recommend writing pattern synonyms to remove the IFix constructor. Writing these can be a pain, but its only required once for the main data structure, and one IFunctor instance whenever you write a dependent recursion-scheme.
  • Speed
    • The code in the library mimics the recurion-schemes library almost directly, simply lifting everything up from * to k -> *. In a future release, INLINE pragmas will be added and possibly benchmarked.

Documentation

Not written, but haddocks on the github user site.