このプロジェクトについて
kanso (簡素) は、ソースファイルには決定事項のみが含まれるべきであるという考えに基づいて構築されたプログラミング言語です。通常、スタイルガイドやリンター、コードレビューで慣習的に強制される内容は、代わりにコンパイラによって強制されます。非標準的なスペース、インデント、空行の配置は構文エラーとなり、名前にはsnake_caseが使用され、宣言とレコードフィールドはアルファベット順に並べられ、オーバーロードは最も具体的なものが先に来るように隣接して配置されます。すべてのプログラムに唯一の標準的なレンダリングが存在するため、フォーマッタは存在しません。
READMEで強調されているセマンティクスには、純粋性と記述としてのエフェクトが含まれます。printやシーケンス演算子 >> は、ランタイムが実行する作業の記述を生成し、--planオプション付きのcheckコマンドは、それを実行する代わりにその記述を表示します。失敗は例外ではなく値として扱われます。err reasonとnoneは、オーバーロードがそれらをディスパッチするまで伝播するため、ゼロ除算や範囲外のインデックス参照はクラッシュせず値を返します。ディスパッチはリテラル、具体型、ジェネリクスに対して、最も具体的なものから順に機能します。この言語は、型付きフィールドを持つ単一コンストラクタのレコード型、位置ベースの構築、位置ベースおよびキー付きサブセット形式の両方での解体、カンマを一切使用しないフラットな並置適用、任意精度整数、文字列補完、1ベースのインデックスを持つリスト、パイプされた値が第一引数となるドットパイプ、およびラムダをサポートしています。追加のコンパイル時チェックにより、未使用のバインディング、未使用の式、使用前の再バインド、および宣言された関数、型、組み込み関数のシャドウイングが拒否されます。xs[i]やm[k]によるインデックス参照は厳格ですが、at xsは期待される不在を表現します。
モジュールはディレクトリとして定義されます。1つのモジュールは同一の名前空間を共有する任意の数のファイルにまたがり、アンダースコアで始まる名前はモジュールプライベートとなり、未使用のプライベート宣言はエラーとなります。READMEでは、tests/goldenにあるエラーコーパスが成功コーパスと同様に重要であることが強調されています。
v0セクションでは、認められている近似値と未解決のポイントが挙げられています。エンドポイントルールはコンパイル時ではなくランタイムでチェックされます。ジェネリックパラメータがerrまたはnoneにバインドされることはありません。標準的な宣言順序は一つの解釈です。パイプターゲットは1つの適用として解析され、呼び出し不可能なターゲットはランタイムで失敗します。if形式は暫定的なものです。ネイティブのintはint64であり、オーバーフローはコンパイル済みバイナリの欠陥としてトラップされます(インタプリタのbigintとは異なります)。タイプセット、レコード更新、ビルドリージョン、プロセス、エフェクトポリモーフィズム、およびLSPはまだ実装されていません。
エディタサポートは、.ksoファイル向けにJetBrains IDEおよびVS Codeで使用可能な単一のTextMateバンドルが提供されています。開発にはcargo testが使用され、ユニットテストとゴールデンファイルコーパスをカバーしています。プロジェクトはMITライセンスです。ドキュメント、仕様書、およびコンパイラノートはGitHub Pagesサイトで公開されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.