Sindarin
"An elegant language, for a more civilized age."
Install / Use
/learn @SindarinLang/SindarinREADME
Sindarin is an attempt to design a "universal transpiler". Primitives are imported so multiple transpilation targets can be used as "backends" for the language.
<h2 id="contents"><div align="right"><a href="#sindarin">🔝</a></div><i>Contents</i></h2> <h2 id="philosophy"><div align="right"><a href="#sindarin">🔝</a></div><i>Philosophy</i></h2>"Write once, run any how."
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.
