3
我必须构建一个Snoc列表,反向的缺点。我已经做了添加一个元素,我不知道如何连接两个列表。这就是现在的情况:如何连接两个Snoc列表?
module Tsil where
data Tsil a = Lin
| Snoc (Tsil a, a)
deriving (Eq, Ord, Show, Read)
empty :: Tsil a
empty = Lin
infixr 2 |:
(|:) :: a -> Tsil a -> Tsil a
(|:) a t = Snoc (t, a)
infixr 5 |++
(|++) :: Tsil a -> Tsil a -> Tsil a
(|++) a Lin = a
(|++) Lin a = a
...你确实意识到这完全与同一个列表同构,对吗?仅仅因为你颠倒了构造函数的名字和'Snoc'参数的顺序并没有使它成为不同的数据类型。如果这是一种练习,你确定你正确理解它吗?根据我的经验,具有“'snoc'”操作的数据类型通常支持对列表另一端的元素的有效访问 - 您的类型不会。 –
为什么'Snoc'使用一个元组而不是'Snoc(Tsil a)a'? – pat
@pat作业标签现已过时。 – HaskellElephant