Skip to content

Instantly share code, notes, and snippets.

@kenbot
Created May 15, 2015 03:30
Show Gist options
  • Save kenbot/374b42953ca03aab286f to your computer and use it in GitHub Desktop.
Save kenbot/374b42953ca03aab286f to your computer and use it in GitHub Desktop.
Example code for Lambda Jam Category Theory exercises
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