14得票1回答
所有相互依赖的类型参数在函数依赖中的应用

假设我有一个包含n个类型参数的类型类,并且我希望其中任何一个参数都能唯一地确定其他所有参数。是否只要让这些依赖形成一个循环就足够了,如下所示:class Foo a b c | a -> b, b -> c, c -> a 是否需要展开所有可能的路径,使得对于每个参数都存在从...

13得票2回答
Haskell 函数依赖冲突

为什么这会导致冲突?class Foo a b | b -> a where foo :: a -> b -> Bool instance Eq a => Foo a a where foo = (==) instance Eq a => Foo a ...

13得票1回答
将功能依赖类转换为类型族实例

能否从一个基于功能依赖(fundep)的类中创建类型族实例?例如,假设我有以下类: class A a b | a -> b 如果有一些实例(导入一个外部库),并且想为类型族创建所有相应的实例 type family A' a :: * 使A' a ~ b当且仅当A a b成...

12得票4回答
Data.Map中键/值关系的静态保证

我希望为Data.Map创建一个特殊的智能构造函数,该函数对键值对关系的类型有一定的限制。这就是我试图表达的限制: {-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, DataKinds #-} data Field = ...

11得票2回答
功能依赖关系的Typeclass实例无法工作

在玩弄类型类时,我想到了这个看似无害的东西 class Pair p a | p -> a where one :: p -> a two :: p -> a 这似乎运行良好,例如: instance Pair [a] a where one [x,_] ...

10得票2回答
寻找给定关系的候选键

R = (A, B, C, D, E) 功能依赖关系如下: A -> B ED -> A BC -> E 接下来,它列出了候选键: ACD, BCD, CDE 这些候选键是如何从上述函数依赖中推导出来的? 同样地, R = (A, B, C, D) 这...

10得票2回答
为什么这段Haskell代码在使用功能依赖时可以通过类型检查,但在使用类型族时会产生一个无法解决的错误?

给定一些类型定义: data A data B (f :: * -> *) data X (k :: *) ...以及这个类型类: class C k a | k -> a 这些(为了最小化示例而高度构造的)函数定义进行类型检查: f :: forall f. (fo...

9得票2回答
通过利用多个类型类实例之间的对称性来缩短代码

背景 我正在编写一个Haskell模块,用于表示国际单位制前缀: module Unit.SI.Prefix where 每个国际单位制前缀都有相应的数据类型: data Kilo = Kilo deriving Show data Mega = Mega deriving Show...

9得票2回答
当我扩展定义时,为什么我的函数依赖冲突消失了?

我尝试在Haskell中实现整数类型。首先,我使用以下方法实现了自然数: data Zero data Succ a 我随后将其扩展到整数上,方法是 data NegSucc a 我决定创建一个Increment类来增加整数。这是我做的方式: {-# Language Funct...

9得票3回答
TDD - 为第三方代码创建测试

如果我要测试的方法或过程依赖于第三方代码,那么我该如何创建单元测试呢?比方说,我有一个方法使用了来自第三方源的类,这些类需要在功能测试中进行设置。我应该如何处理呢?大多数情况下,第三方依赖关系无法被模拟,但是我的方法确实需要使用它。 另外,我是否应该避免我的单元测试甚至功能测试使用实际数据?...