他の言語との違い#
外部の画像処理は、GLSLなどの外部実装でCNL定義との役割分担を説明しています。初期方式は決定していますが、実行機能は未実装です。
CNLはJavaScript/TypeScriptに近い記法を使いますが、独立した型付きの計算言語です。似た見た目で学び始められるようにしながら、画像・Field・Nodeとの共通の意味を保ちます。
| 項目 | CNLの現在の規則 |
|---|---|
| 関数 | function name(input: Type): Type { ... } |
| ローカル | const name = expression;。不変、型推論 |
| 基本の数値 | FloatとIntegerを区別。単なる1はFloat |
| Boolean | true・false。数値やStringのtruthinessなし |
| 比較 | ==と===は同じ型付き比較 |
| 文字列 | literal(String, "...")、string_concat |
| オブジェクト・配列 | JavaScriptの動的オブジェクトや一般配列は未対応 |
| 分岐 | selectは値の選択。遅延するifや?:は未実装 |
| 反復 | 検証済みの静的回数のRepeat Zone |
| パッケージ | npm・ブラウザーAPI・Node.js環境は含まない |
CNLのコンパイラーやAEプラグイン本体はC++で作ります。利用者がCNLを書く際に、C++のビルド環境を用意するという意味ではありません。
GLSL/HLSLなどの外部実装を、型付きの入力・出力・資源・副作用・版の契約で取り込む方向です。現時点で任意のshaderファイルをimportしたり、その引数が自動でノードに並んだりする機能はありません。主言語・Node・外部実装で型の意味が変わらないことを完成条件に含めます。
以前のfn・->・不変のletは引き続き受け付けます。同じ計算を表す別の記法です。生成するCodeはfunction・:・constへそろえます。