相关疑难解决方法(0)

如何避免编写这种类型的Haskell样板代码

我经常遇到这种情况,因为它很烦人.

假设我有一个总和类型,它可以包含一个x或一堆其他与之无关的事物x-

data Foo x = X x | Y Int | Z String | ...(other constructors not involving x)
Run Code Online (Sandbox Code Playgroud)

要声明一个Functor实例,我必须这样做 -

instance Functor Foo where
    fmap f (X x) = X (f x)
    fmap _ (Y y) = Y y
    fmap _ (Z z) = Z z
    ... And so on
Run Code Online (Sandbox Code Playgroud)

虽然我想做的是 -

instance Functor Foo where
    fmap f (X x) = X (f x)
    fmap _ a = a
Run Code Online (Sandbox Code Playgroud)

即我只关心X构造函数,所有其他构造函数都只是"通过".但是当然这不会编译,因为a左边是 …

haskell boilerplate

28
推荐指数
3
解决办法
1771
查看次数

标签 统计

boilerplate ×1

haskell ×1