Rethinking Prolog


Details
The Paper
Rethinking Prolog (http://okmij.org/ftp/kakuritu/rethinking.pdf)
Format
We start at 6:10, don't be late!
The discussion lasts for about 1 to 1.5 hours, depending upon the paper.
• Read the paper (done before you arrive)
• Introductions (name, and background)
• First impressions (1-2 minutes this is what I thought)
• Structured review (we move through the paper in order, everyone gets a chance to ask questions, offer comments, and raise concerns)
• Free form discussion
• Nominate and vote on the next paper
• Adjourn for food and/or drink at Steamworks (https://www.google.ca/maps?ion=1&espv=2&q=steamworks&bav=on.2,or.&biw=1674&bih=956&dpr=2&um=1&ie=UTF-8&sa=X&ved=0ahUKEwjTpLXtqb_MAhVC0mMKHWLiBLcQ_AUIBigB)
Abstract
Classical Prolog is an elegant language that concisely represents the fundamental concepts of term algebra, nondeterminism, unification, counter-example driven search, and the separation of logic and control. The ability to run a program forwards and backwards is uncanny. However, real Prolog programs are replete with cuts, FFI calls, committed choice and unexpected divergence – defiling the Classical purity. Classical Prolog is an enchanting misconception. It ought to be studied, for its ideas and lessons. One lesson is that guessing – non-determinism – is fundamental, but should not be the default mode of execution. One should guess, but guess lazily. The strong points of Prolog can be brought into an ordinary functional programming language. Using OCaml as a representative, we implement lazy guessing as a library, with which we reproduce classical Prolog examples. Furthermore, we demonstrate parser combinators that use committed choice (maximal munch) and can still be run forwards and backwards. They cannot be expressed in Classical Prolog. Logic variables, unification, and its WAM compilation strategy naturally emerge as a “mere optimization” of the Herbrand universe enumeration.
Getting There
Stage 3 Systems is near the Vancouver City Centre Canada Line Station, or the Chinatown/Stadium Sky Train station, and there is pay parking available. Enter into the lobby, if no one is there to take you up the elevator, hang on if it's before 6:10, otherwise use the comments to get a hold of us.

Rethinking Prolog