We believe that programming can be, and should be, an intellectually rewarding activity; that a good programming language is a powerful conceptual tool — a tool for organizing, expressing, experimenting with, and even communicating one's thoughts ... we think that programming can be, and should be, part of the problem solving process itself; that thoughts should be organized as programs, so that consequences of a complex set of assumptions can be investigated by "running" the assumptions; that a conceptual solution to a problem should be developed hand-in-hand with a working program that demonstrates it and exposes its different aspects.

(Sterling & Shapiro, The Art of Prolog)


um-abt: An OCaml library implementing unifiable abstract binding trees (UABTs)

emojitsu: Tiny executable techniques for dealing with emoji

alg_structs: Algebraic structures in OCaml Structs

tokenize.pl: Tokenization library for SWI-Prolog balancing simplicity and flexibility

OSS Contributions

omd: extensible Markdown library and tool in pure OCaml

Apalache: A symbolic model checker for TLA+

themis-contract: A command line-based parameterized contracting tool

dune: OCaml's composable build system

aws_ssm_provider: A configuration provider for Elixir handling AWS SSM parameters

ATD: "Adaptable Type Definitions"

Vyconf: A software appliance configuration framework written in OCaml

Unpublished | WIP

ND Project: A pedagogical web toy for learning Gentzen’s natural deduction

These: A Type for inclusive disjunction

OCOBS: COBS (Consistent Overhead Byte Stuffing) in OCaml

Consolate: What if everything where a multiplexer?

protelog.pl: Experiments with Prolog syntax extensions