18得票3回答
为什么没有`-XDeriveApplicative`扩展?

GHC拥有一些有用的语言扩展,可用于机械化推导出各种常见的Haskell类型类(-XDeriveFunctor,-XDeriveFoldable,-XDeriveTraversable)。似乎Applicative是另一个经常需要且通常很容易派生的类。对于包含类型为a 的简单记录,例如:dat...

17得票2回答
为什么在Haskell中无法推导出Applicative Functors?

在Haskell中,您可以使用"deriving"关键字自动派生 "Functor"、"Foldable"和"Traversable"。但是,无法自动派生" Applicative"。考虑到定义Applicative实例的一个显然的方法(即通过zip应用),难道没有任何方法可以启用" deri...

12得票1回答
使用独立派生的Deriving Via

我不确定我在这里做错了什么:data Vector2D u = Vector2D { _x :: u, _y :: u } deriving stock (Show, Eq, Functor, Foldable, Traversable) {-# INLINE addV...

11得票2回答
量化约束 vs. (封闭)类型族

我正在尝试使用这篇博客中的高阶数据方法,避免在量化约束推导时出现无用的Identity函子。 {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE QuantifiedConstraints, StandaloneDeriving, UndecidableIn...

10得票3回答
Haskell:重叠实例

考虑以下示例程序: next :: Int -> Int next i | 0 == m2 = d2 | otherwise = 3 * i + 1 where (d2, m2) = i `divMod` 2 loopIteration :: MaybeT (St...

10得票3回答
是否可以在自定义类型和标准库类型之间建立Coercible实例?

举个简单的例子,假设我想要一个类型来表示井字棋的标记: data Mark = Nought | Cross 这与Bool相同。 Prelude> :info Bool data Bool = False | True -- Defined in ‘GHC.Types’ ...