Haskellの関数アプリケーション( "space"演算子)が言語に焼き付けられたのではなく、型クラスにあったとします。私はそれがf $ a
にdesugarう関数アプリケーションがtypeclassの場合はどうなりますか?
class Apply f where
($) :: f a r -> a -> r
instance Apply (->) where
($) = builtinFnApply#
そしてf a
ようになります想像してみてください。アイデアは、これはあなたがすなわち
instance Apply LinearMap where
($) = matrixVectorMult
というように、関数のように作用する他のタイプを定義しましょうということです。
これは型推論を確定できませんか?私の本能はそれがそうだと言っていますが、タイプ推論の私の理解は単純なヒンドレーミルナーで終わります。フォローアップとして、がである場合、特定の病理学的事例を禁止することによって決定可能にすることはできますか?