码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-05-11 23:54:24      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:efi   may   number   script   provides   nbsp   tps   ==   input   

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

标签:efi   may   number   script   provides   nbsp   tps   ==   input   

原文地址:https://www.cnblogs.com/Answer1215/p/9026265.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!