HaskellをJavaScriptにトランスパイルするのはなぜですか

こんにちは、Habr!今日は、Haskellでフロントエンドを作成してJavaScriptにコンパイルする理由を説明します。一般的に、このプロセスはトランスパイルと呼ばれます。







トランスパイルは、Xプログラムを同等のYプログラムに変換するプロセスです。コンパイルとは異なり、XとYはほぼ同じレベルの抽象化です。







なぜトランスパイルが必要なのですか?



一般に、トランスパイルには2つの主な目的があります。







  1. . , , . , , . - "" (deshugaring) . Babel, JS , . , , . , Python 2.x Python 3 2to3.
  2. , / . , JS ( ) WASM ( ), , . , , . , , ( ), . , (, SourceMap JS).


:







  • -, JS:



        — TypeScript — JavaScript , .

        — CoffeeScript — JS , Python Haskell.

        — Elm — ( Haskell), - , The Elm Architecture (TEA). 

        — PureScript — Haskell- .

        — ClojureScript — Clojure (, , ) - .
  • :



        — Bluespec — , Haskell, Verilog.

        — Clash — , Haskell , VHDL, Verilog SystemVerilog.

        — Verilator — , Verilog C++ SystemC.
  • (, 16- Intel 8086 8- Intel 8080).


JS?



, JS. , :







  • JS -.
  • , , , , ..
  • , - , .
  • . , - . , . - .
  • , , JSON . , , , .
  • API . , , , . , API, API , - . , . , API.
  • , , . . — "" , . , , .


JS



- :







  • .
  • Haskell.
  • Haskell.
  • .


Typeable - Haskell - Reflex (FRP). Haskell JavaScript GHCJS.







TypeScript JS - , , Haskell, .







Reflex Elm PureScript - , . , Reflex - "". Elm Reflex .









JS, :









, :







  • JS .
  • , . , .
  • JS.


:








All Articles