const { inc } = require('../utils')
const Maybe = require('crocks/Maybe')
// Maybe = Just x | Nothing
const safeNum = val =>
typeof val === 'number' ? Maybe.Just(val) : Maybe.Nothing()
const input = safeNum(2);
const result = input.map(n => console.log('calling inc') || inc(n))
console.log(result)
Last active
October 9, 2019 10:09
-
-
Save Ugarz/7face5ce518e562726b62c9306dcaa44 to your computer and use it in GitHub Desktop.
Safer Javascript, create a validation parameters for your Javascript functions with Maybe | Just | Nothing (cf: https://egghead.io/lessons/javascript-unwrap-values-from-a-maybe)
const { inc, toUpper } = require('../utils')
const Maybe = require('crocks/Maybe')
const safe = require('crocks/Maybe/safe')
const isNumber = require('crocks/predicates/isNumber')
const isString = require('crocks/predicates/isString')
const safeNum = safe(isNumber)
const safeString = safe(isString)
/* const isNumber = val => typeof val === 'number'
const isString = val => typeof val === 'string' */
/* const safe = (predicate, val) =>
predicate(val) ? Maybe.Just(val) : Maybe.Nothing() */
/* const safeNum = val =>
typeof val === 'number' ? Maybe.Just(val) : Maybe.Nothing()
const safeString = val =>
typeof val === 'string' ? Maybe.Just(val) : Maybe.Nothing() */
const inputN = safeNum(5);
const resultN = inputN.map(inc)
const inputS = safeString('test');
const resultS = inputS.map(toUpper)
console.log(resultN)
console.log(resultS)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment