I am trying to read the Backpack paper.
Here is a paragraph I am trying to understand:
A key reason we can get by with a simpler semantics of linking is that we are deliberately less ambitious than MixML in a certain sense: unlike MixML, we do not aim to completely subsume the
functionality of ML modules. MixML does, and this means that its semantics must deal with nested uses of translucent sealing (i.e., the ability to define types that are “transparent” inside a module but but “opaque” outside), a defining feature of ML modules which compounds the already-tricky double-vision problem. In contrast, does not attempt to support translucent sealing—and does not suffer the attendant complexities—for the simple reason that Haskell, our target of elaboration, cannot support it.
I find this confusing, as my initial interpretation of the phrase “translucent sealing” was that it refers to something equivalent to the concept of “abstract data type” outlined in section 11.2 of the Haskell tutorial here.
However, the paper says that Haskell does not support translucent sealing, so this cannot be right.
My question is: What is translucent sealing in this context and how does it differ from abstract data types?