CoffeeScriptReduxでsuperが実装されてなかった話
TypedCoffeeScriptでsuperの型検査書くかーと思って試してみたら、パースに失敗する。
class X f: -> class Y extends X f: (args...) -> super
こんなの。
理由
Fork元のcoffeescriptreduxで実装されてない。
代替手段
親のプロトタイプをメソッドをapplyする
class X f: -> class Y extends X f: (args...) -> X::f.apply @, args
まあどうせそういう風に展開されるわけだけど、super使ってるコードをこういう風に置き換えるのめんどい。一応元のjashkenas/coffee-scriptを置換しつつ型を付けられる!ってのを目的にしているわけなので。
いつ実装されるの
作者が実装しようとした痕跡がある。ただ作者はこのプロジェクトに飽きつつある。リポジトリは2ヶ月放置されている。当初のマイルストーンからは大幅に超過している。
一ヶ月経って実装されなかったら自分でやる。
経緯
ただのOSSだったら俺が引きとるわーで済むんだけど、coffee-script-reduxはちょっと曰くがある。形態はOSSだけど、グルーポンのエンジニアである作者は、KickStarterから金もらってこのプロジェクトを進めている。
typedcoffee、super壊れてることに気づいた
— もっと大きな存在の一部 (@mizchi) 2013, 11月 22
CoffeeScriptReduxのHEADでsuper壊れとるやないけ
— もっと大きな存在の一部 (@mizchi) 2013, 11月 22
最低限の昨日実装してくれたらあとはこっちでメンテするんだけど、クラスにおける継承が未実装っていうだいぶクリティカルなアレが残ってるんですがそれは
— もっと大きな存在の一部 (@mizchi) 2013, 11月 22
作者 $13,785 稼いでるんだよな
— もっと大きな存在の一部 (@mizchi) 2013, 11月 22
— もっと大きな存在の一部 (@mizchi) 2013, 11月 22
まあ全くやる気がないわけじゃなさそうだし10~15時間あれば実装できるわーって言ってるんだけど、 a month ago...
— もっと大きな存在の一部 (@mizchi) 2013, 11月 22
CoffeeReduxの進捗、本当にsuperさえあれば終わるところで放置されてる感じがある https://t.co/WR91cEY2Q3
— もっと大きな存在の一部 (@mizchi) 2013, 11月 22
@toby_net 自分はパーサまでは書けるんですがコンパイラの方のコードの属人性が高く、あんまりコード品質が高いとは言えないので、読み解くの時間がかかり、作者がやってくれるにこしたことはないがしかし
— もっと大きな存在の一部 (@mizchi) 2013, 11月 22
コンパイラのコードが辛いのでASTに対して型検査機を作っていて、コンパイラはほとんど理解していない
— もっと大きな存在の一部 (@mizchi) 2013, 11月 22
まあちょっとパーサ書いて勉強してみるか
— もっと大きな存在の一部 (@mizchi) 2013, 11月 22
パーサ書けた。
— もっと大きな存在の一部 (@mizchi) 2013, 11月 22
感想
OSSで一発当てればいいんじゃね?っていう記事を書いておいて、Reduxはまあ150万ぐらい儲かってて継続的にそういうのを当てれたらそういう生活ありかもなって思ってたんだけど、ゴールが明示されてなくてこういう感じに放り出されると結構つらいものがある。