origlang (仮称)
@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
という記法を使うが、この言語はそうではない
- グローバル空間に何もかもぶちまけない
- 例えば、PHPは(おそらく過去の互換性の観点から) 名前空間を使えるにも関わらず標準ライブラリの関数が全てグローバル空間に置かれているが、この言語はそうではない
- ポインタではない形におけるマルチバイト文字の対応 (UTF-8)
- 適切なセマンティクスを考慮した診断
- 最初から組み込まれたリンター
現状の機能
- 静的型付け
- 符号付き整数
- UTF-8文字列
- 真偽値
- タプル
- ユニット値
- 四則演算
- 等価性判定
if
式
- ブロック式
- レキシカルスコープ
- ...
実装
package
以下にサブクレートとして存在しています。大まかな解説はpackage/README.md
を参照してください。
初めての方へ
docs
以下に言語自体のドキュメントを用意しました。随時拡張予定です。