Métodos protegidos en OCaml: restricciones por método sin cambiar el lenguaje
Guarded Methods in OCaml

Los métodos protegidos permiten imponer restricciones al receptor solo para ciertos métodos, algo que OCaml no permite sintácticamente. Este artículo muestra cómo codificarlos usando un testigo de igualdad de tipos (type equality witness). Se parte del problema de implementar un método flatten en una clase de listas sin restringir toda la clase, y se comparan tres enfoques: mover el método fuera de la clase, usar métodos de extensión (como en Kotlin) y los métodos protegidos. Luego, se presenta una implementación concreta en OCaml, incluyendo un método sum, y se discute la sintaxis propuesta por Gabriel Scherer para métodos protegidos, que no está disponible en OCaml pero se puede emular.
Aunque los métodos protegidos parecen necesarios, lamentablemente no conozco ningún lenguaje mainstream que permita definirlos. Es una pena. Afortunadamente, en OCaml es posible codificarlos.