B u c k l e S c r i p t Λ ͏ Ϟ ν ϕ ʔ γ ϣ ϯ ‣ JavaScript ϥΠϒϥϦͷ࠶ઃܭͷػӡ - ͍ͭͰʹܕΛ༻͍ͨઃܭΛ͍ͨ͠ ‣ લ͔Βؾʹͳ͍ͬͯͨͷͰࢼ͍ͨ͠ - ରͷϥΠϒϥϦͷґଘ͕ؔগͳ͍ͷͰࢼ͍͢͠ - TypeScript ͳͲʮΕͰ͖Δʯ ‣ OCaml ͷڧྗͳݴޠػೳʹ͔ͬΓ͍ͨ
P ro s 1 . ܕ ҆ શ ‣ null / undefined ʹک͑Δඞཁͳ͍ let x = Some 2 let y = None let f = function | Some n -> n | None -> 0 (* default value *) var x = 2; var y = undefined; function f(param) { if (param !== undefined) { return param; } else { return 0; } }
P ro s 3 . J S ͱ ͷ ࿈ ܞ ͕ ؆ ୯ ‣ JavaScript ͷόΠϯσΟϯά؆୯ʹͰ͖Δ external length: string -> int = "length" [@@bs.get] external substr: string -> int -> int -> string = "substr" [@@bs.send] let str = "ABCDE" let n = length str let sub = substr str 1 3 var str = "ABCDE"; var n = str.length; var sub = str.substr(1, 3);
P ro s 4 . ៉ ྷ ͳ ग़ ྗ ‣ ൺֱత៉ྷͳ JavaScript (ES5) ͕ग़ྗ͞ΕΔ let x = Some 2 let y = None let f = function | Some n -> n | None -> 0 var x = 2; var y = undefined; function f(param) { if (param !== undefined) { return param; } else { return 0; } }
P ro s 4 . ៉ ྷ ͳ ग़ ྗ ‣ ൺֱత៉ྷͳ JavaScript (ES5) ͕ग़ྗ͞ΕΔ let rec loop n = if n > 0 then begin Js.log n; loop (n - 1) end else () function loop(_n) { while(true) { var n = _n; if (n > 0) { console.log(n); _n = n - 1 | 0; continue ; } else { return /* () */0; } }; }
C o n s 2 . จ ࣈ ྻ ‣ ຊޠͱ͔Λॻ͘ͱΊΜͲ͍͘͞ let wrong = "日本語" let ok = {js|日本語|js} (* j では変数の展開もできる *) let ok2 = {j|日本語|j} var wrong = "\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e"; var ok = "日本語"; var ok2 = "日本語";