The Scala Language Specification says under §3.2.1:
A stable type is either a singleton type or a type which is declared to be a subtype of trait scala.Singleton.
I couldn't find scala.Singleton
neither in the sources, in ScalaDoc nor in the binary jar file.
Trying on the REPL results in:
scala> class Foo extends Singleton
<console>:9: error: illegal inheritance from final trait Singleton
class Foo extends Singleton
^
<console>:9: error: illegal inheritance; superclass Any
is not a subclass of the superclass Object
of the mixin trait ScalaObject
class Foo extends Singleton
^
Where does scala.Singelton
live and what's its purpose?
Finally found something on this:
The type Singleton is essentially an encoding trick for existentials with values. I.e.
T forSome { val x: T }
is turned into
[x.type := X] T forSome { type X <:T with Singleton }
Source: http://scala-programming-language.1934581.n4.nabble.com/scala-Singleton-td1940630.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With