Skip to content

Instantly share code, notes, and snippets.

@Ugarz
Last active October 9, 2019 10:09
Show Gist options
  • Save Ugarz/7face5ce518e562726b62c9306dcaa44 to your computer and use it in GitHub Desktop.
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)

Egghead - Validation algorythm - Lesson 01

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)

Egghead - Validation algorythm - Lesson 02

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