6.25. kink/VAL

値一般を扱う関数を提供する。

6.25.1. val型

valは普遍的な上位型、あるいはすべての型の上位型である。すべての値はval型のインスタンスである。

val型はただひとつのメソッド、reprを持つ。これは、Kinkのすべての値がreprメソッドを持つことを意味する。

6.25.1.1. Val.repr

reprはValを表すstr値を、デバッグ目的のために戻す。

結果の形式は型ごとに異なる:

例として、reprの結果はエラーメッセージを構築するのに使える。

ランタイムも、reprの結果をエラーメッセージを構築するのに使う。

エラーメッセージの他には、reprはログメッセージを構築するのにも使えるかも知れない。

reprの実装にはいくつかの要件がある。

reprはstr値を戻さなければならない。

上述したとおり、reprはエラーメッセージを構築するのに使われる。呼び出し元はreprがstr値を戻すことを期待している。もし仮にreprがstrでない値を戻したら、要件が満たされないので、結果ははちゃめちゃなものになる。

無限の長さ、深さを持つデータに対しても、reprは有限長のstr値を戻さなければならない

コンテナ型を実装する場合、おそらくコンテナのreprメソッドは要素のreprメソッドを呼ぶことになる。無限の長さ、深さを持つデータに対しても、reprメソッドが有限長のstr値を戻すように注意せよ。

再帰データのチェックはdyn値を使って行える。kink/container/FLAT_SETの実装を参照せよ。

結果は長すぎず

reprの結果が長すぎると、デバッグ出力が使い物にならなくなるかも知れない。結果が長くなりすぎないように注意せよ。

6.25.2. VAL.id_hash(Val)

id_hashはValに割り当てられた整数のnum値を戻す。同じ値に対して、id_hashを複数回呼び出すと、毎回おなじ整数を戻す。

結果は値の同一性のハッシュコードとして使える。

6.25.3. VAL.same?(X Y)

same?はふたつの引数XとYが、同じ値であるかどうかを戻す。

例

6.25.4. VAL.var_syms(Val)

var_symsはvar-syms操作を実行し、Valの変数のシンボルの集合を戻す。

結果はstr値のsetである。

例

6.25.5. VAL.identity(Val)

identityはValを戻す。

例