documentation: update section on applicativity

This commit is contained in:
Philip Ginsbach
2024-01-09 09:48:08 +00:00
parent 493158a3f5
commit 225aff47ed

View File

@@ -180,7 +180,8 @@ For example, in the previous two snippets, we relied on the predicate signature
signature int transformer(int x);
The instantiation of parameterized modules is applicative.
That is, if you instantiate a parameterized module twice with identical arguments, the resulting object is the same.
That is, if you instantiate a parameterized module twice with equivalent arguments, the resulting object is the same.
Arguments are considered equivalent in this context if they differ only by :ref:`weak aliasing <weak_strong_aliases>`.
This is particularly relevant for type definitions inside parameterized modules as :ref:`classes <classes>`
or via :ref:`newtype <algebraic-datatypes>`, because the duplication of such type definitions would result in
incompatible types.