我必须构建一个Snoc列表,与Cons相反。我已经完成了向前添加一个元素我不知道如何连接两个列表。那就是现在的情况:
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
答案 0 :(得分:2)
您的列表类型与Haskell相同,因此只需将其设为Haskell列表,连接,转换回来。 Hooray在Haskell中的可重用性; - )
toList Lin = []
toList (Snoc (xs, x)) = x : toList xs
toTsil [] = Lin
toTsil (x:xs) = Snoc (toTsil xs, x)
a (|++) b = toTsil $ toList a ++ toList b
答案 1 :(得分:1)
(|++) l (Snoc (t,x)) = Snoc (l |++ t,x)