jijixiさんのarrow.rbを試す
以前、変なこといっていたら、jijixiさんにMaybeについて反応をいただいて、コメントのほうにEitherとArrowについて書いてみたら、jijixiさんに苦行をしていただいてしまったようだ。(ありがとうございます。
で、簡単に使ってみた。
irb(main):001:0> arrow = Arrow::Base.new{|x| x + 1}.compose{|x| x * x} => #<Arrow::Base:0x006f3150@./arrow.rb:47> irb(main):002:0> arrow.call(10) => 121
ちょっと、Haskellに比べると不格好ですが(rubyのせいですけど)、返り値が次の処理に自然につながるように書けますね。Procを毎回書くという制限がありますけど。
jijixiさんがおっしゃっていたけど、確かにHaskellの処理をそのままRubyに写しても、Haskellで得られるうれしさというのはなくなっちゃいそうですね。
これ以上つっこんでっても不毛な気がするので、たぶん続かない。というか Haskell のものをそのまま再現しても意味が薄いというか。どうせならもっとこう、具体的な使い方にフォーカスしてそういう使い方に最適化した形で作った方が嬉しいんと違うかな。
jijixiさん、ありがとうございました。