タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

pattern matchに関するtaroleoのブックマーク (2)

  • Red-black tree Scala版についてちょっと気になった点 - kmizuの日記

    (追記)Scalaでの実装。 abstract class Node case class Leaf() extends Node case class R(left: Node, key: int, right: Node) extends Node case class B(left: Node, key: int, right: Node) extends Node def balance(left: Node, key: int, right: Node) = { (left, key, right) match { case (R(a, x, b), y, R(c, z, d)) => new R(new B(a, x, b), y, new B(c, z, d)) case (R(R(a, x, b), y, c), z, d) => new R(new B(a, x, b),

    Red-black tree Scala版についてちょっと気になった点 - kmizuの日記
    taroleo
    taroleo 2009/04/15
    すっきり。
  • データ型とパターンマッチング

    連結リスト Perlと同じく、OCamlはリストを言語組込みで提供している。OCamlのリストは、全ての要素が、同じ型をもっていなければならない。リストを書くには、こうする: [1; 2; 3] (注 セミコロンだ、コンマじゃない) []は空のリストだ。 リストには、head(最初の要素) とtail(その残りの要素)がある。head は要素で、tail はリストだ。上の例では、head は整数1で、tail はリスト[2; 3]だ。 別のやりかたでリストを書くには、cons演算子でhead :: tailとやる。なので、以下のやりかたでリストを書いても、まったく一緒だ: [1; 2; 3] 1 :: [2; 3] 1 :: 2 :: [3] 1 :: 2 :: 3 :: [] どうしてcons演算子に触れたかって?そりゃ、パターンマッチングをリストにやろうってときに便利だからだ。後で説明

  • 1