部分実装

関数とスコープ#

関数は、型付きの入力から結果を作る、再利用できる処理です。Groupも関数・スコープ・呼び出しとして扱います。全ノードの内部が別Workspaceになる、という仕組みにはしません。

自作関数を呼ぶ#

function remap(value: Float, gain: Float, bias: Float): Float {
  return value * gain + bias;
}

function main(value: Float): Float {
  const bright = remap(value, 2, 0.1);
  return remap(bright, 0.5, 0);
}

入力の数と型が関数の宣言に合う必要があります。省略できる標準入力は、標準関数の宣言が初期値を持つものに限ります。画面上の表示名から型や初期値を決めません。

同じ名前のローカル値は関数の外には出ません。別の関数に必要な値は、入力として渡します。動的な変数の書き換え、再帰、関数内での関数定義、一般のクロージャーは未実装です。

宣言と評価#

共通のルート解析では、先に宣言を集めてから呼び出しを解決します。そのため後ろにある関数も参照できます。このガイドでは、低水準の逐次パーサーでも読めるように補助関数を先に置きます。

対話中の評価は選んだ出力から必要な処理をたどります。無関係な下書き関数や未接続ノードがあるだけで、現在の出力を実行不能にしないことが契約です。一方、文書全体を検証するコマンドは、宣言されたすべての関数を検査します。

ファイルとWorkspace#

一つのWorkspaceの主プログラムを一つのCNLで記述し、その中で補助関数を呼ぶ形を基本にします。標準関数を呼ぶたびに、Workspace内へその実装ファイルをコピーする必要はありません。

将来、自作ノードやライブラリを補助ファイルへ分けて参照できるようにします。現在、import構文、.cnlfなどの補助拡張子、ファイルを置くだけでの自動読み込みは実装していません。Workspaceの現在の契約と言語の完成条件で区別します。

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

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

ドキュメントを検索

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

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