LearnApplyShare

유용한 ramda 확장 함수들

August 14, 2020 - [ramda, js, function-programming]

ramda 를 응용한 몇가지 유용한 확장함수들

go

export const go = (value, ...fns) => {
  return R.pipe(...fns)(value)
}

noop

export const noop = () => {}

except

export const except = R.pipe(R.complement, R.filter)

propNotEq

export const propNotEq = R.complement(R.propEq)

OR

export const OR = (pred1, pred2) => {
  return value => R.or(pred1(value), pred2(value))
}

AND

export const AND = (pred1, pred2) => {
  return value => R.and(pred1(value), pred2(value))
}

isNotNil

export const isNotNil = R.complement(R.isNil)

peek

R.pipe 사용시 중간에 전달되는 값을 로그로 찍어서 확인할 때 필요한 함수

export const peek = (...args) => {
  return value => {
    if (!args.length) {
      console.log('peek', value)
    } else {
      console.log(...args, value)
    }
    return value
  }
}

hasProps

export const hasProps = R.curry((arr, obj) => R.all(R.has(R.__, obj), arr))