MultiLisp

Η MultiLisp είναι μια συναρτησιακή γλώσσα προγραμματισμού και διάλεκτος της διαλέκτου Scheme της Lisp, με κάποιες επιπλέον εντολές και εκφράσεις για παράλληλη εκτέλεση και κοινή (μοιραζόμενη) μνήμη. Η MultiLisp υλοποιείται σε Interlisp. Αυτές οι επεκτάσεις περιλαμβάνουν παρενέργειες, με συνέπεια η MultiLisp να είναι μη-ντετερμινιστική. Εκτός των επεκτάσεων για παράλληλο προγραμματισμό, η MultiLisp έχει επίσης κάποιους ασυνήθιστους αλγόριθμους για συλλογή απορριμμάτων και χρονοπρογραμματισμό εργασιών. Η MultiLisp, όπως και η Scheme, είναι προσανατολισμένη σε συμβολικούς υπολογισμούς. Σε αντίθεση με κάποιες άλλες γλώσσες παράλληλου προγραμματισμού, η MultiLisp ενσωματώνει εντολές που προκαλούν παρενέργειες και για τη ρητή δήλωση του παραλληλισμού. Σχεδιάστηκε από τον Robert H. Halstead στις αρχές της δεκαετίας του 1980 για χρήση στον υπολογιστή Concert που είχε 32 επεξεργαστές και αναπτυσσόταν στο Τεχνολογικό Ινστιτούτο της Μασαχουσέτης (MIT). Επέδρασε στην ανάπτυξη της διαλέκτου Gambit της Scheme  και της Interlisp-VAX.

PCALL και FUTURE
Η MultiLisp επιτυγχάνει τον παραλληλισμό με τη μακροεντολή PCALL, με τον κώδικα:

(PCALL Fun A B C ...)

να είναι ισοδύναμος με τον:

(Fun A B C ...)

με τη διαφορά ότι τα ορίσματα A, B, C, κλπ. μπορούν να αποτιμηθούν παράλληλα, κάτι που έρχεται σε αντίθεση με τη συνηθισμένη σειρά εκτέλεσης, που είναι σειριακή από τα αριστερά προς τα δεξιά. Χρησιμοποιεί επίσης μια έκφραση του παράλληλου προγραμματισμού, το μέλλον (future), το οποίο μοιάζει με την εντολή fork σε συνδυασμό με οκνηρή αποτίμηση. Με αυτόν τον τρόπο, μπορεί να γραφεί μια έκφραση όπως η

(cons (FUTURE A) (FUTURE B)) 

η οποία θα επικαλύψει την αποτίμηση όχι μόνο των εκφράσεων A και B μεταξύ τους, αλλά και αυτών με το αποτέλεσμα της κλήσης cons, μέχρι να εκτελεστεί μια λειτουργία που να απαιτεί πραγματική πληροφορία για την τιμή του A ή του B.

Δείτε επίσης
Speculative evaluation

Αναφορές
R. H. Halstead, "MultiLisp: A Language for Concurrent Symbolic Computation", TOPLAS, October 1985
Koomen, J.A.G.M., "The Interlisp Virtual Machine: A Study of its Design and its Implementation as Multilisp", Master's thesis, University of British Columbia, 1980
Raymond L. Bates, David Dyer, Johannes A. G. M. Koomen "Implementation of Interlisp on the VAX" pp81–87 in ACM Proceedings of the 1982 ACM Conference on LISP and Functional Programming, Pittsburgh, Pennsylvania, United States
Halstead, R.H.jr. The MULTILISP Language: LISP for a Multiprocessor. Conf. on 5th Generation Computers, Tokyo, 1984
Halstead, Robert H. Jr., "MULTILISP: a language for concurrent symbolic computation" in TOPLAS 7(4) October 1985
W.S. Martins "Parallel Implementations of Functional Languages" In Proceedings of the 4th Int. Workshop on the Parallel Implementation of Functional Languages, 92
Skillicorn, David B. and Talia, Domenico "Models and languages for parallel computation" pp123–169 in ACM Computing Surveys 30(2) June 1998

Συναρτησιακές γλώσσες προγραμματισμού
Γλώσσες με δυναμικούς τύπους
Lisp