在Haskell中,如何将构造函数应用于值列表?

时间:2017-04-22 14:16:23

标签: haskell constructor

我有一个TernaryTree类型。

data TernaryTree a = Node a (TernaryTree a) (TernaryTree a) (TernaryTree a) | Nil deriving (Eq, Show)

给定一个列表,我希望能够将Node构造函数应用于它,例如。

Node v [t1, t2, t3]  -- error

以上情况当然无效。

通过模式匹配有很好的方法来做相反的事情,例如

let Node v t1 t2 t3 = parent in [t1,t2,t3]

但除了编写函数之外,我找不到解决问题的简单方法,例如

makeNode v lst@[t1,t2,t3] = Node v t1 t2 t3

即使我有这个功能,它也不灵活,例如它无法做到这一点,

Node v t1 [t2, t3]  -- error

我现在需要另一个功能。

我可以为此类型添加更多构造函数,但在我看来,必须有一种更简单的方法。

我想要的操作类型是

[a] -> a a a

我认为应该是未定义的。

这似乎是一个非常简单的要求,我确信有一个简单的内置方法可以做到这一点,但我找不到它。

是否有内置方法在列表中使用构造函数?

0 个答案:

没有答案