ブックマーク / takkan-m.hatenadiary.org (1)

  • ArrowのloopとYコンビネーター - takkan_mのNo planな日常

    言語ゲーム - ArrowLoopで、ArrowのloopでYコンビネーターができるというので、ちょっと試してみた。 Arrowのloopは以前、MaDさんの記事でなんとなく、理解をしていたつもりだったんだけど、実際に自分で書いてみると全然わかっていない、Haskell(主に、if式とlet式)理解していないことをあらためて感じた。 僕の中で、Yコンビネーターといえば、階乗計算なので、階乗計算を書いてみる。 まずは、id:propellaさんのcountdownを真似てみる。 fact (a,f) = ( f a , fc) where fc 1 = 1 fc x = x * f (x-1) loop fact 10 fcという名前がなんとなく、嫌なのでfcを無名関数で記述。 fac (x,f) = (f x, (\y -> if y == 1 then 1 else y*(f (y -1

    ArrowのloopとYコンビネーター - takkan_mのNo planな日常
  • 1