Skip to main content

Aca, a functional programming language, and shitty toy

Project description


Aca, a functional programming language, and shitty toy.

Aca is a toy functional programming language initially inspired by ISWIM. The interpreter is currently written in Python.


$ pip install acalang


  1. Command line usage
$ cat foo.aca
let main =
    dechurch 3

$ aca foo.aca

$ aca foo.aca -S    # `noeval' mode
(lambda x: dechurch(x))((lambda x: x)((lambda f: lambda x: (f(f(f(x)))))))

$ aca       # REPL
$ aca -S    # REPL with `noeval'
  1. Lambda calculus
let main =
    (\x y f. f x y)
  1. Standard library for basic datatypes
let a = zero
let b = succ zero
let main = dechurch b
-- 1
  1. Sugar for Church numerals
let main = 0

-- This is identical to
let main =
    (\x . x)
  1. Special builtin functions for debugging (decoded into Python value)
let main =
    dechurch 42
-- Output: 42

let main =
    debool true
-- Output: True

let main =
    dereal (neg (u2i 42))
-- Output: -42
  1. Simple module import with use
$ foo.aca
let foo = 42

$ bar.aca
use foo

let main =
    dechurch foo

$ aca bar.aca


  • Before v1.0.0:
    • Untyped lambda calculus
  • v1.0.0:
    • Simply typed lambda calculus
  • v2.0.0:
    • System F



Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

acalang-0.5.0.tar.gz (5.5 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page