Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

プレゼン、ボランティアコーチします!

勉強会でスピーカーをやりたいけど、プレゼンが初めて、苦手という方に無償でコーチします!資料レビューや録画リハへアドバイスします。Twitter@jyukutyoまでメンションでもDMでも。

私はデブサミやJJUG CCCなど200人規模で経験ありです。海外も短いながら経験あり。デブサミ2017では公募スピーカー1位でした!

ScalaでのY Combinator

case class B[F,T](c: B[F, T] => (F => T)) extends (B[F, T] => (F => T)) {  
  def apply(b: B[F, T]) = c(b);  
}  
def Y[F, T] = (f: (F => T) => F => T) =>  
  B[F, T](x => f(x(x)(_)))(B(x => f(x(x)(_))))    
val factorial = Y[Int, Int](f => i => if (i <= 0) 1 else f(i - 1) * i)  
factorial(6) == 720  

ScalaでY Combinatorを実装するとこうだって。。。
Cool!とか書いてるけど、まだ何がCoolなのかわからんw
Y Combinatorの定義も説明できるほどわかってないし。。。


まあそもそもこういう理論的な概念をすぐ理解しようとするのが虫のいい話で。
モナドとともに僕のわかってないリストに入れておきます。
折に触れてもう1度学んでいって、2、3年後にはきちんと理解したいなあ。