title: How do I implement using point-free recursion to remove null values in objects using Ramda?
body: <p>I am learning about pointfree functions and am trying to implement this recursive null remover in that style. </p>
  
  <p>Works, but is <strong>not</strong> pointfree:</p>
  
  <pre><code>function removeNulls(obj) {
    return R.ifElse(
      R.either(R.is(Array), R.is(Object)),
      R.pipe(
        R.filter(R.pipe(R.isNil, R.not)),
        R.map(removeNulls)
      ),
      R.identity
    )(obj)
  }
  
  module.exports = removeNulls
  </code></pre>
  
  <p>The following is my non-functioning attempt at it:</p>
  
  <pre><code>const removeNulls = R.ifElse(
    R.either(R.is(Array), R.is(Object)),
    R.pipe(
      R.filter(R.pipe(R.isNil, R.not)),
      // throws `ReferenceError: removeNulls is not defined`
      R.map(removeNulls)
    ),
    R.identity
  )
  </code></pre>