[Javascript Crocks] Recover from a Nothing with the `coalesce` Method

Posted Answer1215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Javascript Crocks] Recover from a Nothing with the `coalesce` Method相关的知识,希望对你有一定的参考价值。

The alt method allows us to recover from a nothing with a default Maybe, but sometimes our recovery efforts might need to enlist some logic to recover properly. In this lesson, we’ll see how we can use the coalesce method on the Maybe to recover from a Nothing by calling a function.

 

When one would like to option a Maybe but would like to remain within a Maybe type, coalesce can be used. coalesce expects (2) functions for it‘s inputs.

The first function is used when invoked on a Nothing and will return a Justinstance wrapping the result of the function. The second function is used when coalesce is invoked on a Just and is used to map the original value, returning a new Just instance wrapping the result of the second function.

 

The use case of ‘coalesce‘ is similar to ‘alt‘, but instead wrting two function as ‘alt‘ does:

const getArticleName = obj => prop(name, obj)
    .chain(safe(isNonEmptyString)) // If return Nothing then use alt value
    .alt(Maybe.of(page not found));

const getArticleUrl = obj => getArticleName(obj)
    .map(createUrlFromName)
    .option(default);

const url = getArticleUrl(article);

In ‘coalesce‘, we just combine in one single function:

const getArticleUrl = obj => prop(name, obj)
    .chain(safe(isNonEmptyString)) // If return Nothing then use first function of coalesce
    .coalesce(() => page not found, createUrlFromName)
    .option(default);

const url = getArticleUrl(article);

 

const crocks = require(crocks)
const { identity ,and, compose, isEmpty, isString, Maybe, not, prop, safe } = crocks
const { join, split, toLower } = require(ramda)


const article = {
    id: 1,
    _name: Learning crocksjs functional programming library
};

const createUrlSlug = compose(join(-), split( ), toLower);
const createUrl = slug => `https://egghead.io/articles/${slug}`;
const createUrlFromName = compose(createUrl, createUrlSlug);
const isNonEmptyString = and(not(isEmpty), isString);


const getArticleUrl = obj => prop(name, obj)
    .chain(safe(isNonEmptyString)) // If return Nothing then use first function of coalesce
    .coalesce(() => page not found, createUrlFromName)
    .option(default);

const url = getArticleUrl(article);

console.log(url)

 

以上是关于[Javascript Crocks] Recover from a Nothing with the `coalesce` Method的主要内容,如果未能解决你的问题,请参考以下文章

[Javascript Crocks] Recover from a Nothing with the `coalesce` Method

[Javascript Crocks] Compose Functions for Reusability with the Maybe Type

[Javascript Crocks] Create a Maybe with a `safe` Utility Function

练习增加控制文件至三个

RK平台images打包细则

小米note自动重启的解决方案