Hostname: page-component-8448b6f56d-m8qmq Total loading time: 0 Render date: 2024-04-19T15:59:55.671Z Has data issue: false hasContentIssue false

Multidimensional infinite data in the language Lucid

Published online by Cambridge University Press:  10 November 2014

JARRYD P. BECK
Affiliation:
Computer Science and Engineering, University of New South Wales, Australia Email: johnplaice@gmail.com
JOHN PLAICE
Affiliation:
Computer Science and Engineering, University of New South Wales, Australia Email: johnplaice@gmail.com
WILLIAM W. WADGE
Affiliation:
Department of Computer Science, University of Victoria, Canada

Abstract

Although the language Lucid was not originally intended to support computing with infinite data structures, the notion of (infinite) sequence quickly came to the fore, together with a demand-driven computation model in which demands are propagated for the values of particular values at particular index points. This naturally generalized to sequences of multiple dimensions so that a programmer could, for example, write a program that could be understood as a (nonterminating) loop in which one of the loop variables is an infinite vector.

Programmers inevitably found use for more and more dimensions, which led to a problem which is fully solved for the first time in this paper. The problem is that the implementation's cache requires some estimate of the dimensions actually used to compute a value being fetched. This estimate can be difficult or (if dimensions are passed as parameters) impossible to obtain, and the demand-driven evaluation model for Lucid breaks down.

We outline the evolution of Lucid which gave rise to this problem, and outline the solution, as used for the implementation of TransLucid, the latest descendant of Lucid.

Type
Paper
Copyright
Copyright © Cambridge University Press 2014 

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)

References

Ashcroft, E. A., Faustini, A. A., Jaganannathan, J. and Wadge, W. W. (1995) Multidimensional Declarative Programming. Oxford University Press, New York.CrossRefGoogle Scholar
Ashcroft, E. A. and Wadge, W. W. (1975) Program Proving Without Tears. Technical Report CS-75-03, Department of Computer Science, University of Waterloo, Waterloo, Canada. Presented to the Symposium on Proving and Improving Programs, Huet, G. and Kahn G. (eds.) held in Arc-et-Senans, France, 1–3 July 1975, 99–114, IRIA, http://www.cs.uwaterloo.ca/research/tr/1975/CS-75-03.pdf.Google Scholar
Ashcroft, E. A. and Wadge, W. W. (1976) Lucid – A formal system for writing and proving programs. SIAM Journal of Computing 5 (3) 336354.Google Scholar
Ashcroft, E. A. and Wadge, W. W. (1977) Lucid, a nonprocedural language with iteration. Communications of the ACM 20 (7) 519526.Google Scholar
Faustini, A. A. and Wadge, W. W. (1987) An eductive interpreter for the language pLucid. In: Proceedings of the ACM Symposium on Interpreters and Interpretive Techniques 86–91.Google Scholar
Feldman, S. I. and Kay, A. C. (2004) A conversation with Alan Kay. ACM Queue 2 (9) 2030.Google Scholar
Kahn, G. (1974) The semantics of simple language for parallel programming. In: IFIP Congress 471–475.Google Scholar
Paquet, J. (1999) Intensional Scientific Programming, Ph.D. thesis, Department of Computer Science, Laval University, Québec, Canada.Google Scholar
Paquet, J. and Plaice, J. (2000) The semantics of dimensions as values. In: Intensional Programming II, World-Scientific, Singapore 259273.Google Scholar
Plaice, J. (2000) Multidimensional Lucid: Design, semantics and implementation. In: Kropf, P. G., Babin, G., Plaice, J. and Unger, H. (eds.) DCW. Springer Lecture Notes in Computer Science 1830 154160.Google Scholar
Plaice, J. and Beck, J. P. (2012) Higher-order Multidimensional Programming. Report UNSW-CSE-TR-2012-15, School of Computer Science and Engineering, The University of New South Wales, Sydney, Australia. ftp://ftp.cse.unsw.edu.au/pub/doc/papers/UNSW/201215.pdf.Google Scholar
Plaice, J., Mancilla, B. and Ditu, G. (2008) From Lucid to TransLucid: Iteration, dataflow, intensional and Cartesian programming. Mathematics in Computer Science 2 (1) 3761.Google Scholar
Plaice, J., Mancilla, B., Ditu, G. and Wadge, W. W. (2008) Sequential demand-driven evaluation of Eager TransLucid. In: Proceedings of the 32nd Annual IEEE International Computer Software and Applications Conference 1266–1271.Google Scholar
Rahilly, T. and Plaice, J. (2008) A Multithreaded Implementation for TransLucid. In: Proceedings of the 32nd Annual IEEE International Computer Software and Applications Conference 1272–1277.Google Scholar
Rondogiannis, P. and Wadge, W. W. (1999) Higher-order functional languages and intensional logic. Journal of Functional Programming 9 (5) 527564.Google Scholar
Wadge, W. W. and Ashcroft, E. A. (1985) Lucid, the Dataflow Programming Language. Academic Press, London.Google Scholar