<commit_before># Tisp

[![wercker status](https://app.wercker.com/status/68b66e4881f08974e109a864520e369f/s/master "wercker status")](https://app.wercker.com/project/byKey/68b66e4881f08974e109a864520e369f)
[![codecov](https://codecov.io/gh/raviqqe/tisp/branch/master/graph/badge.svg)](https://codecov.io/gh/raviqqe/tisp)
[![codebeat badge](https://codebeat.co/badges/3a45a98c-ad7d-4a0a-8011-241f0ae4682c)](https://codebeat.co/projects/github-com-raviqqe-tisp-master)
[![Go Report Card](https://goreportcard.com/badge/github.com/raviqqe/tisp)](https://goreportcard.com/report/github.com/raviqqe/tisp)
[![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

![inputs to outputs](img/inputs_to_outputs.png)

Tisp is a "Time is Space" programming language.
It aims to be simple, canonical, and practical.

## 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, codes written in Tisp can be run concurrently.
- Optional injection of parallelism and causality
  - You can also increase parallelism of your code or run functions
    sequentially using `par` or `seq` primitives.
- Asynchronous IO
- Dynamic typing

## Current status

See [the issues](https://github.com/raviqqe/tisp/issues).
Tisp is actively developed and work in progress.
Stay tuned!

## Examples

Try scripts in [test directory](test) (`test/*.tisp`) by running:

```
tisp test/$filename.tisp
```

Some examples in [examples directory](examples) work but not all because
some features are not implemented yet.

## FAQ

### What languages is Tisp inspired by?

The following is their list and ideas 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

## License

[MIT](LICENSE)<commit_msg>Add python to parents<commit_after># Tisp

[![wercker status](https://app.wercker.com/status/68b66e4881f08974e109a864520e369f/s/master "wercker status")](https://app.wercker.com/project/byKey/68b66e4881f08974e109a864520e369f)
[![codecov](https://codecov.io/gh/raviqqe/tisp/branch/master/graph/badge.svg)](https://codecov.io/gh/raviqqe/tisp)
[![codebeat badge](https://codebeat.co/badges/3a45a98c-ad7d-4a0a-8011-241f0ae4682c)](https://codebeat.co/projects/github-com-raviqqe-tisp-master)
[![Go Report Card](https://goreportcard.com/badge/github.com/raviqqe/tisp)](https://goreportcard.com/report/github.com/raviqqe/tisp)
[![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

![inputs to outputs](img/inputs_to_outputs.png)

Tisp is a "Time is Space" programming language.
It aims to be simple, canonical, and practical.

## 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, codes written in Tisp can be run concurrently.
- Optional injection of parallelism and causality
  - You can also increase parallelism of your code or run functions
    sequentially using `par` or `seq` primitives.
- Asynchronous IO
- Dynamic typing

## Current status

See [the issues](https://github.com/raviqqe/tisp/issues).
Tisp is actively developed and work in progress.
Stay tuned!

## Examples

Try scripts in [test directory](test) (`test/*.tisp`) by running:

```
tisp test/$filename.tisp
```

Some examples in [examples directory](examples) work but not all because
some features are not implemented yet.

## FAQ

### What languages is Tisp inspired by?

The following is their list and ideas 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

## License

[MIT](LICENSE)
{'fraction_non_alphanumeric': 0.11511254019292605, 'fraction_numerical': 0.030868167202572346, 'mean_word_length': 4.314350797266515, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 22, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5023788', 'n_tokens_mistral': 1644, 'n_tokens_neox': 1505, 'n_words': 456}