/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - comp.lang.prolog Frequently Asked Questions =========================================== Please see http://www.logic.at/prolog/faq/ for more information. A DCG describes the FAQ. There are several specialized nonterminals like p(Children) for a paragraph and variablelist(P), where P is nonterminal with one argument, describing an itemized list. Are there any FAQ? Let's ask Prolog: ?- phrase(faq, Ls). Ls = " "\n", "", "", header, el(qandaset, [meta(({ findall(Q-A, phrase(q_a(Q), A), QAs) }, questions_answers(QAs, 1)))]), el(appendix, [meta(appendix)]), "", "\n". questions_answers([], _) --> []. questions_answers([Q-A|QAs], N0) --> "\n\n", { phrase(format_("~w. ", [N0]), Ns) }, el(qandaentry, [el(question, [p([Ns|Q])]), el(answer, [A])]), { N1 #= N0 + 1 }, questions_answers(QAs, N1). sgml_elements([]) --> []. sgml_elements([E|Es]) --> sgml_element(E), sgml_elements(Es). ps([]) --> []. ps([P|Ps]) --> p(P), ps(Ps). p(Cs) --> el(para, Cs). lip(Lip) --> el(listitem, [p(Lip)]). lips([]) --> []. lips([L|Ls]) --> lip(L), lips(Ls). el(E, Es) --> ( el_(E, Close) -> [] ; { throw(no_element(E)) } ), sgml_elements(Es), seq(Close). el_(title, "") --> "

". el_(articleinfo, "") --> []. el_(literal, "") --> "". el_(bold, "") --> "". el_(authorgroup, "") --> "
". el_(author, "

") --> "

". el_(firstname, " ") --> []. el_(surname, "") --> []. el_(note, "") --> "
". el_(para, "

") --> "

". el_(email, ">") --> "<". el_(qandaset, "

") --> "
". el_(address, "

") --> "

". el_(variablelist, "

