F# にMachinesの移植を試みている

某都会ではekmett氏のライブラリを勉強する会があるらしい。

http://partake.in/events/1698f7f8-4151-4048-b317-03a8c3f1a7ab

うらやましいとかそういうことはすごくあるのだけれど、行けないものは仕方がないので自前環境でとりあえずは我慢することに。

本題

というわけでmachinesをF#に移植しようと試みている。

Haskellのmachinesは見た感じF#への移植は難しそうなので*1scala-machinesを主に参考にしている。

まぁ、現状色々と嵌ったり詰ったりしていますが。。。

特に型周りがちょっときつい。今はこのあたりでとまっている。

Gists

目下の戦いはこの部分。

def left[A]: Handle[T[A, Any], A] = \/.left(_)

Handle部分を展開すると A => A \/ Nothing という解釈であっているのかな?
正しいならそれはそれで詰みそう…。


あと、Scala側にあるTee.mergeOuterJoinってHaskell側にもあるのだろうか?
あるなら参考にできそうなのでちょっと探してみよう。

【2013/03/18追記】
@xuwei-kさんのわかりやすい型講座により把握できました。ありがとうございます!

scala-machines Tee.left

というわけで

地道に現実を知りながら育てていく予定です。


少し話がそれるけれど、こういう感じにコードを書きなぐっているとMachinesハッカソンがやりたくなってくる。

東京で開催できないですかね?
会場をみつけることができればいいのかな…時期はいつでもいいわけだし。
machinesに何かしら思うところがある型は反応していただければ…。

*1:私がへなちょこなだけかもしれないが…