在重構階段常會出現 converge(f, [g, I])
Pattern,此時可重構成 chain(f, g)
。
Version
Ramda 0.27.1
append()
import { append, head } from 'ramda'
let data = [1, 2, 3]
let f = x => append(head(x), x)
f(data) // ?
若我們希望將傳入 Array 的第一個 element 加到原 Array 最後,可使用 head()
與 append()
:
head()
:取得第一個 elementappend()
:將 value 加到 Array 最後
converge()
import { converge, append, head, identity as I } from 'ramda'
let data = [1, 2, 3]
let f = converge(append, [head, I])
f(data) // ?
可使用 converge()
組合使其 Point-free。
可發現出現 converge(f, [g, I])
pattern。
chain()
import { append, head, chain } from 'ramda'
let data = [1, 2, 3]
let f = chain(append, head)
f(data) // ?
可將 converge(f, [g, I])
重構成 chain(f, g)
。
Conclusion
- 可能一時看不出該使用
chain()
,但只要看到converge(f, [g, I])
就可重構成chain()