Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/issadarkthing/spirit
Interpreted, functional programming language with clojure syntax
https://github.com/issadarkthing/spirit
clojure functional-language programming-language
Last synced: 1 day ago
JSON representation
Interpreted, functional programming language with clojure syntax
- Host: GitHub
- URL: https://github.com/issadarkthing/spirit
- Owner: issadarkthing
- License: gpl-3.0
- Created: 2020-10-13T00:20:34.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-10-23T10:57:39.000Z (27 days ago)
- Last Synced: 2024-10-24T16:16:37.691Z (26 days ago)
- Topics: clojure, functional-language, programming-language
- Language: Go
- Homepage:
- Size: 682 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Spirit
Spirit is a scripting, functional language inspired by Clojure. Spirit
does not target JVM machines instead it's interpreted line by line. This has
the advantage of fast startup and suitable for scripting environment.## Background
This programming language is just an experiment for me to tinker and mess around
in building programming language. I always wanted to build my own programming language
and implement some of the things that may have on another language to this language.
Lisp-like syntax is chosen because it is easy to parse, consistent and elegant.
But, as you see the syntax is not directly inherited from Lisp rather the syntax
is much, much similar to Clojure.## Data Types
- String
- Number
- List
- Vector
- HashMap
- Set
- Atom
- Future## Differences
These are the differences that I deliberately made to differ from Clojure.- Function hoisting for `defn` and `defmacro`
- Function `apply` in clojure is equivalent to `<>` in spirit
- All functions that acts on Seq returns the same concrete type Seq.
For example, `map` on **`Vector`** returns **`Vector`** instead of **`List`**
- **`Keyword`** is used instead of **`String`** as key when parsing JSON object.
- Object Oriented system