Il Ne Voyageait Pas, Il Décrivait Une Circonférence. C'était Un

Total Page:16

File Type:pdf, Size:1020Kb

Il Ne Voyageait Pas, Il Décrivait Une Circonférence. C'était Un Il ne voyageait pas, il décrivait une circonférence. C’était un corps grave, parcourant une orbite autour du globe terrestre, suivant les lois de la méchanique rationelle. – Jules Verne The mind is its own place and in itself, can make a Heaven of Hell, a Hell of Heaven. – John Milton University of Alberta Automated Planning and Player Modelling for Interactive Storytelling by Alejandro Ramirez Sanabria A thesis submitted to the Faculty of Graduate Studies and Research in partial fulfillment of the requirements for the degree of Master of Science Department of Computing Science c Alejandro Ramirez Sanabria Fall 2013 Edmonton, Alberta Permission is hereby granted to the University of Alberta Libraries to reproduce single copies of this thesis and to lend or sell such copies for private, scholarly or scientific research purposes only. Where the thesis is converted to, or otherwise made available in digital form, the University of Alberta will advise potential users of the thesis of these terms. The author reserves all other publication and other rights in association with the copyright in the thesis and, except as herein before provided, neither the thesis nor any substantial portion thereof may be printed or otherwise reproduced in any material form whatsoever without the author’s prior written permission. To Fran, my family, and my closest friends: words have not yet been crafted to express the feelings of admiration and gratitude I hold dear in my heart for you. Abstract Interactive Storytelling (IS) acknowledges that people want to be participants in the unfolding of a story plot. Given the complex nature of IS, Artificial Intelligence (AI) methods can be called upon to improve and enhance interactive stories in video games. In the past decade, a number of experience management systems have been proposed but only a few have been evaluated; furthermore, none of the evaluated systems has offered both player modelling and a story generation module. In the present work, I propose PAST (Player-specific Automated Storytelling), a new expe- rience management system that welds together two complementary approaches for increasing player agency: generative experience management and player modelling. I present a set of empirical evaluations involving 320 human participants in which my system is shown to have a positive effect on perceived player agency. Acknowledgements I would like to recognize the effort that several faculty members and students at the University of Alberta have put into the realization of this work: my supervisor Vadim Bulitko for his insightful comments, support and direction of this research; Marcia Spetch for her advice and serving on my thesis committee; Wayne DeFehr for helping us co-author the Little Red Riding Hood story; Michael Bowling for serving on my thesis committee; J. Nelson Amaral for his mentoring; David Thue for his insightful comments and suggestions; and the IRCL members who so eagerly provided feedback and participation whenever prompted. I also appreciate the valuable contributions of people unaffiliated with the Uni- versity who made this work possible: Mark Riedl for collaborating on the code and consultation; Shane Riczu for helping sketch out with the first version of the Little Red Riding Hood; Matthew Brown for his help with Lisp and SBCL; and Kelly Arbeau for her assistance with the participant research pool. Finally, I want to mention my family and friends for their support, encourage- ment and love: thanks for always being there and for lending a hand when I needed it the most. Contents 1 Introduction 1 1.1 Motivation . .2 1.1.1 Entertainment Industry . .2 1.1.2 Automation . .4 1.1.3 Adapting to Player Preferences . .5 1.2 Interactive Storytelling in Computer Systems . .6 1.2.1 Drama and Experience Management . .6 1.2.2 Generative Experience Management . .9 2 Problem Formulation 11 2.1 Experience Management as a Formal Problem . 11 2.1.1 The Problem from the Authorial Perspective . 13 2.1.2 The Problem from the Experience Manager’s Perspective . 13 3 Related Work 15 3.1 Interactive Storytelling (IS), Drama and Experience Management . 15 3.2 Agency . 17 3.3 Automation and Emergent Narrative . 17 3.4 Evaluation . 18 4 Proposed Approach 20 4.1 Introduction to PAST . 20 4.1.1 Player-specific Automated Storytelling (PAST) High-level Model 21 4.2 The MDP in PAST . 22 4.2.1 Defining States . 23 4.2.2 Defining Actions . 23 4.3 Planning and Narrative Generation in PAST . 25 4.3.1 Narrative Representation . 25 4.3.2 Planning . 26 4.4 Transition Function Adjustment . 28 4.5 Player Model . 30 4.6 Interface . 33 5 Evaluation 34 5.1 Experimental Design . 34 5.1.1 Methodology . 34 5.1.2 Participants . 35 5.1.3 Experimental Setup . 35 5.1.4 Post-experience Survey Instrument . 35 5.1.5 Statistical Analysis . 35 5.1.6 Outlier Removal . 37 5.2 User Study 1: Evaluating Planning-Based Experience Management . 37 5.2.1 Story 1 . 37 5.2.2 Participants . 38 5.2.3 Results . 38 5.3 User Study 2-A: Evaluating Planning-Based Experience Management with Player Modelling . 39 5.3.1 Story 2 . 39 5.3.2 Participants . 40 5.3.3 Results . 41 5.4 User Study 2-B: Evaluating Planning-Based Experience Management with Player Modelling . 42 5.4.1 Participants . 42 5.4.2 Results . 43 5.5 User Study 3: Evaluating PAST in a Constrained Domain . 44 5.5.1 Story 3 . 45 5.5.2 Participants . 45 5.5.3 Results . 45 6 Discussion 47 6.1 User Study 1: Evaluating Planning-Based Experience Management . 47 6.2 User Study 2: Evaluating Planning-Based Experience Management with Player Modelling . 47 6.3 User Study 3: Evaluating Planning-Based Experience Management with Player Modelling in a Constrained Domain . 48 6.4 The Pull-Back Effect . 48 6.5 Problems Encountered . 49 6.6 Applicability and Future Work . 50 7 Conclusion 52 Bibliography 53 A User Study Materials 56 A.1 Briefing and Consent Form . 57 A.2 Debriefing Form (User Study 1) . 58 A.3 Debriefing Form (User Study 2 and 3) . 59 A.4 Survey . 60 A.5 Ethics Approval . 67 A.6 Alternate Assignment . 83 B Story Transcript 87 B.1 Prologue . 87 B.1.1 Introduction . 87 B.1.2 Event 1: Fight and confront her friends if necessary to do things her way. 88 B.1.3 Event 1.A: Little Red decides to attack Billy. 88 B.1.4 Event 2: Renounce to brute force and use only her cunning. 89 B.1.5 Event 2.A: Red continues to keep the game under her com- mand by deceiving everyone. 89 B.1.6 Event 3: Daydream about quests in magical worlds with big rewards. 90 B.1.7 Event 3.A: Little Red agrees to play but she keeps on day- dreaming about her quests and treasures. 90 B.1.8 Event 4: Assume her identity and inspire her friends to follow her. 91 B.1.9 Event 4.A: Little Red continues leading her friends and gives them a reprimand for not following. 91 B.1.10 Event 5: Charm and amaze her friends with old folk stories. 92 B.1.11 Event 5.A: Little Red continues telling the story. 93 B.2 Main Quest . 93 B.2.1 Event M.1: Red leaves home. 93 B.2.2 Event M.2: Wolf sees Red and decides to follow her. 94 B.2.3 Event M.3 : Red tells Henry the Wolf about her quest to Grandma’s cottage. 95 B.2.4 Event M.4: Henry the Wolf sets up a trap for Little Red outside the cottage. 95 B.2.5 Event M.5: Henry the Wolf breaks into the cottage while Grandma sleeps. 96 B.2.6 Event M.6: Garry the Huntsman finds Wolf/Grendel in his sleep. 97 B.2.7 Event M.7: The Hunter rescues Red from Grendel/Wolf’s belly. 98 B.2.8 Event M.8: Grandma goes berserk. 98 B.2.9 Event M.9: Little Red gives Grandma a Basket full of goodies. 99 B.3 Ruptures . 99 B.3.1 Story type 1 . 99 B.3.2 Story type 2 . 102 B.4 Repairs . 105 B.4.1 Story type 1 . 105 B.4.2 Story type 2 . 106 List of Tables 1.1 Attributes of Interactive Storytelling (IS) systems. .8 4.1 The RPG player types and description used by PaSSAGE and PAST, based on types proposed by Laws [11]. 30 5.1 ANOVA results for fun in user study 1: EM is condition (control, experimental) and GS is gaming skills (gamer, non-gamer). 38 5.2 ANOVA results for agency in user study 1: EM is condition (control, experimental) and GS is gaming skills (gamer, non-gamer). 38 5.3 ANOVA results for fun in user study 2 part A: EM is condition (con- trol, experimental, exemplar) and GS is gaming skills (gamer, non- gamer). 41 5.4 ANOVA results for agency in user study 2 part A: EM is condition (control, experimental, exemplar) and GS is gaming skills (gamer, non-gamer). 41 5.5 ANOVA results for fun in user study 2 part B: EM is condition (con- trol, experimental, exemplar) and GS is gaming skills (gamer, non- gamer). 43 5.6 ANOVA results for agency in user study 2 part B: EM is condition (control, experimental, exemplar) and GS is gaming skills (gamer, non-gamer). 43 5.7 ANOVA results for fun in user study 3: EM is condition (control, experimental) and GS is gaming skills (gamer, non-gamer).
Recommended publications
  • 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]
  • 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]
  • 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]
  • 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]
  • CSC 407/507 Programming Assignment #1: Common Lisp Due Date: Friday, February 2
    CSC 407/507 Programming Assignment #1: Common Lisp Due Date: Friday, February 2 Remember you can work in groups of up to three students. Download a version of Common Lisp. Two free (but trial limited) versions are available at Franz Common Lisp (http://www.franz.com/downloads/) and LispWorks (http://www.lispworks.com/). Another version is called Steel Bank Common Lisp which does not come with an IDE, just a command line interface (https://common-lisp.net/downloads/). A GNU’s Common Lisp is available for both Unix/Linux (https://www.gnu.org/software/gcl/) and Windows (https://www.cs.utexas.edu/users/novak/gclwin.html). LispWorks is recommended as the easiest and least fuss. In this program, you will write multiple Lisp functions which support (or implement wholly) sorting algorithms. Some functions may serve multiple sort algorithms if you can work it out although this is not necessary. You should aim to build helper functions so that you are not implementing any single sort in a single function. Some algorithms will require helper functions (e.g., mergesort which has at least the recursive mergesort function and the merge function). You are to implement five of the following seven sort algorithms: bubblesort, heapsort, insertionsort, mergesort, quicksort, radixsort and selectionsort. You must do at least one of mergesort or quicksort among the five you implement. You are to use recursion for the mergesort/quicksort functions and are encouraged to use recursion as much as possible in the remainder of your functions whether they are helper functions or the sort functions. Use lists to store the values to be sorted (they will all be integer numbers) rather than arrays.
    [Show full text]
  • Threading and GUI Issues for R
    Threading and GUI Issues for R Luke Tierney School of Statistics University of Minnesota March 5, 2001 Contents 1 Introduction 2 2 Concurrency and Parallelism 2 3 Concurrency and Dynamic State 3 3.1 Options Settings . 3 3.2 User Defined Options . 5 3.3 Devices and Par Settings . 5 3.4 Standard Connections . 6 3.5 The Context Stack . 6 3.5.1 Synchronization . 6 4 GUI Events And Blocking IO 6 4.1 UNIX Issues . 7 4.2 Win32 Issues . 7 4.3 Classic MacOS Issues . 8 4.4 Implementations To Consider . 8 4.5 A Note On Java . 8 4.6 A Strategy for GUI/IO Management . 9 4.7 A Sample Implementation . 9 5 Threads and GUI’s 10 6 Threading Design Space 11 6.1 Parallelism Through HL Threads: The MXM Options . 12 6.2 Light-Weight Threads: The XMX Options . 12 6.3 Multiple OS Threads Running One At A Time: MSS . 14 6.4 Variations on OS Threads . 14 6.5 SMS or MXS: Which To Choose? . 14 7 Light-Weight Thread Implementation 14 1 March 5, 2001 2 8 Other Issues 15 8.1 High-Level GUI Interfaces . 16 8.2 High-Level Thread Interfaces . 16 8.3 High-Level Streams Interfaces . 16 8.4 Completely Random Stuff . 16 1 Introduction This document collects some random thoughts on runtime issues relating to concurrency, threads, GUI’s and the like. Some of this is extracted from recent R-core email threads. I’ve tried to provide lots of references that might be of use.
    [Show full text]
  • Common Lisp Alan Dipert, [email protected] Orange Combinator 2018-12-17 Lisp History
    Old-School FP Common Lisp Alan Dipert, [email protected] Orange Combinator 2018-12-17 Lisp History Invented by John McCarthy at MIT in 1958 Inspired by Alonzo Church’s lambda calculus Described in 1960 paper, Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I Shows a Turing-complete language for algorithms and defines it in terms of an eval function written in itself Implemented by Steve Russell around 1960 A student of McCarthy’s, Russell saw McCarthy’s paper on his desk, read it, and implemented the eval function in machine code. The result was a Lisp interpreter. Language represented with its own data structures: homoiconicity Lambda Calculus Lisp (λx.M) (lambda (x) M…) Lambda abstraction Anonymous function M is any lambda term M… is zero or more expressions β-reduction Evaluation ((λx.M) E) → (M[x:=E]) ((lambda (x) M…) E) → (M[x:=E]) Relationship to AI Associated with Artificial Intelligence (AI) research since its invention at the MIT AI Lab by McCarthy in 1958 First symbolic programming language As opposed to numeric like Fortran (1957) Objects and operations upon them not necessarily numeric Logical Set-theoretic First garbage-collected language Memory reclaimed automatically when possible Really they just needed a decent scripting language to iterate quickly with Today, most programming is “symbolic”! Classic Lisp: member* (defun member* (x xs) (if xs (if (eql (car xs) x) xs (member* x (cdr xs))))) (member* 2 ‘(1 2 3)) → ‘(2 3) defun: defines a function in the current
    [Show full text]
  • A Quick Introduction to Common Lisp
    CSC 244/444 Notes last updated Feb 3, 2020 A Quick Introduction to Common Lisp Lisp is a functional language well-suited to sym- bolic AI, based on the λ-calculus and with list structures as a very flexible basic data type; pro- grams are themselves list structures, and thus can be created and manipulated just like other data. This introduction isn't intended to give you all the details, but just enough to get across the essential ideas, and to let you get under way quickly. The best way to make use of it is in front of a computer, trying out all the things mentioned. Basic characteristics of Lisp and Common Lisp: • Lisp is primarily intended for manipulating symbolic data in the form of list struc- tures, e.g., (THREE (BLIND MICE) SEE (HOW (THEY RUN)) !) • Arithmetic is included, e.g., (SQRT (+ (* 3 3) (* 4 4))) or (sqrt (+ (* 3 3) (* 4 4))) (Common Lisp is case-insensitive, except in strings between quotes " ... ", specially delimited symbols like |Very Unusual Symbol!|, and for characters prefixed with \\"). • Common Lisp (unlike John McCarthy's original \pure" Lisp) has arrays and record structures; this leads to more understandable and efficient code, much as in typed languages, but there is no obligatory typing. • All computation consists of expression evaluation. For instance, typing in the above (SQRT ...) expression and hitting the enter key immediately gives 5. • Lisp is a functional language based on Alonzo Church's λ-calculus (which like Turing machines provides a complete basis for all computable functions). For instance, a function for the square root of the sum of two squares can be expressed as (lambda (x y) (sqrt (+ (* x x) (* y y)))).
    [Show full text]
  • Indexing Common Lisp with Kythe a Demonstration Jonathan Godbout [email protected]
    Indexing Common Lisp with Kythe A Demonstration Jonathan Godbout [email protected] ABSTRACT give other information about the indexed code. It has VNames which For decades Lispers have had the power of code cross-references uniquely identify a node in a code base. It has Edges which annotate (jump to definition, list callers, etc.) for any code they’ve loaded into how two nodes relate to each other. their Lisp image. But what about cross referencing code that isn’t For example, take the variable object from threadp in Bordeaux- (or can’t be) loaded into the image? Wouldn’t it be great if we could threads [7]: ask “who, in the global Lisp community, calls this function?” The (defun threadp (object) only option currently available is to download all Lisp code and use (typep object 'sb-thread:thread)) “grep” or similar text-based tools. At Google we use Kythe [4] as a The variable object next to threadp would have a node: cross-reference database for all Lisp code, whether loaded into our local Lisp image or not. We will show how Lisp is cross-referenced { on a static web-page with hyperlinks between definitions. With ticket: "kythe://corpus??lang=lisp?path=PATH this we can also get call graphs and call hierarchies 1. #BORDEAUX-THREADS%3A%3AOBJECT%20%3AVARIABLE %20loc%3D%2825%3A16-25%3A22%29", ACM Reference Format: Jonathan Godbout. 2020. Indexing Common Lisp with Kythe: A Demonstra- kind: "variable", tion. In Proceedings of the 13th European Lisp Symposium (ELS’20). ACM, language: "lisp", New York, NY, USA, 3 pages.
    [Show full text]
  • Analysis of a Web User Interface for Mathematics: Experiences with Integral Queries for TILU (Table of Integrals Look Up)
    Analysis of a Web User Interface for Mathematics: Experiences with Integral Queries for TILU (Table of Integrals Look Up) Richard Fateman Timothy James Computer Science Division University of California, Berkeley Abstract became an important priority. Other “web design” is- sues included making the instructions more prominent. What can we learn from the range of over 7000 queries made to TILU, a symbolic integration problem-solving server [1] The need to make the design and implementation more • during the course of more than two years? We have saved robust: The underlying program was written as an all queries during this experiment, and based on our analy- experiment. Putting it into production uncovered a sis, and experimented with improvements in the computer- variety of typographical errors, blunders, and loose human interaction components of our web server. We be- ends. Even after making the program relatively secure lieve our experience will be useful in the design of similar against unsyntactic input, it took more effort to make servers that require human input of mathematics. the program relatively robust against web communi- cation problems. For errors related to browser con- nections, we now record such problems but return the 1 Introduction program to a standard state. Previously we had es- TILU1[2] serviced 7363 queries from the date it started run- tablished the practice of accumulating suspended light- ning through January 26, 19982 6995 of these queries were weight processes for debugging. We would run out of successful, meaning TILU gave back an answer as opposed the processes since we began to leave the system run- to stalling without a response.
    [Show full text]