Skip to main content

Aca, a functional programming language, and shitty toy

Project description

Aca

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.

Install

$ pip install acalang

Example

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

$ aca foo.aca
3

$ 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
42

Goals

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

License

MIT

Project details


Download files

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

Files for acalang, version 0.5.0
Filename, size File type Python version Upload date Hashes
Filename, size acalang-0.5.0.tar.gz (5.5 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page