PL-{GOTO}.NET
=============
<!--
SPDX-FileCopyrightText: Chris Pressey, the original author of this work, has dedicated it to the public domain.
For more information, please refer to <https://unlicense.org/>
SPDX-License-Identifier: Unlicense
-->
_Try it online_ [@ catseye.tc](https://catseye.tc/installation/PL-%7BGOTO%7D)
| _See also:_ [Exanoke](https://codeberg.org/catseye/Exanoke#exanoke)
- - - -
This is the reference distribution of PL-{GOTO}.NET, a literate Haskell
program which compiles a program written in PL-{GOTO} to a [CIL][] file which
can then be assembled by `ilasm` to produce a .NET executable. PL-{GOTO}
is a pedagogical language, described in Brainerd and Landweber's _Theory of
Computation_ (1974; ISBN 0471095850), in which it is possible to express
only computations which are primitive recursive.
The source code of the compiler is in the file
[`src/PLexceptGOTOdotNET.lhs`](src/PLexceptGOTOdotNET.lhs). Being written
in literate Haskell, it also serves as documentation for the compiler.
A [test suite](tests/PLexceptGOTOdotNET.md) written in
[Falderal][] format can be found in the `tests` directory and
can be run with the `test.sh` script in the root directory.
The `bin` directory contains
[`bin/PLexceptGOTOdotNET-loadngo`](bin/PLexceptGOTOdotNET-loadngo),
a shell script that demonstrates the end-to-end usage of the compiler.
You'll need `ilasm` installed. On Ubuntu, this is provided by the
`mono-devel` package.
The materials in this distribution are in the public domain; see the file
[LICENSES/Unlicense.txt](LICENSES/Unlicense.txt) for more information.
[CIL]: https://en.wikipedia.org/wiki/Common_Intermediate_Language
[Falderal]: https://catseye.tc/node/Falderal