BuckleScript
reasonml

📚Reason/BuckleScriptを書くときに参考にする資料

More than 1 year has passed since last update.

過去に遡って、Reason ML Advent Calendar の2日目を書く。

初めのほうなので、参考になる資料をリストアップする。

Awesome ReasonML

各プラットフォームにあるAwesome XXXのReason版。主要なサイトへのリンクやサンプルアプリケーションへのリンクがある。

発表資料へのリンクもあって参考になる。特にDawn of ReasonがReasonのモチベーションが簡潔にまとまっていてよかった。 が初期の資料らしく、紹介されているプロジェクトの一部はすでにdeprecatedになっていたりする。

Screen Shot 2017-12-08 at 23.00.02.png

reasonml-community

各ライブラリのBuckleScriptのバインディングがまとめられている。 axiosやreactといったよく使うライブラリのバンディングが紹介されている。

reasonml-communityという名前なのに、Reasonの紹介がやたら雑でウケる。

Screen Shot 2017-12-08 at 23.06.11.png

昔はBuckleTypesという謎の名前だったが、リネームされてだいぶ分かりやすくなった。

BuckleScript User Manual

OCaml(BuckleScript)とJavaScriptのセマンティクスの差を埋めるために、アノテーションが用いられる。例えば、OCamlに存在しないプロパティアクセスを示すためには @@bs.get アノテーションが用る。

type textarea;

external get_name : textarea -> string = "name" [@@bs.get];

これらのアノテーションはBuckleScript User Manualに記載がある。 ただしBuckleScriptの文法なのでReasonへの変換は勘でやる必要がある。

BuckleScript API Manual

Reason/BuckleScriptで利用できるAPIについての解説がある。 基本的にJavaScript組込みの型へのバインディングとなっている。

OCamlでよく使われるodocで生成されている。OCamlに慣れている人はすんなり読めるが、そうでない人は違和感を覚えるかもしれない。 基本的に型しか書いてないので、慣れが必要。

Js.NullやJs.Undefinedがnullやundefinedに対する操作を提供していておもしろい。モナドになっている。

ReasonML Discord

Discord。 活発で質問すると答えてくれる。

まとめ

  • awesome reasonの資料で雰囲気を掴む
  • JSとのインタフェースはBuckleScript API Manualを読みながら書いていく。
  • JSライブラリのバインディングを書くときはBuckleScript User Manualを読みながら、アノテーションをつけていく。
  • つらくなったらDiscordで聞く

という流れで書くのがいいと思う。