LoginSignup
1
2

More than 5 years have passed since last update.

ramdaの関数合成によるデータとロジックの分離

Posted at

以下の記事を読みました。

Proxy "it": アローすら面倒な怠惰JavaScripterのための遅延評価

arg => argのアロー関数部分がスマートでないことをProxyで解決するのは非常に面白いです。

別のアプローチとして、同じ処理をramdaで関数合成を使って書いてみます。
あまりramdaのヘビーユーザーではないので、間違っていたら教えて下さい。

yarn add ramda
const R = require('ramda')

const fn = R.map(
  R.compose(
    R.prop(2),
    R.map(R.compose(parseFloat, R.trim())),
    R.split(','),
    R.prop('values')
  )
)

const data = [
  { id: 1, values: '3,  1,   4, 1, 5' },
  { id: 2, values: '2, 7, 1,   8, 2   ' },
]

console.log(fn(data))
// => [ 4, 1 ]

args => argsのパターンはなく、データと処理も分離できました。
型的にも扱いやすいです。
少し冗長に感じるかも知れませんが、全てが関数で処理が分割可能なので、再利用性が高いです。
まあ、ちょっと関数脳過ぎるので普段使いはしていませんけれど。

おわりに

さらに他の手段としては、pipelineオペレータの仕様が入れば、こういったものをスマートに書くことができそうで楽しみです。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2