SWI-Prolog (Windows Download - Prolog.Org/Download/Stable ) – for Linux, Swi-Prolog (Sudo Apt-Get Install Swi-Prolog)

Total Page:16

File Type:pdf, Size:1020Kb

SWI-Prolog (Windows Download - Prolog.Org/Download/Stable ) – for Linux, Swi-Prolog (Sudo Apt-Get Install Swi-Prolog) CS 332 Programming Language Concepts Lecture 11 – Alternative Programming Languages (Functional – LISP Declarative - PROLOG) March 26, 2018 Sam Siewert Reminders Exercise #4 - Your proposals!! - Pair Up if you Like – Williams, Laurie, et al. "Strengthening the case for pair programming." IEEE software 17.4 (2000): 19-25. [Canvas] – 4 Objective Measure, 4 Subjective vs. 3 Objective, 3 Subjective Exercise #5 - work on project Exercise #6 - is your Final Report Exam #2, Last Day of Class, April 26, Review Tues Before Final Exam – Your Presentation – Team or Individual Analysis or Mini-Alternate Programming Language – 12:30-2:30pm, Sat, Apr 28 – Ideally No more than 6 presentations (consider pairing up) – Or, Overflow session (and I bring food!) Sam Siewert 2 Extra Credit – Dijkstra’s Flag Correct spelling of Dijkstra! (please) Dutch, French, and Czech flag require sorting of equal numbers of Red, Blue and White pixels in a PPM (flags) See Assignment #3 for Extra Credit - Turn in Anytime ¾ R, W 3/8 Red 3/8 White ¼ Blue By inspection Sam Siewert 3 Quick Note on Lab #4, Part 3 Hybrid Concept What I asked for is Not Natural! Sort, Add/Delete Like a Linked List, Dump Like Memory Encapsulate Linked-List and Array in a Single Object and/or Instantiate with Either? How Does One Do this? OO? Many Options, Here’s a Few, Take an Approach 1. One Class with Methods the Encapsulates Both An Array Hybrid Prototype - Outcome and Linked List (to provide both behaviors) 2. Make your Linked-List Object Work like an Array (Best Done with C++ where you can Overload “[]”) and Use Methods In Place of Array 3. Hybrid Data Structure – Array with Linked List of Pointers to It! – So Called Write-Anywhere Scheme with Data Map 4. …? http://www.popsci.com/article/cars/will-helicopter-truck-fly Sam Siewert 4 Research vs. Development NSF (OMB) Vision, Objectives, Goals – Acquisition of Knowledge "Research" is defined as a systematic study – Requirements Less Emphasized, To Be directed toward fuller scientific knowledge or Determined understanding of the subject studied. Research is classified as either basic or applied, according – Proof-of-Concept and Prototypes to the objectives of the investigator. Emphasized – Repeatability of Results, Both Expected "Development" is the systematic use of and Unexpected knowledge and understanding gained from research directed toward the production of useful materials, devices, systems, or Experimental Research methods, including design and development – Emphasis on Validation & Verification of prototypes and processes. – Design of Experiments (PL Compare) DoD – Data Analysis Theoretical Research – Models – Mathematical, Logical, Statistical, Probability, Simulation – Analysis of Problems and Domains Sam Siewert https://www.rand.org/content/dam/rand/pubs/monograph_reports/MR1194/MR1194.appb.pdf 5 Simple View of Research [R&D] Acquisition of Knowledge – Theory or Experiment Defined by Existing Knowledge and Expectations Development Innovation / Adv. Tech Applied Basic • Well-known (standard) • Recombination of well-known • Expectations • Nobody knows • Specified application • Specified application • Misconceptions • No application • Assumptions • Specific Problem or Class Spectrum Sam Siewert 6 Functional PL Concepts Based on Lambda Calculus Output is Math Function of Inputs with No Internal State, No Side Effects – Lambda Calculus Also Used to Specify PL Semantics (Denotational Semantics) – Nested Functions and Recursion – Everything is a Function, Including Data (Much like Everything is and Object in OOP) Common Lisp – Symbolic AI, Functional Core – Online C-Lisp Book/Manual – Syntax Overview Haskell – Purely Functional Sam Siewert 7 Using Scheme on PRClab or PC LISP Interpreter (E.g. GNU Common LISP, Steel Bank) C-Lisp Most Widely Used Numerous Lisp Variants – E.g. Scheme – sudo apt-get install scm – Good so you can follow along in Chapter 10, PLP On PRClab, Use Gambit Scheme Interpreter Sam Siewert 8 Lisp Basics – Winston & Horn (setf friends '(dick jane sally)) t Tested in friends nil C-Lisp (setf enemies '(troll grinch ghost)) pi (setf enemies (remove 'ghost enemies)) (append alist blist) enemies (length alist) (setf friends (cons 'ghost friends)) (reverse alist) friends (setf sam '((height 6.1) (defun newfriend (name) (weight 210))) (setf enemies (remove name enemies)) (assoc 'height sam) (setf friends (cons name friends))) (setf nlist '(1 2 3 4 5 6 7 120)) (first '(a b c)) (max 1 2 3 4 5 6 122) (rest '(a b c)) ; parallel let (rest '(c)) (setf x 'outside) (first (rest '(a b c))) (let ((x 'inside) (first '(rest (a b c))) (y x)) (car '(a b c)) (list x y)) (cdr '(a b c)) ; sequential let (cadr '(a b c)) (setf x 'outside) (second '(a b c)) (let* ((x 'inside) (setf alist '(1 2 3 4 5 6)) (y x)) (setf alist '(a b c d e) (list x y)) blist '(x y z)) () (expt 2 3) Sam Siewert (cos 3) 9 Modern C-Lisp IDE LispWorks - Download Graphical Debugger Interactive Windows Mac Linux Sam Siewert 10 Everything is Really a List in Lisp http://www.gigamonkeys.com/book/they-called-it-lisp-for- a-reason-list-processing.html Lists always Have Parens around them To get to an Atom, Use Car on List of ONE Sam Siewert 11 CSL Lisp REDUCE Algebraic Simplification, Derivation, Etc. Simplifying Equations Compared to Numerical Solutions Sam Siewert 12 Lisp Applications and Activity DS-1, Deep-Space 1 – RAX – Remote Agent – Flew Common Lisp Interpreter (Lisp Works) ROS Lisp - http://wiki.ros.org/roslisp Planet Lisp - http://planet.lisp.org/ MIT course – Lisp Intro to Programming https://common-lisp.net/ http://norvig.com/paip.html Sam Siewert 13 Brief Lisp History Lisp was invented by John McCarthy in 1958 while he was at the Massachusetts Institute of Technology (MIT). McCarthy published its design in a paper in Communications of the ACM in 1960, entitled "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I".[9] He showed that with a few simple operators and a notation for functions, one can build a Turing- John McCarthy complete language for algorithms. Sam Siewert 14 Other Uses of LISP – “Latin Roots for Modern Multi-paradigm and Functional” Automated Theorem Proving Game Theory and AI Games Natural Language Processing Automated Planning and Scheduling Optimization Searches Semantic Web and Search Largely Being Replaced by Functional Features in Python, C++, C# and Newer Lisp Dialects such as Scheme and Racket as well as multi-paradigm Caml and Haskell, Swift https://chessprogramming.wikispaces.com/Herbert+Simon Sam Siewert 15 What is Status of Lisp Lisp Python new/current AI teaching programming Pascal language Scheme ML Python is often used for Intro to Programming with Java Ada Smalltalk C++, Java, Swift, Python, C#, Common Lisp etc. are used for production Miranda C++ AI products CLOS Caml Eiffel Haskell Lisp is a great way to learn functional programming Python OCaml based on simplicity, long Ruby history, and pure functional C# subset F# Sam Siewert 16 Shallow to Deep – Structural or Mathematical Equivalence Testing Equality and Equivalence Gets Interesting (Equality Predicates) – Structurally the Same – String Comparison – Real Valued Comparison – Same Function, Same Evaluation of a Function … Most PLs Have Simple Evaluation and Compare Sam Siewert 17 Some Examples … Using A Simple List of Numbers … Most Imperative Procedural PLs have Shallow Copy (I Can’t Assign a Struct to a Struct, Array to an Array, List to a List, etc., Just Single Values) Likewise Comparison is Typically Numerical Only Lambda expressions Two lists … Sam Siewert 18 Note on ANSI Common LISP Steel Bank Common LISP is ANSI Strict Requires Definition Prior to Elaboration (ANSI Addition) Many LISP Interpreters Simply Create the Definition Automatically (E.g. CLISP) Result is the SAME, just WARNING CLISP Has No Warning Sam Siewert 19 Digging Deeper … Typically Lisp is Taught in Introduction to AI (Symbolic) Python often used instead of Lisp Today http://people.csail.mit.edu/phw/Books/#Lisp CLISP - https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/clm.html Often a First Year Graduate or Senior Year Undergraduate Computer Science Class Patrick H. Winston - Books Sam Siewert 20 Lisp Predicates and Functions ; Conditional expression (defun prob-term (p) (cond ((> p 0.75) 'very-likely) ((> p 0.5) 'likely) ((> p 0.25) 'unlikely) (t 'very-unlikely))) ; Predicates and conditionals (equal '(1 2 3 5 4 7 9 11) '(1 2 3 5 4 7 9 11)) (equal alist blist) (member 'e alist) (equal (lambda (x) (* x x)) (lambda (x) (* x x))) (eql (lambda (x) (* x x)) (lambda (x) (* x x))) (equal (lambda (x) (* x x)) (lambda (y) (* y y))) (= 4 4.0) (defun square (n) (* n n)) (mapcar #'square '(1 2 3)) (mapcar #'= '(1 2 3) '(3 2 1)) (funcall #'(lambda (param) (first param)) '(a b c d e f)) (setf trees '((maple shade) (apple fruit))) (member '(maple shade) trees) (member '(maple shade) trees :test #'equal) Sam Siewert 21 Lisp Recursion Designed for Recursion, Nesting and Mapping Functions to Data of Most any Type ; Recursion (defun fibonacci (N) "Compute the N'th Fibonacci number." (if (or (zerop N) (= N 1)) 1 (+ (fibonacci (- N 1)) (fibonacci (- N 2))))) (defun count-elements (list) (if (endp list) 0 (+ 1 (count-elements (rest list))))) (trace count-elements) (count-elements '(1 2 3 4 5 6 7 8 9 10)) (defun count-atoms (list) (cond ((null list) 0) Call ((atom list) 1) (t (+ (count-atoms (first list)) (count-atoms (rest list)))))) (count-atoms '(sqrt (expt x 2) (expt y 2))) Sam Siewert 22 Lisp Introduction - Functional Learn by Example from Many Excellent Tutorials
Recommended publications
  • GNU/Linux AI & Alife HOWTO
    GNU/Linux AI & Alife HOWTO GNU/Linux AI & Alife HOWTO Table of Contents GNU/Linux AI & Alife HOWTO......................................................................................................................1 by John Eikenberry..................................................................................................................................1 1. Introduction..........................................................................................................................................1 2. Symbolic Systems (GOFAI)................................................................................................................1 3. Connectionism.....................................................................................................................................1 4. Evolutionary Computing......................................................................................................................1 5. Alife & Complex Systems...................................................................................................................1 6. Agents & Robotics...............................................................................................................................1 7. Statistical & Machine Learning...........................................................................................................2 8. Missing & Dead...................................................................................................................................2 1. Introduction.........................................................................................................................................2
    [Show full text]
  • MELT a Translated Domain Specific Language Embedded in the GCC
    MELT a Translated Domain Specific Language Embedded in the GCC Compiler Basile STARYNKEVITCH CEA, LIST Software Safety Laboratory, boˆıte courrier 94, 91191 GIF/YVETTE CEDEX, France [email protected] [email protected] The GCC free compiler is a very large software, compiling source in several languages for many targets on various systems. It can be extended by plugins, which may take advantage of its power to provide extra specific functionality (warnings, optimizations, source refactoring or navigation) by processing various GCC internal representations (Gimple, Tree, ...). Writing plugins in C is a complex and time-consuming task, but customizing GCC by using an existing scripting language inside is impractical. We describe MELT, a specific Lisp-like DSL which fits well into existing GCC technology and offers high-level features (functional, object or reflexive programming, pattern matching). MELT is translated to C fitted for GCC internals and provides various features to facilitate this. This work shows that even huge, legacy, software can be a posteriori extended by specifically tailored and translated high-level DSLs. 1 Introduction GCC1 is an industrial-strength free compiler for many source languages (C, C++, Ada, Objective C, Fortran, Go, ...), targetting about 30 different machine architectures, and supported on many operating systems. Its source code size is huge (4.296MLOC2 for GCC 4.6.0), heterogenous, and still increasing by 6% annually 3. It has no single main architect and hundreds of (mostly full-time) contributors, who follow strict social rules 4. 1.1 The powerful GCC legacy The several GCC [8] front-ends (parsing C, C++, Go .
    [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]
  • QUALM; *Quoion Answeringsystems
    DOCUMENT RESUME'. ED 150 955 IR 005 492 AUTHOR Lehnert, Wendy TITLE The Process'of Question Answering. Research Report No. 88. ..t. SPONS AGENCY Advanced Research Projects Agency (DOD), Washington, D.C. _ PUB DATE May 77 CONTRACT ,N00014-75-C-1111 . ° NOTE, 293p.;- Ph.D. Dissertation, Yale University 'ERRS' PRICE NF -$0.83 1C- $15.39 Plus Post'age. DESCRIPTORS .*Computer Programs; Computers; *'conceptual Schemes; *Information Processing; *Language Classification; *Models; Prpgrai Descriptions IDENTIFIERS *QUALM; *QuOion AnsweringSystems . \ ABSTRACT / The cOmputationAl model of question answering proposed by a.lamputer program,,QUALM, is a theory of conceptual information processing based 'bon models of, human memory organization. It has been developed from the perspective of' natural language processing in conjunction with story understanding systems. The p,ocesses in QUALM are divided into four phases:(1) conceptual categorization; (2) inferential analysis;(3) content specification; and (4) 'retrieval heuristict. QUALM providea concrete criterion for judging the strengths and weaknesses'of store representations.As a theoretical model, QUALM is intended to describ general question answerinlg, where question antiering is viewed as aerbal communicb.tion. device betieen people.(Author/KP) A. 1 *********************************************************************** Reproductions supplied'by EDRS are the best that can be made' * from. the original document. ********f******************************************,******************* 1, This work-was
    [Show full text]
  • Guile Programmer's Manual
    Guile Programmers Manual For use with Cygnus Guile Last up dated July Mark Galassi Los Alamos National Lab oratory and Cygnus Supp ort rosalianislanlgov c Copyright Cygnus Supp ort Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this p ermission notice are preserved on all copies Permission is granted to copy and distribute mo died versions of this manual under the conditions for verbatim copying provided that the entire resulting derived work is distributed under the terms of a p ermission notice identical to this one Permission is granted to copy and distribute translations of this manual into another language under the ab ove conditions for mo died versions except that this p ermission notice may b e stated in a translation approved by Free Software Foundation Chapter What go es in this manual What go es in this manual You might b e wondering why there are two separate manuals for Guile It is customary to split the do cumentation for ma jor packages into a user manual a gentle and intro ductory do cument and a reference manual Sometimes p eople go a step farther and make a separate tutorial other times the tutorial is part of the user manual In this framekwork what you are supp osed to do is use the user manual until you have under sto o d all that it has to oer you and then use the reference manual for the rest of your life except when you are teaching This Guile Programmers Manual is indeed a reference manual so I assume that you know everything thats in the Guile
    [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]
  • GNU MP the GNU Multiple Precision Arithmetic Library Edition 6.2.1 14 November 2020
    GNU MP The GNU Multiple Precision Arithmetic Library Edition 6.2.1 14 November 2020 by Torbj¨ornGranlund and the GMP development team This manual describes how to install and use the GNU multiple precision arithmetic library, version 6.2.1. Copyright 1991, 1993-2016, 2018-2020 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover Texts being \A GNU Manual", and with the Back-Cover Texts being \You have freedom to copy and modify this GNU Manual, like GNU software". A copy of the license is included in Appendix C [GNU Free Documentation License], page 132. i Table of Contents GNU MP Copying Conditions :::::::::::::::::::::::::::::::::::: 1 1 Introduction to GNU MP ::::::::::::::::::::::::::::::::::::: 2 1.1 How to use this Manual :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 2 2 Installing GMP ::::::::::::::::::::::::::::::::::::::::::::::::: 3 2.1 Build Options:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 3 2.2 ABI and ISA :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 2.3 Notes for Package Builds:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 11 2.4 Notes for Particular Systems :::::::::::::::::::::::::::::::::::::::::::::::::::::: 12 2.5 Known Build Problems ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 14 2.6 Performance
    [Show full text]
  • An Industrial Strength Theorem Prover for a Logic Based on Common Lisp
    An Industrial Strength Theorem Prover for a Logic Based on Common Lisp y z Matt Kaufmannand J Strother Moore Personal use of this material is permitted. particular style of formal veri®cation that has shown consid- However, permission to reprint/republish this erable promise in recent years is the use of general-purpose material for advertising or promotional pur- automated reasoning systems to model systems and prove poses or for creating new collective works for properties of them. Every such reasoning system requires resale or redistribution to servers or lists, or considerable assistance from the user, which makes it im- to reuse any copyrighted component of this portant that the system provide convenient ways for the user work in other works must be obtained from the to interact with it. IEEE.1 One state-of-the-art general-purpose automated reason- ing system is ACL2: ªA Computational Logic for Applica- AbstractÐACL2 is a re-implemented extended version tive Common Lisp.º A number of automated reasoning of Boyer and Moore's Nqthm and Kaufmann's Pc-Nqthm, systems now exist, as we discuss below (Subsection 1.1). In intended for large scale veri®cation projects. This paper this paper we describe ACL2's offerings to the user for con- deals primarily with how we scaled up Nqthm's logic to an venientªindustrial-strengthºuse. WebegininSection2with ªindustrial strengthº programming language Ð namely, a a history of theACL2 project. Next, Section 3 describes the large applicative subset of Common Lisp Ð while preserv- logic supportedby ACL2, which has been designed for con- ing the use of total functions within the logic.
    [Show full text]
  • Unix Quickref.Dvi
    Summary of UNIX commands Table of Contents df [dirname] display free disk space. If dirname is omitted, 1. Directory and file commands 1994,1995,1996 Budi Rahardjo ([email protected]) display all available disks. The output maybe This is a summary of UNIX commands available 2. Print-related commands in blocks or in Kbytes. Use df -k in Solaris. on most UNIX systems. Depending on the config- uration, some of the commands may be unavailable 3. Miscellaneous commands du [dirname] on your site. These commands may be a commer- display disk usage. cial program, freeware or public domain program that 4. Process management must be installed separately, or probably just not in less filename your search path. Check your local documentation or 5. File archive and compression display filename one screenful. A pager similar manual pages for more details (e.g. man program- to (better than) more. 6. Text editors name). This reference card, obviously, cannot de- ls [dirname] scribe all UNIX commands in details, but instead I 7. Mail programs picked commands that are useful and interesting from list the content of directory dirname. Options: a user's point of view. 8. Usnet news -a display hidden files, -l display in long format 9. File transfer and remote access mkdir dirname Disclaimer make directory dirname The author makes no warranty of any kind, expressed 10. X window or implied, including the warranties of merchantabil- more filename 11. Graph, Plot, Image processing tools ity or fitness for a particular purpose, with regard to view file filename one screenfull at a time the use of commands contained in this reference card.
    [Show full text]
  • Latexsample-Thesis
    INTEGRAL ESTIMATION IN QUANTUM PHYSICS by Jane Doe A dissertation submitted to the faculty of The University of Utah in partial fulfillment of the requirements for the degree of Doctor of Philosophy Department of Mathematics The University of Utah May 2016 Copyright c Jane Doe 2016 All Rights Reserved The University of Utah Graduate School STATEMENT OF DISSERTATION APPROVAL The dissertation of Jane Doe has been approved by the following supervisory committee members: Cornelius L´anczos , Chair(s) 17 Feb 2016 Date Approved Hans Bethe , Member 17 Feb 2016 Date Approved Niels Bohr , Member 17 Feb 2016 Date Approved Max Born , Member 17 Feb 2016 Date Approved Paul A. M. Dirac , Member 17 Feb 2016 Date Approved by Petrus Marcus Aurelius Featherstone-Hough , Chair/Dean of the Department/College/School of Mathematics and by Alice B. Toklas , Dean of The Graduate School. ABSTRACT Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah. Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.
    [Show full text]
  • The Embeddable Common Lisp
    ACM Lisp Pointers 8(1), 1995, 30-41 The Embeddable Common Lisp Giuseppe Attardi Dipartimento di Informatica, Universit`adi Pisa Corso Italia 40, I-56125 Pisa, Italy net: [email protected] Abstract The Embeddable Common Lisp is an implementation of Common Lisp designed for being embeddable within C based applications. ECL uses standard C calling conventions for Lisp compiled functions, which allows C programs to easily call Lisp functions and viceversa. No foreign function interface is required: data can be exchanged between C and Lisp with no need for conversion. ECL is based on a Common Runtime Support (CRS) which provides basic facilities for memory management, dynamic loading and dumping of binary images, support for multiple threads of execution. The CRS is built into a library that can be linked with the code of the application. ECL is modular: main modules are the program development tools (top level, debugger, trace, stepper), the compiler, and CLOS. A native implementation of CLOS is available in ECL: one can configure ECL with or without CLOS. A runtime version of ECL can be built with just the modules which are required by the application. 1 Introduction As applications become more elaborate, the facilities required to build them grow in number and sophistica- tion. Each facility is accessed through a specific package, quite complex itself, like in the cases of: modeling, simulation, graphics, hypertext facilities, data base management, numerical analysis, deductive capabilities, concurrent programming, heuristic search, symbolic manipulation, language analysis, special device control. Reusability is quite a significant issue: once a package has been developed, tested and debugged, it is un- desirable having to rewrite it in a different language just because the application is based in such other language.
    [Show full text]
  • GNU/Linux AI & Alife HOWTO
    GNU/Linux AI & Alife HOWTO GNU/Linux AI & Alife HOWTO Table of Contents GNU/Linux AI & Alife HOWTO......................................................................................................................1 by John Eikenberry..................................................................................................................................1 1. Introduction..........................................................................................................................................1 2. Traditional Artificial Intelligence........................................................................................................1 3. Connectionism.....................................................................................................................................1 4. Evolutionary Computing......................................................................................................................1 5. Alife & Complex Systems...................................................................................................................1 6. Agents & Robotics...............................................................................................................................1 7. Programming languages.......................................................................................................................2 8. Missing & Dead...................................................................................................................................2 1. Introduction.........................................................................................................................................2
    [Show full text]