@cicada-lang/lang-practices

0.2.3 • Public • Published

My Language Practices

Use S-expression as overall syntax, to expression ideas clearly.

lang0 -- An implementation of (Untyped) Lambda Calculus.

  • Implement call-by-need lazy evaluation.
  • Allow recursive in top-level definitions.
    • No mutual recursion, a name must be defined before used.
  • A simple module system with only one API -- (import).
    • It can import module from local file or remote URL.
  • Two simple testing statements (assert-equal) and (assert-not-equal).
    • They can handle beta and eta equivalence.
  • Note that, when implementing lambda calculus as an interpreter, the depth of the call stack is limited by the hosting language. To avoid this limitation we should implement lambda calculus by machine like SECD.

lang1 -- De Bruijn notation with explicit substitution.

  • With explicit name as comment.

Usages

Command line tool

Install it by the following command:

npm install -g @cicada-lang/lang-practices

The command-line program is called lang.

Development

npm install     # Install dependencies
npm run build   # Compile `src/` to `lib/`
npm run test    # Run test

Community

GitHub:

Telegram:

Contributions

To make a contribution, fork this project and create a pull request.

Please read the STYLE-GUIDE.md before you change the code.

Remember to add yourself to AUTHORS. Your line belongs to you, you can write a little introduction to yourself but not too long.

License

GPLv3

Readme

Keywords

none

Package Sidebar

Install

npm i @cicada-lang/lang-practices

Weekly Downloads

1

Version

0.2.3

License

GPL-3.0-or-later

Unpacked Size

244 kB

Total Files

414

Last publish

Collaborators

  • xieyuheng