gpt4 book ai didi

haskell - 所有类型参数在功能依赖中相互依赖

转载 作者:行者123 更新时间:2023-12-03 22:44:58 24 4
gpt4 key购买 nike

假设我有一个带有 n 个类型参数的类型类,我希望它们中的任何一个唯一地确定所有其他参数。是否足以使依赖项形成一个循环,如

class Foo a b c | a -> b, b -> c, c -> a

(线性)从每个参数到其他每个参数都有一条路径,或者我是否需要扩展所有可能的路径,例如
class Bar a b c | a -> b, a -> c, b -> a, b -> c, c -> a, c -> b

(二次)?两者之间有任何明显的区别吗?怎么样
class Baz a b c | a -> b c, b -> a c, c -> a b

最佳答案

在操作上,以上所有内容都是等效的:

首先,a -> b ca -> b, a -> c 完全一样.

接下来,假设我们得到 Foo a b c => (a, b, c) .说,我们意识到 a ~ A .我们找到 a -> b Fundep 并扫描实例以查找 b ~ B .我们再次找到 b -> c基金和实现c ~ C .瞧,我们得到了 (A, B, C) .

如果相反,我们有 Bar a b c => (a, b, c)a ~ A ,我们会找到 a -> b , 和 b ~ B ,但是在找到 b -> c 之前, 我们会找到 a -> c .

唯一的区别是使用哪些fundep 箭头来推断类型。 a -> b, b -> ca -> b, a -> c不能产生不同的结果。

关于haskell - 所有类型参数在功能依赖中相互依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32393864/

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