https://github.com/kisaragieffective/origlang
https://github.com/kisaragieffective/origlang
programming-language static-typed toy-language
Last synced: 9 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/kisaragieffective/origlang
- Owner: KisaragiEffective
- License: other
- Created: 2022-06-28T18:56:23.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-04-29T02:10:52.000Z (9 months ago)
- Last Synced: 2025-04-29T03:29:25.749Z (9 months ago)
- Topics: programming-language, static-typed, toy-language
- Language: Rust
- Homepage:
- Size: 1.77 MB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 103
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# origlang (仮称)
[`@KisaragiEffective`](https://github.com/KisaragiEffective) による個人的な研究プロジェクト。
## 目的
* 既存のプログラミング言語に対する理解を深める
* 先端的なアイデアが実用的かどうかの実験
## 言語設計のコンセプト
* 既存の言語の良いところをピックアップする
* ユーザーエクスペリエンスの観点から見て必須ではない制限を取り除く
* 明示的に緩めない限り強いセマンティクスをもたせる
* ❌
* C++'s `noexcept`
* Java's `final`
* ⭕️
* Kotlin's `open`
* Rust's `mut`
* Java's `throws`
* nb. no plan to introduce checked exception
* 対称性よりも実用性を優先する
* 例えば、Lispはほぼすべての物事が伝統的にコンスリストで処理されるが、この言語はそうではない
* 例えば、Zigはジェネリクスの型引数を宣言する際、`comptime T: type`という記法を[使う](https://ziglang.org/documentation/master/#Generic-Data-Structures)が、この言語はそうではない
* グローバル空間に何もかもぶちまけない
* 例えば、PHPは(おそらく過去の互換性の観点から) 名前空間を使えるにも関わらず標準ライブラリの関数が全てグローバル空間に置かれているが、この言語はそうではない
* ポインタではない形におけるマルチバイト文字の対応 (UTF-8)
* 適切なセマンティクスを考慮した診断
* 最初から組み込まれたリンター
## 現状の機能
* **静的型付け**
* 符号付き整数
* UTF-8文字列
* 真偽値
* タプル
* ユニット値
* 四則演算
* 等価性判定
* `if`式
* ブロック式
* レキシカルスコープ
* ...
## 実装
`package` 以下にサブクレートとして存在しています。大まかな解説は`package/README.md`を参照してください。
## 初めての方へ
`docs` 以下に言語自体のドキュメントを用意しました。随時拡張予定です。