パステルステッチの値は以下のデータ型を持つ。

互換性についての注意 有限集合と無限集合は廃止された。かわりにイミュータブルセットコンテナを使用できる。

ブーリアン

ブーリアン型 (Boolean) は「真」と「偽」の 2 種類の値を持つ。truemain 複合名と falsemain 複合名はそれぞれ真と偽を表す。

ブーリアン型の値に対して論理演算 ^and, ^or, ^not を使用できる。意味はそれぞれ、論理積、論理和、論理否定である。ブーリアン型でない値に対してこれらの論理演算を行った場合は、ブーリアン型でない値は真と解釈される。同様に、条件分岐では、ブーリアン型でない値は真と解釈され、ブーリアン型の false だけが偽と解釈される。

自然数

パステルステッチの自然数 (natural number) は 0 以上の整数を表現する。自然数の最大値は実装により異なる。そのため、実装によってはオーバーフローすることがある。

自然数に対して演算子 +, −, ∗, / でそれぞれ加算、減算、積算、除算ができる。自然数に対してこれらの演算を行ったとき、演算の結果も自然数である。0 で除算したときの動作は実装により異なる。また、除算が割り切れない場合の結果は実装により異なるが、いずれの実装でも、誤差が 1 以下の値が返される。

自然数の大小関係は演算子 =, <, ^le で比較できる。

有理数

パステルステッチの有理数 (rational number) は符号、分子、分母の組である。符号は有理数が正であるか負であるかを表す。分子は 0 以上の整数であり、分母は 0 より大きい整数である。ただし、分子が 0 であるとき、符号は正で、分母は 1 である。また、分子と分母は既約である。分子と分母の最大値は実装により異なる。そのため、実装によってはオーバーフローすることがある。

; 演算子の引数は左辺と右辺がともに自然数である必要がある。この演算子は、左辺を分子、右辺を分母とする有理数を返す。

有理数に対して演算子 +, −, ∗, / でそれぞれ加算、減算、積算、除算ができる。有理数に対してこれらの演算を行ったとき、演算の結果も有理数である。0 で除算したときの動作は実装により異なる。

プリミティブ演算 get numeratormainget denominatormain は、それぞれ、有理数から分子と分母を取り出す。取り出された分子と分母はいずれも自然数である。そのため、有理数の符号は無視される。

有理数の大小関係は演算子 =, <, ^le で比較できる。

ベクトル

パステルステッチのベクトル (vector) は他のプログラミング言語の vector とは異なる。

ベクトルは基底ベクトル (basis vector) と複合ベクトル (compound vector) に分類される。基底ベクトルは以下のような性質を持つ。

基底ベクトルはさらに有名ベクトルと無名ベクトルに分類される。

基底ベクトルに対して有理数倍と加算を行うことで得られるベクトルが複合ベクトルである。なお、零ベクトル (null vector) は複合ベクトルに分類される。任意の基底ベクトルに有理数の 0 を積算することで零ベクトルを作ることができるためである。

ベクトルとベクトルを加算または減算することができる。演算子 + の左辺と右辺をともにベクトルとすると、それぞれベクトルの加算と減算を意味する。また、左辺のない + は右辺の値をそのまま演算の結果とする。左辺のない は −1 倍を意味する。

演算子 の左辺と右辺の一方が有理数で、もう一方がベクトルであるとき、有理数とベクトルの積を表す。有理数とベクトルの積はベクトルである。また、演算子 / の左辺がベクトルで右辺が有理数であるとき、右辺の逆数と左辺の積を表す。ただし、0 で除算したときの動作は実装により異なる。

演算子 ∗ の左辺と右辺がともにベクトルであるとき、内積を表す。ベクトルの内積は有理数である。

ベクトルが等しいかどうか比較することができる。演算子 = の両辺がベクトルであるとき、両辺のベクトルが等しいかどうか比較する。また、演算子 <^le の両辺がベクトルであるとき、ベクトルの順序を比較する。ベクトルの順序は実装により異なるが、いずれの実装でも順序性を満たす。

その他、以下のようなプリミティブ演算がある。

文字列

パステルステッチの文字列は UTF-8 でエンコードされている。

結合演算子の左辺と右辺がいずれも文字列であるとき、文字列の結合を意味する。また、結合演算子の左辺が文字列で、右辺が文字列でないとき、右辺を文字列に変換してから結合する。このとき、右辺が具体的にどのような文字列に変換されるかは実装により異なる。

