Awesome
Awesome Prolog
A curated list of open-source Prolog frameworks, libraries and resources.
Contents
- API Interfaces
- Artificial Intelligence
- Build Systems
- Compilers
- Database
- Date
- Development
- IDE
- Interpreters
- JSON
- Logging
- Machine Learning
- Math
- Miscellaneous
- Native
- Object Oriented Programming
- Parsing
- Regular Expressions
- REST Frameworks
- Server
- Testing
- Text Editor Extensions
- Utilities
- Resources
- Contributing
- License
API interfaces
- twitter_pack - Twitter API interface.
- amazon_api - Amazon API interface.
- blog_core - Blog/CMS framework.
- irc_client - Low-level IRC interface.
- geoip - GeoIP interface.
- pl_omdb - OMDB API interface.
Artificial Intelligence
- zamia-ai - Open source AI system.
Build Systems
- biomake - GNU-Make-like building utility.
Compilers
- SWI-Prolog - Widely used, comprehensive Prolog compiler.
- GNU Prolog - ISO Prolog compiler with useful extensions.
- YAP - High-performance Prolog compiler.
- Ciao - A Prolog system with many extensions.
- Eclipse CLP - A constraint logic programming system.
- XSB - XSB logic programming and deductive database system.
Database
- prolongo - MongoDB driver.
- docstore - Document-oriented database.
- db_facts - Centric abstraction layer for SQL.
- bio_db - Biological datasets manager.
- prosqlite - SQLite interface.
- TerminuDB - for knowledge graph representation
Date
- julian - Date-time library.
Development
- typedef - Type definitions.
- lambda - Lambda expressions.
- func - Function application and composition.
- condition - Common Lisp-like condition system.
- function_expansion - Function-like macros.
- fsyntax - Ciao functional syntax.
IDE
- swish - SWI-Prolog web IDE.
- Prolog Development Tool - Prolog IDE for Eclipse.
- VSC-Prolog - Prolog extension for Visual Studio Code.
Interpreters
- golog - Interpreter in Go.
- erlog - Interpreter in Erlang.
- chalk - Interpreter in Rust.
- jiprolog - Interpreter in Java.
- prolog.js - Interpreter in JavaScript.
- prolog - Interpreter in Haskell.
- ELPI - Embeddable λProlog Interpreter in OCaml.
- scryer prolog - ISO-compatible interpreter in Rust.
JSON
- djson - Declarative JSON.
Logging
Machine Learning
- mlu - Probabilistic logic programs.
- cplint - Reasoning suite for probabilistic logic programs.
- cplint_datasets - Dataset for machine learning.
Math
- matrix - Matrix operations.
- nan_numerics_prime - Prime numbers library.
- pljulia - Numerical and technical computing.
Miscellaneous
- Online compiler - Execute Prolog online.
- turing - Turing Machine simulator.
- yesbot - IRC Bot.
- webconsole - Browser as HTML console.
- prologmud - Online text adventure game.
Native
- by_unix - Unix primitives library.
- inotify - Linux notification library.
- plmidi - Macos MIDI interface.
- plgi - Gnome bindings.
Object Oriented Programming
- logtalk - Object oriented logic programming.
Parsing
- atom_feed - Atom and RSS feeds parser.
- tokenize - Straightforward text tokenizing.
- markdown - Markdown parser.
- yaml - YAML parser.
Regular Expressions
- regex - Regular expressions library.
REST Frameworks
- arouter - HTTP router/dispatcher.
Server
- httppl - Simple HTTP server.
- letswicrypt - HTTPS server.
Testing
- tap - Automated TAP testing.
- quickcheck - QuickCheck randomized testing.
- PlUnit - Prolog unit tests.
Text Editor Extensions
- prolog.vim - Prolog integration for Vim.
- ediprolog - Prolog integration for Emacs.
- sublimeprolog - Prolog integration for Sublime Text.
- repl.vim - VIM REPL with support for SWIProlog.
- Ciao mode for Emacs - Emacs mode for Ciao and Prolog.
Utilities
- pac - Anonymous predicates expansion utility.
- list_util - List utility predicates.
- gvterm - Reveal terms using Graphviz.
- odf_sheet - Load and analyze ODF spreadsheets.
- graphml - Create GraphML files.
- fileutils - File manipulation library.
- dia - UML loading predicates.
- cplint_r - R plotting predicates.
- tuProlog - Light-weight system for distributed applications and infrastructures.
Resources
Tutorials
Beginner
- Learn Prolog Now! - Thorough introductory course to programming in Prolog.
- P-99: Ninety-Nine Prolog Problems - Practice problems in Prolog and Logic programming.
- The Power of Prolog - Introduction to modern Prolog.
- Simply Logical - Intelligent reasoning by example.
- Prolog Wikibook - Thorough Prolog overview.
Advanced
- Prolog for Software Engineering - Software engineering fundamentals using Prolog.
- Prolog Modules - Fundamentals in SWI-Prolog Modules.
- Web Applications in SWI-Prolog - Building web application with SWI-Prolog.
- Constraint Logic Programming over Finite Domains - Fundamentals of Constraint Systems on Finite Domains.
- Printing Messages in SWI-Prolog - IO handling in libraries.
Videos
- Prolog Tutorial - General hour-long video tutorial.
- Introduction to Prolog - Hour-long introduction to Prolog.
- Programming In Prolog - Four-part video introduction.
Free Courses
- Prolog Online Training - Tutorials Point's series on Prolog.
- Prolog in Artificial Intelligence - Tutorials Point's series on Prolog with lectures relating Prolog to AI.
Books
- Adventure in Prolog - Pragmatic approach to Prolog.
- Prolog Programming in Depth - Full coverage of the Prolog programming language.
- Logic, Programming and Prolog - Foundations of Logic programming and programming techniques in Prolog.
- Natural Language Processing for Prolog Programmers - Turning theories into practical techniques.
- Artificial Intelligence through Prolog - In-depth coverage of key concepts on artificial intelligence.
- Building Expert Systems in Prolog - Build prototype expert system shells and their underlying inference engines.
- Coding Guidelines for Prolog - Coding standards and good practices for Prolog.
- The Art of Prolog - Advanced programming techniques for Prolog.
Community
- Prolog FAQ - Frequently Asked Questions list of the SWI-Prolog newsgroup.
- SWI-Prolog Discourse - Official SWI-Prolog Discourse board.
- SWI-Prolog Mailing List - Announcements, questions and discussion among SWI-Prolog users.
- SWI-Prolog Freenode - IRC channel of the SWI-Prolog community.
- SWI-Prolog Google Group - SWI-Prolog user discussion forum DEPRECATED.
- Stack Overflow Prolog - User questions under the Prolog tag.
- Reddit Prolog - Logic Programming and Prolog subreddit.
Contributing
Contributions are super welcome!
Have a look at the Contributing Guidelines on how to get started.