• Corpus ID: 13538161

Reflection in logic, functional and object-oriented programming: a Short Comparative Study

  title={Reflection in logic, functional and object-oriented programming: a Short Comparative Study},
  author={Jacques Malenfant},
Reflection is a wide-ranging concept that has been studied independently in many different areas of science in general, and computer science in particular. [] Key Method We also point out the different emphasis that has been given to different concepts in each of them. We do not claim neither completeness nor closeness in our treatment. We rather aim at building bridges between programming languages communities, and address other aspects when they appear relevant.

Implementing Reflection in Nuprl

This work develops the formal background and the practical capabilities of an applied system, namely Nuprl, that are needed to support direct reflection of its own syntax, which enables dealing with syntactical meta-mathematical content.

An Insight into Programming Paradigms and Their Programming Languages

The main aim of this paper is to provide an in-depth view into this area in order to give an opportunity for the Academia, Researchers, and the Software Industry to understand this domain in a different way.

Theoretical Foundations for Practical ‘Totally Functional Programming’

The proposal that interpretation is not, in fact, symbol-based computation, but is in fact something more fundamental: computation that varies with input is led to.

Practical Reflection and Metaprogramming for Dependent Types

This dissertation introduces elaborator reflection, in which the core operators of the elaborator are realized as a type of computations that are executed during the elaboration process of Idris itself, along with a rich API for reflection.

A proposal for classifying reflective programming aimed at the development of autonomous systems

A classification of reflection in levels according to the level of knowledge, modification ability, types of modifications, time to perform modifications and the reasoning level is proposed to reach autonomous programming.

The Converge programming language.

It is asserted that it is easier in the context of model transformations to start with a fresh canvass than to alter an existing language, and the complexity of modern languages implementations can make adding new features a significant challenge.

Sub-method, partial behavioral reflection with Reflectivity: Looking back on 10 years of use

Reflectivity, its API, its implementation and its usage in Pharo are presented, and it is shown how it has been used as a basic building block of many innovative ideas, as well as a mature framework for unanticipated, non-intrusive and partial behavioral reflection based on AST annotation.

OpenC : Extending C Programs with Computational Reflection

The paper provides a general motivation for using reflection and explains briefly the design and implementation of the OpenC framework, which offers a framework to build arbitrary source-to-source program transformation libraries for large software systems written in C.

Shifting Up Reflection from the Implementation to the Analysis Level

It is argued that the reflective approach whereby non-functional properties are ascribed to a meta-level of the software system may be extended "back to" analysis and recover the smooth transition from analysis to design in the case of nonfunctional system's properties.

Reflection in conditional rewriting logic




CLOS in context: the shape of the design space

This chapter presents aspects of the design of the Common Lisp Object System (CLOS) in the context of related ideas from many languages, providing a view of the CLOS within a broader space of designs.

Reification: Reflection without metaphysics

We consider how the data structures of an interpreter may be made available to the program it is running, and how the program may alter its interpreter's structures. We refer to these processes as

A semantics of introspection in a reflective prototype-based language

This paper augments the previous protocol by converting it to handle continuations reified as first-class objects, highlighting the link between reflection in object-oriented languages and the one originally proposed by 3-Lisp, although object-orientation provides reusability to reflection, making it easier to use.

Computational reflection in class based object-oriented languages

A model of computational reflection where meta-objects are instances of a class META-OBJECT or of one of its subclasses is introduced, showing that it is important to differentiate between structural reflection and computational reflection.

CLOS: integrating object-oriented and functional programming

This article explores the landscape in which the major object-oriented facilities exist, showing how the CLOS solution is effective within the two contexts.

Reflection and semantics in LISP

This paper presents a general architecture, called procedurcd refh'ctio, to support sell'directed reosoning in a serial programming lmaguage, which apparently infinite architecture can be finitely implemented.

The mystery of the tower revealed: a non-reflective description of the reflective tower

This account is self-contained in the sense that it does not employ reflection to explain reflection, and shows how a useful species of reflection could be modeled without the use of towers.

Reflection mechanisms for combining prolog databases

An extension of Prolog, where separate databases can be handled as first‐class objects is presented, to broaden the application area of logic programming to encompass most of the paradigms needed by systems that use artificial intelligence techniques.

The mystery of the tower revealed: A nonreflective description of the reflective tower

This account is self-contained in the sense that it does not employ reflection to explain reflection, and shows how a useful species of reflection could be modeled without the use of towers.

Tutorial on specialisation of logic programs

In this tutorial the specialisation of declarative logic programs is presented, and the outline of a basic algorithm for partial evaluation of a logic program with respect to a goal is given.