gpt4 book ai didi

haskell - 如果函数应用程序是一个类型类呢?

转载 作者:行者123 更新时间:2023-12-04 19:02:13 25 4
gpt4 key购买 nike

假设 Haskell 的函数应用程序(“空格”运算符)位于类型类中,而不是嵌入语言中。我想它看起来像

class Apply f where
($) :: f a r -> a -> r

instance Apply (->) where
($) = builtinFnApply#

f a将脱糖至 f $ a .这个想法是,这将让您定义其他类型的功能,如函数,即
instance Apply LinearMap where
($) = matrixVectorMult

等等。

这是否会使类型推断不可判定? 我的直觉告诉我确实如此,但我对类型推断的理解仅限于普通的 Hindley-Milner。作为后续,如果它是不可判定的,是否可以通过取缔某些病理情况来使其成为可判定的?

最佳答案

如果你能把它想象成 Haskell 之上的一个语法糖(用你的替换“空间操作符”),我不明白为什么这会使类型推断比现在更糟。

但是,我可以看到代码可能会因此更改而更加模棱两可,例如

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 中。

关于haskell - 如果函数应用程序是一个类型类呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35287673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com