複合名

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

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

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

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

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

互換性についての注意 言語仕様 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 であれば、それぞれ、ブーリアン型の true、ブーリアン型の false、零ベクトル、空集合、空文字列として評価される。

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