My Pop-11 / Poplog page
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_variables.p: Active variables
- arbitrary_precision.p: Arbitrary precision
- beer.p: Beer program
- bench.p: Benchmarking
- cfn.p: Compiles C function
- compile_test.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_test.p: Test of cut function
- database_test.p: Test of Pop-11's database facility
- debruijn.p: de Bruijn sequences
- define_test.p: Defining operators
- dice_game.p: Dice game
- dynamic_lists.p: Dynamic lists
- emycin_test.p: EMYCIN like expert system
- eprospect_test.p: Test of eprospect expert system
- eshell_test.p: Test of eshell (expert system shell)
- evans_test.p: Test of evans (analogy) library
- euler_project.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)
- fibonacci.p: Fibonacci (testing without and with memoization (as well as tracing a function)
- fizz_buzz.p: FizzBuzz problem (Rosetta code)
- fortran_test.p: Test of calling a Fortran library
- ga_test.p: Test of the GA library
- grep.p: Simple grep like program
- hakank_utils.p: Some of my utilities
- higher_order.p: Higher order functions
- id3_test.p: Test of id3 (extracted from Poplog's induce_rules.p)
- infect_test.p: Infections. From TEACH INFECT
- init.p: My init.p file.
- join.p: join(string, separator), e.g.
join('hello,world','|')
results in h|e|l|l|o|,| |w|o|r|l|d
. This is used for example in read_test.p
- lisp_in_pop11_test.p: Simple demonstration how to run (Poplog's) Lisp code in Pop-11.
- macro_test.p: Test of macros (from help macros)
- memo_test.p: Test of memos (uses newmemo.p)
- mygram.p: Generates some Swedish sentences given a simple grammar and lexicon. mygram_utf8.p (UTF-8 version)
- n_puzzle.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_test.p: Neural networks, test of the neural package
- parser_test.p: Test of lr_parser.
- permutation_test.p: Permutations, comparison of definition in Poplog's Prolog and in Pop-11
- pop11_in_lisp_test.lsp: Simple demonstration how to run Pop-11 code in (Poplog's) Lisp.
- pop11_in_prolog_test.pl: Simple demonstration how to run Pop-11 code in (Poplog's) Prolog.
- poprulebase_medrules.p: Test of Poplog's rulebase package, medical rule system
- poprulebase_toy_eliza.p: Test of Poplog's rulebase package, (toy) Eliza program
- primes.p: Generation of prime numbers using a dynamic ("lazy") list.
- prodsys_hanoi.p: Using Prodsys to solve Towers of Hanoi (from help prodsys)
- prodsys_test0.p: Testing Prodsys (from help prodsys)
- prodsys_test1.p: Testing Prodsys (from help prodsys)
- prodsys_test2.p: Testing Prodsys (from help prodsys)
- profile_test.p: Simple profiling
- prolog_in_pop11_test.p: Simple demonstration how to run (Poplog's) Prolog code in Pop-11.
- read_test.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_test_strmatches.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_test.p: Test of the Schemata package
- solver_3_jugs.p: 3 jugs problem (using SOLVER)
- solver_banana_problem.p: (GPS) Banana problem using SOLVER library (schema and problem from Norvig "Paradigms of Artificial Intelligence Programming").
- solver_blocks_world.p: (GPS) Blocks world problem using SOLVER library (schema and problem from TEACH SOLVER).
- solver_maze_problem.p: (GPS) Maze problem using SOLVER library (schema and problem from Norvig "Paradigms of Artificial Intelligence Programming").
- solver_school_problem.p: (GPS) School problem using SOLVER library (schema and problem from Norvig "Paradigms of Artificial Intelligence Programming").
- spell_numbers.p: Spelling numbers
- spelling_bee_solver.p: Spelling Bee solver
- sumsquares.p: Sum of squares (Rosetta code)
- super_test.p: Sum of super package (Prolog like database functionality)
- test_grammar.p: Test of grammar package
- timing_test.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_test.p: Test of parsing sentences. Uses the TPARSE library.
- tparse_test_swe.p: Test of parsing Swedish sentences given a simple grammar and lexicon. Uses the TPARSE library.
- wordle.p: A Wordle solver. Word lists: wordle_small.txt and wordle_large.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