Skip to content

Latest commit

 

History

History
53 lines (42 loc) · 2.07 KB

README.md

File metadata and controls

53 lines (42 loc) · 2.07 KB

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 以下に言語自体のドキュメントを用意しました。随時拡張予定です。