部分実装

CNLの記法#

現在のCNLは、型付き関数と変更できないローカル値を基本にしています。インデントを自由に整えても意味は変わりません。括弧と文末の;は必要です。

関数#

function adjust(value: Float, offset: Float): Float {
  const shifted = value + offset;
  return shifted;
}

functionの後ろに関数名、()の中に入力、)の後ろに戻り値の型を書きます。本文は{}で囲みます。入力と戻り値には型が必要です。ローカル値の型は式から決まるので、現在はconst shifted: Float = ...のような型注釈は使いません。

本文にはconst 名前 = 式;を並べ、最後に一つのreturn 式;を書きます。再代入、同じ名前の二重定義、returnの後ろの文はエラーです。一般のif・for・whileはまだ使えません。

名前とコメント#

識別子には英字・数字・_を使い、先頭は英字か_にします。標準関数にはstd.filter.gaussian_blur_autoのような、.で区切った名前もあります。大文字と小文字は区別します。日本語はコメント、String、画面上の表示名に使えます。

// 入力を少し明るくする
function main(value: Float): Float {
  /* コメント内の { } は構文に影響しません。 */
  return value + 0.1;
}

//は行末まで、/* ... */は複数行のコメントです。ブロックコメントは入れ子にできません。閉じ忘れはエラーです。KernelやGridの係数配列など、専用のデータ記法の内部はそれぞれの規則に従います。

function、const、return、true、false、fn、let、if、else、for、while、break、continue、import、export、operatorは名前に使えません。operator.で始まる名前も演算子用です。予約されていても、未実装の構文が使えるわけではありません。

リテラル#

書き方 値
1、0.25 Float。小数点がなくてもFloatです
true、false Boolean
literal(Integer, 1) Integer
literal(String, "こんにちは") String
literal(Color, 1, 0.5, 0, 1) Color。RGBAの順です
function greeting(): String {
  return literal(String, "こんにちは");
}

現在、単独の"..."はファイルパスなどに使うbyte Bufferです。Stringにはliteral(String, "...")を使います。Stringとbyte Bufferは別のデータです。型を変えたい場合も、戻り値の注釈だけで暗黙に変換されることはありません。

以前のfn 名前(...) -> 型、let 名前 = ...;も同じ意味の別記法として受け付けます。NodeからCodeを生成するときはfunction・:・constを使います。

このページを編集GitHubへのアクセス権が必要です。

CompNode Guide · 日本語製品ドキュメント仕様と実装範囲は各項目で区別しています。

ドキュメントを検索

検索語を入力してください。

    ↑ ↓ で結果を移動、Enter で開く · 検索はこの端末内だけで実行されます。