| M. Hanus and R. Sadre. An abstract machine for Curry and its concurrent implementation in Java. Journal of Functional and Logic Programming, 1999(6), 1999. |
....Language and how HoloJava, a compiler that translates Holo into Java, can be modi ed in order to support functional programming. KEYWORDS: Multiparadigm, Implementation of Functional Languages in Java. 1 Introduction In the last years the multiparadigm theme has been continually researched [2, 3, 5, 15, 23]. Researchers have proposed models of software development through the integration of basic paradigms (mainly: imperative, logic, functional, and object oriented paradigms) Using this approach, they have been looking for two goals: a) to overcome the speci c limitations of each paradigm and (b) ....
....us a simple API that allows calling Prolog predicates in any Java applet or application. There are also some multiparadigm languages that are compiled to Java. One example is the Curry language, that amalgamates functional, logic, and concurrent programming paradigms in one language. Its compiler [15] generates Java byte code. The main emphasis of the Java based implementation is the exploitation of Java threads to implement the concurrent and non deterministic features of Curry. I model [21] supports the distribution of objects, which implement methods using functions (functional classes) ....
[Article contains additional citation context not shown here]
Hanus, M.; Sadre, R. An Abstract Machine for Curry and its Concurrent Implementation in Java. In J. Functional and Logic Programming 6, MIT Press, 1999.
No context found.
M. Hanus and R. Sadre. An abstract machine for Curry and its concurrent implementation in Java. Journal of Functional and Logic Programming, 1999(6), 1999.
No context found.
M. Hanus and R. Sadre. An abstract machine for Curry and its concurrent implementation in Java. Journal of Functional and Logic Programming, 1999(6), 1999.
No context found.
M. Hanus and R. Sadre. An abstract machine for Curry and its concurrent implementation in Java. Journal of Functional and Logic Programming, 1999(6), 1999.
....on such languages and their implementations) An implementation of narrowing translates a program consisting of rewrite rules into executable code. This executable code currently falls into two categories: Prolog predicates (e.g. 4, 12, 15, 27] or instructions for an abstract machine (e.g. [11, 19, 26, 29]) Although these approaches are relatively simple, in both cases, several layers of interpretation separate the functional logic program from the hardware intended to execute it. Obviously, this situation does not lead to ecient execution. In this paper we investigate a di erent approach. We ....
....based on Prolog s depth rst search mechanism. The same drawback also occurs in implementations of functional logic languages based on abstract machines (e.g. 11, 26, 29, 22] since these abstract machines use backtracking to implement non determinism. An exception is the Curry2Java compiler [19] which is based on an abstract machine implementation in Java but uses independent threads to implement non deterministic choices. If these threads are fairly evaluated (which can be ensured by speci c instructions) in nite derivations in one branch do not prevent nding solutions in other ....
[Article contains additional citation context not shown here]
M. Hanus and R. Sadre. An abstract machine for Curry and its concurrent implementation in Java. Journal of Functional and Logic Programming, 1999(6), 1999.
....purely logic programming, and concurrent (logic) programming are obtained as particular restrictions of this model [12] In this paper, we propose a high level implementation of this computation model in Prolog. This approach avoids the complex implementation of an abstract machine (e.g. [16]) and is able to reuse existing constraint solvers available in Prolog systems. In the next section, we review the basic computation model of Curry. The transformation scheme for compiling Curry programs into Prolog programs is presented in Section 3. Section 4 contains the results of our ....
....presented in this paper. Toy [7] is an implementation of a narrowing based functional logic language (without concurrency) which, like ours, compiles into Prolog. This implementation is based on the ideas described in [21] Java 1 is the compiler from Curry into Java described in [16]. It uses JDK 1.1.3 to execute the compiled programs. Java 2 di ers from the former by using JDK 1.2. This system contains a Just in Time compiler. Finally, UPV Curry [1] is an implementation of Curry based on an interpreter written in Prolog that employs an incremental narrowing algorithm. ....
M. Hanus and R. Sadre. An Abstract Machine for Curry and its Concurrent Implementation in Java. Journal of Functional and Logic Programming, Vol. 1999, No. 6, 1999.
....deterministically. If larger program parts or the complete program do not cause nondeterminism, code for handling nondeterminism, for instance for spawning new computation branches, can be dropped (dead code elimination) Such optimizations can be applied for instance to the Curry2Java compiler [14] which is part of our Curry system PAKCS [17] and compiles Curry programs into code for an abstract machine implemented in Java. Our analysis is based on a type and e ect system (see [23] for an overview) which can be seen as an extension of classical type systems known from functional languages. ....
M. Hanus and R. Sadre. An Abstract Machine for Curry and its Concurrent Implementation in Java. Journal of Functional and Logic Programming, 1999(6).
....to ecient implementations of functional logic languages in Prolog, as described in [3, 32, 49] our strategy can be easily implemented in other languages. Uni cation has well understood algorithms that are eciently implemented in various programming styles and abstract machines. For instance, [36] describes the compilation of the functional logic language Curry (which is based on an extension of needed narrowing) into Java. We have also shown that our strategy computes only disjoint and optimal derivations. Although all the previously proposed lazy strategies have the latter as their ....
M. Hanus and R. Sadre. An abstract machine for Curry and its concurrent implementation in Java. Journal of Functional and Logic Programming, (6), 1999.
....language can automatically be translated into. Therefore, we consider an intermediate representation of Curry programs, FlatCurry [27, 24] which has been proposed to provide a common interface for connecting different tools working on Curry programs, e.g. back ends for various compilers [8, 25]) and translate programs to FlatCurry in order to specialize them. This is essential to express the different features of Curry at an appropriate level of abstraction, which allows us to design a simple and concise automatic partial evaluation method covering all the features of the language. Our ....
....narrowing strategy due to its optimality properties w.r.t. the length of successful derivations and the number of computed solutions [7] 3 Using an Intermediate Language to Specialize Curry Programs PACS [27] is an implementation of Curry with two different back ends for compiling Curry to Java [25] or to Prolog [8] During the compilation of Curry programs, an intermediate representation of the source program is created and stored in a different file. This file contains a Curry program in a flat representation (using the FlatCurry language) where all functions are global (i.e. lambda ....
M. Hanus and R. Sadre. An Abstract Machine for Curry and its Concurrent Implementation in Java. Journal of Functional and Logic Programming, 1999(6), 1999.
....purely logic programming, and concurrent (logic) programming are obtained as particular restrictions of this model [12] In this paper, we propose a high level implementation of this computation model in Prolog. This approach avoids the complex implementation of an abstract machine (e.g. [16]) and is able to reuse existing constraint solvers available in Prolog systems. In the next section, we review the basic computation model of Curry. The transformation scheme for compiling Curry programs into Prolog programs is presented in Section 3. Section 4 contains the results of our ....
....presented in this paper. Toy [7] is an implementation of a narrowing based functional logic language (without concurrency) which, like ours, compiles into Prolog. This implementation is based on the ideas described in [21] Java 1 is the compiler from Curry into Java described in [16]. It uses JDK 1.1.3 to execute the compiled programs. Java 2 differs from the former by using JDK 1.2. This system contains a Just in Time compiler. Finally, UPV Curry [1] is an implementation of Curry based on an interpreter written in Prolog that employs an incremental narrowing algorithm. ....
M. Hanus and R. Sadre. An Abstract Machine for Curry and its Concurrent Implementation in Java. Journal of Functional and Logic Programming, Vol. 1999, No. 6, 1999.
....to allow the use of search operators in initial expressions. Other uses of lambda abstractions must always be written into the program. ffl Local variables in constraints are introduced by the keywords local. in inside the constraint. Thus, the Curry expression let l1,l2 free in fappend l1 l2 = [0,1]g is written in the internal TasteCurry syntax in the form flocal [l1,l2] in append(l1,l2) 0,1]g The square brackets around the local variables are only necessary if there is more than one variable. Therefore, the Curry expression let l free in fappend [0] l = 0,1]g can be written in ....
....always be written into the program. ffl Local variables in constraints are introduced by the keywords local. in inside the constraint. Thus, the Curry expression let l1,l2 free in fappend l1 l2 = 0,1]g is written in the internal TasteCurry syntax in the form flocal [l1,l2] in append(l1,l2) [0,1]g The square brackets around the local variables are only necessary if there is more than one variable. Therefore, the Curry expression let l free in fappend [0] l = 0,1]g can be written in TasteCurry as flocal l in append( 0] l) 0,1]g ffl Instead of where clauses with free variables, one ....
[Article contains additional citation context not shown here]
M. Hanus and R. Sadre. An Abstract Machine for Curry and its Concurrent Implementation in Java. Journal of Functional and Logic Programming (to appear), 1999. Previous version in: Proc. ILPS'97 Workshop on Parallelism and Implementation Technology for (Constraint) Logic Programming Languages.
....port communication via sockets. Free variables sent in messages are implemented by dynamic reply channels on which the receiver sends the value back if the variable is instantiated. Currently, we are working on a more e#cient implementation based on the compiler from Curry into Java described in [11]. In this implementation, we use the distribution facilities of Java to implement our communication model. In particular, we use Java s RMI model to implement ports. Sending a message amounts to binding a free variable (the stream connected to the port) by a method call on the remote machine. Free ....
M. Hanus and R. Sadre. An Abstract Machine for Curry and its Concurrent Implementation in Java. Journal of Functional and Logic Programming, 1999(6).
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC