小编Use*_*345的帖子

Haskell 构造函数作为函数的变量

我有一个类型,其中有几个构造函数包装了另一种类型;让我们使用下面的例子(实际上我有很多构造函数):

data New a = A a | B a
Run Code Online (Sandbox Code Playgroud)

现在我需要一个函数fun :: (a -> b) -> New a -> b,它将第一个参数应用于f :: a -> b包装在x :: New a. 我可以通过模式匹配来做到这一点:

fun f (A v) = f v
fun f (B v) = f v
Run Code Online (Sandbox Code Playgroud)

这一点都不优雅!看起来我应该可以做类似的事情fun f (_ v) = f v,但是 GHC 给了我Parse error in pattern.

同样,我想要一个con :: New a -> (a -> New a)返回构造函数的函数。同样,我可以模式匹配:

con (A _) = A …
Run Code Online (Sandbox Code Playgroud)

haskell conventions

6
推荐指数
1
解决办法
89
查看次数

标签 统计

conventions ×1

haskell ×1