同時以 TypeScript 與 F# 實作 Compose Function

數學的 fog(x) = f(g(x)) 就是 FP 的 Function Composition,本文分別以 TypeScript 與 F# 實現。

Version


TypeScript 2.5.3
F# 4.1

User Story


定義 f(x) = x + 1g(x) = x * 2,希望實作出 fog(x) = f(g(x))

Task


分別以 TypeScript 與 F# 實作。

TypeScript


1
2
3
4
5
6
7
const f = x => x + 1;
const g = x => x * 2;
const fog = x => f(g(x));

const v = fog(10);

console.log(v);

第 3 行

1
const fog = x => f(g(x));

使用 arrow function 實作,重點是仍然回傳的 f(g(x)) 仍是 function。

FSharp


1
2
3
4
5
6
7
let f x = x + 1
let g x = x * 2
let fog = g >> f

let v = fog 10

printfn "%i" v

第 3 行

1
let fog = g >> f

g >> f 表示,很清楚以 從左至右 表示。

Conclusion


  • 至於 TypeScript 與 F# 何者語法較優,結果已經很明顯了。
2018-03-13