whatisgithub

What is meeps?

paraiconicity/meeps — explained in plain English

Analysis updated 2026-05-18

16OCamlAudience · researcherComplexity · 5/5Setup · hard

In one sentence

meeps is a small OCaml library that checks whether code uses values correctly, including tracking whether a value has already been used up, similar to ownership rules in Rust.

Mindmap

mindmap
  root((meeps))
    What it does
      Bidirectional type checking
      Affine ownership tracking
      Session based checking
    Tech stack
      OCaml
    Use cases
      Build a type checker
      Study ownership tracking
      Research language design
    Audience
      Language researchers
      Compiler developers
    Notable
      Very short README
      Two code examples only

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Add bidirectional type checking to another OCaml project or compiler

USE CASE 2

Study how affine ownership tracking can prevent reuse after move bugs

USE CASE 3

Experiment with a Session based API for checking multiple expressions in sequence

USE CASE 4

Use as a reference implementation for building a similar type checker

What is it built with?

OCaml

How does it compare?

paraiconicity/meepsbracevac/effastrada/google-drive-ocamlfuse
Stars165,923
LanguageOCamlOCamlOCaml
Last pushed2016-12-02
MaintenanceDormant
Setup difficultyhardmoderatemoderate
Complexity5/54/53/5
Audienceresearcherresearcherops devops

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1day+

The README has no installation or dependency instructions, so using it likely requires reading the OCaml source directly.

No license file is specified in the README, so reuse terms are unclear.

So what is it?

meeps is a small OCaml programming library that implements what is called a bidirectional type checker with something called affine ownership tracking. This is a tool aimed squarely at programming language researchers and compiler developers, not at general software users, and the README itself is very short, offering only two short code examples with almost no surrounding explanation. A type checker is a piece of software that looks at code before it runs and verifies that values are being used in ways that make sense, for example making sure you are not trying to treat a piece of text as a number. Bidirectional refers to a specific technique for doing this checking, where the type checker sometimes infers what type something should be and sometimes checks an expression against a type that was already specified elsewhere in the code. Affine ownership tracking is a way of keeping track of whether a value can be used more than once. In systems that use this idea, once a value has been moved or consumed, using it again is treated as an error, which helps catch a category of bugs related to accidentally reusing something that should only be used once, similar in spirit to the ownership rules found in languages like Rust. Based on the two examples in the README, the library lets a programmer build type checking expressions with an interface called Checker, either one expression at a time using an infer function, or across several expressions using a Session object that keeps track of ownership state as multiple pieces of code are checked in sequence. Beyond these two short snippets, the README does not explain installation, dependencies, or how to add this library to another OCaml project, so anyone wanting to use it would likely need to read the source code directly.

Copy-paste prompts

Prompt 1
Explain what bidirectional type checking means using the examples in this README
Prompt 2
Walk me through how affine ownership tracking differs from Rust's borrow checker
Prompt 3
Help me write an OCaml program that uses meeps' Checker.infer function
Prompt 4
What would I need to add to this library to use it in my own OCaml project

Frequently asked questions

What is meeps?

meeps is a small OCaml library that checks whether code uses values correctly, including tracking whether a value has already been used up, similar to ownership rules in Rust.

What language is meeps written in?

Mainly OCaml. The stack also includes OCaml.

What license does meeps use?

No license file is specified in the README, so reuse terms are unclear.

How hard is meeps to set up?

Setup difficulty is rated hard, with roughly 1day+ to a first successful run.

Who is meeps for?

Mainly researcher.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.