My Pop-11 / Poplog page (original) (raw)
Pop-11 is a great but rather unknown language, used for example in Artificial Intelligence research and education.
From What is Poplog?
Poplog is a integrated toolkit providing a highly extendable collection of languages and tools for teaching, research and development. By default it includes incremental compilers for three powerful AI programming languages
* Pop-11--the core language -- used to implement itself and the others;
* Common Lisp; and
* Prolog;
as well as
* Standard ML, a widely used functional language.
For more about Pop-11 and Poplog, see The Free Poplog portal, especially TEACH PRIMER -- An overview of Pop-11
2009-08-31: I blogged about Pop-11 and Poplog in The Pop-11 programming language and Poplog environment which includes more references.
My Pop-11/Poplog programs
Here are some of my Pop-11 programs and utilities.
- <ackermann.p>: Ackermann function
- <active%5Fvariables.p>: Active variables
- <arbitrary%5Fprecision.p>: Arbitrary precision
- <beer.p>: Beer program
- <bench.p>: Benchmarking
- <cfn.p>: Compiles C function
- <compile%5Ftest.p>: Demonstration how to:
- compile a Pop-11 program to a saved (.psv) image,
- compile to an executable program.
(This was tested on Linux.) - <concord.p>: Reads a file and show the number of occurrence of the words (sorted in order of occurrence). Requires GOSPL (see below).
- <cut%5Ftest.p>: Test of cut function
- <database%5Ftest.p>: Test of Pop-11's database facility
- <debruijn.p>: de Bruijn sequences
- <define%5Ftest.p>: Defining operators
- <dice%5Fgame.p>: Dice game
- <dynamic%5Flists.p>: Dynamic lists
- <emycin%5Ftest.p>: EMYCIN like expert system
- <eprospect%5Ftest.p>: Test of eprospect expert system
- <eshell%5Ftest.p>: Test of eshell (expert system shell)
- <evans%5Ftest.p>: Test of evans (analogy) library
- <euler%5Fproject.p>: My Pop-11 solutions of the first 16 Euler Project problems. Some solutions requires <newmemo.p>, and GOSPL (see below).
Here are some solutions of Project Euler problems in separate files (the later one are not included in euler_project.p)- <euler1.p>
- <euler2.p>
- <euler3.p>
- <euler4.p>
- <euler5.p>
- <euler6.p>
- <euler7.p>
- <euler8.p>
- <euler9.p>
- <euler10.p>
- <euler11.p>
- <euler12.p>
- <euler13.p>
- <euler14.p>
- <euler15.p>
- <euler16.p>
- <euler17.p>
- <euler18.p>
- <euler19.p>
- <euler20.p>
- <euler21.p>
- <euler22.p>
- <euler23.p>
- <euler24.p>
- <euler25.p>
- <euler26.p>
- <euler27.p>
- <euler28.p>
- <euler29.p>
- <euler30.p>
- <euler31.p>
- <euler32.p>
- <euler33.p>
- <euler34.p>
- <euler35.p>
- <euler36.p>
- <euler37.p>
- <euler38.p>
- <euler39.p>
- <euler40.p>
- <euler41.p>
- <euler42.p>
- <euler43.p>
- <euler44.p>
- <euler45.p>
- <euler46.p>
- <euler47.p>
- <euler48.p>
- <euler49.p>
- <euler50.p>
- <fibonacci.p>: Fibonacci (testing without and with memoization (as well as tracing a function)
- <fizz%5Fbuzz.p>: FizzBuzz problem (Rosetta code)
- <fortran%5Ftest.p>: Test of calling a Fortran library
- <ga%5Ftest.p>: Test of the GA library
- <grep.p>: Simple grep like program
- <hakank%5Futils.p>: Some of my utilities
- <higher%5Forder.p>: Higher order functions
- <id3%5Ftest.p>: Test of id3 (extracted from Poplog's induce_rules.p)
- <infect%5Ftest.p>: Infections. From TEACH INFECT
- <init.p>: My init.p file.
- <join.p>: join(string, separator), e.g.
join('hello,world','|')
results inh|e|l|l|o|,| |w|o|r|l|d
. This is used for example in <read%5Ftest.p> - <lisp%5Fin%5Fpop11%5Ftest.p>: Simple demonstration how to run (Poplog's) Lisp code in Pop-11.
- <macro%5Ftest.p>: Test of macros (from help macros)
- <memo%5Ftest.p>: Test of memos (uses <newmemo.p>)
- <mygram.p>: Generates some Swedish sentences given a simple grammar and lexicon. <mygram%5Futf8.p> (UTF-8 version)
- <n%5Fpuzzle.p>: n-puzzle, e.g. 8-puzzle and 15-puzzle using the library SOLVEMS.
- <newmemo.p>: Memo function (from Robin Popplestone's Pop-11 book)
- <nn%5Ftest.p>: Neural networks, test of the neural package
- <parser%5Ftest.p>: Test of lr_parser.
- <permutation%5Ftest.p>: Permutations, comparison of definition in Poplog's Prolog and in Pop-11
- <pop11%5Fin%5Flisp%5Ftest.lsp>: Simple demonstration how to run Pop-11 code in (Poplog's) Lisp.
- <pop11%5Fin%5Fprolog%5Ftest.pl>: Simple demonstration how to run Pop-11 code in (Poplog's) Prolog.
- <poprulebase%5Fmedrules.p>: Test of Poplog's rulebase package, medical rule system
- <poprulebase%5Ftoy%5Feliza.p>: Test of Poplog's rulebase package, (toy) Eliza program
- <primes.p>: Generation of prime numbers using a dynamic ("lazy") list.
- <prodsys%5Fhanoi.p>: Using Prodsys to solve Towers of Hanoi (from help prodsys)
- <prodsys%5Ftest0.p>: Testing Prodsys (from help prodsys)
- <prodsys%5Ftest1.p>: Testing Prodsys (from help prodsys)
- <prodsys%5Ftest2.p>: Testing Prodsys (from help prodsys)
- <profile%5Ftest.p>: Simple profiling
- <prolog%5Fin%5Fpop11%5Ftest.p>: Simple demonstration how to run (Poplog's) Prolog code in Pop-11.
- <read%5Ftest.p>: Read a word list and test each words against regular expressions of consecutive characters, e.g. ".*a.*.b.*c.*" (in Pop-11 'a@.@*b@.@*c@.@*'), ".*b.*c.*d.*", ".*c.*d.*e.*", etc. Requires <join.p>.
- <read%5Ftest%5Fstrmatches.p>: Read a word list and test each words against a string pattern of consecutive characters. Same as read_test.p, but uses the strmatches function (not in the standard Poplog distribution). This version is much slower than using regular expression.
- <schemata%5Ftest.p>: Test of the Schemata package
- <solver%5F3%5Fjugs.p>: 3 jugs problem (using SOLVER)
- <solver%5Fbanana%5Fproblem.p>: (GPS) Banana problem using SOLVER library (schema and problem from Norvig "Paradigms of Artificial Intelligence Programming").
- <solver%5Fblocks%5Fworld.p>: (GPS) Blocks world problem using SOLVER library (schema and problem from TEACH SOLVER).
- <solver%5Fmaze%5Fproblem.p>: (GPS) Maze problem using SOLVER library (schema and problem from Norvig "Paradigms of Artificial Intelligence Programming").
- <solver%5Fschool%5Fproblem.p>: (GPS) School problem using SOLVER library (schema and problem from Norvig "Paradigms of Artificial Intelligence Programming").
- <spell%5Fnumbers.p>: Spelling numbers
- <spelling%5Fbee%5Fsolver.p>: Spelling Bee solver
- <sumsquares.p>: Sum of squares (Rosetta code)
- <super%5Ftest.p>: Sum of super package (Prolog like database functionality)
- <test%5Fgrammar.p>: Test of grammar package
- <timing%5Ftest.p>: Two timing functions which only run the procedure once (as opposed to the builtin
timing
which runs many times). One definition is a syntax word, the other is a procedure proper. Includes a simple test. - <tparse%5Ftest.p>: Test of parsing sentences. Uses the TPARSE library.
- <tparse%5Ftest%5Fswe.p>: Test of parsing Swedish sentences given a simple grammar and lexicon. Uses the TPARSE library.
- <wordle.p>: A Wordle solver. Word lists: <wordle%5Fsmall.txt> and <wordle%5Flarge.txt>.
Note: Some of the above program requires functions from the GOSPL (Global Open Source Poplog Library) library, such as
split
,split_with
. The library is available from www.cs.bham.ac.uk/research/projects/poplog/, or more specific here: gospl_1_2_0.tar.gz. It's also available via GitHub: github.com/sfkleach/GOSPL (repo by Stephen Leach).
Created by Hakan Kjellerstrand (hakank@gmail.com)
Back to my home page