kempe: Kempe compiler

[ bsd3, compilers, language, library, program ] [ Propose Tags ]

Kempe is a stack-based language

[Skip to Readme]
Versions [faq],,,,,
Change log
Dependencies array, base (>=4.9 && <5), bytestring, composition-prelude (>=, containers (>=, deepseq, extra (>=1.7.4), microlens, microlens-mtl, mtl, optparse-applicative, prettyprinter (>=1.7.0), process (>=, temporary, text, transformers [details]
License BSD-3-Clause
Copyright Copyright: (c) 2020 Vanessa McHale
Author Vanessa McHale
Category Language, Compilers
Source repo head: git clone
Uploaded by vmchale at 2021-01-09T17:00:07Z
Distributions NixOS:
Executables kc
Downloads 83 total (29 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]



Disable concurrent build


Enable to ease cross-compiling


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees

Readme for kempe-

[back to package description]


Kempe is a stack-based language and toy compiler for x86_64. It requires the nasm assembler.

Inspiration is primarily from Mirth.

See manual here.


Installation is via cabal-install:

cabal install kempe --constraint='kempe -no-par'

For shell completions put the following in your ~/.bashrc or ~/.bash_profile:

eval "$(kc --bash-completion-script kc)"


  • Errors don't have position information

  • Monomorphization fails on recursive polymorphic functions

    Hopefully this isn't too sinful; I can't think of any examples of recursive polymorphic functions

  • Can't export or call C functions with more than 6 arguments; can't call or export large arguments (i.e. structs) passed by value.

    This is less of an impediment than it sounds like.

  • Cyclic module imports are not detected

  • Modules (imports) are kind of defective


You may wish to use Mirth or Factor instead. Mirth is statically typed (similar to Kempe) but less mature.