aboutsummaryrefslogtreecommitdiff
path: root/examples/src/main/scala/example.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/src/main/scala/example.scala')
-rw-r--r--examples/src/main/scala/example.scala6
1 files changed, 6 insertions, 0 deletions
diff --git a/examples/src/main/scala/example.scala b/examples/src/main/scala/example.scala
index 6a6a1cc..e61f8bd 100644
--- a/examples/src/main/scala/example.scala
+++ b/examples/src/main/scala/example.scala
@@ -34,6 +34,12 @@ object Extractor extends Extractor_1 {
type Value = Thing
def dereference(value: Thing, param: String): Thing = value.access(param)
def delegate[T](extractor: Extractor[T], value: Thing): T = extractor.extract(value)
+ def combine[Supertype, Right <: Supertype](left: Extractor[_ <: Supertype],
+ right: Extractor[Right]): Extractor[Supertype] = left.orElse(right)
+
+ def construct[T](body: Thing => T): Extractor[T] = new Extractor[T] {
+ def extract(source: Thing): T = body(source)
+ }
}
}