Skip to content

maxdeliso/typed-ski

Repository files navigation

SKI in TS

An implementation of a parser, evaluator, printer, and visualizer for SKI.

Project Dependencies

Quick Start

This project uses a Makefile for common development tasks:

make setup  # Install necessary tools (Nix, configure experimental features)
make build  # Compile all artifacts (WASM, TypeScript, dist files)
make test   # Run the complete test suite (Rust + Deno tests, linting, formatting)

For detailed information about what each target does, see the Makefile or run make help.

Development Setup

VS Code Extensions

This project includes VS Code workspace settings that require the following extensions:

  • Deno - Official Deno extension for TypeScript support, linting, and IntelliSense

The .vscode/settings.json file configures:

  • Enables the Deno extension for this workspace
  • Disables the built-in TypeScript language server to avoid conflicts
  • Configures Deno linting and import suggestions

Installation

  1. Install the Deno extension in VS Code
  2. Clone the repository
  3. Run make setup to install and configure Nix
  4. Open the project in VS Code - the workspace settings will automatically apply

Artifacts

Build System

This project uses Nix for reproducible builds and version management. The build system orchestrates Rust → WASM → TypeScript builds with a single source of truth for versioning.

Note: The nixpkgs input tracks nixos-unstable branch, with the exact commit pinned in flake.lock for reproducibility. To update to a newer nixpkgs revision, run nix flake update.

Works Referenced

Books

Papers

  • D. A. Turner, "A new implementation technique for applicative languages," Software: Practice and Experience, vol. 9, no. 1, pp. 31-49, 1979. DOI: 10.1002/spe.4380090105
  • W. Stoye, T. J. W. Clarke, and A. C. Norman, "Some practical methods for rapid combinator reduction," in Proceedings of the 1984 ACM Symposium on LISP and Functional Programming (LFP '84), ACM, New York, NY, USA, pp. 159-166, 1984. DOI: 10.1145/800055.802038
  • H. G. Baker, "CONS should not CONS its arguments, or, a lazy alloc is a smart alloc," ACM SIGPLAN Notices, vol. 27, no. 3, pp. 24-34, 1992. DOI: 10.1145/130854.130858

CI/CD

GitHub Actions use the Makefile targets for building and testing. See the workflow files in .github/workflows/ for details.

Status

Deno CI COC

About

SKI combinators in TypeScript

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Contributors 3

  •  
  •  
  •