homepage: ''
changelog-type: markdown
hash: c1fa35fb6c1efcc73bc55916bbaa661ed78405c6c2af814075f38e5faa5c7df1
test-bench-deps:
  bytestring: -any
  kempe-modules: -any
  base: -any
  tasty-golden: -any
  text: -any
  filepath: -any
  criterion: -any
  process: -any
  tasty-hunit: -any
  prettyprinter: '>=1.7.0'
  temporary: -any
  tasty: -any
  deepseq: -any
maintainer: vamchale@gmail.com
synopsis: Kempe compiler
changelog: |
  # kempe

  ## 0.1.0.0

  Initial release
basic-deps:
  kempe-modules: -any
  base: -any
  optparse-applicative: -any
all-versions:
- 0.1.0.0
author: Vanessa McHale
latest: 0.1.0.0
description-type: markdown
description: |
  # Kempe

  Kempe is a stack-based language and toy compiler for x86_64. It requires the
  [nasm](https://nasm.us/) assembler.

  Inspiration is primarily from [Mirth](https://github.com/mirth-lang/mirth).

  See manual
  [here](http://hackage.haskell.org/package/kempe/src/doc/manual.pdf).

  ## Installation

  Installation is via [cabal-install](https://www.haskell.org/cabal/):

  ```
  cabal install kempe
  ```

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

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

  ## Defects

    * Unification takes too long
    * Errors don't have position information
    * Monomorphization fails on recursive polymorphic functions
    * If pattern matches fail at runtime, code just keeps running with whatever
      was after the jumps (no pattern match exhaustiveness checker)
    * 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.
    * Sizing for ADTs is not rigorous in places
license-name: BSD-3-Clause

Update from Hackage at 2020-12-02T23:59:08Z
Update from Hackage at 2020-12-02T23:59:08Z
