Created
May 15, 2015 03:30
-
-
Save kenbot/374b42953ca03aab286f to your computer and use it in GitHub Desktop.
Example code for Lambda Jam Category Theory exercises
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package cat | |
object Classes { | |
// Convenient subtype syntax: Banana < Fruit | |
implicit class ClassOps(thisClass: Class[_]) { | |
def <:<(other: Class[_]): Boolean = | |
other isAssignableFrom thisClass | |
} | |
val Food = classOf[Food] | |
val Fruit = classOf[Fruit] | |
val Banana = classOf[Banana] | |
val Cumquat = classOf[Banana] | |
val Grape = classOf[Grape] | |
val Meat = classOf[Meat] | |
val Yak = classOf[Yak] | |
val Goat = classOf[Goat] | |
val Kangaroo = classOf[Kangaroo] | |
val Tool = classOf[Tool] | |
val Spanner = classOf[Spanner] | |
val Hammer = classOf[Hammer] | |
} | |
trait Food | |
trait Fruit extends Food | |
class Banana extends Fruit | |
class Cumquat extends Fruit | |
class Grape extends Fruit | |
trait Meat extends Food | |
class Yak extends Meat | |
class Goat extends Meat | |
class Kangaroo extends Meat | |
trait Tool | |
class Spanner extends Tool | |
class Hammer extends Tool | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment