Inferred System Descriptions ELS <

Size: px
Start display at page:

Download "Inferred System Descriptions ELS <http://dydra.com/>"

Transcription

1 Inferred System Descriptions <

2 Perspective github : nine repositories; (SLOC) = 188,758 dydra : :depends-on x 22; (SLOC) = 317,746 github : < dydra : <

3 Perspective github : nine repositories; (SLOC) = 188,758 dydra : :depends-on x 22; (SLOC) = 317,746 build systems build (1984) defsystem (1981) define-system (1984) asdf (2002) asdf (2010) asdf (2014) mkdefsystem (1990) xcvb (2009) asdf : < github : < dydra : <

4 Perspective github : nine repositories; (SLOC) = 188,758 dydra : :depends-on x 22; (SLOC) = 317,746 build systems build (1984) defsystem (1981) define-system (1984) asdf (2002) asdf (2010) asdf (2014) mkdefsystem (1990) xcvb (2009) :depends-on : why? asdf : < github : < dydra : <

5 Perspective: must it be manual? :depends-on : why? build (robbins 1984) "patching" "more precise change analysis" description of large systems (pitman 1984) "transitivity of dependency information" "tight bonding to syntax" build : < dls : <

6 Results systems

7 Perspective: should be possible? "patching" "more precise change analysis" "transitivity of dependency information" "loose bonding to syntax" LISP a programming system called LISP (for LISt Processor) LISP : <

8 Perspective: should be possible? "patching" "more precise change analysis" "transitivity of dependency information" "loose bonding to syntax" LISP a programming system called LISP (for LISt Processor) "Recursive Functions of Symbolic Expressions..." LISP : <

9 Abstraction Alternatives ignore any system definition macro-expansion just to normalize syntax emulate just package symbol identity extract relations from source code do not compile do not build do not execute

10 Abstraction Vocabulary doap : : packaged product level scro : : just conceptual structure compre : : components and depends, but no hierarchy, versions, or generation swonto : : data processing in jena iao : : the entities are too generic swo : swoinowl/inferredswo/swo_inferred.owl : overdrawn : 4338 entities sioc : : process oriented oflossc : (404) : sioc specialized for open source process code : : provides starting point

11 Abstraction Vocabulary string pathname Subclass of FaslFile (external) Namespace (external) File (external) haspart generated Package (external) Subclass of wasderiv... Compilation (external) Subclass of Subclass of Subclass of compiled datetime Subclass of endedattime SourceFile (external) Collection (external) Constituent (external) Activity Subclass of Class (external) authoredon (external) Thing filecontai... Subclass of Subclass of Subclass of Subclass of Entity (external) Operator (external) Test (external) called Subclass of Subclass of Function (external) Subclass of Subclass of Subclass of Macro (external) GenericFunction (external) hasmethod Method (external)

12 Goals identify all packages to load to use a given operator construct system based on requirements at any of three levels derive changes to load between two versions per system per file per function (test)

13 Results: Metadata

14 Results: Metadata

