簡體   English   中英

Haskell:如何使用這種數據結構

[英]Haskell: How to use this data structure

我必須使用包含以下數據結構的賦值的代碼:

data Rose a =  a :> [Rose a]

但是,我不知道如何使用這個數據結構,例如:我如何創建它的實例,我怎么可能循環一個?

如果有人能幫我解決這個問題。

這種數據類型的構造函數是(:>) ,它的類型是(:>) :: a -> [Rose a] -> Rose a 你可以用它來構造值

> 1 :> [] :: Rose [Int]
1 :> []
> 1 :> [2 :> [], 3 :> [1 :> []]] :: Rose [Int]
1 :> [2 :> [], 3 :> [1 :> []]]

它在功能上等同於

data Tree a = Node a [Tree a]

具有不同的名稱,即Tree <=> RoseNode <=> :>

如果你想要一個Functor實例,你就可以

instance Functor (Rose a) where
    -- fmap :: (a -> b) -> Rose a -> Rose b
    fmap f (a :> rest) = (f a) :> (map (fmap f) rest)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM