参照透過な関数型言語の場合
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/07/20 15:01 UTC 版)
「幅優先探索」の記事における「参照透過な関数型言語の場合」の解説
参照透過な関数型言語の場合は余再帰と遅延評価を使うと簡潔に書ける。下記は Scala の場合で、Scalaz の unfold が余再帰で、Stream が遅延リスト。 import scala.collection.immutable.Queueimport scalaz.Scalaz.unfoldcase class Tree[T](value: T, children: Seq[Tree[T]])def breadthFirstSearch[T](root: Tree[T]): Stream[T] = unfold(Queue(root))(_.dequeueOption.map { case (tree, queue) => (tree.value, queue ++ tree.children) })
※この「参照透過な関数型言語の場合」の解説は、「幅優先探索」の解説の一部です。
「参照透過な関数型言語の場合」を含む「幅優先探索」の記事については、「幅優先探索」の概要を参照ください。
- 参照透過な関数型言語の場合のページへのリンク