15 Start with Text file2 test (defun iex:function (arg) (+ (iex:method1 arg) 2)) file1 (defclass iex:class () ((slot1 :initform 1 :accessor iex:class-slot1) (slot2 :initform 2 :accessor iex:class-slot2))) (defgeneric iex:method1 (object) (:method ((object iex:class)) (+ 1 (iex:method1 (iex:class-slot1 object)))) (:method ((object t)) object)) (defmethod iex:method2 ((object iex:class)) (+ (iex:method1 object) (iex:class-slot2 object))) file2 (defun test.function1 () (eql (iex:method1 (make-instance 'iex:class)) 2)) (defun test.function2 () (eql (iex:method2 (make-instance 'iex:class)) 4)) (system :example :components ((:file "file1") (:file "file2" :depends-on "file1") (:file "file3" :depends-on "file2") (:file "test" :depends-on "file2 "file1")

16 Just the Text file2 test (defun iex:function (arg) (+ (iex:method1 arg) 2)) file1 (defclass iex:class () ((slot1 :initform 1 :accessor iex:class-slot1) (slot2 :initform 2 :accessor iex:class-slot2))) (defgeneric iex:method1 (object) (:method ((object iex:class)) (+ 1 (iex:method1 (iex:class-slot1 object)))) (:method ((object t)) object)) (defmethod iex:method2 ((object iex:class)) (+ (iex:method1 object) (iex:class-slot2 object))) file2 (defun test.function1 () (eql (iex:method1 (make-instance 'iex:class)) 2)) (defun test.function2 () (eql (iex:method2 (make-instance 'iex:class)) 4)) (system :example :components ((:file "file1") (:file "file2" :depends-on "file1") (:file "file3" :depends-on "file2") (:file "test" :depends-on "file2 "file1")

17 Abstract Symbols and Relations example Package file1.lisp haspart file2.lisp haspart file3.lisp haspart package.lisp haspart test.lisp haspart ISDF-EXAMPLE-IMPLEMENTATION contains ISDF-EXAMPLE contains ISDF-EXAMPLE-TEST contains File " T10:23:29Z"^^< authoredon CLASS CLASS-SLOT1 CLASS-SLOT2 METHOD1 METHOD1 METHOD1 " T10:22:26Z"^^< authoredon METHOD2 " T10:22:26Z"^^< authoredon FUNCTION " T10:22:26Z"^^< authoredon COMMON-LISP-USER " T10:22:26Z"^^< authoredon TEST.FUNCTION1 TEST.FUNCTION2 Namespace Class Function Method GenericFunction ISDF-EXAMPLE:CLASS-SLOT1+CLASS ISDF-EXAMPLE:CLASS-SLOT2+CLASS ISDF-EXAMPLE:METHOD2+CLASS

18 Identify Types and Relations file1.lisp file2.lisp file3.lisp test.lisp FUNCTION TEST.FUNCTION2 TEST.FUNCTION1 METHOD2 METHOD1 CLASS-SLOT2 CLASS-SLOT1

19 Establish Source References file2.lisp file1.lisp test.lisp file3.lisp METHOD2 CLASS-SLOT2 METHOD1 TEST.FUNCTION2 TEST.FUNCTION1 FUNCTION CLASS-SLOT1

20 Capabilities: Infer Source Requirements file2.lisp file1.lisp file3.lisp test.lisp

21 Process : Quicklisp as Corpus $ ls /tmp/quicklisp/ wc -l 1669 $ ls quicklisp/versions/ / wc -l 1317 $ find quicklisp/versions/ / -name '*.asd' wc -l 3134 $ find quicklisp/versions/ / -name '*' - d wc -l 5839 $ find quicklisp/versions/ / -name '*.asd' \ while read dir; do dirname $dir; done \ sort uniq wc -l 1670 $ find quicklisp/versions/ / -name '*.lisp' wc -l $/development/source/library/org/quicklisp/versions/ # sloccount.... Total Physical Source Lines of Code (SLOC) = 4,307,928

22 Process : Crawl Source Code * (time (scm:abstract-system (ensure-system "quicklisp" :location #p"quicklisp/versions/ /"))) Evaluation took: seconds of real time seconds of total run time ( user, system) [ Run times consist of seconds GC time, and seconds non-gc time. ] 14.83% CPU 3,444,829 forms interpreted 17 lambdas converted 7,624,481,182,395 processor cycles 5,746,702,672 bytes consed * (/ ) *

23 Process : Result Repository

24 Process : Infer Dependency prefix ssd: < prefix code: < clear silent graph <urn:dydra:file-requirements> ; insert { graph <urn:dydra:file-requirements> {?definitionsource ssd:?referencesource } } where{ select?definitionsource?referencesource where { graph?package {?definitionsource code:?definition. # eliminate function/function definitions?definitionsource a < code:?reference.?referencesource a < code:?definition. filter(?definitionsource!=?referencesource ) } } }

25 Process : Infer Dependency prefix ssd: < prefix code: < clear silent graph <urn:dydra:system-requirements> ; insert { graph <urn:dydra:system-requirements> {?definitionpackage ssd:?referencepackage.?referencepackage ssd:requires?definitionpackage } } where{ select?definitionpackage?referencepackage where { { graph?definitionpackage {?definitionsource code:?definition.?definitionsource a < # eliminate function/function definitions } } { graph?referencepackage {?referencesource code:?reference.?referencesource a < code:?definition. } } filter (?definitionpackage!=?referencepackage) } }

26 Results: Quicklisp Graphs * (quicklisp-sparql " select?p (count(?o) as?count) FROM <urn:dydra:all> where {?s?p?o } group by?p order by desc(?count)" :message "predicate count") predicate count p count < label < < comment < < < < < endedattime 10 generated 10 used 10 wasderivedfrom 10

27 Results: Quicklisp Graphs * (quicklisp-sparql " select count(*) where { graph <urn:dydra:file-requirements> {?s?p?o} }" :message "intra-system file cross-references") intra-system file cross-references COUNT

28 Results: Quicklisp Graphs * (quicklisp-sparql " prefix ssd: < select count(*) where { graph <urn:dydra:system-requirements> {?s ssd:requires?o} }" :message "inter-system cross-references") inter-system cross-references COUNT * (quicklisp-sparql " prefix ssd: < select count(*) where { graph <urn:dydra:system-requirements> {?s ssd:?o} }" :message "inter-system cross-references") inter-system cross-references COUNT

29 BKNR: Infer Source Requirements blob.lisp tests.lisp xml-tutorial.lisp object-tests.lisp category-index.lisp xml-object.lisp xml-update.lisp xml-export.lisp tutorial.lisp object.lisp actor.lisp tutorial.lisp indices-tests.lisp xml-import.lisp convert.lisp txn.lisp encoding-test.lisp acl-mp-compat.lisp indices.lisp xml-class.lisp reader.lisp encoding.lisp runtime-statistics.lisp class.lisp capability.lisp skip-list.lisp indexed-class.lisp money.lisp utils.lisp protocol.lisp dump-core.lisp fswrap.lisp mop-bug.lisp shop.lisp slot-a LISP : <

30 BKNR: Load Order * (bknr-sparql " prefix ssd: < prefix prov: < prefix pav: < prefix code: < select distinct?loadfilename?dependentsource #?sequencenr from <urn:dydra:all> where { { select * where { bind ( ' T00:00:00Z'^^xsd:dateTime as?system_load_time ) { select?source where {?source a < optional {?othersource ssd:?source } filter (!bound(?othersource) ) } }?source ssd:+?dependentsource. bind (rdf:seq(xsd:integer) as?sequencenr ) } }?source pav:authoredon?timemodified. filter (?timemodified >?SYSTEM_LOAD_TIME )?dependentsource code:location?sourcepathname.?dependentsource pav:authoredon?sourcetime.?dependentsource rdfs:label?sourcefile. optional { [] prov:used?dependentsource ; prov:generated?dependentbinary ; prov:endedattime?binarytime.?dependentbinary code:location?binarypathname.?dependentbinary rdfs:label?binaryfile. } bind (if( bound(?binarytime), if ((?binarytime >?sourcetime),?binaryfile,?sourcefile ),?sourcefile ) as?loadfilename ) } order by desc(?sequencenr) " :message "source/binary load list (but absent binaries)")

31 BKNR: Load Order source/binary load list (but absent binaries) loadfilename dependentsource convert.lisp encoding-test.lisp object.lisp txn.lisp blob.lisp object-tests.lisp tests.lisp tutorial.lisp encoding.lisp xml-object.lisp xml-tutorial.lisp xml-export.lisp xml-import.lisp xml-update.lisp indices.lisp xml-class.lisp category-index.lisp indexed-class.lisp indices-tests.lisp tutorial.lisp capability.lisp class.lisp actor.lisp NIL *

32 Deficiencies macros ambiguous packages : non-universal symbols non-lisp syntax ".lisp" file content colleen git/sample.uc.lisp bknr-datastore git/src/xml-impex/tutorial.lisp read-eval read-time, compile-time, load-time, run-time no tracking for defparameter/-constant/-var circularity implicit package definitions ambiguous methods call sites

33 Deficiencies macros ambiguous packages : non-universal symbols non-lisp syntax ".lisp" file content colleen git/sample.uc.lisp bknr-datastore git/src/xml-impex/tutorial.lisp read-eval read-time, compile-time, load-time, run-time no tracking for defparameter/-constant/-var circularity implicit package definitions ambiguous methods call sites

34 Deficiencies : ambiguous methods bknr-datastore git/src/indices-tests.lisp (defmethod run-test :around ((test index-test-class) &optional (output *debug-io*))... ) unit-test git/unit-test.lisp (defun run-all-tests (&key (verbose nil) (output *standard-output*) (unit :all)) (let (*unit-test-results*) (run-test test output)... ) would require either propagation or run-time instrumentation to distinguish specific methods for call sites.

35 Thank you <

Object Oriented Programming (OOP)

Object Oriented Programming (OOP) Object Oriented Programming (OOP) o New programming paradigm o Actions Objects o Objects Actions o Object-oriented = Objects + Classes + Inheritance Imperative programming o OOP (Object-Oriented Programming)

More information

Common Lisp Object System Specification. 1. Programmer Interface Concepts

Common Lisp Object System Specification. 1. Programmer Interface Concepts Common Lisp Object System Specification 1. Programmer Interface Concepts Authors: Daniel G. Bobrow, Linda G. DeMichiel, Richard P. Gabriel, Sonya E. Keene, Gregor Kiczales, and David A. Moon. Draft Dated:

More information

Custom Specializers in Object-Oriented Lisp

Custom Specializers in Object-Oriented Lisp Custom Cadence Design Systems Goldsmiths, University of London 23rd May 2008 Common : Skill: Unification of various dialects; Not dead yet. Common Skill Internal dialect from Cadence Design Systems; Extension

More information

Loading Multiple Versions of an ASDF System in the Same Lisp Image

Loading Multiple Versions of an ASDF System in the Same Lisp Image Loading Multiple Versions of an ASDF System in the Same Lisp Image Vsevolod Domkin 10 th European Lisp Symposium 2017-04-03 It all started with... I'm yet to see a name conflict in Lisp that can't be solved

More information

NST: A Unit Test Framework for Common Lisp

NST: A Unit Test Framework for Common Lisp Smart Information Flow Technologies (SIFT, LLC) TC-lispers, June 9, 2009 Outline 1 Unit testing 2 3 The basic idea Early implementations, and other lessons How it maybe should work 4 What is unit testing?

More information

Object oriented programming

Object oriented programming Object oriented programming The main ideas behind object-oriented programming: the same type of action may be carried out differently on different types of objects cutting a cake is different from cutting

More information

Debugging in LISP. trace causes a trace to be printed for a function when it is called

Debugging in LISP. trace causes a trace to be printed for a function when it is called trace causes a trace to be printed for a function when it is called ;;; a function that works like reverse (defun rev (list) (cons (first (last list)) (rev (butlast list)))) USER: (trace rev) ; note trace

More information

A Genetic Algorithm Implementation

A Genetic Algorithm Implementation A Genetic Algorithm Implementation Roy M. Turner (rturner@maine.edu) Spring 2017 Contents 1 Introduction 3 2 Header information 3 3 Class definitions 3 3.1 Individual..........................................

More information

A Brief Introduction to Common Lisp

A Brief Introduction to Common Lisp A Brief Introduction to Common Lisp David Gu Schloer Consulting Group david_guru@gty.org.in A Brief History Originally specified in 1958, Lisp is the second-oldest highlevel programming language in widespread

More information

1 CLWEB INTRODUCTION 1

1 CLWEB INTRODUCTION 1 1 CLWEB INTRODUCTION 1 1. Introduction. This is CLWEB, a literate programming system for Common Lisp by Alex Plotnick plotnick@cs.brandeis.edu. It is modeled after the CWEB system by Silvio Levy and Donald

More information

A Small Interpreted Language

A Small Interpreted Language A Small Interpreted Language What would you need to build a small computing language based on mathematical principles? The language should be simple, Turing equivalent (i.e.: it can compute anything that

More information

Infinite transducers on terms denoting graphs

Infinite transducers on terms denoting graphs Infinite transducers on terms denoting graphs Irène Durand and Bruno Courcelle LaBRI, Université de Bordeaux June, 2013 European Lisp Symposium, ELS2013 2/30 Objectives What : Compute information about

More information

Custom Specializers in Object-Oriented Lisp

Custom Specializers in Object-Oriented Lisp Journal of Universal Computer Science, vol. 14, no. 20 (2008), 3370-3388 submitted: 23/6/08, accepted: 24/8/08, appeared: 28/11/08 J.UCS Custom Specializers in Object-Oriented Lisp Jim Newton (Cadence

More information

Artificial Intelligence Programming

Artificial Intelligence Programming Artificial Intelligence Programming Rob St. Amant Department of Computer Science North Carolina State University Lisp basics NC State University 2 / 99 Why Lisp? Some recent Lisp success stories include

More information

A little bit of Lisp

A little bit of Lisp B.Y. Choueiry 1 Instructor s notes #3 A little bit of Lisp Introduction to Artificial Intelligence CSCE 476-876, Fall 2017 www.cse.unl.edu/~choueiry/f17-476-876 Read LWH: Chapters 1, 2, 3, and 4. Every

More information

2. Reasons for implementing clos-unit

2. Reasons for implementing clos-unit A CLOS Implementation of the JUnit Testing Framework Architecture: A Case Study Sandro Pedrazzini Canoo Engineering AG sandro.pedrazzini@canoo.com Abstract There are different reasons why you would like

More information

CL-STORE: CL Serialization Package

CL-STORE: CL Serialization Package CL-STORE: CL Serialization Package Copyright c (c) (C) 2004 Sean Ross All rights reserved. Redistribution and use in source and binary forms, with or without modication, are permitted provided that the

More information

Common LISP Tutorial 1 (Basic)

Common LISP Tutorial 1 (Basic) Common LISP Tutorial 1 (Basic) CLISP Download https://sourceforge.net/projects/clisp/ IPPL Course Materials (UST sir only) Download https://silp.iiita.ac.in/wordpress/?page_id=494 Introduction Lisp (1958)

More information

Structure Programming in Lisp. Shared Structure. Tailp. Shared Structure. Top-Level List Structure

Structure Programming in Lisp. Shared Structure. Tailp. Shared Structure. Top-Level List Structure Structure 66-2210-01 Programming in Lisp Lecture 6 - Structure; ase Study: locks World Lisp's use of pointers Let you put any value anywhere Details are taken care of by the Lisp interpreter What goes

More information

INF4820: Algorithms for Artificial Intelligence and Natural Language Processing. More Common Lisp

INF4820: Algorithms for Artificial Intelligence and Natural Language Processing. More Common Lisp INF4820: Algorithms for Artificial Intelligence and Natural Language Processing More Common Lisp Stephan Oepen & Murhaf Fares Language Technology Group (LTG) September 6, 2017 Agenda 2 Previously Common

More information

ASDF: Another System Definition Facility. Manual for Version

ASDF: Another System Definition Facility. Manual for Version ASDF: Another System Definition Facility Manual for Version 3.3.1.2 This manual describes ASDF, a system definition facility for Common Lisp programs and libraries. You can find the latest version of this

More information

Implementing Symmetric Multiprocessing in LispWorks

Implementing Symmetric Multiprocessing in LispWorks Implementing Symmetric Multiprocessing in LispWorks Making a multithreaded application more multithreaded Martin Simmons, LispWorks Ltd Copyright 2009 LispWorks Ltd Outline Introduction Changes in LispWorks

More information

Pattern Matching WIlensky Chapter 21

Pattern Matching WIlensky Chapter 21 Pattern Matching WIlensky Chapter 21 PM-1 Pattern Matching A ubiquitous function in intelligence is pattern matching» IQ tests, for example, contain pattern matching problems because they are recognized

More information

Method Combinators. e ELS 2018 E. Didier Verna. EPITA / LRDE. Introduction Issues SBCL Combinators CGFs Alt. MCs Perfs Conclusion

Method Combinators. e ELS 2018 E. Didier Verna. EPITA / LRDE. Introduction Issues SBCL Combinators CGFs Alt. MCs Perfs Conclusion Method Combinators e ELS 2018 E Didier Verna EPITA / LRDE didier@lrde.epita.fr lrde/~didier @didierverna didier.verna google+ in/didierverna Introduction CLOS improvements over mainstream object systems

More information

INF4820. Common Lisp: Closures and Macros

INF4820. Common Lisp: Closures and Macros INF4820 Common Lisp: Closures and Macros Erik Velldal University of Oslo Oct. 19, 2010 Erik Velldal INF4820 1 / 22 Topics for Today More Common Lisp A quick reminder: Scope, binding and shadowing Closures

More information

COSI: Adding Constraints to the object-oriented paradigm

COSI: Adding Constraints to the object-oriented paradigm COSI: Adding Constraints to the object-oriented paradigm Gary Curtis, Mark Giuliano Space Telescope Science Institute, 3700 San Martin Drive, Baltimore, MD 21218 I. Overview Trans [1] is a Lisp system

More information

LP/LispLite: Trivial Lisp Org Mode Conversion

LP/LispLite: Trivial Lisp Org Mode Conversion LP/LispLite: Trivial Lisp Org Mode Conversion Roy M. Turner Spring 2016 Contents 1 Introduction 3 2 Using the tool 3 3 Header/miscellaneous 3 4 Variables/parameters 4 4.1 Variable: =*short-comment-start-regexp*........................

More information

The Users Guide. and. API Reference

The Users Guide. and. API Reference McCLIM User s Manual The Users Guide and API Reference Copyright c 2004,2005,2006,2007,2008,2017 the McCLIM hackers. i Table of Contents Introduction......................................... 1 Standards...........................................................

More information

CSCE476/876 Fall Homework 3: Programming Assignment Using Emacs and Common Lisp. 1 Exercises (15 Points) 2. 2 Find (6 points) 4

CSCE476/876 Fall Homework 3: Programming Assignment Using Emacs and Common Lisp. 1 Exercises (15 Points) 2. 2 Find (6 points) 4 CSCE476/876 Fall 2018 Homework 3: Programming Assignment Using Emacs and Common Lisp Assigned on: Monday, September 10 th, 2018. Due: Monday, September 24 th, 2018. Contents 1 Eercises (15 Points) 2 2

More information

Custom Specializers in Object-Oriented Lisp

Custom Specializers in Object-Oriented Lisp Custom Specializers in Object-Oriented Lisp Jim Newton Cadence Design Systems Mozartstrasse 2 D-85622 Feldkirchen Germany jimka@cadence.com Christophe Rhodes Department of Computing Goldsmiths, University

More information

Simple Dynamic Compilation with GOO. Jonathan Bachrach. MIT AI Lab 01MAR02 GOO 1

Simple Dynamic Compilation with GOO. Jonathan Bachrach. MIT AI Lab 01MAR02 GOO 1 Simple Dynamic Compilation with GOO Jonathan Bachrach MIT AI Lab 01MAR02 GOO 1 GOO Talk Preliminary work Introduce challenge Present GOO Introduce language Sketch implementation Report status Request Quick

More information

LISP. Everything in a computer is a string of binary digits, ones and zeros, which everyone calls bits.

LISP. Everything in a computer is a string of binary digits, ones and zeros, which everyone calls bits. LISP Everything in a computer is a string of binary digits, ones and zeros, which everyone calls bits. From one perspective, sequences of bits can be interpreted as a code for ordinary decimal digits,

More information

15 Unification and Embedded Languages in Lisp

15 Unification and Embedded Languages in Lisp 15 Unification and Embedded Languages in Lisp Chapter Objectives Chapter Contents Pattern matching in Lisp: Database examples Full unification as required for Predicate Calculus problem solving Needed

More information

Effective Audit Trail of Data With PROV-O Scott Henninger, Senior Consultant, MarkLogic

Effective Audit Trail of Data With PROV-O Scott Henninger, Senior Consultant, MarkLogic Effective Audit Trail of Data With PROV-O Scott Henninger, Senior Consultant, MarkLogic COPYRIGHT 13 June 2017MARKLOGIC CORPORATION. ALL RIGHTS RESERVED. EFFECTIVE AUDIT TRAIL WITH PROV-O Operationalizing

More information

INF4820: Algorithms for Artificial Intelligence and Natural Language Processing. Common Lisp Fundamentals

INF4820: Algorithms for Artificial Intelligence and Natural Language Processing. Common Lisp Fundamentals INF4820: Algorithms for Artificial Intelligence and Natural Language Processing Common Lisp Fundamentals Stephan Oepen & Murhaf Fares Language Technology Group (LTG) August 30, 2017 Last Week: What is

More information

Documentation for LISP in BASIC

Documentation for LISP in BASIC Documentation for LISP in BASIC The software and the documentation are both Copyright 2008 Arthur Nunes-Harwitt LISP in BASIC is a LISP interpreter for a Scheme-like dialect of LISP, which happens to have

More information

Allegro CL Certification Program

Allegro CL Certification Program Allegro CL Certification Program Lisp Programming Series Level I Presented by 1 About David Margolies Manager, Documentation, Franz Inc Been working with Lisp since 1984 dm@franz.com 2 About Franz Inc.

More information

Symbolic Programming. Dr. Zoran Duric () Symbolic Programming 1/ 89 August 28, / 89

Symbolic Programming. Dr. Zoran Duric () Symbolic Programming 1/ 89 August 28, / 89 Symbolic Programming Symbols: +, -, 1, 2 etc. Symbolic expressions: (+ 1 2), (+ (* 3 4) 2) Symbolic programs are programs that manipulate symbolic expressions. Symbolic manipulation: you do it all the

More information

Multi-Methods in Racket

Multi-Methods in Racket Multi-Methods in Racket António Menezes Leitão April, 18, 2013 1 Introduction Multi-methods are an advanced concept that extends the single dispatch approach that is used in the majority of object-oriented

More information

Meet the Macro. a quick introduction to Lisp macros. Patrick Stein / TC Lisp Users Group /

Meet the Macro. a quick introduction to Lisp macros. Patrick Stein / TC Lisp Users Group / Meet the Macro a quick introduction to Lisp macros Patrick Stein / TC Lisp Users Group / 2009-07-14 Attack Plan Some other things called macros First look at Lisp macros More advanced macros Uh-oh, my

More information

Binary Methods Programming: the Clos Perspective

Binary Methods Programming: the Clos Perspective Journal of Universal Computer Science, vol. 14, no. 20 (2008), 3389-3411 submitted: 23/6/08, accepted: 24/8/08, appeared: 28/11/08 J.UCS Binary Methods Programming: the Clos Perspective Didier Verna (Epita

More information

ASDF: Another System Definition Facility

ASDF: Another System Definition Facility ASDF: Another System Definition Facility This manual describes ASDF, a system definition facility for Common Lisp programs and libraries. You can find the latest version of this manual at http://common-lisp.net/project/

More information

Using a waiting protocol to separate concerns in the mutual exclusion problem

Using a waiting protocol to separate concerns in the mutual exclusion problem Using a waiting protocol to separate concerns in the mutual exclusion problem Frode V. Fjeld frodef@cs.uit.no Department of Computer Science, University of Tromsø Technical Report 2003-46 November 21,

More information

Semantic Web Fundamentals

Semantic Web Fundamentals Semantic Web Fundamentals Web Technologies (706.704) 3SSt VU WS 2017/18 Vedran Sabol with acknowledgements to P. Höfler, V. Pammer, W. Kienreich ISDS, TU Graz December 11 th 2017 Overview What is Semantic

More information

Common Lisp in the Wild

Common Lisp in the Wild Common Lisp in the Wild Deploying Common Lisp Applications Wimpie Nortje Copyright c 2016,2017 Wimpie Nortje PUBLISHED BY WIMPIE NORTJE WWW.DARKCHESTNUT.COM Revision 2: March 27, 2017 1. Introduction Common

More information

Stream Reasoning Workshop Technical University Berlin SR2016

Stream Reasoning Workshop Technical University Berlin SR2016 Stream Reasoning Workshop Technical University Berlin SR2016 James Anderson Tara Athan @dydradata @lomoramic

More information

UIOP is a part of ASDF ( which is released under an MIT style License: Copyright c Daniel Barlow and

UIOP is a part of ASDF (  which is released under an MIT style License: Copyright c Daniel Barlow and UIOP Manual UIOP is a part of ASDF (https://common-lisp.net/project/asdf/), which is released under an MIT style License: Copyright c 2001-2018 Daniel Barlow and contributors. Permission is hereby granted,

More information

Functional Programming. Pure Functional Languages

Functional Programming. Pure Functional Languages Functional Programming Pure functional PLs S-expressions cons, car, cdr Defining functions read-eval-print loop of Lisp interpreter Examples of recursive functions Shallow, deep Equality testing 1 Pure

More information

Carnegie Mellon University. Pittsburgh, PA April This research has been supported in part by the Advanced Research

Carnegie Mellon University. Pittsburgh, PA April This research has been supported in part by the Advanced Research PORK Object System Programmers' Guide Ora Lassila CMU-RI-TR-95-12 The Robotics Institute Carnegie Mellon University Pittsburgh, PA 15213 April 1995 c 1995 Ora Lassila This research has been supported in

More information

COMPUTER SCIENCE TRIPOS

COMPUTER SCIENCE TRIPOS CST.2011.3.1 COMPUTER SCIENCE TRIPOS Part IB Monday 6 June 2011 1.30 to 4.30 COMPUTER SCIENCE Paper 3 Answer five questions. Submit the answers in five separate bundles, each with its own cover sheet.

More information

CS 480. Lisp J. Kosecka George Mason University. Lisp Slides

CS 480. Lisp J. Kosecka George Mason University. Lisp Slides CS 480 Lisp J. Kosecka George Mason University Lisp Slides Symbolic Programming Symbols: +, -, 1, 2 etc. Symbolic expressions: (+ 1 2), (+ (* 3 4) 2) Symbolic programs are programs that manipulate symbolic

More information

Introduction to ACL2. CS 680 Formal Methods for Computer Verification. Jeremy Johnson Drexel University

Introduction to ACL2. CS 680 Formal Methods for Computer Verification. Jeremy Johnson Drexel University Introduction to ACL2 CS 680 Formal Methods for Computer Verification Jeremy Johnson Drexel University ACL2 www.cs.utexas.edu/~moore/acl2 ACL2 is a programming language, logic, and theorem prover/checker

More information

Extending Pattern Directed Inference Systems. EECS 344 Winter 2008

Extending Pattern Directed Inference Systems. EECS 344 Winter 2008 Extending Pattern Directed Inference Systems EECS 344 Winter 2008 Extending the basic PDIS model How to increase the convenience of the system How to increase the logical power of the system How to increase

More information

Common Lisp. Blake McBride

Common Lisp. Blake McBride Contents Common Lisp Blake McBride (blake@mcbride.name) 1 Data Types 2 2 Numeric Hierarchy 3 3 Comments 3 4 List Operations 4 5 Evaluation and Quotes 5 6 String Operations 5 7 Predicates 6 8 Math Predicates

More information

CSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures

CSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures CSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures Dan Grossman Fall 2014 Hi! I m not Hal J I love this stuff and have taught

More information

Filtered Dispatch ABSTRACT. Categories and Subject Descriptors. Keywords

Filtered Dispatch ABSTRACT. Categories and Subject Descriptors. Keywords Filtered Dispatch Pascal Costanza Jorge Vallejos Charlotte Herzeel Theo D Hondt Programming Technology Lab Vrije Universiteit Brussel B-1050 Brussels, Belgium pascal.costanza charlotte.herzeel jorge.vallejos

More information

Generic Function Parameter and Method Parameter Metaobjects: A Proposed Enhancement to the CLOS Metaobject Protocol. Eric L.

Generic Function Parameter and Method Parameter Metaobjects: A Proposed Enhancement to the CLOS Metaobject Protocol. Eric L. Generic Function Parameter and Method Parameter Metaobjects: A Proposed Enhancement to the CLOS Metaobject Protocol Eric L. Peterson Articial Intelligence Technologies Center MITRE Corporation 1820 Dolley

More information

The OWL API: An Introduction

The OWL API: An Introduction The OWL API: An Introduction Sean Bechhofer and Nicolas Matentzoglu University of Manchester sean.bechhofer@manchester.ac.uk OWL OWL allows us to describe a domain in terms of: Individuals Particular objects

More information

a little more on macros sort of like functions, but..

a little more on macros sort of like functions, but.. a little more on macros 1 sort of like functions, but.. one of the most interesting but tricky aspects of Lisp. unlike functions, macros don't evaluate their arguments; they compute on unevaluated expressions

More information

Recursive Functions of Symbolic Expressions and Their Computation by Machine Part I

Recursive Functions of Symbolic Expressions and Their Computation by Machine Part I Recursive Functions of Symbolic Expressions and Their Computation by Machine Part I by John McCarthy Ik-Soon Kim Winter School 2005 Feb 18, 2005 Overview Interesting paper with By John Mitchell Interesting

More information

ASDF 3, or Why Lisp is Now an Acceptable Scripting Language

ASDF 3, or Why Lisp is Now an Acceptable Scripting Language ASDF 3, or Why Lisp is Now an Acceptable Scripting Language (Extended version) François-René Rideau Google tunes@google.com Abstract ASDF, the de facto standard build system for Common Lisp, has been vastly

More information

4. Functional Programming Language-Oriented Programming

4. Functional Programming Language-Oriented Programming 4. Functional Programming Language-Oriented Programming Prof. Dr. Bernhard Humm Faculty of Computer Science Hochschule Darmstadt University of Applied Sciences 1 Retrospect: LOP the big picture What is

More information

Jatha. Common Lisp in Java. Ola Bini JRuby Core Developer ThoughtWorks Studios.

Jatha. Common Lisp in Java. Ola Bini JRuby Core Developer ThoughtWorks Studios. Jatha Common Lisp in Java Ola Bini JRuby Core Developer ThoughtWorks Studios ola.bini@gmail.com http://olabini.com/blog Common Lisp? Common Lisp? ANSI standard Common Lisp? ANSI standard Powerful Common

More information

Functional Programming. Big Picture. Design of Programming Languages

Functional Programming. Big Picture. Design of Programming Languages Functional Programming Big Picture What we ve learned so far: Imperative Programming Languages Variables, binding, scoping, reference environment, etc What s next: Functional Programming Languages Semantics

More information

Is Linked Data the future of data integration in the enterprise?

Is Linked Data the future of data integration in the enterprise? Is Linked Data the future of data integration in the enterprise? John Walker Email: john.walker@nxp.com Twitter: @NXPdata Pilot Linked Open Data NXP is a semiconductor (microchip) manufacturer Established:

More information

Functional Programming. Pure Functional Languages

Functional Programming. Pure Functional Languages Functional Programming Pure functional PLs S-expressions cons, car, cdr Defining functions read-eval-print loop of Lisp interpreter Examples of recursive functions Shallow, deep Equality testing 1 Pure

More information

Dynamic ADTs: a don t ask, don t tell policy for data abstraction

Dynamic ADTs: a don t ask, don t tell policy for data abstraction Dynamic ADTs: a don t ask, don t tell policy for data abstraction Geoff Wozniak Dept. of Computer Science University of Western Ontario London, Ontario, Canada wozniak@csd.uwo.ca Mark Daley Depts. of Computer

More information

CSCC24 Functional Programming Scheme Part 2

CSCC24 Functional Programming Scheme Part 2 CSCC24 Functional Programming Scheme Part 2 Carolyn MacLeod 1 winter 2012 1 Based on slides from Anya Tafliovich, and with many thanks to Gerald Penn and Prabhakar Ragde. 1 The Spirit of Lisp-like Languages

More information

CSE 341 Section 7. Ethan Shea Autumn Adapted from slides by Nicholas Shahan, Dan Grossman, Tam Dang, and Eric Mullen

CSE 341 Section 7. Ethan Shea Autumn Adapted from slides by Nicholas Shahan, Dan Grossman, Tam Dang, and Eric Mullen CSE 341 Section 7 Ethan Shea Autumn 2018 Adapted from slides by Nicholas Shahan, Dan Grossman, Tam Dang, and Eric Mullen Outline Interpreting MUPL Assume Correct Syntax Check for Correct Semantics Evaluating

More information

Department of Computer and information Science Norwegian University of Science and Technology

Department of Computer and information Science Norwegian University of Science and Technology Department of Computer and information Science Norwegian University of Science and Technology http://www.idi.ntnu.no/ A Crash Course in LISP MNFIT272 2002 Anders Kofod-Petersen anderpe@idi.ntnu.no Introduction

More information

6.184 Lecture 4. Interpretation. Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson

6.184 Lecture 4. Interpretation. Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson 6.184 Lecture 4 Interpretation Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson 1 Interpretation Parts of an interpreter Arithmetic calculator

More information

NOTICE WARNING CONCERNING COPYRIGHT RESTRICTIONS: The copyright law of the United States (title 17, U.S. Code) governs the making of photocopies or

NOTICE WARNING CONCERNING COPYRIGHT RESTRICTIONS: The copyright law of the United States (title 17, U.S. Code) governs the making of photocopies or NOTICE WARNING CONCERNING COPYRIGHT RESTRICTIONS: The copyright law of the United States (title 17, U.S. Code) governs the making of photocopies or other reproductions of copyrighted material. Any copying

More information

CIS 1.5 Course Objectives. a. Understand the concept of a program (i.e., a computer following a series of instructions)

CIS 1.5 Course Objectives. a. Understand the concept of a program (i.e., a computer following a series of instructions) By the end of this course, students should CIS 1.5 Course Objectives a. Understand the concept of a program (i.e., a computer following a series of instructions) b. Understand the concept of a variable

More information

Functional Programming. Pure Functional Programming

Functional Programming. Pure Functional Programming Functional Programming Pure Functional Programming Computation is largely performed by applying functions to values. The value of an expression depends only on the values of its sub-expressions (if any).

More information

Are functional languages a good way to represent productive meta models?

Are functional languages a good way to represent productive meta models? Are functional languages a good way to represent productive meta models? Rainbow Team, I3S Lab, CNRS University of Nice, France http://rainbow.i3s.unice.fr 4 th European Lisp Workshop ECOOP 07, 07/30/2007,

More information

Adding formal semantics to the Web

Adding formal semantics to the Web Adding formal semantics to the Web building on top of RDF Schema Jeen Broekstra On-To-Knowledge project Context On-To-Knowledge IST project about content-driven knowledge management through evolving ontologies

More information

CSCI B522 Lecture 11 Naming and Scope 8 Oct, 2009

CSCI B522 Lecture 11 Naming and Scope 8 Oct, 2009 CSCI B522 Lecture 11 Naming and Scope 8 Oct, 2009 Lecture notes for CS 6110 (Spring 09) taught by Andrew Myers at Cornell; edited by Amal Ahmed, Fall 09. 1 Static vs. dynamic scoping The scope of a variable

More information

A Survey of Current CLOS MOP Implementations

A Survey of Current CLOS MOP Implementations A Survey of Current CLOS MOP Implementations Raymond de Lacaze Artificial Intelligence Center SRI International 333 Ravenswood Ave. Menlo Park, CA 9402 delacaze@ai.sri.com Tim Bradshaw Cley Limited 6 East

More information

Visual Lisp/CLOS Programming in OpenMusic

Visual Lisp/CLOS Programming in OpenMusic Visual Lisp/CLOS Programming in OpenMusic Jean Bresson. Carlos Agon. Gérard Assayag IRCAM - CNRS UMR STMS Music Representation Research Group Paris, France. This is a preliminary version of the article

More information

Orchestrating Music Queries via the Semantic Web

Orchestrating Music Queries via the Semantic Web Orchestrating Music Queries via the Semantic Web Milos Vukicevic, John Galletly American University in Bulgaria Blagoevgrad 2700 Bulgaria +359 73 888 466 milossmi@gmail.com, jgalletly@aubg.bg Abstract

More information

Lisp as a second language, composing programs and music. Chapter III Object-Oriented Style I

Lisp as a second language, composing programs and music. Chapter III Object-Oriented Style I 1 of 69 05/07/2018, 11:36 [an error occurred while processing this directive] Lisp as a second language, composing programs and music. Peter Desain and Henkjan Honing Chapter III Object-Oriented Style

More information

19 Machine Learning in Lisp

19 Machine Learning in Lisp 19 Machine Learning in Lisp Chapter Objectives Chapter Contents ID3 algorithm and inducing decision trees from lists of examples. A basic Lisp implementation of ID3 Demonstration on a simple credit assessment

More information

CSE 341 Section 7. Eric Mullen Spring Adapted from slides by Nicholas Shahan, Dan Grossman, and Tam Dang

CSE 341 Section 7. Eric Mullen Spring Adapted from slides by Nicholas Shahan, Dan Grossman, and Tam Dang CSE 341 Section 7 Eric Mullen Spring 2017 Adapted from slides by Nicholas Shahan, Dan Grossman, and Tam Dang Outline Interpreting LBI (Language Being Implemented) Assume Correct Syntax Check for Correct

More information

Functional programming with Common Lisp

Functional programming with Common Lisp Functional programming with Common Lisp Dr. C. Constantinides Department of Computer Science and Software Engineering Concordia University Montreal, Canada August 11, 2016 1 / 81 Expressions and functions

More information

History. Functional Programming. Based on Prof. Gotshalks notes on functionals. FP form. Meaningful Units of Work

History. Functional Programming. Based on Prof. Gotshalks notes on functionals. FP form. Meaningful Units of Work History Functional Programming Based on Prof. Gotshalks notes on functionals 1977 Turing 1 Lecture John Backus described functional programming The problem with current languages is that they are word-at-a-time

More information

Implementing and extending SPARQL queries over DLVHEX

Implementing and extending SPARQL queries over DLVHEX Implementing and extending SPARQL queries over DLVHEX Gennaro Frazzingaro Bachelor Thesis Presentation - October 5, 2007 From a work performed in Madrid, Spain Galway, Ireland Rende, Italy How to solve

More information

Functions, Conditionals & Predicates

Functions, Conditionals & Predicates Functions, Conditionals & Predicates York University Department of Computer Science and Engineering 1 Overview Functions as lambda terms Defining functions Variables (bound vs. free, local vs. global)

More information

https://asd-pa.perfplusk12.com/admin/admin_curric_maps_display.aspx?m=5507&c=618&mo=18917&t=191&sy=2012&bl...

https://asd-pa.perfplusk12.com/admin/admin_curric_maps_display.aspx?m=5507&c=618&mo=18917&t=191&sy=2012&bl... Page 1 of 13 Units: - All - Teacher: ProgIIIJavaI, CORE Course: ProgIIIJavaI Year: 2012-13 Intro to Java How is data stored by a computer system? What does a compiler do? What are the advantages of using

More information

Section 10: LISP to Scheme. Evolution of Software Languages

Section 10: LISP to Scheme. Evolution of Software Languages Section Evolution of Software Languages Theo D'Hondt Bachelor of Computer Science Faculty of Sciences and Bio-Engineering Sciences Vrije Universiteit Brussel Academic Year 2015-2016 Evolution of Software

More information

Semantic Web Fundamentals

Semantic Web Fundamentals Semantic Web Fundamentals Web Technologies (706.704) 3SSt VU WS 2018/19 with acknowledgements to P. Höfler, V. Pammer, W. Kienreich ISDS, TU Graz January 7 th 2019 Overview What is Semantic Web? Technology

More information

Set Partitions Iterator

Set Partitions Iterator Set Partitions Iterator Patrick Stein March 26, 2008 Contents 1 The set-partition-iterator class 1 1.1 Packaging............................... 2 1.2 Slots.................................. 2 1.3 Constructor..............................

More information

Lambda Calculus. Gunnar Gotshalks LC-1

Lambda Calculus. Gunnar Gotshalks LC-1 Lambda Calculus LC-1 l- Calculus History Developed by Alonzo Church during 1930 s-40 s One fundamental goal was to describe what can be computed. Full definition of l-calculus is equivalent in power to

More information

TH IRD EDITION. Python Cookbook. David Beazley and Brian K. Jones. O'REILLY. Beijing Cambridge Farnham Köln Sebastopol Tokyo

TH IRD EDITION. Python Cookbook. David Beazley and Brian K. Jones. O'REILLY. Beijing Cambridge Farnham Köln Sebastopol Tokyo TH IRD EDITION Python Cookbook David Beazley and Brian K. Jones O'REILLY. Beijing Cambridge Farnham Köln Sebastopol Tokyo Table of Contents Preface xi 1. Data Structures and Algorithms 1 1.1. Unpacking

More information

FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 4. LISP: PROMĚNNÉ, DALŠÍ VLASTNOSTI FUNKCÍ, BLOKY, MAPOVACÍ FUNKCIONÁLY, ITERAČNÍ CYKLY,

FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 4. LISP: PROMĚNNÉ, DALŠÍ VLASTNOSTI FUNKCÍ, BLOKY, MAPOVACÍ FUNKCIONÁLY, ITERAČNÍ CYKLY, FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 4. LISP: PROMĚNNÉ, DALŠÍ VLASTNOSTI FUNKCÍ, BLOKY, MAPOVACÍ FUNKCIONÁLY, ITERAČNÍ CYKLY, 2011 Jan Janoušek MI-FLP Evropský sociální fond Praha & EU: Investujeme do vaší

More information

Vanilla Lisp Shell (VLS)

Vanilla Lisp Shell (VLS) Vanilla Lisp Shell (VLS) Copyright c 2001 William Paul Vrotney i Table of Contents 1 Introduction............................... 2 2 Notation Conventions...................... 3 3 Getting Started............................

More information

Web of Data: P2P Business domain translation of problem spaces. Semantic Business Integration (WIP draft)

Web of Data: P2P Business domain translation of problem spaces. Semantic Business Integration (WIP draft) Web of Data: P2P Business domain translation of problem spaces. Semantic Business Integration (WIP draft) 2017. Sebastian Samaruga ( ssamarug@gmail.com ) Copyright (c) 2017 Sebastian Samaruga Permission

More information

(defvar *state* nil "The current state: a list of conditions.")

(defvar *state* nil The current state: a list of conditions.) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; GPS engine for blocks world ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defvar *dbg-ids* nil "Identifiers used by dbg") (defvar *state* nil "The current state: a list of conditions.")

More information

Visual Lisp/CLOS Programming in OpenMusic

Visual Lisp/CLOS Programming in OpenMusic Visual Lisp/CLOS Programming in OpenMusic Jean Bresson. Carlos Agon. Gérard Assayag IRCAM - CNRS UMR STMS Music Representation Research Group Paris, France. This is a preliminary version of the article

More information

Semantic Queries and Mediation in a RESTful Architecture

Semantic Queries and Mediation in a RESTful Architecture Semantic Queries and Mediation in a RESTful Architecture John Gilman - Dir. Architecture and Engineering Blue Shield of California Matt Fisher Sr. Systems Engineer Progeny Systems Mike Dean Principle Engineer

More information

CS 314 Principles of Programming Languages

CS 314 Principles of Programming Languages CS 314 Principles of Programming Languages Lecture 16: Functional Programming Zheng (Eddy Zhang Rutgers University April 2, 2018 Review: Computation Paradigms Functional: Composition of operations on data.

More information