LazyJ is a backward-compatible extension of the Java programming language that allows programmers to seamlessly tap into the power and expressiveness of lazy evaluation. It does so by extending Java’s type system with lazy types. A variable of type lazy T (where T is any Java type) can hold a thunk which when evaluated will yield a value of type T. The existence of coercions between non-lazy and lazy types eliminates the need for explicit delay and force operations. In this paper, we introduce LazyJ with several motivating examples and formalize the semantics of the language with Featherweight LazyJ, an extension of Featherweight Java. We also describe our implementation, which is built on top of the Polyglot extensible compiler framework. ...
Students have trouble understanding the difference between lazy and strict programming. It is diffic...
Type-directed programming is an important and widely used paradigm in the design of software. With t...
Class inheritance and method overriding, as provided by standard class-based languages, are not flex...
Lightweight Java (LJ) is an imperative fragment of Java [5]. It is intended to be as simple as possi...
Lazy evaluation is an evaluation strategy in programming languages. Lazy evaluation delays the evalu...
Weak references provide the programmer with limited control over the process of memory management. B...
The evaluation strategies of programming languages can be broadly categorised as strict or lazy. A c...
Weak references provide the programmer with limited control over the process of memory management. B...
The Java Virtual Machine (JVM) was designed as the target for Java compilers, but there is no reason...
Abstract. Feature-oriented programming (FOP) is a paradigm that in-corporates programming language t...
Fragments of mainstream programming languages are formalised in order to show desirable properties o...
International audienceIn the context of statically-typed, class-based languages, we investigate clas...
Feature-oriented programming (FOP) is a paradigm that incorpo-rates programming language technology,...
AbstractFragments of mainstream programming languages are formalised in order to show desirable prop...
This paper presents a big-step operational semantics for distributed lazy evaluation. Our semantics ...
Students have trouble understanding the difference between lazy and strict programming. It is diffic...
Type-directed programming is an important and widely used paradigm in the design of software. With t...
Class inheritance and method overriding, as provided by standard class-based languages, are not flex...
Lightweight Java (LJ) is an imperative fragment of Java [5]. It is intended to be as simple as possi...
Lazy evaluation is an evaluation strategy in programming languages. Lazy evaluation delays the evalu...
Weak references provide the programmer with limited control over the process of memory management. B...
The evaluation strategies of programming languages can be broadly categorised as strict or lazy. A c...
Weak references provide the programmer with limited control over the process of memory management. B...
The Java Virtual Machine (JVM) was designed as the target for Java compilers, but there is no reason...
Abstract. Feature-oriented programming (FOP) is a paradigm that in-corporates programming language t...
Fragments of mainstream programming languages are formalised in order to show desirable properties o...
International audienceIn the context of statically-typed, class-based languages, we investigate clas...
Feature-oriented programming (FOP) is a paradigm that incorpo-rates programming language technology,...
AbstractFragments of mainstream programming languages are formalised in order to show desirable prop...
This paper presents a big-step operational semantics for distributed lazy evaluation. Our semantics ...
Students have trouble understanding the difference between lazy and strict programming. It is diffic...
Type-directed programming is an important and widely used paradigm in the design of software. With t...
Class inheritance and method overriding, as provided by standard class-based languages, are not flex...