Supponiamo che l'applicazione della funzione di Haskell (l'operatore "spazio") fosse in una classe di caratteri anziché nella lingua. Immagino che sarebbe simile aCosa accadrebbe se l'applicazione di funzione fosse un typeclass?
class Apply f where
($) :: f a r -> a -> r
instance Apply (->) where
($) = builtinFnApply#
E f a
sarebbe desugar a f $ a
. L'idea è che questo ti consente di definire altri tipi che agiscono come funzioni, ovvero
instance Apply LinearMap where
($) = matrixVectorMult
e così via.
Questo rende indecidibile il tipo di deduzione? Il mio istinto dice che lo fa, ma la mia comprensione dell'inferenza di tipo si ferma al semplice Hindley-Milner. Come seguito, se il numero è indecidibile, , può essere reso decidibile mettendo fuori legge alcune istanze patologiche?