scala.caps (original) (raw)

Members list

Carrier trait for capture set type parameters

Carrier trait for capture set type parameters

Attributes

Experimental

true

Source

package.scala

Supertypes

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

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

Attributes

Experimental

true

Source

package.scala

Supertypes

Self type

Attributes

Experimental

true

Source

package.scala

Supertypes

Self 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

In this article