<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Reason on The curse of λ</title>
    <link>https://myuon.github.io/tags/reason/</link>
    <description>Recent content in Reason on The curse of λ</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja-jp</language>
    <lastBuildDate>Fri, 23 Nov 2018 21:00:48 +0900</lastBuildDate>
    
      <atom:link href="https://myuon.github.io/tags/reason/index.xml" rel="self" type="application/rss+xml" />
    
    
      <item>
        <title>Lambda FunctionをReasonで書く</title>
        <link>https://myuon.github.io/posts/serverless-reason/</link>
        <pubDate>Fri, 23 Nov 2018 21:00:48 +0900</pubDate>
        <guid>https://myuon.github.io/posts/serverless-reason/</guid>
        <description>Reason ML、やっていこうな 世はまさに大サーバーレス時代なのでLambda Functionやっていきというお気持ち。
AWS Lambdaで現時点(2018年11月)で対応されている言語はNode.js, Python, Go, C#(dotnet), Javaの5つ。このうち後ろ2つはコールドスタートが激遅なので使い物にならない。で前3つのうちではドキュメントの多いNode.jsが安定ですが、Node.jsをランタイムに採用するとしてしかしJSは書きたくない、そういうときにReason MLはいい感じな選択肢なのでは？というのがこの記事の趣旨です。
serverless-reason serverless frameworkというサーバーレスアプリをやるのにとても便利なツールがあって、それのReasonで動くテンプレートを作っておいたので好きに使ってくださいという感じ。
  以下このプロジェクトの中身の解説をする。
echo.re Lambda Functionとしてechoというものがsrc/functions/echo.reに定義されている。
/* Sorry I&amp;#39;m a lazy person! */ type event = { . &amp;#34;pathParameters&amp;#34;: Js.Dict.t(string), }; type context = unit; type callback = (. Js.null(string), Js.Json.t) =&amp;gt; Js.Promise.t(unit); type response = { . &amp;#34;statusCode&amp;#34;: int, &amp;#34;body&amp;#34;: string, }; let handler : (event, context, callback) =&amp;gt; Js.Promise.t(response) = (event, _, _) =&amp;gt; { Js.</description>
      </item>
    
      <item>
        <title>はじめようReason ML</title>
        <link>https://myuon.github.io/posts/start-reasonml/</link>
        <pubDate>Sat, 10 Nov 2018 00:24:20 +0900</pubDate>
        <guid>https://myuon.github.io/posts/start-reasonml/</guid>
        <description>はじめに Reason MLを最近始めました。よき。
Reason MLとは Reason MLとはOCamlにインスパイアされたAltJSの一種。見た目は型の付いたJSみたいな感じだけど実際はJSのsyntaxに寄せたML。
BuckleScriptというコンパイラ(この名前もどうなんという感じだけど)を使ってJSに変える。BuckleScriptはReason MLとOCamlをJSに変換するコンパイラであり、Reason MLとOCamlのいずれのsyntaxも混ぜて使うことができるっぽい。便利～。
実際に使うときはBuckleScriptの方のドキュメントもちゃんと読んでおく必要がある(似たような見た目のページだけど内容は違う)。BuckleScriptにはコンパイラ拡張みたいなものが載っておりそれを上手く使うことで生成されるJSを制御したりJS側の関数を読み込んだりするのでこの辺も割と必須。
 https://reasonml.github.io/en/ Reason MLの言語リファレンス https://bucklescript.github.io/en/ BuckleScriptリファレンス https://bucklescript.github.io/bucklescript/api/index.html BuckleScript標準ライブラリ(Reason MLも同じものがportされてる)  よさ  まともな型が付く(OCamlの型システム、世界で一番分かりやすいみたいなところがある) 生成されるJSがまとも ドキュメントが割とそろってる JSとのブリッジが簡単(基本的に何もしなくてもできる; JS直接埋め込むのもできる) JS風syntax(これは完全な好みだけどブレース・セミコロンsyntaxが結局一番書きやすいみたいなところあるよ) まぁライブラリも意外とある bs-jsonも普通に使いやすいよ JSの標準ライブラリの関数とか型はすべてportされてるのでちゃんと使える  ハマりポイント  BuckleScript拡張最初はよくわからなかった(ドキュメントを100回くらい読むと分かる) 特殊な演算子とかが意外と多くてsyntaxを覚えるのは結構しんどい(Haskellとかだとライブラリ定義の演算子が多いから定義見ればいいけど組み込みの演算子が多いのがつらい) 関数はデフォルトではカリー化されて (a,b) =&amp;gt; ... は a =&amp;gt; b =&amp;gt; ... 相当のJSが生成されるので(これは回避可能)知らないとたまに思った通り動かない ReactはReasonReactというのがあるらしいけどVue.jsはどうしたらいいのかよくわからない(調べてもVue2のやつしか出てこない)  レポート Node.jsで書いていたサーバーサイドをReason MLで書き直したりVue.jsのビジネスロジック部分だけを切り離してReason MLで書き直したりして安寧を得ています。
Rustに引き続き9ヵ月ぶりくらいに良い言語に巡り合えました。ていうか私はML系の言語大体「良い」って言う傾向にあるしまぁML好きなんだなと自分でも思います。
あとはVue.jsでスムーズに使えるようになったらフロントもバックも全部Reason MLでできるのになーって言ってる。 create-vue-app あたりのエコシステムが正式にサポートしてくんないかな～って感じですね。</description>
      </item>
    
  </channel>
</rss>
