iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 28
0
Modern Web

學會Elm寫前端系列 第 28

28 elm的好友們:來學ReasonML

Reason是react 團隊的新開發項目,目前大家常用的facebook
messenger的web版就是用reasonml來開發的。reasonml是由OCaml而來,但又和OCaml不同的是,他想要讓語法可以更像Javascript一些。目前是出到Reason 3(2017年10月),語法上有做了一些變動。他們還有ReasonReact,用意就是要讓Reason可以無縫接軌React。因為是Ocaml的語法,如果你沒有學過functional programming,他們也推薦可以看看 Real World OCaml也就是說Reason之於OCaml有點像是Elixir之於Erlang。Reason
的code會先編譯成Ocaml,再透過BucketScript轉成Javascript。

安裝

npm install -g bs-platform
bsb -init my-first-app -theme basic-reason

如果你不想裝,你也可以先 線上試試

代碼

這是Reason寫的FizzBuzz

/* Based on https://rosettacode.org/wiki/FizzBuzz#OCaml */
let fizzbuzz = (i) =>
  switch (i mod 3, i mod 5) {
  | (0, 0) => "FizzBuzz"
  | (0, _) => "Fizz"
  | (_, 0) => "Buzz"
  | _ => string_of_int(i)
  };

for (i in 1 to 100) {
  Js.log(fizzbuzz(i))
};

然後他會轉成OCaml

let fizzbuzz i =
  match ((i mod 3), (i mod 5)) with
  | (0,0) -> "FizzBuzz"
  | (0,_) -> "Fizz"
  | (_,0) -> "Buzz"
  | _ -> string_of_int i
let _ = for i = 1 to 100 do Js.log (fizzbuzz i) done

最後會變成JS:

final thought

因為Reason是從去年才開始的項目,語法上或許還會更動,目前是由OCaml越來越像javascript,但本質還是以OCaml為主,你也可以直接學個OCaml。裡面很多東西都是需要functional programming 的底子,才可以比較容易理解。無論是否有學過OCaml,如果學過Elm之後要再接觸也不難。(至少Elm architecture還有functional programming的底子,就是很好的基礎建設值得投資)

參考資料


上一篇
27 elm的好友們:來學purescript
下一篇
29 Elm裡的module,學會分割術
系列文
學會Elm寫前端30

尚未有邦友留言

立即登入留言