- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有 makeLenses
的等价物?对于 GADT?如果我有一个简单的GADT
喜欢:
data D a b where
D :: (Ord a, Ord b) => !a -> !b -> D a b
最佳答案
我不认为它可以自动完成,但在这种特殊情况下,手动编写一些镜头并不难:
{-# LANGUAGE GADTs #-}
import Control.Lens
data D a b where
D :: (Ord a, Ord b) => !a -> !b -> D a b
field1 :: Lens' (D a b) a
field1 f (D x y) = fmap (\x' -> D x' y) (f x)
field2 :: Lens' (D a b) b
field2 f (D x y) = fmap (\y' -> D x y') (f y)
{- If you want type-changing lenses, you can also use these signatures.
- Note that then the target type Ord constraint has to escape.
field1 :: (Ord a2) => Lens (D a1 b) (D a2 b) a1 a2
field2 :: (Ord b2) => Lens (D a b1) (D a b2) b1 b2
-}
关于haskell - 用于 GADT 的 makeLenses (Haskell),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28145369/
我对 Haskell 很陌生,想使用 makeLenses来自 Control.Lens和类约束与类型同义词一起使我的函数类型更紧凑(可读?)。 我试图提出一个最小的虚拟示例来演示我想要实现的目标,并
很不言自明。我知道makeClassy应该创建类型类,但我认为两者之间没有区别。 PS。解释两者的默认行为的奖励积分。 最佳答案 注意:此答案基于镜头 4.4 或更高版本。那个版本的 TH 有一些变化
是否有 makeLenses 的等价物?对于 GADT?如果我有一个简单的GADT喜欢: data D a b where D :: (Ord a, Ord b) => !a -> !b -> D
我有这个文件: {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE ExistentialQuantification #-} module Toy where
我有这个文件: {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE ExistentialQuantification #-} module Toy where
假设我有一个类型 Person import GHC.Generics import Data.Text import Data.Aeson import Control.Lens data Pers
我是一名优秀的程序员,十分优秀!