https://github.com/raviqqe/tispGo
"Time is Space" programming language
Tisp
Tisp is a "Time is Space" programming language.
It aims to be simple, canonical, and practical.
This baby project is under heavy development.
Any contributions would be appreciated.
Join the Google group today!
Current status
See the issues.
Tisp is actively developed and work in progress.
Stay tuned!
Installation
go get github.com/raviqqe/tisp/src/cmd/tisp
You need Go 1.8+.
Features
- Purely functional programming
- Impure function calls in pure functions are detected and raise errors at
runtime.
- Implicit parallelism and concurrency
- Most of the time, you don't need to parallelize your code explicitly.
Tisp does it all for you!
- Inherently, programs written in Tisp run concurrently and can run
parallelly.
- Optional injection of parallelism and causality
- You can also increase parallelism of your code or run functions
sequentially using
par
or seq
primitives.
(par
is not implemented yet.)
- Asynchronous IO
- Every IO can be run asynchronously by the
par
primitive.
- Dynamic typing
Documentation
Visit here.
Examples
Try scripts in test directory (test/*.tisp
) by running:
tisp test/$filename.tisp
Some examples in examples directory work but not all because
some features are not implemented yet.
Contributing
Please send pull requests, issues, questions or anything else.
See also the documentation
on how to develop Tisp.
FAQ
What languages is Tisp inspired by?
The following is their list with ideas and technologies which come from them.
- Haskell
- The concept of "Time is Space"
- Lazy evaluation and data structures to realize it
- Clojure
- Everything is a value; no object system
- The syntax and macro system
- OCaml
- The syntax close to pure lambda calculus and of mutual recursion
- Python
- The Zen (See
python -c 'import this'
.)
- The syntax of function calls with positional and keyword arguments
- Go
- Simplicity
- Tisp utilizes Go's coroutine runtime.
License
MIT