reasonml

標準ライブラリどうする?

Reason が用意している標準ライブラリは OCaml のそれで、 OCaml の標準ライブラリは貧弱さに定評があります。長い歴史の中でサードパーティーのライブラリが作られてきましたが、 Reason は何も用意してくれてないようです。本格的に Reason での開発を進める上で、標準ライブラリの選択はどこかでぶつかる問題に見えます。

この記事は無責任です。あとは任せた。

※追記: 個人的に必要になった機能をオレオレライブラリに少しずつまとめてます。 例によって個人的に Reason から離れたら更新は止まると思いますが、参考になればどうぞ。

re:base

https://github.com/glennsl/rebase

BuckleScript, Reason 向けの小規模なライブラリを目指しているそうです。 Reason で実装されています。

まだ開発の進行はぼちぼちのようで、ベースとなるには機能が少ないです。 "JS first" という方向性は正しいと思います。

bs-batteries

https://github.com/meafmira/bs-batteries

OCaml Batteries Included という OCaml ライブラリの BuckleScript バインディングです。

Batteries は Python の "Batteries Included" のコンセプトを OCaml に持って来ようとするライブラリで、かなり多機能です。 Reason から使えるため有力な候補です。ただ、私は OCaml では下記で触れる Core と Base をメインに使っていて Batteries は使ったことがなく、 Battries の質や便利さはわかりません。あとは任せた。

Core

https://github.com/janestreet/core

Jane Street 社が開発しているプロダクションレベルのライブラリです。 Core は巨大なライブラリで、中心的な機能は Core_kernel というライブラリが支えています。これが Reason から使えると便利なんですが、 C のコードも含むので単純な変換とはいかなさそうです。使えてもコードがでか過ぎるか...。

Base

https://github.com/janestreet/base

これも Jane Street 社のライブラリで、前述の Core, Core_kernel を支えています。 Base も標準ライブラリの代替ですが、完全なリプレースというより一部を大幅に補強している感触があります。 OS 寄りの機能はカバーせず、その他の機能も必要であれば元の標準ライブラリを使います。 JS 用途だと Base が使えれば十分じゃないでしょうか。

C のコードが含まれていますが、 js_of_ocaml 用のコードも含まれているので JS でも使えそうです。 Reason でも何とかなるんじゃないでしょうか。あとは任せた。

まとめ

今すぐに決定打となるライブラリはなさそうです。どうせ JS のことだしベースライブラリもすぐに乱立しそうな気はします。

ここは一つどなたか作って頂けませんでしょうか。私はスキルもリソースもないので作る気はありませんが、別に OCaml ユーザーに気後れすることもないと思います。フロントエンドはフロントエンドで JS に特化した Pure Reason なライブラリがあれば十分でしょうし、どうせ OCaml から Reason に入った人はフロントエンドの最新事情なんか知りません(暴言)。あとは任せた。