A Tour of Go in Haskell

GitHub Language
Exercise: Equivalent Binary Trees (2/2)
  1. walk を実装しましょう。
  2. walk をテストしましょう。
  3. 関数 newTree :: Int -> IO Tree は引数 k::Int をもとに k,2k,3k,..,10k の要素を持つランダムな二分木を構築します。 新しい二分木を作って walk を実行するには以下のようにします。

    t1 <- newTree 1
    async $ walk t1 ch
    

    チャネルから値を読んでプリントすると 1,2,3,...,10 と表示されるべきです。

  4. walk を使って same を実装しましょう。
  5. sameをテストしましょう。
    t1<-newTree 1; t1'<-newTree 1; same t1 t1'True を返し、
    t1<-newTree 1; t2<-newTree 2; same t1 t2False を返すべきです。

実際の TreenewTree の実装は こちら、 解答例は こちら にあります。

(余談: A Tour of Go では、Go はチャネルがあることによって多くの他の言語よりこのアルゴリズムを記述しやすいと主張されていますが、 Haskell の場合は純粋なリストを使うことでチャネルを使うよりシンプルに書けます。 右のコードの後半にリストによる実装を示します。)

< 8 / 11 >