Re: Practicality of functional and logic languages? (long)

winikoff@cs.mu.OZ.AU (Michael David WINIKOFF)
Thu, 14 Jan 1993 23:57:11 GMT

          From comp.compilers

Related articles
Practicality of functional and logic languages? benes@dcse.fee.vutbr.cs (Mirek Benes) (1993-01-11)
Re: Practicality of functional and logic languages? maniattb@cs.rpi.edu (1993-01-12)
Re: Practicality of functional and logic languages? (long) winikoff@cs.mu.OZ.AU (1993-01-14)
Re: Practicality of functional and logic languages? (long) bromage@mullauna.cs.mu.OZ.AU (1993-01-16)
Re: Practicality of functional and logic languages? (long) bevan@cs.man.ac.uk (1993-01-16)
| List of all articles for this month |

Newsgroups: comp.compilers
From: winikoff@cs.mu.OZ.AU (Michael David WINIKOFF)
Organization: Computer Science, University of Melbourne, Australia
Date: Thu, 14 Jan 1993 23:57:11 GMT
References: 93-01-059 93-01-080
Keywords: functional, bibliography

maniattb@cs.rpi.edu (Bill Maniatty) writes:
>Has there been research in creating architectural
>support for functional programming languages?


Yup. There has been effort into both special purpose machines for SK
combinator reduction (Eg. Norma, SKIM) and parallel machines.


Effort has also been made in both efficient implementation on conventional
hardware (EG. the G machine and it's variants) and on conventional
multiprocessor machines. (Eg. buckwheat)


>Most machines have the internal concept of state, which is not assumed in
>functional programming languages (particularly those which enforce a
>single asssignment rule). Just how well could the functional programming
>paradigm be expressed at the machine level?


I'm not sure what you're asking. If you're asking how would one go about
implementing pure functional languages then think of LISP - one uses a
heap.


>What about the power of the functional programming paradigm? Is there an
>important class of problem which cannot be done by Functional Programming?


Anything involving random access data structures (ie. arrays) can be
simulated using balanced trees but will be slower. Haskell has arrays. A
good implementation will be able to detect when the array is being used in
a single threaded fashion and will implement it as an imperative array
using in place updating.


Ie. Arrays CAN be done - but unless your language and compiler offers
support it will be slower.


>Could you write an Operating System using Functional Programming
>techniques for example?


Yup. It's been done.
--------------
Some references:


Functional Operating Systems
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Author: David Turner
Title: Functional programming and communicating processes (some design
                            considerations for a functional operating system)
Journal: Proceedings of the Conference on Parallel Architectures and
                            Languages Europe, Volume II: Parallel Languages
Editor: J.W. de Bakker, A.J. Nijman, P.C. Treleaven
City: Eindhoven, Netherlands
Date: June 1987
Pages: 54-74
Keyword: parle parle87, Kent Applicative Operating System, KAOS, Miranda
Other: published as Lecture Notes in Computer Science 259 by
                            Springer-Verlag


Author: P. Henderson
Title: Purely functional operating systems
Journal: Proceedings of the Workshop on Functional Programming and its
                            Applications
Editor: J. Darlington, P. Henderson, D.A. Turner
Publisher: Cambridge University Press
Date: 1982
Pages: 177-192
Keyword: fpaia


Author: William Stoye
Title: Message-based functional operating systems
Journal: Science of Computer Programming
Volume: 6
Number: 3
Date: 1986
Pages: 291-311
Keyword: scp


Hardware
~~~~~~~~~
Author: Mark Scheeval
Title: NORMA: a graph reduction processor
Journal: Conference Record of the ACM Symposium on LISP and Functional
                            Programming
Date: 1986
Keyword: slfp slfp86


Author: T.J.W. Clarke, P.J.S. Gladstone, C.D. MacLean, A.C. Norman
Title: SKIM - the S,K,I reduction machine
Journal: Conference Record of the 1980 LISP Conference
City: Stanford, California
Date: August 1980
Pages: 128-135
Keyword: slfp slfp80


Author: John Darlington, Mike Reeve
Title: ALICE: a multi-processor reduction machine for the parallel
                            evaluation of applicative languages
Journal: Proceedings of the 1981 Symposium on Functional Programming and
                            Computer Architecture
City: Portsmouth, New Hampshire
Date: October 1981
Pages: 65-75
Keyword: fpca fpca81




Author: Simon L. Peyton Jones, Chris Clack, Jon Salkild, Mark Hardie
Title: GRIP - a high-performance architecture for parallel graph
                            reduction
Journal: Proceedings of the 1987 Symposium on Functional Programming
                            Languages and Computer Architecture
Editor: Gilles Kahn
City: Portland, Oregon
Date: September 1987
Pages: 98-112
Keyword: fpca fplca fpca87 fplca87, supercombinator, intelligent memory
                            IMU
Other: published as Lecture Notes in Computer Science 274 by
                            Springer-Verlag


Implementation on conventional machines
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Author: Benjamin Goldberg
Title: Buckwheat: graph reduction on a shared-memory multiprocessor
Journal: Proceedings of the ACM Conference on LISP and Functional
                            Programming
City: Snowbird, Utah
Date: July 1988
Keyword: slfp slfp88


Author: G.L. Burn, S.L. Peyton Jones, J.D. Robson
Title: The SpinelessG-Machine
Journal: Proceedings of the ACM Conference on LISP and Functional
                            Programming
City: Snowbird, Utah
Date: July 1988
Keyword: slfp slfp88
--
Michael Winikoff
winikoff@cs.mu.oz.au
Final year computer science. University of Melbourne, Australia.
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.