Created: 2011-07-17 07:10
Updated: 2018-07-20 05:52
License: gpl-3.0


TPL is a dynamically typed, imperative, interpreted scripting language. The main design goal was flexibility coupled with simplicity: the base language is very minimal, with features powerful enough to meaningfully extend it. For example, you can write your own control structures like loops.

TPL is heavily influenced by JavaScript, Haskell and Scheme; I also took ideas from other languages I've used.


Read all about the language in the Guide

This is also availabile as a Markdown page on Github.

Installation Instructions

To install, clone this repository and use cabal:

git clone git://
cd TPL
cabal install

If you use Emacs, you can also install a simple Emacs mode for TPL. To do this, copy emacs/tpl-mode.el to somewhere in your load path and add (require 'tpl-mode) to your .emacs file. This will automatically associate .tpl files with tpl-mode.

Future Features:

In the near future, I want to add:

  • better error handling and reporting
  • more standard functions (IO is particularly lacking right now)
  • an OOP system similar to JavaScript or Lua and unified with the scoping system

Example Code

Check out the base library for some example code. The library is in several files inside the src/base directory.

The library is mostly written in a very functional style. However, there are some interesting functions like partitionBy in base/list.tpl that are written in a more imperative style.

Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more