Skip to content

Functional programming language created for hobby programming on the JVM

License

Notifications You must be signed in to change notification settings

hexaredecimal/Zulu

Repository files navigation

ZULU Programming Language

CI

Key features

  • Functional programming, manage data in functional style
  • Supports Java interoperability
  • PKG Manager
  • Pattern matching
    • Variables (see Pattern matching in Examples)
    • Functions (see Pattern matching in Examples)
    • Case Expression case [1, 2, 2] -> of [H :: T]: io:fwriteln("%s | %s", H, T). end.
  • Multi-assignment
  • Null safety
  • Spawn process, send message and don't worry about errors in it
  • Generator jamming (eval GeneratorAST before running the program)
  • Easily distribute programs by using dist module
  • Usually, distributed program is very small in terms of memory
  • Built-in optimization (constant folding, propagation, expression simplification and more)
  • Two Zulu instances can talk to each other by sending signals (see examples/chat.zulu)
  • Clean syntax

Zulu is a interpreted erlang-like language based on JVM.

Installation

Install the latest release and Java SE 21 and Apache Ant.
$ git clone git@github.com:hexaredecimal/Zulu.git
$ cd Zulu
$ ant
$ ./install.sh

After running these commands Zulu should be installed in the .local/bin directory.

$ zulu help

Usage

Project

$ zulu new
 Enter project name: <project_name>
$ cd code
$ nvim main.zulu

To compile a project just type zulu and it will build and run.

Reference

Barley - Forked parent

Erlang - Major inspiration

Java - Compiler and FFI implementations