
- Haskell 教程
- Haskell - 首頁
- Haskell - 概述
- Haskell - 環境設定
- Haskell - 基本資料模型
- Haskell - 基本運算子
- Haskell - 決策
- Haskell - 型別和型別類
- Haskell - 函式
- Haskell - 更多函式
- Haskell - 函式組合
- Haskell - 模組
- Haskell - 輸入與輸出
- Haskell - 函子
- Haskell - 單子
- Haskell - 遍歷器
- Haskell 實用資源
- Haskell - 快速指南
- Haskell - 實用資源
- Haskell - 討論
Haskell - 遍歷器
Haskell 中的遍歷器基本上是指向資料結構特定位置的指標,例如樹。
我們來考慮一個包含 5 個元素 [45,7,55,120,56] 的樹,它可以表示為一個完美的二叉樹。如果我想更新此列表的最後一個元素,那麼我需要遍歷所有元素才能在更新它之前到達最後一個元素。對嗎?
但是,如果我們能夠以這樣一種方式構建我們的樹,即包含N個元素的樹是一個[(N-1),N]的集合呢?那麼,我們就無需遍歷所有不需要的(N-1)元素。我們可以直接更新第 N 個元素。這正是遍歷器的概念。它關注或指向樹中的特定位置,我們可以在該位置更新該值,而無需遍歷整個樹。
在以下示例中,我們在一個列表中實現了遍歷器的概念。同樣的,也可以在樹或檔案資料結構中實現遍歷器。
data List a = Empty | Cons a (List a) deriving (Show, Read, Eq, Ord) type Zipper_List a = ([a],[a]) go_Forward :: Zipper_List a -> Zipper_List a go_Forward (x:xs, bs) = (xs, x:bs) go_Back :: Zipper_List a -> Zipper_List a go_Back (xs, b:bs) = (b:xs, bs) main = do let list_Ex = [1,2,3,4] print(go_Forward (list_Ex,[])) print(go_Back([4],[3,2,1]))
當您編譯並執行上述程式時,將生成以下輸出 −
([2,3,4],[1]) ([3,4],[2,1])
在前進或後退時,我們關注整個字串的一個元素。
廣告