Skip to content

Repository files navigation

Tiny Interpreted Functional Language

This repository implements three variants of an interpreted functional language, each focusing on a different type system:

  • TIFL – A dynamically typed functional language with monomorphic types
  • PIFL – Extends TIFL with type inference, parametric polymorphism and static type checking.
  • SIFL – Statically checked language with support for nominal subtyping and bounded generics based on structural higher-order subtyping.

The different evolutions of the language are tracked in dedicated release branches, and separately released.


Build & Invocation

The CLI is built using:

./gradlew installDist

After installation, the interpreter can be invoked via the generated scripts in the project root:

  • ./tifl – TIFL interpreter
  • ./pifl – PIFL interpreter
  • ./sifl – SIFL interpreter

Usage

Usage: sifl [<options>] <command> [<args>]...

Commands:
  repl  Run an interactive REPL
  eval  Evaluate an expression on a program
  • repl starts an interactive read–eval–print loop.
  • eval <program> <expression> loads a program, performs static type checking, and evaluates the given expression.

Contributing

Please refer to the contribution guidelines for Build and IDE Setup, including integration of a custom IntelliJ Idea Language Plugin.

About

The TIFL language

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages