[Functional Programming] Examples: When and Unless

/**
 * When
 */

 const _branch = (x) => {
     const result = (x && x.isPublic) ?
        dissoc('private', x) : x;

     console.log(result);
     return assoc('result', 'done', result);
 }

const handlePublic = when(
    propEq('isPublic', true),
    dissoc('private')
);
const assignDone = assoc('result', 'done');
const branch = compose(
    assignDone,
    handlePublic
);

/**Unless */
const _isDefaultArray = (x) => {
    const result = !isArray(x) ?
        [] :
        x;

    return result.map(wrap => ({wrap}))
}

const isDefaultArray = compose(
    map(objOf('wrap')),
    unless(
        isArray,
        constant([])
    )
)


log(
    isDefaultArray([10,11,12,13])
)

 

posted @ 2019-05-07 13:54  Zhentiw  阅读(138)  评论(0编辑  收藏  举报