我有一个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
我认为应该是未定义的。
这似乎是一个非常简单的要求,我确信有一个简单的内置方法可以做到这一点,但我找不到它。
是否有内置方法在列表中使用构造函数?