<!--
SPDX-FileCopyrightText: 2024 Jummit <jummit@web.de>

SPDX-License-Identifier: CC0-1.0
-->

# Impy

Small implementation of the [Imp language](https://www.scattered-thoughts.net/writing/imp-sets-and-funs/) by [Jamie Brandon](https://www.scattered-thoughts.net/).

This is in no way useful or feature complete, I made it because I found the language concept fascinating and wanted to give implementing it a try.

Nonetheless, the goal of this project is a standalone package which could be embedded in projects which could make use of a little query language.

**Example:**

```imp
let rooms = 1 | 2 in
let names = 1 x "house" | 2 x "street" in
let tiles = 1 x "111000" | 2 x "000111" in

rooms (room ->
	when (names room "street") then
		tiles room)
```

## Installation

```sh
make
make install
```

This will install the `impy` binary to `/usr/bin`. To install somewhere else:

```sh
PREFIX=~/.local make install
```

## Development

**Running the tests:**

```sh
make test
```

When adding files, make sure to add the SPDX license identifier at the top.

Run `reuse lint` to check REUSE compliance.

## License

The code in this project is licensed under GPL-3.0-or-later. Assets like this readme are licensed under CC0.