scala.caps
Members list
Type members
Experimental classlikes
Carrier trait for capture set type parameters
Carrier trait for capture set type parameters
Attributes
- Experimental
- true
- Source
- package.scala
- Supertypes
-
class Any
Base trait for classes that represent capabilities in the object-capability model.
Base trait for classes that represent capabilities in the object-capability model.
A capability is a value representing a permission, access right, resource or effect. Capabilities are typically passed to code as parameters; they should not be global objects. Often, they come with access restrictions such as scoped lifetimes or limited sharing.
An example is the Label class in scala.util.boundary. It represents a capability in the sense that it gives permission to break to the enclosing boundary represented by the Label
. It has a scoped lifetime, since breaking to a Label
after the associated boundary
was exited gives a runtime exception.
Capability has a formal meaning when Capture Checking is turned on. But even without capture checking, extending this trait can be useful for documenting the intended purpose of a class.
Attributes
- Experimental
- true
- Source
- package.scala
- Supertypes
-
class Any
- Known subtypes
A type constraint expressing that the capture set C
needs to contain the capability R
A type constraint expressing that the capture set C
needs to contain the capability R
Attributes
- Companion
- object
- Experimental
- true
- Source
- package.scala
- Supertypes
A trait to allow expressing existential types such as
A trait to allow expressing existential types such as
(x: Exists) => A ->{x} B
Attributes
- Experimental
- true
- Source
- package.scala
- Supertypes
The universal capture reference.
The universal capture reference.
Attributes
- Experimental
- true
- Source
- package.scala
- Supertypes
- Self type
-
cap.type
Attributes
- Experimental
- true
- Source
- package.scala
- Supertypes
- Self type
-
internal.type
Attributes
- Experimental
- true
- Source
- package.scala
- Supertypes
- Self type
-
unsafe.type
An annotation on parameters x
stating that the method's body makes use of the reach capability x*
. Consequently, when calling the method we need to charge the deep capture set of the actual argiment to the environment.
An annotation on parameters x
stating that the method's body makes use of the reach capability x*
. Consequently, when calling the method we need to charge the deep capture set of the actual argiment to the environment.
Note: This should go into annotations. For now it is here, so that we can experiment with it quickly between minor releases
Attributes
- Experimental
- true
- Source
- package.scala
- Supertypes