Skip to content

SindarinLang/sindarin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🕊
Sindarin ~

"One Language to Rule Them All"

Sindarin is an attempt to design a "universal transpiler". Primitives are imported so multiple transpilation targets can be used as "backends" for the language.

"Write once, run any how."

Contents

Philosophy

Syntax

Keywords

Sindarin has no keywords - only operators and punctuation.

Separators

Separators are good. They create "visual abstraction", and make code easier to read. Sindarin requires semicolons at the end of assignments, and uses curly braces for blocks.

Operators

Operators should visually imply their function as much as possible.

Autocomplete

A language should be grammatically ordered such that autocomplete is possible. For example, the import / from ordering in JavaScript prevents useful autocomplete:

import { foo } from "bar;

Instead, imports in Sindarin are reversed:

bar { foo };

Features

"Function Oriented"

Sindarin is designed to make function oriented programming easy. Partial Application for example, makes currying much easier.

Type Safe

Sindarin is designed to be type safe, even when the underlying transpilation target is not.

Docs

Language

LLVM Branch

The previous version of Sindarin was simply focused on syntax, rather than on transpilation. The llvm branch has a lot more code (including a proof-of-concept LLVM compiler written in TypeScript), but has a less developed syntax.

Releases

No releases published

Packages

No packages published

Languages