ズンドコキヨシ with Scala

  • 10
    Like
  • 0
    Comment
More than 1 year has passed since last update.

元ネタ

Scalaらしく再帰とパターンマッチで。

kiyoshi.scala
import scala.util.Random
def zundoko(zd: List[String] = Nil): Unit = zd match {
  case "ドコ" :: "ズン" :: "ズン" :: "ズン" :: "ズン" :: _ => println(zd.reverse.mkString + "キ・ヨ・シ!")
  case _ => zundoko((if(Random.nextBoolean) "ズン" else "ドコ") :: zd)
}
zundoko()

再帰とパターンマッチ……先を越されてしまいましたorz

あ、あとYコンビネータで

kiYoshi.scala
import scala.util.Random
def Y[A, B](f: ((A => B), A) => B, x: A): B = f((y: A) => Y(f, y), x)
Y((zundoko: List[String] => Unit, zd: List[String]) => zd match {
  case "ドコ" :: "ズン" :: "ズン" :: "ズン" :: "ズン" :: _ => println(zd.reverse.mkString + "キ・ヨ・シ!")
  case _ => zundoko((if(Random.nextBoolean) "ズン" else "ドコ") :: zd)
}, Nil)

参考