11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

reason_mlAdvent Calendar 2017

Day 2

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

Posted at

過去に遡って、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.NullJs.Undefinednullundefinedに対する操作を提供していておもしろい。モナドになっている。

ReasonML Discord

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

まとめ

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

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

11
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?