Skip to content

Instantly share code, notes, and snippets.

@pedrofurla
Created September 18, 2013 04:08
Show Gist options
  • Select an option

  • Save pedrofurla/6604439 to your computer and use it in GitHub Desktop.

Select an option

Save pedrofurla/6604439 to your computer and use it in GitHub Desktop.
Guess work...
scala> ru.typeOf[Monad[List]]
res13: reflect.runtime.universe.Type = Monad[scala.List]
scala> res13.typeSymbol.typeSignature
res19: reflect.runtime.universe.Type = [F[_]]Applicative[F] with Bind[F]
scala> res13.typeSymbol.typeSignature.asInstanceOf[scala.reflect.internal.Types$PolyType]
res25: scala.reflect.internal.Types$PolyType = [F[_]]Applicative[F] with Bind[F]
scala> res25.parents
res28: List[Any] = List(scala.AnyRef, Applicative[F], Bind[F])
@pedrofurla
Copy link
Author

[01:09:34] xeno_by> scala> class C
[01:09:34] xeno_by> defined class C
[01:09:34] xeno_by> scala> class D extends C
[01:09:36] xeno_by> defined class D
[01:09:38] xeno_by> scala> class E extends D
[01:09:40] xeno_by> defined class E
[01:09:42] xeno_by> scala> typeOf[E].baseClasses
[01:09:44] xeno_by> res0: List[reflect.runtime.universe.Symbol] = List(class E, class D, class C, class Object, class Any)
[01:09:46] xeno_by> scala> typeOf[E].parents
[01:09:48] xeno_by> :33: error: value parents is not a member of reflect.runtime.universe.Type
[01:09:50] xeno_by> typeOf[E].parents
[01:09:52] xeno_by> ^
[01:09:54] xeno_by> scala> typeOf[E].asInstanceOf[scala.reflect.internal.Types#Type].parents
[01:09:56] xeno_by> res2: List[scala.reflect.internal.Types#Type] = List(D)
[01:09:58] xeno_by> well yeah
[01:10:00] xeno_by> just what I wanted to tell you :)
[01:10:02] xeno_by> you don't have to do .typeSymbol.typeSignature

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment