~/talk

Logic Programming in Go

Talkat GopherCon UK 2023 · 2023-08-16..08-18· [go]
slides:none on file

Logic programming gets embedded in Go as a ~1000-line Gominikanren implementation that uses channels instead of lists for streams and leverages Go concurrency to run goals. It implements the unification primitives hop/rewrite/unify and constructors like equals, conj, disj and exists, and runs queries backwards. A regex generator example actually produces matching expressions and strings but causes explosive parallelism — observed up to 50k goroutines while producing ~90 results — so it works but is highly inefficient. Gominikanren source is on GitHub.

AI-written summary · about

  1. 0:00Start
  2. 0:52IMPERATIVE PROGRAMMING
  3. 20:11hop: example
  4. 21:48rewrite: example
  5. 25:30ZipReduce: example 1
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.