The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
A theory of primitive objects: untyped and first-order systems
Information and Computation - special issue: symposium on theoretical aspects of computer software TACS '94
Haskell: the craft of functional programming
Haskell: the craft of functional programming
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Purely functional data structures
Purely functional data structures
Making the future safe for the past: adding genericity to the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Functional style in C++: closures, late binding, and Lambda abstractions
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
The next 700 programming languages
Communications of the ACM
Extensible algebraic datatypes with defaults
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
A Theory of Objects
The Definition of Standard ML
Java Language Specification, Second Edition: The Java Series
Java Language Specification, Second Edition: The Java Series
Java and the Java Virtual Machine: Definition, Verification, Validation with Cdrom
Java and the Java Virtual Machine: Definition, Verification, Validation with Cdrom
C++ Templates
Introduction to Functional Programming
Introduction to Functional Programming
The Essence of the Visitor Pattern
COMPSAC '98 Proceedings of the 22nd International Computer Software and Applications Conference
Synthesizing Object-Oriented and Functional Design to Promote Re-Use
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
A framework for higher-order functions in C++
COOTS'95 Proceedings of the USENIX Conference on Object-Oriented Technologies on USENIX Conference on Object-Oriented Technologies (COOTS)
Higher order Programming in Java: Introspection, Subsumption and Extraction
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P 2004)
Methods as Parameters: A Preprocessing Approach to Higher Order in Java
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P)
JavaΩ: The Structures and the Implementation of a Preprocessor for Java with m and mc parameters
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P)
A Type-theoretic Reconstruction of the Visitor Pattern
Electronic Notes in Theoretical Computer Science (ENTCS)
Properties of Java Simple Closures
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P)
JavaΩ: The Structures and the Implementation of a Preprocessor for Java with m and mc parameters
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P)
Methods as Parameters: A Preprocessing Approach to Higher Order in Java
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P)
Higher order Programming in Java: Introspection, Subsumption and Extraction
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P 2004)
Hi-index | 0.00 |
We introduce a direct encoding of the typed λ-calculus into Java: for any Java types A, B we introduce the type A → B together with function application and λ-abstraction. The latter makes use of anonymous inner classes. We show that λ-terms are evaluated by call-by-value. We then look at how to model domain equations in Java and as an example consider the untyped lambda calculus. Then we investigate the use of function parameters in order to control overriding and in order to dynamically update methods, which can substitute certain applications of the state pattern. Further we introduce a foreach-loop in collection classes. Finally we introduce algebraic types. Elements of the resulting type are given by their elimination rules. Algebraic types with infinitely many arguments like Kleene's O and simultaneous algebraic types are already contained in that notion. Further we introduce an operation selfupdate, which allows to modify for instance a subtree of a tree, without making a copy of the original tree. All the above constructions are direct and can be done by hand.