blanks alternatives and similar packages
Based on the "Language" category.
Alternatively, view blanks alternatives based on common mentions on social networks and blogs.
-
elm-compiler
Compiler for Elm, a functional language for reliable webapps. -
stylish-haskell
Haskell code prettifier [Moved to: https://github.com/haskell/stylish-haskell] -
haskell-src-exts
Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer -
nirum
Nirum: IDL compiler and RPC/distributed object framework for microservices -
language-python
A parser for Python 2.x and 3.x written in Haskell -
tal
An implementation of Typed Assembly Language (Morrisett, Walker, Crary, Glew) -
aterm-utils
Utility functions for working with aterms as generated by Minitermite -
language-ecmascript
Haskell library: ECMAScript parser, pretty-printer and additional tools -
ministg
Ministg is an interpreter for a high-level, small-step, operational semantics for the STG machine. -
purescript-tsd-gen
TypeScript Declaration File (.d.ts) generator for PureScript
Access the most powerful time series database as a service
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of blanks or a related project?
README
blanks
Fill-in-the-blanks - A library factoring out substitution from ASTs.
It's a pain to track de Bruijn indices yourself to implement capture-avoiding subsititution,
so this library provides some wrappers that help. One of the best libraries for this is
bound, which uses a clever representation to make
these operations safe and fast. The tradeoff is that you have to define a Monad
instance
for your expression functor, which in practice can be tricky. (It's even trickier to derive
Eq
and Show
!)
This library takes the simpler, slower, and rather "succ-y" free-monad-ish approach,
but with a twist. It expects you to rewrite all name-binding constructors in your expression
as annotations on a single "binder" constructor. This allows you to use the provided Scope
type (or a variant) as a wrapper around your expression functor, which is only required to
implement Functor
. This representation is less safe (since you can inspect and manipulate
bound variables), but if you stick to the provided combinators, things will work out fine.
You'll get most of what you want by just importing this module unqualified.
See the Blanks
class definition and related methods to manipulate variables and abstractions.
See Scope
for the basic wrapper and LocScope
for a wrapper with annotations you can use
for source locations and the like. See the test suite for examples.