# Type System Tooling?

**URL:** <https://discuss.ocaml.org/t/type-system-tooling/2334>\
**Category:** Ecosystem\
**Created:** [July 24, 2018, 4:46pm UTC](https://discuss.ocaml.org/t/type-system-tooling/2334 "2018-07-24T16:46:17Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![gilbert](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/gilbert/32/1064_2.png) [@gilbert](https://discuss.ocaml.org/u/gilbert)\
**Post date:** [July 24, 2018, 4:46pm UTC](https://discuss.ocaml.org/t/type-system-tooling/2334/1 "2018-07-24T16:46:17Z")

</div>

I’m working on yet another experimental language and would like to use OCaml to implement it. I noticed Haskell has [unbound](http://hackage.haskell.org/package/unbound), a library that automatically gives you functions for term equivalence, free variable calculation, and substitution. Is there something similar for OCaml?

---

<div class="post-metadata">

**Author:** ![grayswandyr](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/grayswandyr/32/94_2.png) [@grayswandyr](https://discuss.ocaml.org/u/grayswandyr)\
**Post date:** [July 24, 2018, 5:46pm UTC](https://discuss.ocaml.org/t/type-system-tooling/2334/2 "2018-07-24T17:46:42Z")

</div>

François Pottier recently proposed an approach based upon his visitors ppx and further developments but it’s not officially released AFAIK.  
François Pottier. Visitors unchained. In Proceedings of the 2017 ACM SIGPLAN International Conference on Functional Programming (ICFP 2017), September 2017.

> **[POTTIER Francois / alphaLib](https://gitlab.inria.fr/fpottier/alphaLib)**
>
> An OCaml library that helps deal with binding constructs in abstract syntax trees.

---

<div class="post-metadata">

**Author:** ![dariusf](https://avatars.discourse-cdn.com/v4/letter/d/f07891/32.png) [@dariusf](https://discuss.ocaml.org/u/dariusf)\
**Post date:** [July 25, 2018, 8:23am UTC](https://discuss.ocaml.org/t/type-system-tooling/2334/3 "2018-07-25T08:23:22Z")

</div>

Here’s another library which does this.

> **[rlepigre/ocaml-bindlib](https://github.com/rlepigre/ocaml-bindlib)**
>
> Efficient binder representation in OCaml. Contribute to rlepigre/ocaml-bindlib development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![grayswandyr](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/grayswandyr/32/94_2.png) [@grayswandyr](https://discuss.ocaml.org/u/grayswandyr)\
**Post date:** [July 25, 2018, 10:56am UTC](https://discuss.ocaml.org/t/type-system-tooling/2334/4 "2018-07-25T10:56:58Z")

</div>

Interesting: can you describe here the main features of this library?  
What sort of terms can you easily handle with it?
