In Alice it produces a type clash because it is interpreted as trying to match NONE with a lambda expression. Rename your function, this is perverse anyway. For interoperability reasons, Alice currently has the concept of syntactic arity for constructors. Usually, syntactic arity can be ignored. However, signature matching is restricted to disallow changing the syntactic arity of constructors.
Transformations can get tedious in the case of higher-order functors, however.
Note that the syntactic arity is calculated after elimination of derived forms. To integrate them smoothly into the language it was necessary to give up the separation between namespaces for structures and those for functors - both are modules. This may break programs that declare structures and functors with identical names. Rename your functors or structures appropriately. It is a good idea to stick to naming conventions that denote functors with names like MkTable .