The Fortress Language Specification

fill(f : I → E) : ReadableArrayJE, IK abstract fill(v :E) : ReadableArrayJE, IK abstract copy() : ReadableArrayJE, IK Create a fresh array structurally identical to the present one, but holding elements of type U . abstract replicaJUK() : ReadableArrayJU, IK opr =(self, other : HasRank): Boolean end trait ImmutableArrayJE, IK extends {ReadableArrayJE, IK } excludes {ArrayJE, IK } abstract opr [r : RangeJIK] : ImmutableArrayJE, IK abstract opr [ : OpenRangeJAnyK] : ImmutableArrayJE, IK abstract ivmapJRK(f : (I, E)→ R): ImmutableArrayJR, IK abstract mapJRK(f :E → R): ImmutableArrayJR, IK abstract shift(newOrigin : I) : ImmutableArrayJE, IK abstract init(i : I, v :E): () abstract fill(f : I → E) : ImmutableArrayJE, IK abstract fill(v :E) : ImmutableArrayJE, IK abstract copy() : ImmutableArrayJE, IK abstract replicaJUK() : ImmutableArrayJU, IK Thaw array (return mutable copy). abstract thaw() : ArrayJE, IK end trait ArrayJE, IK extends {ReadableArrayJE, IK,MutableIndexedJE, IK } abstract opr [r : RangeJIK] : ArrayJE, IK abstract opr [ : OpenRangeJAnyK] : ArrayJE, IK abstract ivmapJRK(f : (I, E)→ R): ArrayJR, IK abstract mapJRK(f :E → R): ArrayJR, IK abstract shift(newOrigin : I) : ArrayJE, IK abstract init(i : I, v :E): () abstract fill(f : I → E) : ArrayJE, IK abstract fill(v :E) : ArrayJE, IK abstract assign(f : I → E) : ArrayJE, IK abstract copy() : ArrayJE, IK abstract replicaJUK() : ArrayJU, IK Freeze array (return mutable copy). abstract freeze(): ImmutableArrayJE, IK end Factory for arrays that returns an empty 0-indexed array of a given run-time-determined size. arrayJEK(x :Z32) : ArrayJE,Z32K arrayJEK(x :Z32, y :Z32) :ArrayJE, (Z32,Z32)K arrayJEK(x :Z32, y :Z32, z :Z32) : ArrayJE, (Z32,Z32,Z32)K Factory for immutable arrays that returns an empty 0-indexed array of a given run-time-determined size.

[1]  William D. Clinger,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[2]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[3]  Robert H. Halstead,et al.  Lazy task creation: a technique for increasing the granularity of parallel programs , 1990, IEEE Trans. Parallel Distributed Syst..

[4]  Jonathan Rees,et al.  Macros that work , 1991, POPL '91.

[5]  Robert Hieb,et al.  Syntactic abstraction in scheme , 1992, LISP Symb. Comput..

[6]  Robert D. Blumofe,et al.  Scheduling multithreaded computations by work stealing , 1994, Proceedings 35th Annual Symposium on Foundations of Computer Science.

[7]  Barry N. Taylor,et al.  Guide for the Use of the International System of Units (SI) , 1995 .

[8]  Seth Copen Goldstein,et al.  Lazy Threads: Implementing a Fast Parallel Call , 1996, J. Parallel Distributed Comput..

[9]  Joan M. Aliprand The Unicode Standard , 1996 .

[10]  Bradley C. Kuszmaul,et al.  Cilk: an efficient multithreaded runtime system , 1995, PPOPP '95.

[11]  Chris Okasaki,et al.  Purely functional data structures , 1998 .

[12]  R. Kent Dybvig,et al.  Revised5 Report on the Algorithmic Language Scheme , 1986, SIGP.

[13]  Robert Cartwright,et al.  Compatible genericity with run-time types for the Java programming language , 1998, OOPSLA '98.

[14]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 1999, OOPSLA '99.

[15]  Matthias Felleisen,et al.  Behavioral contracts and behavioral subtyping , 2001, ESEC/FSE-9.

[16]  Todd D. Millstein,et al.  Modular Statically Typed Multimethods , 1999, Inf. Comput..

[17]  Matthias Felleisen,et al.  A Visual Environment for Developing Context-Sensitive Term Rewriting Systems , 2004, RTA.

[18]  Ralf Hinze,et al.  Finger trees: a simple general-purpose data structure , 2005, Journal of Functional Programming.

[19]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[20]  Oscar Nierstrasz,et al.  Traits: A mechanism for fine-grained reuse , 2006, TOPL.