Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Common Lisp port of Doug Lenat's EURISKO

Notifications You must be signed in to change notification settings

namin/eurisclo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Eurisclo - A Common Lisp port of Doug Lenat's EURISKO

This is a work in progress. It seems to work a bit. See some sample output.

The three diffs of interests are:

Related links

How to run (recommended commands)

(ql:quickload "eurisclo")
(in-package :eurisclo)
(eurisko 100 t)
;; wait ad infinitum...
(stop)
(print-run-info)

How to run (step-by-step explanations)

  • Fire up a common lisp REPL in the src folder. For example: C-u M-x slime then sbcl --control-stack-size 1000 --dynamic-space-size 10000000", or just M-x slime for default config.

  • Make sure you have Quicklisp loaded one way or another.

  • Add a symlink in ~/quicklisp/local-projects/ to the eurisclo directory.

  • Load eurisclo using quicklisp: (ql:quickload "eurisclo")

  • Optionally: Enter the eurisclo package using (in-package :eurisclo). If you don't do this, you will need to preface every reference with eurisclo:

  • start Eurisko: (eurisko). You can put a number as an argument to make the program more or less verbose in its descriptions (e.g. 100 for maximum verbosity), and can pass t after that to make it run in eternal mode, for example (eurisko 100 t).

  • Next it will ask to initialize. You probably want to do this, but so far as I can tell, nothing really changes if you don't.

  • Next it asks to run. If you want to examine or change the initial state, you can answer no to this, and it will return you to the REPL. You can then start at a later point after you've performed whatever examinations or with (start), optionally passing an eternal flag as an argument with (start t) if you want the program to run forever. As a second optional argument, you can pass it a thunk with a stop condition, for example (lambda () (some #'int-examples (remove 'binary-pred *units*))) to stop when the condition has been satisfied. The example thunk stops when any interesting example is discovered (the unit binary-pred is removed, because it has some built-in interesting examples).

  • Once you have the program running, you will probably encounter some kind of error you will need to debug. Enjoy!

License: (c) 2023-2024 White Flame, Angle, Nada Amin.

Releases

No releases published

Packages

No packages published

Languages

  • Common Lisp 100.0%