相关疑难解决方法(0)

可折叠的一个例子,它不是一个Functor(或不是Traversable)?

一个Foldable实例可能是某种容器,因此也可能是一个容器Functor.确实,

一个Foldable类型也是一个容器(虽然类不技术上要求Functor,有趣Foldables为所有Functor为s).

那么有一个例子,Foldable它不是自然的a Functor或a Traversable?(也许Haskell维基页错过了:-))

haskell traversal functor fold

53
推荐指数
3
解决办法
4469
查看次数

具有类型约束的GADT的Functor实例

今天我想研究是否有可能以这种方式构造数据类型,它不存储其类型签名类型的数据,而是它的另一种表示形式.所以,这是我对GADT的尝试,它具有类型的类型构造函数a,但是类型的数据构造函数ByteString.

{-# LANGUAGE GADTs #-}
import Data.ByteString.Char8
import Data.Serialize

data Serialized a where
    MkSerialized :: (Serialize a) => ByteString -> Serialized a
Run Code Online (Sandbox Code Playgroud)

现在我可以decode'通过以下方式定义一个函数:

decode' :: (Serialize a) => Serialized a -> a
decode' (MkSerialized bs) = let Right r = (decode bs) in r
Run Code Online (Sandbox Code Playgroud)

它有效:

let s = MkSerialized (encode "test") :: Serialized String
print $ decode' s     -- prints "test"
Run Code Online (Sandbox Code Playgroud)

我现在的问题是,我想Serialized成为一个实例Functor.

instance Functor Serialized where
    fmap f (MkSerialized bs) …
Run Code Online (Sandbox Code Playgroud)

haskell functor type-constraints

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

标签 统计

functor ×2

haskell ×2

fold ×1

traversal ×1

type-constraints ×1