マーカートレイト
マーカートレイトは、要求属性のないトレイトである。すなわち、メソッドを実装せずにImplすることができる。 要求属性がないと意味がないように思えるが、そのトレイトに属しているという情報が登録されるので、パッチメソッドを使ったり、コンパイラが特別扱いしたりできる。
すべてのマーカートレイトはMarker
トレイトに包摂される。
標準で提供されているLight
はマーカートレイトの一種である。
Light = Subsume Marker
Person = Class {.name = Str; .age = Nat} and Light
M = Subsume Marker
MarkedInt = Inherit Int, Impl := M
i = MarkedInt.new(2)
assert i + 1 == 2
assert i in M
マーカークラスはExcluding
引数で外すことも可能である。
NInt = Inherit MarkedInt, Impl := N, Excluding: M