相关疑难解决方法(0)

Haskell中的分类结构

Hask通常被认为是对象是类型的类别,而态射是函数.然而,我看到康纳尔麦克布莱德(@pigworker)警告反对使用Hask多次(1,2,3):

  • 我会劝阻谈论"Hask类别",因为它潜意识地阻止你在Haskell编程中寻找其他分类结构.

  • 注意,我不喜欢使用"Hask"作为"Haskell类型和函数类别"的名称:我担心将一个类别标记为Haskell类别会产生令人遗憾的副作用,使我们对其他分类结构的财富感到盲目在Haskell编程中.这是一个陷阱.

  • 我希望人们不要称它为"哈斯克",它可能会限制想象力.

我们在Haskell中可以看到哪些其他类别?

他的一个答案中,他触及了其中的一些想法,但我想知道是否有人可以扩展它; 我想知道是否还有更多的例子.

[...]各地潜伏着大量的分类结构,当然有更多类别的分类结构(可能但不一定).我特别喜欢索引族集之间的仿函数.

haskell category-theory

9
推荐指数
1
解决办法
246
查看次数

如何使用Fix类型的Functor实例

假设我想要一个非常通用的ListF数据类型:

{-# LANGUAGE GADTs, DataKinds #-}

data ListF :: * -> * -> * where
  Nil  ::           List a b
  Cons :: a -> b -> List a b
Run Code Online (Sandbox Code Playgroud)

现在我可以使用这种数据类型Data.Fix来构建f代数

import qualified Data.Fix as Fx

instance Functor (ListF a :: * -> *) where
  fmap f (Cons x y) = Cons x (f y)
  fmap _ Nil        = Nil

sumOfNums = Fx.cata f (Fx.Fix $ Cons 2 (Fx.Fix $ Cons 3 (Fx.Fix $ Cons 5 (Fx.Fix …
Run Code Online (Sandbox Code Playgroud)

haskell functor fixpoint-combinators

2
推荐指数
1
解决办法
425
查看次数