# Puzzling through some GADT errors

**URL:** <https://discuss.ocaml.org/t/puzzling-through-some-gadt-errors/8478>\
**Category:** Learning\
**Tags:** gadt\
**Created:** [September 12, 2021, 2:52pm UTC](https://discuss.ocaml.org/t/puzzling-through-some-gadt-errors/8478 "2021-09-12T14:52:50Z")\
**Posts on this page:** 1\
**Showing post:** 8

<div class="post-metadata">

**Author:** ![gasche](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/gasche/32/4_2.png) [@gasche](https://discuss.ocaml.org/u/gasche)\
**Post date:** [September 15, 2021, 7:07pm UTC](https://discuss.ocaml.org/t/puzzling-through-some-gadt-errors/8478/8 "2021-09-15T19:07:56Z")

</div>

Not exactly what you are asking for, but @Octachron wrote an excellent [chapter on GADTs](https://ocaml.org/releases/4.12/manual/gadts.html) in the OCaml manual, which could be recommended to people starting GADT programming. It explains why recursive functions on GADT need “explicit polymorphic annotations” in less “implementation driven” terms.

(The chapter also demonstrates the new naming scheme for existential type variables introduced by GADT constructors, which can help a lot working through type errors, but are still a bit heavy and deserve a gentle introduction.)

---

_[View the full topic](https://discuss.ocaml.org/t/puzzling-through-some-gadt-errors/8478)._
