https://github.com/molarmanful/sclin
A concatenative cyborg chimera.
https://github.com/molarmanful/sclin
arbitrary-precision array-language concatenative-language esolang functional-language goto interpreter scala stack-based-language type-conversion weird-language
Last synced: 19 days ago
JSON representation
A concatenative cyborg chimera.
- Host: GitHub
- URL: https://github.com/molarmanful/sclin
- Owner: molarmanful
- License: mit
- Created: 2022-09-15T19:30:23.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-12-27T07:34:46.000Z (4 months ago)
- Last Synced: 2024-12-27T08:28:06.401Z (4 months ago)
- Topics: arbitrary-precision, array-language, concatenative-language, esolang, functional-language, goto, interpreter, scala, stack-based-language, type-conversion, weird-language
- Language: Scala
- Homepage:
- Size: 652 KB
- Stars: 9
- Watchers: 2
- Forks: 1
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 
[](https://central.sonatype.dev/artifact/io.github.molarmanful/sclin_3)
[](https://github.com/molarmanful/sclin/actions)
[](./LICENSE)```sclin
sclin 100I-a \; tap
"Fizz""Buzz", over 3 5, % ! *` \pop ||# n>o
```[Try it on
scline!](https://scline.fly.dev/##H4sIAAY3AWUCAzM0MPS0S1SIsVYoSSzgUlBQcsusqlJScioFkjoK.WWpRQrGCqY6CqoKigpaCQoppQUKMQX5BQo1ygp5dvkAKdsWfD4AAAA#)> _A concatenative cyborg chimera._
**sclin** is a programming language that leans heavily into its weirdness. Some
of its features include:- **Postfix notation** - sclin reads left-to-right with no precedence rules.
_Concatenation is composition!_
- **The Stack** - sclin's FIFO stack serves as both storage and a "staging
ground" for function arguments. This - in tandem with stack manipulation
commands - enables an intuitive point-free style that mirrors those found in
functional languages.
- **Line-jumping** - sclin treats each line as a separate function, enabling
"GOTO"-style line execution commands to create recursion and other control flow
structures.
- **Vectorization** - Most of sclin's built-in commands vectorize, which allow
those commands to operate on arbitrarily nested data structures.
- **Concise symbols** - sclin's commands follow a pictographic language to
convey and distinguish properties.
- **Type fluidity** - Most (if not all) sclin commands auto-convert types as
necessary, eschewing type safety for flexibility and expressiveness.For more info/docs, please visit the
[wiki](https://github.com/molarmanful/sclin/wiki).## Installation
### Browser Interface
[Try it on scline!](https://scline.fly.dev) The official online interpreter for
sclin.### Requirements
- JRE/JDK 21+
### Installation with [Coursier](https://get-coursier.io)
```sh
cs install --contrib sclin
```### Prebuilt Executable
Download the [latest executable JAR from
releases](https://github.com/molarmanful/sclin/releases) and place it on your
`$PATH`. Verify that it works with `sclin --help`.### Building from Scratch
Clone this repo, `cd` into it, and run `./mill sclin.assembly` (use `mill.bat`
instead of `mill` if on Windows). The built JAR is at
`out/sclin/assembly.dest/out.jar`.## Tooling/Projects
- [tree-sitter-sclin](https://www.npmjs.com/package/tree-sitter-sclin) -
Ultra-primitive tree-sitter grammar for syntax highlighting.
- [Advent of Code 2023](https://github.com/molarmanful/aoc-2023) -
Solutions written in sclin.## Licensing
Made with ♥ by Ben Pang. Released under the MIT License.