19.11.2014 Views

The Fortress Language Specification - CiteSeerX

The Fortress Language Specification - CiteSeerX

The Fortress Language Specification - CiteSeerX

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Values, evaluation contexts, and redexes<br />

v ::= O −→ τ ( −→ v ) value<br />

E ::= □ evaluation context<br />

| O −→ τ ( −→ e E −→ e )<br />

| E.x<br />

| E.f −→ τ ( −→ e )<br />

| e.f −→ τ ( −→ e E −→ e )<br />

| f −→ τ ( −→ e E −→ e )<br />

R ::= v.x redex<br />

| v.f −→ τ ( −→ v )<br />

| f −→ τ ( −→ v )<br />

Evaluation rules: p ⊢ E[R] −→ E[e]<br />

[R-FIELD]<br />

[R-METHOD]<br />

[R-FUNCTION]<br />

object O ( −−→ x: ) end ∈ p<br />

p ⊢ E[O −→ τ ( −→ v ).x i ] −→ E[v i ]<br />

object O −−−−−−−−−→ αextends N( −−→ x: ) end ∈ p<br />

−−−−−→<br />

type(v ′ ) = −→ τ ′′<br />

mostspecific p;∅ (applicable p;∅ (f −→ τ ′ ( −→ τ ′′ ),visible p (O −→ τ ))) = f −−−−−−−−−−→ α ′ extends N ′ ( −−→ x ′ : ):<br />

p ⊢ E[O −→ τ ( −→ v ).f −→ τ ′ ( −→ v ′ )] −→ E[[ −→ v / −→ x ][O −→ τ ( −→ v )/self][ −→ v ′ / −→ x ′ ]e]<br />

−−−−→<br />

type(v) = −→ τ ′<br />

mostspecific p;∅ (applicable p;∅ (f −→ τ ( −→ τ ′ ), {(fd,Object) | fd ∈ p})) = f −−−−−−−−−→ αextends N( −−→ x: ): = e<br />

p ⊢ E[f −→ τ ( −→ v )] −→ E[[ −→ v / −→ x ]e]<br />

= e<br />

Types of values: type(v) = τ<br />

type(O −→ τ ( −→ v )) = O −→ τ <br />

Figure A.14: Dynamic Semantics of Core <strong>Fortress</strong> with Overloading<br />

327

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!