KARELIA UNIVERSITY of APPLIED SCIENCES Degree Programme in Business Information Technology

Total Page:16

File Type:pdf, Size:1020Kb

KARELIA UNIVERSITY of APPLIED SCIENCES Degree Programme in Business Information Technology KARELIA UNIVERSITY OF APPLIED SCIENCES Degree Programme in Business Information Technology Aki Kaisanlahti APPLICABILITY OF COMMON LISP IN GAME DEVELOPMENT Thesis February 2017 THESIS February 2017 All Degree Programmes Tikkarinne 9 80220 JOENSUU FINLAND (013) 260 600 Author (s) Aki Kaisanlahti Title Applicability of Common Lisp in Game Development Commissioned by NKUAS and KUAS Abstract The aim of the this thesis was to find out how applicable Common Lisp is in game development through examining the language and game development as well as trying to build a core of a game development framework with Common Lisp. Common Lisp was inspected as a programming language on its own, through comparing it with C family languages as well as in game development context through earlier use in video games. Game development was covered through examining tools and methods based on a programming perspective. Criteria for the final evaluation of the framework and Common Lisp in game development in general were based on what distinguishes game development from general software as far as development is concerned. The core of the programming library is based on Common Lisp macros; its API implementation is based on lower level programming libraries. The game development library is designed very strongly based on a programmer's perspective and aimed at other programmers in order to fo- cus on distinguishing points of Common Lisp in game development. The applicability of Common Lisp and the game development library in game development are based on the flexibility of the language due to its design. Future development of the library and with the library would make it possible to observe its applicability on a larger scale in game de - velopment. It would also enable broadening the possibilities of the API and fixing current is- sues such as foreign memory problems with foreign language library bindings or replacing them with native Common Lisp solutions. Language Pages 51 English Appendices 1 Keywords Common Lisp, game development, macros OPINNÄYTETYÖ Helmikuu 2017 Kaikki koulutukset Tikkarinne 9 80220 JOENSUU (013) 260 600 Tekijä(t) Aki Kaisanlahti Nimeke Common Lispin soveltuvuus pelinkehitykseen Toimeksiantaja PKAMK ja Karelia-amk Tiivistelmä Opinnäytetyössä tutkittiin Common Lisp -ohjelmointikieltä, pelinkehitystä ja Common Lispin edellytyksiä siihen. Common Lispillä toteutettiin myös pienimuotoisen pelinkehitykseen tarkoitetun ohjelmointikirjaston pohja. Common Lisp -kieltä käsiteltiin itsenäisesti, C-pohjaisiin kieliin verraten sekä pelinkehityskontekstissa. Modernia pelinkehitystä käsiteltiin metodien ja työkalujen näkökulmasta ohjelmointikeskeisesti. Tämän perusteella määriteltiin kriteerit, jotka erottavat pelinkehityksen normaalista ohjelmistokehityksestä. Kriteerien avulla voitiin arvioida ohjelmointikirjastoa ja Common Lispiä pelinkehityksessä Ohjelmointikirjaston pohja tukeutuu Common Lispin makroihin; ohjelmointirajapinnan sisäinen toteutus perustuu muihin alemman tason ohjelmointikirjastoihin. Ohjelmointikirjasto on suunniteltu vahvasti ohjelmoijanäkökulmasta ohjelmoijille, jotta voitiin keskittää huomio Common Lispin erityispiirteisiin pelinkehityksessä. Common Lispin ja ohjelmointikirjaston vahvuudet pelinkehityksessä perustuvat kielen joustavuuteen kielisuunnittelun ansiosta. Jatkokehitys selventäisi laajemmin kielen soveltuvuutta pelinkehitykseen. Jatkokehityksen myötä olisi myös mahdollista korjata yhteensopivuusongelmia toteutukseen käytettyjen muiden ohjelmointikielten kirjastojen kohdalla tai toteuttaa näistä Common Lispillä omat kirjastot. Kieli Sivuja 51 englanti Liitteet 1 Asiasanat Common Lisp, pelinkehitys, makrot Content Glossary...............................................................................................................6 1 INTRODUCTION...............................................................................................7 2 COMMON LISP.................................................................................................9 2.1 History and notable current implementations of Common Lisp................9 2.2 Common Lisp as a language...................................................................11 2.2.1 Language paradigms............................................................................11 2.2.2 Common Lisp syntax and language design.........................................13 2.2.3 Language comparison .........................................................................15 2.3 Programming ecosystem in Common Lisp.............................................17 2.4 Lisp in games...........................................................................................17 2.5 Performance............................................................................................19 3 GAME DEVELOPMENT..................................................................................20 3.1 Game development methods..................................................................21 3.2 Game development tools.........................................................................22 3.3 Criteria for game development................................................................24 4 LUCERNA: PREPARATION............................................................................25 4.1 Tests........................................................................................................26 4.1.1 Classimp...............................................................................................26 4.1.2 SDL.......................................................................................................27 4.1.3 Cl-opengl..............................................................................................28 4.1.4 Combinatory tests.................................................................................29 4.1.5 Deliverable executable.........................................................................30 4.2 Component choices.................................................................................31 4.3 Development tools...................................................................................32 5 LUCERNA: IMPLEMENTATION.....................................................................33 5.1 Framework component default implementation......................................34 5.2 Framework component custom implementation.....................................35 5.3 Framework component extension...........................................................36 5.4 Demo application.....................................................................................37 6 CONCLUSION.................................................................................................39 6.1 What is Common Lisp?...........................................................................39 6.2 What is modern game development?......................................................39 6.3 Tools and libraries in small scale game development............................40 6.4 Applicability of Common Lisp in game development...............................40 6.5 Evaluation and discussion.......................................................................41 6.6 Future development.................................................................................42 References.........................................................................................................44 Appendices Appendix 1 5 Glossary XNA A framework for making games made by Microsoft. Intended to run on Microsoft platforms such as Xbox 360 and Windows. SFML Simple and Fast Multimedia Library is composed of five parts that cover system, window, graphics, audio and network usage. Originally developed for C++, it has multiple language bindings today. Developed by Laurent Gomila (Gomila, 2016). SDL Simple DirectMedia Layer is similar to SFML, but is older, more well known and used. Used partly in Unreal Engine 4 and e.g. In FTL: Faster Than Light. OpenGL Open Graphics Library is a specification made by Khronos group along with others. Used widely in many different platforms. Vulkan is a new, lower level specification made by Khronos group aimed to give more control in graphics over the GPU. CFFI Common Foreign Function Interface, Common Lisp's foreign function interface that enables handling foreign code and memory. The cornerstone of Common Lisp language bindings of common libraries such as SDL. 6 1 INTRODUCTION The aim of this thesis is to examine Common Lisp as a programming language and reflect on its applicability in game development. In order to examine this, the main questions set were: What is Common Lisp? What distinguishes game development? What tools and libraries are necessary to enable small scale game development? How applicable is Common Lisp in game development? The choice of small scale game development and low level library testing is based on the fundamentals. If you can establish reliable rendering, windowing, input and output and such, other components of game development are more about scaling and abstraction. The game development framework development process started from seeing a video on live editing code with Common Lisp. Seeing it is possible to compile code, run and see changes live while working on the code seemed like a huge quality of life improvement compared to more static environments like those generally found in the C++ ecosystem. This is within using the same language, scripting languages and interpreters are a different matter entirely. Having the desire
Recommended publications
  • An Implementation of Python for Racket
    An Implementation of Python for Racket Pedro Palma Ramos António Menezes Leitão INESC-ID, Instituto Superior Técnico, INESC-ID, Instituto Superior Técnico, Universidade de Lisboa Universidade de Lisboa Rua Alves Redol 9 Rua Alves Redol 9 Lisboa, Portugal Lisboa, Portugal [email protected] [email protected] ABSTRACT Keywords Racket is a descendent of Scheme that is widely used as a Python; Racket; Language implementations; Compilers first language for teaching computer science. To this end, Racket provides DrRacket, a simple but pedagogic IDE. On the other hand, Python is becoming increasingly popular 1. INTRODUCTION in a variety of areas, most notably among novice program- The Racket programming language is a descendent of Scheme, mers. This paper presents an implementation of Python a language that is well-known for its use in introductory for Racket which allows programmers to use DrRacket with programming courses. Racket comes with DrRacket, a ped- Python code, as well as adding Python support for other Dr- agogic IDE [2], used in many schools around the world, as Racket based tools. Our implementation also allows Racket it provides a simple and straightforward interface aimed at programs to take advantage of Python libraries, thus signif- inexperienced programmers. Racket provides different lan- icantly enlarging the number of usable libraries in Racket. guage levels, each one supporting more advanced features, that are used in different phases of the courses, allowing Our proposed solution involves compiling Python code into students to benefit from a smoother learning curve. Fur- semantically equivalent Racket source code. For the run- thermore, Racket and DrRacket support the development of time implementation, we present two different strategies: additional programming languages [13].
    [Show full text]
  • The Machine That Builds Itself: How the Strengths of Lisp Family
    Khomtchouk et al. OPINION NOTE The Machine that Builds Itself: How the Strengths of Lisp Family Languages Facilitate Building Complex and Flexible Bioinformatic Models Bohdan B. Khomtchouk1*, Edmund Weitz2 and Claes Wahlestedt1 *Correspondence: [email protected] Abstract 1Center for Therapeutic Innovation and Department of We address the need for expanding the presence of the Lisp family of Psychiatry and Behavioral programming languages in bioinformatics and computational biology research. Sciences, University of Miami Languages of this family, like Common Lisp, Scheme, or Clojure, facilitate the Miller School of Medicine, 1120 NW 14th ST, Miami, FL, USA creation of powerful and flexible software models that are required for complex 33136 and rapidly evolving domains like biology. We will point out several important key Full list of author information is features that distinguish languages of the Lisp family from other programming available at the end of the article languages and we will explain how these features can aid researchers in becoming more productive and creating better code. We will also show how these features make these languages ideal tools for artificial intelligence and machine learning applications. We will specifically stress the advantages of domain-specific languages (DSL): languages which are specialized to a particular area and thus not only facilitate easier research problem formulation, but also aid in the establishment of standards and best programming practices as applied to the specific research field at hand. DSLs are particularly easy to build in Common Lisp, the most comprehensive Lisp dialect, which is commonly referred to as the “programmable programming language.” We are convinced that Lisp grants programmers unprecedented power to build increasingly sophisticated artificial intelligence systems that may ultimately transform machine learning and AI research in bioinformatics and computational biology.
    [Show full text]
  • Bringing GNU Emacs to Native Code
    Bringing GNU Emacs to Native Code Andrea Corallo Luca Nassi Nicola Manca [email protected] [email protected] [email protected] CNR-SPIN Genoa, Italy ABSTRACT such a long-standing project. Although this makes it didactic, some Emacs Lisp (Elisp) is the Lisp dialect used by the Emacs text editor limitations prevent the current implementation of Emacs Lisp to family. GNU Emacs can currently execute Elisp code either inter- be appealing for broader use. In this context, performance issues preted or byte-interpreted after it has been compiled to byte-code. represent the main bottleneck, which can be broken down in three In this work we discuss the implementation of an optimizing com- main sub-problems: piler approach for Elisp targeting native code. The native compiler • lack of true multi-threading support, employs the byte-compiler’s internal representation as input and • garbage collection speed, exploits libgccjit to achieve code generation using the GNU Com- • code execution speed. piler Collection (GCC) infrastructure. Generated executables are From now on we will focus on the last of these issues, which con- stored as binary files and can be loaded and unloaded dynamically. stitutes the topic of this work. Most of the functionality of the compiler is written in Elisp itself, The current implementation traditionally approaches the prob- including several optimization passes, paired with a C back-end lem of code execution speed in two ways: to interface with the GNU Emacs core and libgccjit. Though still a work in progress, our implementation is able to bootstrap a func- • Implementing a large number of performance-sensitive prim- tional Emacs and compile all lexically scoped Elisp files, including itive functions (also known as subr) in C.
    [Show full text]
  • Omnipresent and Low-Overhead Application Debugging
    Omnipresent and low-overhead application debugging Robert Strandh [email protected] LaBRI, University of Bordeaux Talence, France ABSTRACT application programmers as opposed to system programmers. The state of the art in application debugging in free Common The difference, in the context of this paper, is that the tech- Lisp implementations leaves much to be desired. In many niques that we suggest are not adapted to debugging the cases, only a backtrace inspector is provided, allowing the system itself, such as the compiler. Instead, throughout this application programmer to examine the control stack when paper, we assume that, as far as the application programmer an unhandled error is signaled. Most such implementations do is concerned, the semantics of the code generated by the not allow the programmer to set breakpoints (unconditional compiler corresponds to that of the source code. or conditional), nor to step the program after it has stopped. In this paper, we are mainly concerned with Common Furthermore, even debugging tools such as tracing or man- Lisp [1] implementations distributed as so-called FLOSS, i.e., ually calling break are typically very limited in that they do \Free, Libre, and Open Source Software". While some such not allow the programmer to trace or break in important sys- implementations are excellent in terms of the quality of the tem functions such as make-instance or shared-initialize, code that the compiler generates, most leave much to be simply because these tools impact all callers, including those desired when it comes to debugging tools available to the of the system itself, such as the compiler.
    [Show full text]
  • How Lisp Systems Look Different in Proceedings of European Conference on Software Maintenance and Reengineering (CSMR 2008)
    How Lisp Systems Look Different In Proceedings of European Conference on Software Maintenance and Reengineering (CSMR 2008) Adrian Dozsa Tudor Gˆırba Radu Marinescu Politehnica University of Timis¸oara University of Berne Politehnica University of Timis¸oara Romania Switzerland Romania [email protected] [email protected] [email protected] Abstract rently used in a variety of domains, like bio-informatics (BioBike), data mining (PEPITe), knowledge-based en- Many reverse engineering approaches have been devel- gineering (Cycorp or Genworks), video games (Naughty oped to analyze software systems written in different lan- Dog), flight scheduling (ITA Software), natural language guages like C/C++ or Java. These approaches typically processing (SRI International), CAD (ICAD or OneSpace), rely on a meta-model, that is either specific for the language financial applications (American Express), web program- at hand or language independent (e.g. UML). However, one ming (Yahoo! Store or reddit.com), telecom (AT&T, British language that was hardly addressed is Lisp. While at first Telecom Labs or France Telecom R&D), electronic design sight it can be accommodated by current language inde- automation (AMD or American Microsystems) or planning pendent meta-models, Lisp has some unique features (e.g. systems (NASA’s Mars Pathfinder spacecraft mission) [16]. macros, CLOS entities) that are crucial for reverse engi- neering Lisp systems. In this paper we propose a suite of Why Lisp is Different. In spite of its almost fifty-year new visualizations that reveal the special traits of the Lisp history, and of the fact that other programming languages language and thus help in understanding complex Lisp sys- borrowed concepts from it, Lisp still presents some unique tems.
    [Show full text]
  • The Glib/GTK+ Development Platform
    The GLib/GTK+ Development Platform A Getting Started Guide Version 0.8 Sébastien Wilmet March 29, 2019 Contents 1 Introduction 3 1.1 License . 3 1.2 Financial Support . 3 1.3 Todo List for this Book and a Quick 2019 Update . 4 1.4 What is GLib and GTK+? . 4 1.5 The GNOME Desktop . 5 1.6 Prerequisites . 6 1.7 Why and When Using the C Language? . 7 1.7.1 Separate the Backend from the Frontend . 7 1.7.2 Other Aspects to Keep in Mind . 8 1.8 Learning Path . 9 1.9 The Development Environment . 10 1.10 Acknowledgments . 10 I GLib, the Core Library 11 2 GLib, the Core Library 12 2.1 Basics . 13 2.1.1 Type Definitions . 13 2.1.2 Frequently Used Macros . 13 2.1.3 Debugging Macros . 14 2.1.4 Memory . 16 2.1.5 String Handling . 18 2.2 Data Structures . 20 2.2.1 Lists . 20 2.2.2 Trees . 24 2.2.3 Hash Tables . 29 2.3 The Main Event Loop . 31 2.4 Other Features . 33 II Object-Oriented Programming in C 35 3 Semi-Object-Oriented Programming in C 37 3.1 Header Example . 37 3.1.1 Project Namespace . 37 3.1.2 Class Namespace . 39 3.1.3 Lowercase, Uppercase or CamelCase? . 39 3.1.4 Include Guard . 39 3.1.5 C++ Support . 39 1 3.1.6 #include . 39 3.1.7 Type Definition . 40 3.1.8 Object Constructor . 40 3.1.9 Object Destructor .
    [Show full text]
  • The Evolution of Lisp
    1 The Evolution of Lisp Guy L. Steele Jr. Richard P. Gabriel Thinking Machines Corporation Lucid, Inc. 245 First Street 707 Laurel Street Cambridge, Massachusetts 02142 Menlo Park, California 94025 Phone: (617) 234-2860 Phone: (415) 329-8400 FAX: (617) 243-4444 FAX: (415) 329-8480 E-mail: [email protected] E-mail: [email protected] Abstract Lisp is the world’s greatest programming language—or so its proponents think. The structure of Lisp makes it easy to extend the language or even to implement entirely new dialects without starting from scratch. Overall, the evolution of Lisp has been guided more by institutional rivalry, one-upsmanship, and the glee born of technical cleverness that is characteristic of the “hacker culture” than by sober assessments of technical requirements. Nevertheless this process has eventually produced both an industrial- strength programming language, messy but powerful, and a technically pure dialect, small but powerful, that is suitable for use by programming-language theoreticians. We pick up where McCarthy’s paper in the first HOPL conference left off. We trace the development chronologically from the era of the PDP-6, through the heyday of Interlisp and MacLisp, past the ascension and decline of special purpose Lisp machines, to the present era of standardization activities. We then examine the technical evolution of a few representative language features, including both some notable successes and some notable failures, that illuminate design issues that distinguish Lisp from other programming languages. We also discuss the use of Lisp as a laboratory for designing other programming languages. We conclude with some reflections on the forces that have driven the evolution of Lisp.
    [Show full text]
  • Lisp Tutorial
    Gene Kim 9/9/2016 CSC 2/444 Lisp Tutorial About this Document This document was written to accompany an in-person Lisp tutorial. Therefore, the information on this document alone is not likely to be sufficient to get a good understanding of Lisp. However, the functions and operators that are listed here are a good starting point, so you may look up specifications and examples of usage for those functions in the Common Lisp HyperSpec (CLHS) to get an understanding of their usage. Getting Started Note on Common Lisp Implementations I will use Allegro Common Lisp since it is what is used by Len (and my research). However, for the purposes of this class we won’t be using many (if any) features that are specific to common lisp implementations so you may use any of the common lisp implementations available in the URCS servers. If you are using any libraries that are implementation-specific for assignments in this class, I would strongly urge you to rethink your approach if possible. If we (the TAs) deem any of these features to be solving to much of the assigned problem, you will not receive full credit for the assignment. To see if a function is in the Common Lisp specifications see the Common Lisp HyperSpec (CLHS). Simply google the function followed by “clhs” to see if an entry shows up. Available Common Lisp implementations (as far as I know): - Allegro Common Lisp (acl or alisp will start an Allegro REPL) - CMU Common Lisp (cmucl or lisp will start a CMUCL REPL) - Steel Bank Common Lisp (sbcl will start an SBCL REPL) IDE/Editor It is not important for this class to have an extensive IDE since we will be working on small coding projects.
    [Show full text]
  • Allegro CL User Guide
    Allegro CL User Guide Volume 1 (of 2) version 4.3 March, 1996 Copyright and other notices: This is revision 6 of this manual. This manual has Franz Inc. document number D-U-00-000-01-60320-1-6. Copyright 1985-1996 by Franz Inc. All rights reserved. No part of this pub- lication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means electronic, mechanical, by photocopying or recording, or otherwise, without the prior and explicit written permission of Franz incorpo- rated. Restricted rights legend: Use, duplication, and disclosure by the United States Government are subject to Restricted Rights for Commercial Software devel- oped at private expense as specified in DOD FAR 52.227-7013 (c) (1) (ii). Allegro CL and Allegro Composer are registered trademarks of Franz Inc. Allegro Common Windows, Allegro Presto, Allegro Runtime, and Allegro Matrix are trademarks of Franz inc. Unix is a trademark of AT&T. The Allegro CL software as provided may contain material copyright Xerox Corp. and the Open Systems Foundation. All such material is used and distrib- uted with permission. Other, uncopyrighted material originally developed at MIT and at CMU is also included. Appendix B is a reproduction of chapters 5 and 6 of The Art of the Metaobject Protocol by G. Kiczales, J. des Rivieres, and D. Bobrow. All this material is used with permission and we thank the authors and their publishers for letting us reproduce their material. Contents Volume 1 Preface 1 Introduction 1.1 The language 1-1 1.2 History 1-1 1.3 Format
    [Show full text]
  • Download This Ebook for Free
    lisp #lisp Table of Contents About 1 Chapter 1: Getting started with lisp 2 Remarks 2 Examples 2 Installation or Setup 2 Dialects of Lisp and their implementations 2 Lisp Resources 3 Credits 4 About You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: lisp It is an unofficial and free lisp ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official lisp. The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners. Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected] https://riptutorial.com/ 1 Chapter 1: Getting started with lisp Remarks This section provides an overview of what lisp is, and why a developer might want to use it. It should also mention any large subjects within lisp, and link out to the related topics. Since the Documentation for lisp is new, you may need to create initial versions of those related topics. Examples Installation or Setup Probably the two most popular free implementations of Common Lisp are Clozure Common Lisp (CCL) and Steel Bank Common Lisp (SBCL).
    [Show full text]
  • 1960 1970 1980 1990 Japan California………………… UT IL in PA NJ NY Massachusetts………… Europe Lisp 1.5 TX
    Japan UT IL PA NY Massachusetts………… Europe California………………… TX IN NJ Lisp 1.5 1960 1970 1980 1990 Direct Relationships Lisp 1.5 LISP Family Graph Lisp 1.5 LISP 1.5 Family Lisp 1.5 Basic PDP-1 LISP M-460 LISP 7090 LISP 1.5 BBN PDP-1 LISP 7094 LISP 1.5 Stanford PDP-1 LISP SDS-940 LISP Q-32 LISP PDP-6 LISP LISP 2 MLISP MIT PDP-1 LISP Stanford LISP 1.6 Cambridge LISP Standard LISP UCI-LISP MacLisp Family PDP-6 LISP MacLisp Multics MacLisp CMU SAIL MacLisp MacLisp VLISP Franz Lisp Machine Lisp LISP S-1 Lisp NIL Spice Lisp Zetalisp IBM Lisp Family 7090 LISP 1.5 Lisp360 Lisp370 Interlisp Illinois SAIL MacLisp VM LISP Interlisp Family SDS-940 LISP BBN-LISP Interlisp 370 Spaghetti stacks Interlisp LOOPS Common LOOPS Lisp Machines Spice Lisp Machine Lisp Interlisp Lisp (MIT CONS) (Xerox (BBN Jericho) (PERQ) (MIT CADR) Alto, Dorado, (LMI Lambda) Dolphin, Dandelion) Lisp Zetalisp TAO (3600) (ELIS) Machine Lisp (TI Explorer) Common Lisp Family APL APL\360 ECL Interlisp ARPA S-1 Lisp Scheme Meeting Spice at SRI, Lisp April 1991 PSL KCL NIL CLTL1 Zetalisp X3J13 CLTL2 CLOS ISLISP X3J13 Scheme Extended Family COMIT Algol 60 SNOBOL METEOR CONVERT Simula 67 Planner LOGO DAISY, Muddle Scheme 311, Microplanner Scheme 84 Conniver PLASMA (actors) Scheme Revised Scheme T 2 CLTL1 Revised Scheme Revised2 Scheme 3 CScheme Revised Scheme MacScheme PC Scheme Chez Scheme IEEE Revised4 Scheme Scheme Object-Oriented Influence Simula 67 Smalltalk-71 LOGO Smalltalk-72 CLU PLASMA (actors) Flavors Common Objects LOOPS ObjectLisp CommonLOOPS EuLisp New Flavors CLTL2 CLOS Dylan X3J13 ISLISP Lambda Calculus Church, 1941 λ Influence Lisp 1.5 Landin (SECD, ISWIM) Evans (PAL) Reynolds (Definitional Interpreters) Lisp370 Scheme HOPE ML Standard ML Standard ML of New Jersey Haskell FORTRAN Influence FORTRAN FLPL Lisp 1.5 S-1 Lisp Lisp Machine Lisp CLTL1 Revised3 Zetalisp Scheme X3J13 CLTL2 IEEE Scheme X3J13 John McCarthy Lisp 1.5 Danny Bobrow Richard Gabriel Guy Steele Dave Moon Jon L White.
    [Show full text]
  • S Allegro Common Lisp Foreign Function Interface
    Please do not remove this page Extensions to the Franz, Inc.'s Allegro Common Lisp foreign function interface Keane, John https://scholarship.libraries.rutgers.edu/discovery/delivery/01RUT_INST:ResearchRepository/12643408560004646?l#13643533500004646 Keane, J. (1996). Extensions to the Franz, Inc.’s Allegro Common Lisp foreign function interface. Rutgers University. https://doi.org/10.7282/t3-pqns-7h57 This work is protected by copyright. You are free to use this resource, with proper attribution, for research and educational purposes. Other uses, such as reproduction or publication, may require the permission of the copyright holder. Downloaded On 2021/09/29 22:58:32 -0400 Extensions to the Franz Incs Allegro Common Lisp Foreign Function Interface John Keane Department of Computer Science Rutgers University New Brunswick NJ keanecsrutgersedu January Abstract As provided by Franz Inc the foreign function interface of Allegro Com mon Lisp has a number of limitations This pap er describ es extensions to the interface that facilitate the inclusion of C and Fortran co de into Common Lisp systems In particular these extensions make it easy to utilize libraries of numerical subroutines such as those from Numerical Recip es in C from within ACL including those routines that take functions as arguments A mechanism for creating Lisplike dynamic runtime closures for C routines is also describ ed Acknowledgments The research presented in this do cument is supp orted in part by NASA grants NCC and NAG This research is also part of the Rutgers based
    [Show full text]