An interpreted, statically typed, lazily evaluated functional programming language. Parakeet is an attempt to learn more about programming languages and interpreters.
Parakeet's goal is to be a language with pure functional features while remaining lightweight. Many purely functional languages are hindered by slow compilers and difficult syntax for programmers coming from popular programming languages in other paradigms. Parakeet is designed to be easily picked up by all programmers, whether it is their first functional language or not, while being a good tool for quick iteration.
Parakeet is available to run as a REPL application as well as interpret source files.
compile
: Compile the projecttest
: Compile the project and run the test suiterun
: Compile the project and run the Parakeet REPLrun /path/to/sourcefile
: Compile the project and run the file located at/path/to/sourcefile
clean
: Deletes files created by SBTpackage
: Produces a .jar artifacttasks
: See other available tasks
scalafmt
: Scala formatter for the project- Formats source files in the style outlined in the project's
.scalafmt.conf
file
- Formats source files in the style outlined in the project's
This section assumes you have a built version of Parakeet with the binary name parakeet
parakeet
: Launches the REPLparakeet /path/to/sourcefile
: Compile the project and run the file located at/path/to/sourcefile
AST StructureNumeric Evaluation+, -, *, / operatorsModulus operatorExponent operator
Primitive String EvalutionStart test suite for unit testing previously completed workPrimitive Type StorageREPL storage between commandsError handling for Parsing and RuntimeSource files- Function Declaration
Type DeclarationType Restriction- Algebraic Data Type evalution
- String Data Type
- Entrypoint definition
- Lazy Evaluation
- Custom Data Type Storage
- Pattern Matching
- Robust Stacktraces for Error Handling
- Type Inference