nested ternary conditional const type = a => ( a === null ? 'null' : a === undefined ? 'undefined' : Object.prototype.toString.call(a).slice(8, -1)) if/else const type = a => { if (a === null) return 'null' else if (a === undefined) return 'undefined' return Object.prototype.toString.call(a).slice(8, -1) } R.cond const type = cond([ [eq(null), () => 'null'], [eq(undefined), () => 'undefined'], [T, a => Object.prototype.toString.call(a).slice(8, -1)] ]) source sweet.js macro const realTypeof = a => cond { case a === null: 'null' case a === undefined: 'undefined' default: Object.prototype.toString.call(a).slice(8, -1) } source