") --> "
". el_(listitem, "") --> "
  • ". el_(emphasis, "") --> "". el_(filename, "") --> "". el_(varlistentry, "") --> []. el_(term, "") --> "
    ". el_(itemizedlist, "") --> "
      ". el_(qandaentry, "
  • ") --> "
    ". el_(question, "
    ") --> "
    ". el_(answer, "
    ") --> "
    ". el_(appendix, "
    ") --> "
    ". title(Ts) --> el(title, Ts). sgml_element([S|Ss]) --> seq([S|Ss]). % string sgml_element(filename(F)) --> el(filename, [F]). sgml_element(emphasis(E)) --> el(emphasis, [E]). sgml_element(p(P)) --> p(P). sgml_element(ps(Ps)) --> ps(Ps). sgml_element(literal(L)) --> el(literal, [L]). sgml_element(bold(L)) --> el(bold, [L]). sgml_element(title(Ts)) --> title(Ts). sgml_element(author(F,S)) --> el(author, [el(firstname,[F]), el(surname,[S])]). sgml_element(el(T,Cs)) --> el(T, Cs). sgml_element(email(E)) --> el(email, [mailto(E)]). sgml_element(mailto(M)) --> format_("~s", [M,M]). sgml_element(link(L)) --> sgml_element(link(L, L)). sgml_element(link(L,T)) --> format_("", [L]), sgml_element(T), "". sgml_element(meta(Goal)) --> Goal. variablelist(NT) --> el(variablelist, [meta(({ G =.. [NT,I], findall(I-T, phrase(G, T), ITs) }, items_texts(ITs)))]). items_texts([]) --> []. items_texts([Item-Text|ITs]) --> "\n\n", el(varlistentry, [el(term, [Item]), el(itemizedlist, [Text])]), items_texts(ITs). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% header --> el(articleinfo, [title(["Frequently Asked Questions - ", literal("comp.lang.prolog")]), el(authorgroup, [ link("https://www.metalevel.at", author("Markus", "Triska (Mar. 2 2007 - ... )")), author("Remko", "Troncon (Jan. 6 2002 - Mar. 2 2007)"), author("Dirk-Jan", "Faber (Feb. 1 1999 - Jan. 6 2002)"), author("Jamie", "Andrews (Aug 26 1992 - Oct. 16 1997)") ]) ]), "
    ", el(note, [ps([[bold("General Information: "), "This article contains the answers to some Frequently \ Asked Questions (FAQ) often seen in ", link("news://comp.lang.prolog/"), ". It is posted \ (twice a month, currently on the 2nd and 16th) to help \ reduce volume in this newsgroup and to provide hard-to-find \ information of general interest."], ["The World Wide Web URL for this FAQ is: ", link("http://www.logic.at/prolog/faq/")], ["Please send questions about the FAQ and updates to ", email("triska@logic.at"), "."]]) ]). q_a(["What is the Association for Logic Programming?"]) --> ps([["To keep up with the current state of logic \ programming technology, readers can join the Association for \ Logic Programming (ALP) and receive their Newsletter. \ For details on how to join or send in contributions, check ", link("http://www.cs.nmsu.edu/ALP/"), " or contact ", el(address, ["Sandro Etalle ", email("etalle@cs.utwente.nl")]) ], ["The Prolog Resource Guide (v0.6) was printed in issue 5/1 of the \ Newsletter (Feb. 1992). This lists information concerning Prolog \ Archives, Books, Suppliers, etc. It is now maintained by Mark \ Kantrowitz (", email("Mark.Kantrowitz@glinda.oz.cs.cmu.edu"), "), and used to be posted periodically to ", link("news://comp.lang.prolog"), "."] ]). q_a(["Where can I get a free Prolog for system X (PC, Mac, Unix or other)?"]) --> ps([["The following are anonymous-FTP sites for free Prologs \ (or related languages) which are either in the public domain \ or are \"copy-lefted\" (permitted to be copied with some \ restrictions on commercial use)."], ["(Please note that for extensive development work, users \ will probably want a robust interpreter or compiler with good \ debugging facilities and a standard syntax, among other things. \ While public-domain systems are a valuable service to the \ community, they do not necessarily have all these things, and \ users should weigh carefully what they want to do against the \ capabilities and costs of the available systems.)"]]), variablelist(system). q_a(["What commercial systems are available? What about \ systems available for a price from research institutions?"]) --> ps([["Many commercial systems are listed in the Prolog Resource \ Guide. The Resource Guide also lists many systems which are \ not exactly \"commercial\", but available for a price from \ research institutions. The list of such systems was originally \ compiled by Chris Moss, of Imperial College. The rest of the \ Resource Guide was originally compiled by Dag Wahlberg, of \ Uppsala University."], ["The Prolog Resource Guide hasn't been updated lately, but \ nevertheless still contains some valuable information. It can be \ found at ", link("http://www-2.cs.cmu.edu/Groups/AI/html/faqs/lang/prolog/prg/top.html"), "." ]]). q_a(["How do I get in touch with my Prolog's users' \ group, sales representative, or technical support line?"]) --> p(["Here are some e-mail addresses of these contacts, \ listed alphabetically by company or major product name."]), variablelist(contact). q_a(["I think language X is better than Prolog. What do you think?"]) --> ps([["These debates rarely result in any productive discussion. To some \ extent, one's favourite language is based on irrational ideology."], ["However, many people now agree that different languages are \ good for different things. Prolog seems to be good for problems \ in which logic is intimately involved, or whose solutions have a \ succinct logical characterization. Like other interactive, \ symbolic languages, Prolog is also good for rapid prototyping."], ["Also, note that there are many different \"Prologs\" and other logic \ programming languages available, all with different capabilities."]]). q_a(["What are the recent developments?"]) --> p(["There are some languages in development which do not have \ Prolog syntax, but do subsume and generalize Prolog's logic \ programming abilities."]), variablelist(recent), p(["Some other languages bring new developments while also \ supporting Prolog syntax and functionality as an option:"]), variablelist(new). q_a(["My Prolog prof assigned me this problem. Can you help me with it?"]) --> ps([["If your instructor assigned it to you, he or she probably wanted \ you to do it yourself. If it's an introductory Prolog course, \ your question might be elementary to most readers, so it might \ be a waste of network resources to ask it. Please ask your \ instructor, a friend, a teaching assistant, or a local \ newsgroup for help first."], ["That being said, there are ", link("news://comp.lang.prolog/"), " readers who would be glad to help people making \ a legitimate attempt to learn Prolog."]]). q_a(["Can you suggest some books on Prolog?"]) --> ps([["The Prolog Resource Guide (see above) contains a listing \ of Prolog books. It is maintained by Mark Kantrowitz (", email("Mark.Kantrowitz@glinda.oz.cs.cmu.edu"), "), and posted periodically on ", link("news://comp.lang.prolog"), "."], ["Here are some of the most popular books on Prolog. "]]), variablelist(books). q_a(["Are there any WWW archives of ", literal("comp.lang.prolog"), " ? "]) --> p(["Yes, there are: Google Groups has archives of ", link("news://comp.lang.prolog/"), ". They can be found at ", link("https://groups.google.com/forum/#!forum/comp.lang.prolog")]). q_a(["How can I get the ISO Prolog standard? \ Where can I go for more information about it?"]) --> ps([["You can obtain the approved international standards from \ your national member body or directly from ISO (", link("http://www.iso.org"),")."], ["The working group on Prolog standardisation is ISO/IEC \ JTC1/SC22/WG17 (", link("http://www.sju.edu/~jhodgson/wg17/"), ")."]]), variablelist(iso_contacts), ps([["Further literature: ", emphasis("\"Prolog: The Standard (Reference manual)\""), ", P. Deransart, A. Ed-Dbali, L. Cervoni, Springer \ Verlag (1996). Extra information can be found on ", link("http://pauillac.inria.fr/~deransar/prolog/docs.html")], [link("http://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/lang/prolog/doc/standard/"), " contains the December 1991 draft, the March 1993 draft, \ Michael Covington's summary of it, and \ Richard O'Keefe's 1984 Prolog standard draft."], [link("http://www.complang.tuwien.ac.at/ulrich/iso-prolog/"), " ISO Prolog works and related material by the convenor of WG17."], ["For questions about the standard, use this newsgroup or Stackoverflow."]]). q_a(["How does the WAM (Warren Abstract Machine) work? \ How do I write a WAM-based compiler or a WAM emulator?"]) --> p(["Reportedly the best tutorial is Hassan Ait-Kaci's book \ \"Warren's Abstract Machine: A Tutorial Reconstruction\" \ (MIT Press, 1991). The book is out of print, \ and available online at ", link("http://wambook.sourceforge.net"), "."]). q_a(["Is there a WWW page on logic programming?"]) --> ps([["Yes, there is one by Jonathan Bowen; the URL is ", link("http://www.afm.sbu.ac.uk/logic-prog/"), ". He invites us to mail him at ", email("jonathan.bowen@sbu.ac.uk"), " with any relevant information for inclusion."], ["A collection of artifacts from logic programming \ languages beginning with Marseille Prolog is available from ", link("http://www.softwarepreservation.org/projects/prolog/index.html")], ["A large amount of Prolog code is available from the CMU AI Repository: ", link("http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/prolog/0.html")], ["Recently, Stackoverflow has become a valuable resource for Prolog questions and answers: ", link("http://stackoverflow.com/questions/tagged/prolog")], ["Another community resource is the #prolog IRC channel on irc.libera.chat."]]). q_a(["Can I do Internet/WWW programming with Prolog?"]) --> p(["Prolog is very suitable for this task. Several commercial \ and free implementations include special support for it. \ A page specifically on this topic (including some tutorials) \ is maintained at ", link("http://www.clip.dia.fi.upm.es/lpnet/lpnet.html"), ". A public-domain library exists (PiLLoW) for several popular \ Prolog systems which helps in the task. See: ", link("http://www.clip.dia.fi.upm.es/Software/pillow/")]). q_a(["Is there a WWW page with some tutorials on Prolog?"]) --> variablelist(tutorials). q_a(["How do I edit Prolog code?"]) --> ps([["Emacs and VIM ship with basic support for Prolog. A \ much improved Emacs mode is maintained by Stefan \ Bruda and available from ", link("https://bruda.ca/emacs/prolog_mode_for_emacs")], ["Logtalk ships with various editing services for many \ common editors, also usable for Prolog."], ["SWI Prolog has a built-in Emacs clone called \ PceEmacs. There are also Emacs definitions that \ let you evaluate embedded queries: ", link("https://www.metalevel.at/ediprolog/"), ". An SWI Prolog programming environment suitable for schools \ is available from ", link("http://lernen.bildung.hessen.de/informatik/swiprolog/indexe.htm")], ["A Prolog plug-in for the \"Eclipse\"-IDE is available from: ", link("http://eclipse.ime.usp.br/projetos/grad/plugin-prolog/index.html")], ["A sophisticated integrated editing and teaching environment \ with declarative debugging, termination analysis and many \ visualisations is available from ", link("http://www.complang.tuwien.ac.at/ulrich/gupu/")]]). q_a(["How do I publish Prolog code?"]) --> ps([["Logtalk ships with support for various syntax \ highlighters, also usable for Prolog. These include \ support for Pygments (used e.g. on Trac and GitHub), \ Rouge (use e.g. in GitLab), GeSHi (used e.g. on Wikis), \ minted and texments LaTeX packages (e.g. source code \ listings), Google Code Prettify, Source-highlight, \ Highlight, SyntaxHighlighter, and SHJS (JavaScript \ highlighter for e.g. web pages)."]]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% system("ALF (Algebraic Logic Functional language)") --> lips([["Platforms: UNIX "], ["Available: ", emphasis("Unknown")], ["E-mail: Rudolf Opalla ", email("opalla@julien.informatik.uni-dortmund.de")], ["Info: WAM-based language with narrowing/rewriting"]]). system("Amzi! Prolog + Logic Server") --> lips([["Platforms: Window, Linux and Solaris "], ["Available: ", link("http://www.amzi.com/download/")], ["E-mail: ", email("info@amzi.com")], ["Info: Registration is compulsory, except for the \ Free Academic/Personal/Evaluation License."]]). system("Aquarius Prolog 1.0") --> lips([["Platforms: UNIX "], ["Available: ", link("http://www.info.ucl.ac.be/people/PVR/aquarius.html")], ["Info: High performance, commercial functionality \ except debugging and modules. "]]). system("Argo Prolog v.1.1") --> lips([["Platforms: Solaris 1.x and HP-UX 9.x"], ["Available: ", emphasis("Unknown")], ["Contact: Takao Doi ", email("doi@csk.co.jp")]]). system("Arity/Prolog32") --> lips([["Platforms: Win32"], ["Available: ", link("https://github.com/Peter-Gabel/ArityProlog32")], ["Info: Arity/Prolog32 provides a complete Prolog programming \ environment in which you can write, debug, and run Prolog \ programs in 32-bit Windows environments (95/98/NT/2000). \ Arity/Prolog32 is a powerful, highly optimized, and \ extended version of the logic programming language Prolog. \ Arity/Prolog32 is a complete compiler and interpreter \ written in Prolog, C, and Assembly language and is a \ superset of Clocksin and Mellish Prolog."]]). system("B-Prolog 8.1") --> lips([["Platforms: Win32, Solaris, SunOS, UNIX, FreeBSD and Linux "], ["Available: ", link("http://www.probp.com/")], ["E-mail: Neng-Fa Zhou ", email("support@probp.com")], ["Info: Free of charge for individual users."]]). system("BinProlog 7.0") --> lips([["Platforms: Windows 95/98/NT, Linux and all major Unix platforms."], ["Available: ", link("https://code.google.com/archive/p/binprolog/")], ["Info: Download free evaluation copies and see online demos. \ Inexpensive Educational licensing available.Has \ built-in networking, multi-threading, mobile code and \ distributed blackboards. Supports BinNet Internet \ Programming Tool kit."]]). system("Brain Aid Prolog (BAP) v1.4") --> lips([["Platforms: Transputer systems"], ["Info: BAP is a parallel prolog system for Transputer \ systems. Available under a Berkely style of copyright. "]]). system("C#Prolog") --> lips([["Platforms: Win32, UNIX"], ["Available: ", link("http://sourceforge.net/projects/cs-prolog/")], ["E-mail: John Pool ", email("j.pool@ision.nl")], ["Info: A Prolog interpreter written in C#. Can easily be \ integrated in C# programs. Characteristics: reliable and \ quite fast beta version, command line interface, builtin \ DCG, XML-predicates, persistent predicates \ (using Firebird RDBMS), extendible."]]). system("Ciao 1.4") --> lips([["Platforms: Linux, Win32 (95/98/NT), Solaris, SunOS, UNIX in general."], ["Available: ", link("http://ciao-lang.org")], ["E-mail: Developers ", email("ciao@clip.dia.fi.upm.es"), ", Users ", email("ciao-users@clip.dia.fi.upm.es")], ["Info: Next generation LP/CLP system. Commercial \ functionality, but freely available w/source. ISO-Prolog + \ modules, networking, multi-threading, clp(r), clp(q), interfaces \ (Java, C, tcltk, WWW, databases/ODBC, ...), functions, \ higher-order, records, persistence, objects, assertions \ (types, modes, ...), source debugger, auto-documenter, \ static debugger, and more."]]). system("clp(FD)") --> lips([["Platforms: UNIX"], ["Contact: Daniel Diaz ", email("daniel.diaz@inria.fr")], ["Info: Constraint logic programming over finite \ domains. Requires GNU C v.2.4.5 or higher."]]). system("clp(FD,S)") --> lips([["Platforms: UNIX"], ["Contact: Yan Georget ", email("Yan.Georget@inria.fr")], ["Info: Requires GNU C (gcc) version 2.4.5. or higher."]]). system("CLP(R)") --> lips([["Platforms: UNIX"], ["Available: E-mail request from Joxan Jaffar ", email("joxan@watson.ibm.com"), ". "], ["Info: Constraint logic programming language, \ for academic and research purposes only."]]). system("CxProlog") --> lips([["Platforms: UNIX, MacOS X, Windows"], ["Available: http://ctp.di.fct.unl.pt/~amd/cxprolog/"], ["Info: Open source (GPL) implementation supporting Unicode, \ threads, sockets, processes, contexts, imperative data structures, and \ interfaces with C/C++, Java, and wxWidgets"], ["Contact: Artur Miguel Dias ", email("amd@fct.unl.pt")]]). system("ECLiPSe Constraint Logic Programming System, subsuming Prolog.") --> lips([["Platforms: Solaris, Linux, Linux/Alpha, Mac OS X, Windows "], ["Available: ", link("http://eclipseclp.org"), " or ", link("http://www.sourceforge.net/projects/eclipse-clp")], ["Info: ECLiPSe is a Prolog and Constraint Programming platform \ with a long history and has been open-source since Sept 2006."], ["License: MPL"]]). system("IF Prolog V5.3") --> lips([["Platforms: Windows 95/98/NT/2000/XP, Linux, Solaris, AIX, HP-UX \ and other UNIX platforms"], ["Available: ", link("http://www.ifcomputer.de/Products/Prolog/")], ["E-mail: ", email("info@ifcomputer.de")], ["Info: IF Prolog is a commercial Prolog system with \ interfaces to C/C++, Java, sockets, Windows events and a COM \ servers. A graphical debugger allows step-forward, step backward \ debugging of Prolog code. A static module concept allows many \ additional errors to be detected at compile time. Constraint \ Programming (for finite domains, intervals and booleans \ using global constraints and linear optimisation)."], ["License: Free evaluation copies and inexpensive \ educational licensing available."]]). system("GNU Prolog") --> lips([["Platforms: Many Unixes, Windows, MacOS X "], ["Available: ", link("http://www.gprolog.org/")], ["E-mail: Daniel Diaz ", email("daniel.diaz@inria.fr")]]). system("Jinni 2.27") --> lips([["Platforms: Java-based"], ["Available: ", link("https://github.com/heathmanb/JinniProlog")], ["Info: Multi-threaded, Java based Prolog interpreter with \ built-in networking, distributed blackboards and \ mobile code (inexpensive shareware licensing available)."]]). system("JIProlog") --> lips([["Platforms: Java-based"], ["Available: ", link("http://www.jiprolog.com/")], ["Info: Java Internet Prolog is a cross-platform pure Java \ 100% prolog interpreter that supplies Java world with the \ power of prolog language and provides prolog language with \ a technology to implement new predicates in Java."]]). system("KLIC") --> lips([["Platforms: UNIX"], ["Info: ICOT Free Software. Concurrent logic \ programming. Tested on Sparcs, DEC 7000, Gateway P5-60."], ["Contact: ", email("ifs@icot.or.jp")]]). system("LPA Win-Prolog, demo version") --> lips([["Platforms: Windows"], ["Available: Available from ", link("http://www.lpa.co.uk/ind_dow.htm")]]). system("MINERVA") --> lips([["Platforms: Java"], ["Info: Proprietary commercial ISO-Prolog Compiler \ in 100% Java support for web programming, XML, \ servlets, applets, standalones. Free evaluation license."]]). system("Modular SB-Prolog (= SB-Prolog version 3.1 plus modules)") --> lips([["Platforms: SPARC, DECstation, MIPS, HP 9000 series, Sun 3."], ["Info: Copy-lefted."]]). system("Open Prolog") --> lips([["Platforms: Apple Macintosh"], ["Available: ", link("http://www.cs.tcd.ie/open-prolog/")], ["E-mail: ", email("brady@cs.tcd.ie"), ". (Michael Brady). "]]). system("Poplog Prolog") --> lips([["Platforms: Various Unixes, including Sun, Dec Alpha, HP and many \ others. Also a Win32 version is available. Sources available for \ other combinations."], ["Available: At the Free Poplog Web/FTP site, including full sources ", link("http://www.cs.bham.ac.uk/research/poplog/freepoplog.html")], ["E-mail: queries may be posted to ", link("news://comp.lang.pop/"), ", or to ", email("pop-forum@cs.bham.ac.uk"), " or ", email("A.Sloman@cs.bham.ac.uk"), " (Last resort!) "], ["Info: Robust incremental compiler, part of the multi-language \ Poplog system (including Common Lisp, Pop-11 and Standard ML). \ Unix, Linux & VMS versions include full support for X window \ facilities/Motif. More information at ", link("http://www.cs.bham.ac.uk/research/poplog/poplog.info.html"), " Licence modelled on XFree86. Can be freely distributed, \ though copyright is owned by Sussex University and ISL."]]). system("PIE2") --> lips([["Platforms: Unknown"], ["Available: On CompuServe in the AIEXPERT forum, interpreter and \ examples in ", filename("PIE2.ZIP"), ", documentation in ", filename("PIEDOC.ZIP"), ". "], ["E-mail: Brent Ruggles ", email("ruggles@shell.com")]]). system("QuProlog") --> lips([["Platforms: UNIX, Linux, beta for MAC "], ["Available: ", link("http://www.itee.uq.edu.au/~pjr/HomePages/QuPrologHome.html")], ["E-mail: ", email("pjr@itee.uq.edu.au")], ["Info: Extended WAM with support for quantifiers and \ substitutions, multi-threaded, high-level communication."]]). system("Scryer Prolog") --> lips([["Platforms: Unix, Linux, Windows and Mac"], ["Available: ", link("https://github.com/mthom/scryer-prolog")], ["Info: A modern Prolog system written mostly in Rust."]]). system("Strawberry Prolog") --> lips([["Platforms: Windows 95/NT, plans for UNIX and Macintosh"], ["Available: ", link("http://www.dobrev.com/")], ["E-mail: ", email("dimiter@dobrev.com")]]). system("SWI Prolog") --> lips([["Platforms: Binaries for Linux, Windows (NT/2000/XP/Vista) \ and Mac OS X (darwin). Sources: ANSI-C, both 32 and 64-bit \ machines, compiles on almost all Unix systems and more."], ["Available: ", link("http://www.swi-prolog.org")], ["Info: Complete, ISO and Edinburgh standard, common \ optimizations, GC including atoms. Portable graphics, multiple \ threads, constraints, comprehensive libraries for (semantic) \ web programming, Unicode, source-level debugger, advanced \ syntax colouring"], ["License: Simplified BSD. Run license/0 for more information."]]). system("Tau Prolog") --> lips([["Platforms: Web-based"], ["Available: ", link("http://tau-prolog.org/")], ["Info: An open source Prolog interpreter in JavaScript."]]). system("Trinc-Prolog") --> lips([["Platforms: Windows 95/98/NT 4.0, plans for Windows 2000, Linux \ and Sun Solaris"], ["E-mail: ", email("info@trinc-prolog.com")]]). system("Visual Prolog") --> lips([["Platforms: Win32"], ["Available: ", link("http://www.visual-prolog.com")], ["Info: Includes all the facilities necessary to write mission \ critical commercial-grade applications. Fully visual \ development environment. Open architecture. Object-oriented. \ Built-in database system and ODBC support. Visual Prolog \ Personal Edition is available on a freeware license."]]). system("wamcc") --> lips([["Platforms: UNIX"], ["Info: Compiler which translates Prolog to C via WAM. Debuggers. \ Requires GNU C v.2.4.5 or higher."], ["Contact: Daniel Diaz ", email("daniel.diaz@inria.fr")]]). system("XGP") --> lips([["Platforms: Apple Macintosh OS X, 10.2.3+"], ["Available: ", link("http://xgp.sourceforge.net/")], ["Info: XGP is an open source (GPL) integrated development \ environment with user interface and graphics support based on \ gprolog and Cocoa under Macintosh OS X."]]). system("XSB") --> lips([["Platforms: Many, including SunOS, Linux and Windows"], ["Available: ", link("http://xsb.sourceforge.net/")], ["E-mail: ", email("xsb-users@lists.sourceforge.net")], ["Info: system with SLG-resolution, HiLog syntax, and unification factoring."]]). system("Yap") --> lips([["Platforms: UNIX-based platforms and Windows"], ["Available: ", link("https://github.com/vscosta/yap-6.3")], ["E-mail: Vitor Santos Costa ", email("vsc@ncc.up.pt")], ["Info: Yap is entirely written in C and Prolog and should be \ portable to most 32-bit and 64-bit Unix based platforms. A \ Windows port is also available. Yap4.2 is distributed under \ Perl's artistic license and can be freely distributed."]]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% contact("ALS (Applied Logic Systems)") --> lips([["Web site: ", link("http://alsprolog.com")]]). contact("Amzi! inc.") --> lips([["Web site: ", link("http://www.amzi.com")], ["Information: ", email("info@amzi.com")], ["Sales: ", email("sales@amzi.com")], ["Support: ", email("support@amzi.com")]]). contact("Arity/Prolog32") --> lip(["Web site: ", link("https://github.com/Peter-Gabel/ArityProlog32")]). contact("Ciao, PiLLoW, WebDB, etc.") --> lips([["Web site: ", link("http://www.clip.dia.fi.upm.es/Software")], ["Users' group: ", email("ciao-users@clip.dia.fi.upm.es")], ["Information: ", email("ciao@clip.dia.fi.upm.es")], ["Tech support: ", email("ciao-bugs@clip.dia.fi.upm.es")]]). contact("COSYTEC (CHIP V5)") --> lips([["Web site: ", link("http://www.cosytec.com")], ["Information: ", email("info@cosytec.com"), " (or .fr) "], ["Tech Support: ", email("support@cosytec.com"), " (or .fr) "]]). contact("ECLiPSe") --> lips([["Web site: ", link("http://eclipseclp.org")], ["Users' group: ", email("eclipse-clp-users@lists.sf.net")], ["Tech support: ", email("http://eclipseclp.org/bugs.html")], ["Support contracts: ", email("info@coninfer.com")]]). contact("Expert Systems Ltd. (Prolog-2)") --> lips([["Sales: ", email("sales@expert.demon.co.uk")], ["Support: ", email("support@expert.demon.co.uk")], ["Users' group: ", email("prolog2-request@hplb.hpl.hp.com")]]). contact("GNU Prolog") --> lips([["Web site: ", link("http://www.gprolog.org/")], ["Users' group: ", email("users-prolog-request@gnu.org")], ["Bug reports: ", email("bug-prolog@gnu.org")]]). contact("LPA") --> lips([["Web site: ", link("http://www.lpa.co.uk/")], ["Sales: ", email("sales@lpa.co.uk")], ["Tech support: ", email("support@lpa.co.uk")]]). contact("MasterProLog") --> lip(["Formerly BIM ProLog "]). contact("PDC Prolog") --> lip(["PDC Prolog is the succesor to Turbo Prolog and \ the predecessor to Visual Prolog."]). contact("ProLog by BIM") --> lip(["Currently MasterProLog"]). contact("Quintus") --> lips([["Web site: ", link("http://quintus.sics.se")], ["Mailing list: see ", link("http://www.sics.se/isl/quintuswww/site/community.html")], ["Sales: ", email("qpsales@sics.se")], ["Tech support: ", email("qpsupport@sics.se")]]). contact("SICStus") --> lips([["Web page: ", link("http://www.sics.se/sicstus")], ["Mailing list: see ", link("http://www.sics.se/isl/sicstuswww/site/community.html")], ["Sales: ", email("sicstus-request@sics.se")], ["Tech support: ", email("sicstus-support@sics.se")]]). contact("Trinc / Trinc-Prolog") --> lips([["Information: ", email("info@trinc-prolog.com")], ["Sales: ", email("sales@trinc-prolog.com")], ["Support: ", email("support@trinc-prolog.com")]]). contact("Turbo Prolog") --> lip(["Turbo Prolog is the predecessor of PDC Prolog (see above)."]). contact("Visual Prolog") --> lips([["Web site: ", link("http://www.visual-prolog.com/")], ["Information: ", email("sales@pdc.dk"), " (or ", email("sales@visual-prolog.com"), ")"], ["Sales: ", email("sales@pdc.dk"), " (or ", email("sales@visual-prolog.com"), ") "], ["Tech support: ", email("support@pdc.dk"), " (or ", email("support@visual-prolog.com"), ") "]]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% recent("Mercury") --> lip(["Web site: ", link("http://www.mercury.cs.mu.oz.au/index.html")]). recent("The Mozart Consortium:") --> lips([["Web site: ", link("http://mozart.github.io/")], ["Mailing lists: ", email("http://mozart.github.io/mailing-lists/")]]). new("Ciao") --> lips([["Web site: ", link("http://www.clip.dia.fi.upm.es/Software")], ["Users' group: ", email("ciao-users@clip.dia.fi.upm.es")], ["Information: ", email("ciao@clip.dia.fi.upm.es")], ["Tech support: ", email("ciao-bugs@clip.dia.fi.upm.es")]]). new("Logtalk") --> lips([["Web site: ", link("http://logtalk.org/")], ["E-mail: Paulo Moura ", email("pmoura@logtalk.org")], ["Info: Open source object-oriented extension to \ Prolog compatible with most Prolog compilers. "]]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% books("Introductory") --> lips([["\"Programming In Prolog\". William F. Clocksin and \ Christopher S. Mellish. Springer-Verlag, 2003 (5th ed)."], ["\"Prolog for Programmers\". Feliks Kluzniak and \ Stanislaw Szpakowicz. Academic Press, London, 1985, \ now available without charge from ", link("https://sites.google.com/site/prologforprogrammers/")], ["\"Prolog Programming for Artificial Intelligence\". \ Ivan Bratko. Addison-Wesley, 2001 (3rd ed)."]]). books("Advanced") --> lips([["\"The Art of Prolog: Advanced Programming Techniques\". \ Leon Sterling and Ehud Shapiro. MIT Press, 1994 (2nd ed)."], ["\"The Craft of Prolog\". Richard A. O'Keefe. MIT Press, 1990. "]]). books("Logic programming theory") --> lips([["\"Foundations of Logic Programming\". \ John Lloyd. Springer-Verlag, 1988 (2nd ed)."], ["\"Logic, Programming and Prolog\". \ Ulf Nilsson and Jan Maluszynski. \ Originally published by John Wiley & Sons Ltd (2nd \ ed. 1995) and now available without charge from ", link("http://www.ida.liu.se/~ulfni/lpp")]]). books("Expert Systems") --> lip(["\"Building Expert Systems in Prolog\". \ Dennis Merritt. Springer-Verlag, 1989. \ HTML & PDF versions available from ", link("http://www.amzi.com/ExpertSystemsInProlog")]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% iso_contacts("Contacts:") --> lips([["Convenor of WG17: Ulrich Neumerkel (", email("ulrich@mips.complang.tuwien.ac.at"), ")"]]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tutorials("Beginner level:") --> lips([["Adventure in Prolog: ", link("http://www.amzi.com/AdventureInProlog/advfrtop.htm")], ["On-line guide to Prolog Programming: ", link("http://kti.ms.mff.cuni.cz/~bartak/prolog/index.html")], ["Prolog Programming, A First Course: ", link("http://computing.unn.ac.uk/staff/cgpb4/prologbook/book.html")], ["Learn Prolog Now!: ", link("http://www.learnprolognow.org")]]). tutorials("Intermediate to advanced level:") --> lip([link(" https://skolemmachines.org/ThePrologTutorial/")]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% appendix --> "

    ", "Acknowledgements", "

    ", ps([["Thank you to all the people who helped put together the first \ version of this FAQ, and everyone who has contributed to it over \ the years. Special thanks to John Dowding for suggesting a \ good format for the list, and to Chris Moss, Dag Wahlberg, and \ Mark Kantrowitz for their work on the Prolog Resource Guide."], ["Special thanks to Jamie Andrews, Dirk-Jan Faber and \ Remko Troncon, who have been maintaining and posting the FAQ \ in the past."]]).