data Container k = EmptyContainer| PrimContainer k (Container k) | FullContainer (Container k) (Container k) deriving (Show)
{-
*Main> let cont1 = PrimContainer 3 EmptyContainer
*Main> cont1
PrimContainer 3 EmptyContainer
*Main> let cont2 = PrimContainer 4 cont1
*Main> cont2
PrimContainer 4 (PrimContainer 3 EmptyContainer)
*Main> let cont3 = FullContainer cont1 cont2
*Main> cont3
FullContainer (PrimContainer 3 EmptyContainer) (PrimContainer 4 (PrimContainer 3 EmptyContainer))
-}
?只是不要重新发明轮子。
也就是说,一般的想法是拥有一个容器类型,该容器类型可以是空容器,基元容器或递归相同类型的容器
例如,它可以是一组操作,可以将其视为一个操作,依此类推...