|
ABSTRACT
This paper describes an implementation of narrowing, an essential component of implementations of modern functional logic languages. These implementations rely on narrowing, in particular on some optimal narrowing strategies, to execute functional logic programs. We translate functional logic programs into imperative (Java) programs without an intermediate abstract machine. A central idea of our approach is the explicit representation and processing of narrowing computations as data objects. This enables the implementation of operationally complete strategies (i.e., without backtracking) or techniques for search control (e.g., encapsulated search). Thanks to the use of an intermediate and portable represen tation of programs, our implementation is general enough to be used as a common back end for a wide variety of functional logic languages.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
H. Aït-Kaci, P. Lincoln, and R. Nasr. Le Fun: Logic, equations, and functions. In Proc. 4th IEEE Internat. Symposium on Logic Programming, pages 17--23, San Francisco, 1987.
|
| |
2
|
|
| |
3
|
|
| |
4
|
S. Antoy. Needed narrowing in Prolog. Technical report 96-2, Portland State University, 1996.
|
| |
5
|
|
 |
6
|
|
 |
7
|
Sergio Antoy , Rachid Echahed , Michael Hanus, A needed narrowing strategy, Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.268-279, January 16-19, 1994, Portland, Oregon, United States
[doi> 10.1145/174675.177899]
|
| |
8
|
|
| |
9
|
|
| |
10
|
|
| |
11
|
M. Chakravarty and H. Lock. Towards the uniform implementation of declarative languages. Computer Languages, 23(2--4):121--160, 1997.
|
| |
12
|
|
| |
13
|
|
| |
14
|
M. Hanus. The integration of functions into logic programming: From theory to practice. Journal of Logic Programming, 19&20:583--628, 1994.
|
| |
15
|
|
 |
16
|
|
| |
17
|
M. Hanus, S. Antoy, J. Koj, R. Sadre, and F. Steiner. PAKCS 1.3: The Portland Aachen Kiel Curry System User Manual. Technical report, University of Kiel, Germany, 2000. Available at http://www.informatik.uni-kiel.de/~pakcs.
|
| |
18
|
|
| |
19
|
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.
|
| |
20
|
|
| |
21
|
M. Hanus (ed.). Curry: An Integrated Functional Logic Language. Available at http://www.informatik.uni-kiel.de/~curry, 2000.
|
| |
22
|
|
| |
23
|
G. Huet and J.-J. Lévy. Computations in orthogonal rewriting systems. In J.-L. Lassez and G. Plotkin, editors, Computational Logic: Essays in Honor of Alan Robinson, pages 395--443. MIT Press, 1991.
|
| |
24
|
S. Janson. AKL -- A Multiparadigm Programming Language. PhD thesis, Swedish Institute of Computer Science, 1994.
|
| |
25
|
J. Lloyd. Programming in an integrated functional and logic language. Journal of Functional and Logic Programming, 1999(3):1--49, 1999.
|
| |
26
|
R. Loogen. Relating the implementation techniques of functional and functional logic languages. New Generation Computing, 11:179--215, 1993.
|
| |
27
|
|
| |
28
|
|
| |
29
|
|
 |
30
|
|
| |
31
|
|
 |
32
|
|
| |
33
|
P. Tarau. Jinni. Available at http://www.binnetcorp.com/Jinni/, 2001.
|
| |
34
|
D. Warren. Higher-order extensions to Prolog: are they needed? In Machine Intelligence 10, pages 441--454, 1982.
|
|