Navigation Menu

Skip to content

rishiosaur/sepia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŒ‡ Sepia

Github Build status GitHub Workflow Status (event) GitHub GitHub issues GitHub contributors GitHub last commit

A minimal, extremely opinionated, functional programming language.

Installation

On macOS/Linux systems with Homebrew installed, you can add Sepia by running brew install rishiosaur/taps/sepia.

To test sepia out, run sepia in any folder!

Running examples

Clone rishiosaur/sepia, then change directories into the cloned directory. Run sepia examples/types.sp as a first example.

VS Code Extension

I've also designed a VSC toolset around Sepia, which you can find on the VS Code Marketplace.


🎨 Design Goals

Sepia started off as a project to get to learn interpreters in-depth in as short a timeframe as possible (I'll always remember those 20 hours).

However, it ended up being an idealized version of what I believe programming languages should be: it's a project that's aimed squarely at replacing some of the more well-known languages in my workflow.

πŸ“š Readability.

I'm sick and tired of programming languages not being intuitive to write. Whether that be understanding the way that this works in JS or figuring out why type checking syntax is the way it is in Go, nearly every major programming language has some unintuitive piece of it.

Sepia aims to replace every bit of unclear syntax with something that makes sense (usually borrowed from a mathematical convention). Every piece of syntax and semantic should have some reason for its implementation.

πŸ›  Functionality (alternatively, the destruction of OOP).

I've always hated the notion of classes and methods 'on' types: it's obtuse, and doesn't lead to great generalizations.

That's why structures are exactly (and exclusively) what they sound like: a type that defines the structure of data. All functions that're supposed to work 'on' those types are just functions with an argument that requires that type. This not only means that parsing is easier, strong typing is available WHEN NEEDED, and programs execute faster, but it's also a lot easier to understand, and allows for incredible generalizations.

πŸ‘ Minimalism.

When possible, Sepia tries to reuse existing syntax or keywords, and places a focus on clever algorithmic work and efficiency (wrapping the interpreter in Go gives Sepia easy concurrency for asynchronous applications): it doesn't even have loops!


About

πŸŒ† A minimal language designed for utility, functionality, readability and concurrency.

Resources

License

Stars

Watchers

Forks

Packages

No packages published