aboutsummaryrefslogtreecommitdiff
path: root/std/prelude/convert.pk
diff options
context:
space:
mode:
Diffstat (limited to 'std/prelude/convert.pk')
-rw-r--r--std/prelude/convert.pk28
1 files changed, 12 insertions, 16 deletions
diff --git a/std/prelude/convert.pk b/std/prelude/convert.pk
index 6abf543..ec1a4a7 100644
--- a/std/prelude/convert.pk
+++ b/std/prelude/convert.pk
@@ -1,23 +1,19 @@
-## std.convert: Interfaces for type coersion and conversion.
+## std.convert: Classes for type coersion and conversion.
## This module is imported by default.
-## The Coerce interface is used for type conversion that will not fail.
+## The Coerce class is used for type conversion that will not fail.
## Its associated methods, `from` and `into`, are used internally
## by the compiler for implicit type conversion (coersion).
-pub type Coerce[T] = interface
- from(T): Self
- # into(Self): T
+pub type Coerce[T] = class
+ to(Self): T
+ # from(T): Self
-## The `into` function is automatically implemented for all types that
-## implement `from`: that is, all types U that are convertable to T.
-pub func into[T, U: Coerce[T]](self: T): U =
- from(self)
+## The `from` function is automatically implemented for all types that
+## implement `to`: that is, all types T that are convertable to U.
+pub func from[T: Coerce[U], U](self: U): T =
+ to(self)
-## The Convert interface is used for type conversion that may fail.
+## The Convert class is used for type conversion that may fail.
# We'll see what this breaks.
-pub type Convert[T] = interface
- from(T): Self?!
-
-## A blanket implementation of a corresponding `into` function.
-pub func into[T, U: Convert[T]](self: T): U =
- from(self)
+pub type Convert[T, E] = class
+ to(Self): Result[T, E]