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

Posted Answer1215

tags:

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

In this lesson, we’ll create a safe function that gives us a flexible way to create Maybes based on a value and a predicate function that we supply. We’ll verify its behavior with values that satisfy the predicate, and values that do not.

 

We can write more functional approach, for example write predicate functions:

const isNumber = n => typeof n === ‘number‘ ? Maybe.Just(n) : Maybe.Nothing();
const isString = s => typeof s === ‘string‘ ? Maybe.Just(s) : Maybe.Nothing();

High order function:

const safe = pred => val => pred(val);

const safeNum = safe(isNumber);
const safeStr = safe(isString);

Those functions are useful when we want use in large scale application, because those are composable.

Full code demo:

const {inc, upper} = require(‘./utils‘);
const Maybe = require(‘crocks/Maybe‘);

const isNumber = n => typeof n === ‘number‘ ? Maybe.Just(n) : Maybe.Nothing();
const isString = s => typeof s === ‘string‘ ? Maybe.Just(s) : Maybe.Nothing();
const safe = pred => val => pred(val);

const safeNum = safe(isNumber);
const safeStr = safe(isString);

const inputN = safeNum(2); // Just 3 -> 3
const inputS = safeStr(‘test‘); //  Just TEST -> TEST
const input = safeStr(undefined); // Nothing -> 0

const result = inputS
    .map(upper)
    .option("");

console.log(result);

 


Crocks lib also provides those functions, you actually don‘t need to write it by yourself.

 

 

https://evilsoft.github.io/crocks/docs/functions/predicate-functions.html

const {inc, upper} = require(‘./utils‘);
const Maybe = require(‘crocks/Maybe‘);
const safe = require(‘crocks/Maybe/safe‘);
const { isNumber, isString} = require(‘crocks/predicates‘);

/*
const isNumber = n => typeof n === ‘number‘ ? Maybe.Just(n) : Maybe.Nothing();
const isString = s => typeof s === ‘string‘ ? Maybe.Just(s) : Maybe.Nothing();
const safe = pred => val => pred(val);
*/
const safeNum = safe(isNumber);
const safeStr = safe(isString);

const inputN = safeNum(2); // Just 3 -> 3
const inputS = safeStr(‘test‘); //  Just TEST -> TEST
const input = safeStr(undefined); // Nothing -> 0

const result = inputS
    .map(upper)
    .option("");

console.log(result);

 

以上是关于[Javascript Crocks] Create a Maybe with a `safe` Utility Function的主要内容,如果未能解决你的问题,请参考以下文章

[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

react实战—creat-react-app

Java执行JavaScript代码

javascript继承