假设Haskell的函数应用程序( "space“运算符)是在一个类型中而不是在语言中。我想它看起来就像
class Apply f where
($) :: f a r -> a -> r
instance Apply (->) where
($) = builtinFnApply#而f a则会对f $ a进行恶搞。其思想是,这将使您可以定义其他类型的功能,如
instance Apply LinearMap where
($) = matrixVectorMult诸若此类。
,这会使类型推断无法判定吗?,我的直觉说,它是这样的,但是我对类型推理的理解仅限于简单的辛德雷-米尔纳。作为后续行动,如果它是不可判定的,它是否可以通过取缔某些病理事件来判定?
发布于 2016-02-09 09:24:51
如果您可以将这看作是Haskell (用您的“空格运算符”替换"space运算符“)之上的语法糖,我就看不出为什么这会使类型推断比现在更糟了。
但是,我可以看到,随着这种变化,代码可能更加模糊。
class C a where get :: a
instance C (Int -> Int) where get = id
instance C Linearmap where get = ...
test = get (5 :: Int) -- actually being (get $ (5 :: Int))上面的get可以从这两个实例中选择,而在普通的Haskell中并不会出现这种模糊性。
https://stackoverflow.com/questions/35287673
复制相似问题