複合名

複合名は式である。複合名を式として評価したとき、その値は以下のように決定される。

argument, resolution argument, continuation argument を姓とする複合名は、それぞれコンテキスト引数 (context argumet)、引数解決時引数 (resolution argument)、コンティニュエーション引数 (continuation argument) として評価される。

互換性についての注意 過去の言語仕様との互換性のため、tentative context を姓とする複合名は引数解決時引数として評価される。この仕様は将来的に削除される可能性がある。

argument symbol を姓とする複合名は有名ベクトル (named vector) として評価される。argument symbol を姓とする複合名は引数の名前を表すために使われる。

decimal, hexadecimal を姓とする複合名は、それぞれ 10 進法、16 進法の数値として評価される。この数値は自然数型になる。パステルステッチの自然数型は 0 以上の整数を表現する。ただし、固有名が数値として解釈できない文字列であるときは、ブーリアン型 (Boolean) の false として評価される。また、姓 binary は 2 進法の数値のために予約されている。

互換性についての注意 言語仕様 2015 では自然数型が導入された。これに伴い、リテラルな数値は自然数型の値として評価されるようになった。過去の言語仕様では、リテラルな数値は分母が 1 の有理数として評価されていた。この変更により、既存のプログラムは大規模な変更が必要になる可能性がある。

static local name を姓とする複合名は、出現するたびに、固有名が互いに異なり、姓が resolved static local name である有名ベクトルとして評価される。mentioned above を姓とする複合名は、固有名が同じで姓が static local name である複合名のうち、直前に出現したものと同じ有名ベクトルとして評価される。mentioned above を姓とする複合名が記述されているにもかかわらず、固有名が同じで姓が static local name である複合名がそれ以前に記述されていない場合の動作は、実装により異なる。

main を姓とする複合名のうち、固有名が算用数字 (0 から 9 の文字) のみから成るものは、10 進法の数値として評価される。これは decimal を姓とする複合名と同じである。また、姓が main で、固有名が true, false, null, empty set, empty string, terminal continuation であれば、それぞれ、ブーリアン型の true、ブーリアン型の false、零ベクトル、空集合、空文字列、終端コンティニュエーションとして評価される。姓が main で固有名が % である複合名は、シーケンシャル演算スタック (sequential operation stack) のトップの値として評価される。シーケンシャル演算スタックが空である場合の動作は実装により異なる。

互換性についての注意 固有名が算用数字から構成されており、姓が main である複合名が 10 進法の数値として評価される仕様は、過去との互換性のために維持されている。新しいプログラムでは姓 decimal を使用するべきである。

互換性についての注意 empty stringmain 複合名が空文字列と解釈される仕様は、過去との互換性のために維持されている。新しいプログラムでは空文字列リテラルを使用するべきである。

これまでの規則で値が決定しない複合名は有名ベクトルとして評価される。