Popularity
6.4
Declining
Activity
0.0
Stable
10
6
3
Monthly Downloads: 14
Programming language: Haskell
License: BSD 3-clause "New" or "Revised" License
Tags:
Language
Latest version: v0.4.0.0
zabt alternatives and similar packages
Based on the "Language" category.
Alternatively, view zabt 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 -
tal
An implementation of Typed Assembly Language (Morrisett, Walker, Crary, Glew) -
language-ecmascript
Haskell library: ECMAScript parser, pretty-printer and additional tools -
aterm-utils
Utility functions for working with aterms as generated by Minitermite -
purescript-tsd-gen
TypeScript Declaration File (.d.ts) generator for PureScript -
ministg
Ministg is an interpreter for a high-level, small-step, operational semantics for the STG machine.
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Promo
www.influxdata.com
* 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 zabt or a related project?
README
Zabt
Simple-minded abstract binding trees.
A utility library for language authors.
Example
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE DeriveFoldable #-}
{-# LANGUAGE DeriveFunctor #-}
module STLC where
import Zabt
import Zabt.Name
data Alg x
= App x x
| Lam x
deriving (Eq, Ord, Show, Functor, Foldable)
type Exp = Term Name Alg
pattern (:$) :: Exp -> Exp -> Exp
pattern (:$) f x = Pat (App f x)
pattern (:\) :: Name -> Exp -> Exp
pattern (:\) v e = Pat (Lam (Abs v e))
infixr 0 :\
infixr 1 :$
ex1, ex2, ex3 :: Exp
ex1 = Var "foo"
ex2 = "foo" :\ Var "foo"
ex3 = ex2 :$ ex1
whnf :: Exp -> Exp
whnf x = case x of
Var _ -> x
_ :\ _ -> x
(v :\ e) :$ x -> subst1 (v, x) e