小编pro*_*hat的帖子

使用Haskell镜头库,我如何将getter视为"头等舱"?

我注意到我通常构建使用镜头获取值的函数,将一些函数应用于值并返回结果.例如,将一对元素相加 \pair -> (pair ^. _1) + (pair ^. _2)

我觉得应该有一些组合器来组合getters第一类并返回另一个getter(可能是类型(b -> c -> d) -> Getter a b -> Getter a c -> Getter a d).有帮助吗?

haskell haskell-lens

8
推荐指数
1
解决办法
194
查看次数

类型族实例中的约束

我正在Haskell中探索类型系列,试图确定我可以定义的类型级函数的复杂性.我想定义一个封闭的类型级版本mod,如下所示:

{-# LANGUAGE TypeFamilies, DataKinds, TypeOperators, UndecidableInstances #-}
import GHC.TypeLits

type family Mod (m :: Nat) (n :: Nat) :: Nat where
  n <= m => Mod m n = Mod (m - n) n
  Mod m n = m
Run Code Online (Sandbox Code Playgroud)

但是,编译器(GHC 7.10.2)拒绝这一点,因为不允许第一个等式中的约束.价值级别的警卫如何转换为类型级别?这在Haskell目前是否可行?

haskell type-families

8
推荐指数
1
解决办法
321
查看次数

标签 统计

haskell ×2

haskell-lens ×1

type-families ×1