c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

OCamlでJavaScriptが幸せ

ML Advent Calendar 2016 - Qiita 12/11 參加。

JavaScript[]ふ言語に變換[へんかん]する言語は沢山[たくさん]在った。活溌[かっぱつ]に活動してゐるものは[]だ多いものの、多勢はTypeScriptElmに流れたやうだ。TypeScript の型 system は[やが]て ES.next に[]JavaScript[]の物に成るかもしれない。Elm は軈て ECMAScript で自然に FRP (Functional Reactive Programming) が行なへる機能が提案され役目を終へるだらう。OpalHaste[など]其々[それぞれ]RubyHaskell と云ふ人氣[にんき]の在る言語を JavaScript實行[じっこう]機でも使へる tool として活溌に[つづ]くだらう。

別の觀點[かんてん]を二つ入れてみよう。TypeScript や Elm は、實行時に必要最低限に近い型しか持たぬ JavaScript[たい]してもう少し廣汎[こうはん][]つ compile 時に計算する型を[あた]へるものだ。一つ目の觀點は型だ。Opal や Haste は、[ひろ]い community や長い研究を持つ言語を JavaScript の世界に應用[おうよう]しようとするものだ。二つ目の觀點は言語だ。TypeScript や同等のFlowや、Java 風のDartは、型の觀點から見れば弱い。構造的部分型や漸進的型付けは見事[みごと]なものだ。JavaC#とほぼ同等の廣さの型 system で満足するならばしてもよい。だがより廣汎な型 system が廣く使はれてゐる現代で[]の型 system に不満を持った場合でも、我慢しなければならないだらうか?  Haste (Haskell) や Elm は型の應用範圍[はんい][ひろ]げ不満を[]やして[]れる。だが二つ目の觀點が在るのだ。JavaScriptJavaScript 實行機の上で動く何かである[だけ]でなく、言語だ。言語は思考を持ってゐる。Haskell遲延評價[ちえんひょうか]で非正格な型 system は、先行評價である JavaScript と遠く離れたものだ。[また]Elm の FRP ベースで非 OOP な構造も JavaScript と遠く離れたものだ。

欲張ってみよう。二つの觀點を共に深く滿[]たす事は出來[でき]るだらうか?  OCaml が在る。OCaml は、System F に近い廣汎な型 system を[そな]へてゐる。ML から續く長い研究の伝統を持ち、金融系等の産業界に使はれてきた廣い實用の伝統も持つ。PHP に斬進的型付けを実装したHackや Docker 社に買収[ばいしゅう]されたMirageOSdocker-syncの backend であるUnison、強い型付けの AltJS であるHaxe證明[しょうめい]支援系のCoqOCaml で作られてゐる。Flow や、WebAssembly の現狀[げんじょう]の參照實裝も實裝言語は OCaml なのだ (どうやら Facebook 社は PHP 丈でなく OCaml も好んでゐるやうだ)。又 OCaml は、JavaScript と同じく λ 計算に基附[もとづ]き、JavaScript と同じく OOP に基附いてゐる。OCaml函數[かんすう]JavaScript の函數に對應[たいおう]し、OCaml の class は ECMAScript の class に對應するだらう。OCaml の豊かな型 system は compile 時に計算され、實行時には JavaScript と同等水準の型丈が[のこ]るだらう。JavaScript は正格であり其の評價戦略は先行評價だ。此れも OCaml のものだ。OCaml はごまかしの無い data 構造自體[じたい]の immutable 性を持つが、さうしたければ自然に mutable 性を利用出來る。JavaScript は逆の傾向を持つが、両方が同居する上で immutable 性が中心であるのは過去や遠い未來[みらい]では[][かく]現代では好ましいだらう。

[]まり OCamlJavaScript なのでは?

其處[そこ]BuckleScriptReasonを紹介したのが以下の slide だ。BuckleScript は OCaml を其の[まま]JavaScript に變換する compiler だ。OCaml compiler の一部である Camlp5 等を使ひ美しく仕上げられてゐる。BuckleScript が吐く JavaScript も中々美しい。扱へる言語は、OCaml の亜種ではない、OCaml 其の物である。Reason は、JSX を含む OCaml の亜種である。Camlp5 の力で、BuckleScript は OCaml と Reason を同時に扱へる。OCaml の immutable 性はImmutable.jsが提供する。FRPRxOCamlReact等多くの OCaml での FRP library が担当しよう。Bloomberg 社と Facebook 社が支える將來[しょうらい]は暗くはない。

OCaml で JavaScript が幸せ // Speaker Deck