A Haskell implementation of the Shen programming language.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Shentong backend optimizations Apr 27, 2017
.gitmodules module shuffling Apr 26, 2017
LICENSE updated LICENSE Mar 26, 2015
README.org Typo Apr 5, 2018
shentong.cabal updates Oct 9, 2016
vajra.jpg used codensity transformation Dec 13, 2014



A Haskell implementation of the Shen programming language


Shentong is a Haskell implementation of Shen, a modern Lisp family programming language which includes many advanced and interesting features. The name is thematically in keeping with that of shen, a construct from another esoteric religion.

Package dependencies are:

  • mtl
  • unordered-containers
  • uniplate
  • parallel
  • hashmap

Shentong runs on a fully native Haskell backend directly ported from the backend written in Shen’s kernel language, K Lambda. It is licensed under BSD 3. If cabal is not used to compile the sources, the GHC compiler option -fno-full-laziness must be used, as in

ghc -O2 Shen.hs -fno-full-laziness

The current supported version is Shen 20.

Try it

$> git clone https://github.com/mthom/shentong.git
$> cd shentong
$> cabal sandbox init
$> cabal install
$> cd .cabal-sandbox/bin
$> ./shen

or install it through Hackage:

$> cabal install shentong
$> ./shen