文字列と文字列の比較は演算子 =, <, ^le を使用できる。<^le は文字列を辞書式順序で比較する。

to immutable vector containermain プリミティブ演算の main 引数が文字列であるとき、文字列をイミュータブルベクターコンテナに変換して返す。得られるイミュータブルベクターコンテナの各要素は 1 以上 256 未満の自然数である。

互換性についての注意 size, get character from string, set character in string, get string from character プリミティブ演算は廃止された。かわりに、文字列をベクターコンテナまたはイミュータブルベクターコンテナに変換することができる。

浮動小数点数

浮動小数点数は算術演算 +, −, ∗, / と 比較演算 =, <, ^le が可能である。+ は左辺を省略できる。

コンティニュエーション

コンティニュエーションを = 演算子で比較するとき、終端コンティニュエーションと終端コンティニュエーションとの比較はブーリアン型の true になる。また、終端コンティニュエーションと真正のコンティニュエーションとの比較はブーリアン型の false になる。真正のコンティニュエーションと真正のコンティニュエーションを比較した結果は予測できない。

カプセル

カプセルは内部状態と手続きを持つデータである。カプセルの内部状態と手続きはホスト言語で定義されていて、ゲスト言語からは引数解決の終端要因を通してのみアクセスすることができる。カプセルは参照であるので、あるカプセルの内部状態を変更すると、そのカプセルのすべてのコピーに影響する。^alias 演算子でカプセルを比較すると、それらのカプセルが同一の実体に対する参照である場合に限り、ブーリアン型の true が返る。

ホスト言語がオブジェクト指向プログラミング言語である場合、パステルステッチのカプセル型は、ホスト言語のオブジェクトをラップするために便利である。ホスト言語でのオブジェクトのメソッドの呼び出しは、カプセルを演算指定子とする統合演算式の実行に置き換えられる。このとき、ホスト言語でのメソッド名をパステルステッチの有名ベクトルに置き換え、それを統合演算式の method 引数に与える。このような method 引数の使用法をメソッドディスクリプター (method descriptor) と呼ぶ。ホスト言語のメソッドが 1 個の引数を持つとき、パステルステッチの統合演算式では main 引数に置き換える。ホスト言語のメソッドが 1 個よりも多い引数を持つとき、パステルステッチの統合演算式では、順に 1, 2, 3, ... という引数に置き換える。

カプセルには明示寿命カプセル (explicit extent capsule) と暗黙寿命カプセル (implicit extent capsule) がある。is explicit extent capsulemain プリミティブ演算は、main 引数が明示寿命カプセルであれば真を、暗黙寿命カプセルであれば偽を返す。main 引数がカプセルでない場合の動作は実装により異なる。

明示寿命カプセルが参照している実体 1 個につき 1 個の無名ベクトルが存在する。これをカプセル識別子 (capsule identifier) という。カプセル識別子が削除されると、明示寿命カプセルが参照している実体が削除される。get capsule identifiermain プリミティブ演算は明示寿命カプセルの main 引数を取り、カプセル識別子を返す。

dereferenceable capsulemain プリミティブ演算は明示寿命カプセルの main 引数を取り、その引数で指定された明示寿命カプセルが有効な実体を参照しているかどうかをブーリアン型で返す。実体が削除されたカプセルは dereferenceable capsule プリミティブ演算で調査すると偽を返す。

暗黙寿命カプセルにアクセスする手段がなくなったとき、暗黙寿命カプセルの実体が自動的に削除される。get capsule identifier プリミティブ演算と dereferenceable capsule プリミティブ演算は、暗黙寿命カプセルに対しては使用できない。

型についての演算

値の型を判別するには ^type 演算子を使用する。この演算子の左辺に判別したい値を与え、右辺に「型の名前」を与えると、結果が論理型で得られる。型の名前とは、以下の有名ベクトルである。

これらの有名ベクトルの姓はすべて main である。

値を別の型に変換するには ^convert 演算子を使用する。この演算子の左辺に値を、右辺に型の名前を与える。変換に成功すればその値が得られる。変換できない組み合わせを指定した場合にはブーリアン型の false が戻り値となる。

型の変換には以下のような規則がある。

他の組み合わせは実装により異なる。

その他の演算

比較可能演算子は、対応する比較演算子により左辺と右辺が比較可能であるかをブーリアン型で返す。ただし、^?type 比較可能演算子は対称性のためだけに用意されており、常に true を返す。^?alias 比較可能演算子は、両辺がカプセルであるとき true を返す。