Metadata-Version: 2.2
Name: rfpl
Version: 1.0.0
Summary: Recursive Functional Programming Language
Author-email: AmirMohammad Bandari Masoole <ambandarim@gmail.com>, Parsa Alizadeh <parsa.alizadeh1@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/AMBandariM/RFPL
Classifier: Topic :: Software Development :: Interpreters
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENCE
Requires-Dist: prompt_toolkit<4,>=3
Requires-Dist: antlr4-python3-runtime<4.14,>=4.13

# RFPL: Recursive Functional Programming Language

RFPL is a recursive functional programming language designed primarily for educational purposes. It introduces the concept of primitive recursion—which you can read about on [Wikipedia](https://en.wikipedia.org/wiki/Primitive_recursive_function)—and can also be used for non-educational purposes, such as for fun or challenges.

## Usage

### Installation

#### Easy Way

Install ANTLR4. Clone the repository and use `make` to run RFPL:

```console
$ git clone https://github.com/AMBandariM/RFPL
$ cd RFPL
$ make          # Launch RFPL's interactive console
$ make journey  # Start "The RFPL Journey"
```

#### Easier Way

Alternatively, you can install RFPL using pip:

```console
$ pip install rfpl
```

Then run:

```console
$ rfpl      # Launch RFPL's interactive console
$ journey   # Start "The RFPL Journey"
$ # or run with `python -m rfpl` and `python -m journey` if there was PATH errors.
```

### VSCode Syntax Highlighter
To enable syntax highlighting for RFPL files in VSCode:

1. Open the Extensions panel.
2. Search for `RFPL`.
3. Install the **RFPL Syntax Highlighter** extension, which provides highlighting for `.rfpl` files.

## Development and Contribution
### Translating "The RFPL Journey"

You are welcome to translate the file `./journey/journey_en.json` into your native language. Submit your translation, if the translation meets our quality standards, we will include it in future releases with your name and contact information.

### Future Development

Although Version 1 of RFPL is complete and published, we have plans for future improvements:
- **Refactoring:** Extracting 'fundamental' functions from the interpreter.
- **User Experience:** Implementing a robust cache and function-guessing system.
- **Dependency Management:** Potentially removing ANTLR and other nonessential dependencies.

### Documentation
You have to experience the language and read the source code. There is no additional documentation at this time—sorry about that.

## Contact Information
- **Parsa Alizadeh** \[[parsa.alizadeh1@gmail.com](mailto:parsa.alizadeh1@gmail.com)\]

- **AmirMohammad Bandari Masoole** \[[ambandarim@gmail.com](mailto:ambandarim@gmail.com)\]

