Extending the Syntax and Semantics of the Hybrid Functional-Object-Oriented Scripting Language FOBS with FEDELE

To read the full-text of this research, you can request a copy directly from the author.


We describe the programming language FOBS-X (Extensible FOBS). FOBS-X is interpreted, and is intended as a universal scripting language. One of the more interesting features of FOBS-X is its ability to be extended, allowing it to be adopted to new scripting environments. FOBS-x is structured as a core language that is parsed by the interpreter, and an extended language that is translated to the core by macro expansion. The syntax of the language can easily be modified by writing new macros. The library for FOBS-X is reconfigurable, allowing the semantics of the language to be modified, and adapted to facilitate the interaction with interfaces to new scripting environments. This paper focuses on the tools used for the semantic extension of the language. A tool called FEDELE has been developed, allowing the user to add library modules to the FOBS-X library. In this way the semantics of the language can be enhanced, and the language can be adapted.

No full-text available

Request Full-text Paper PDF

To read the full-text of this research,
you can request a copy directly from the author.

ResearchGate has not been able to resolve any citations for this publication.
Full-text available
This manual documents the release 4.02 of the OCaml system. It is organized as follows. Part I, "An introduction to OCaml", gives an overview of the language. Part II, "The OCaml language", is the reference description of the language. Part III, "The OCaml tools", documents the compilers, toplevel system, and programming utilities. Part IV, "The OCaml library", describes the modules provided in the standard library.
Conference Paper
Full-text available
We present a new model, based on monads, for performing input/output in a non-strict, purely functional language. It is composable, extensible, efficient, requires no extensions to the type system, and extends smoothly to incorporate mixed-language working and in-place array updates.
Scala is an object-oriented programming language for the Java Virtual Machine. In addition to being object-oriented, Scala is also a functional language, and combines the best approaches to OO and functional programming. In Italian, Scala means a stairway, or steps indeed, Scala lets you step up to a programming environment that incorporates some of the best recent thinking in programming language design while also letting you use all your existing Java code. Artima is very pleased to publish a new edition of the best-selling book on Scala, written by the designer of the language, Martin Odersky. Co-authored by Lex Spoon and Bill Venners, this book takes a step-by-step tutorial approach to teaching you Scala. Starting with the fundamental elements of the language, Programming in Scala introduces functional programming from the practitioner's perspective, and describes advanced language features that can make you a better, more productive developer.
We describe a computer language that is a hybrid between functional and object-oriented languages. The language is based on a simple structure called a FOB (functional-object), capable of being used as a function, or accessed as an object. FOBS is a dynamically typed, referentially transparent language, designed for use as a universal scripting language. An extensive library is integral to the language. The library implements the primitive types and provides an interface to the external environment, allowing scripting actions to be carried out.FOBS is structured as an extended language, that is reduced to a core language by macro expansion. Our paper provides an introduction to the core language, a brief discussion of the extended language, and formal specifications of syntax and semantics for the core. The formal semantic description for FOBS is somewhat unusual for a scripting language. However, this description ensures that the FOBS semantics is well-specified, allowing programmers to write well understood programs, increasing program reliability.
Despite the rapid development of parallel computer architectures in recent years, software development technology for parallel processing systems is still largely inadequate. An integrated object-oriented and functional computation model, called PROOF, is developed to facilitate the effective development of software for parallel processing systems. It will fully explore the parallelism in software systems and reduce the development effort by supporting software engineering principles, such as information hiding, modularity, modifiability, and reusability. In PROOF, we achieve the coherent integration of (1) parallelism and inheritance of objects and (2) referential transparency and history sensitivity of functions. The major features and the semantics of PROOF are presented. A parallel programming language and a software development approach based on PROOF are under development. Implementation issues are also discussed.
We introduce MetaML, a practically motivated, statically typed multi-stage programming language. MetaML is a “real” language. We have built an implementation and used it to solve multi-stage problems. MetaML allows the programmer to construct, combine, and execute code fragments in a type-safe manner. Code fragments can contain free variables, but they obey the static-scoping principle. MetaML performs type-checking for all stages once and for all before the execution of the first stage. Certain anomalies with our first MetaML implementation led us to formalize an illustrative subset of the MetaML implementation. We present both a big-step semantics and type system for this subset, and prove the type system's soundness with respect to a big-step semantics. From a software engineering point of view, this means that generators written in the MetaML subset never generate unsafe programs. A type system and semantics for full MetaML is still ongoing work. We argue that multi-stage languages are useful as programming languages in their own right, that they supply a sound basis for high-level program generation technology, and that they should support features that make it possible for programmers to write staged computations without significantly changing their normal programming style. To illustrate this we provide a simple three-stage example elaborating a number of practical issues. The design of MetaML was based on two main principles that we identified as fundamental for high-level program generation, namely, cross-stage persistence and cross-stage safety. We present these principles, explain the technical problems they give rise to, and how we address with these problems in our implementation.
  • M Odersky
  • L Spoon
  • B Venners
M. Odersky, L. Spoon, B. Venners, Programming in Scala, Artima, Inc. 2008.
A functional language with classes
  • M Beaven
  • R Stansifer
  • D Wetlow
M. Beaven, R. Stansifer, D. Wetlow, "A functional language with classes", Lecture Notices in Computer Science, vol. 507, Springer Verlag, 1991.