Open
Description
I have used this code in ramda for practice and code looks like below:
import { curry, map, compose, prop } from 'ramda'
import M from 'ramda-fantasy';
const Maybe = M.Maybe
const Just = Maybe.Just;
const Nothing = Maybe.Nothing;
// withdraw :: Number -> Account -> Maybe(Account)
const withdraw = curry((amount, { balance }) =>
Maybe.of(balance >= amount ? { balance: balance - amount } : null));
// This function is hypothetical, not implemented here... nor anywhere else.
// updateLedger :: Account -> Account
const updateLedger = account => account;
// remainingBalance :: Account -> String
const remainingBalance = ({ balance }) => `Your balance is $${balance}`;
// finishTransaction :: Account -> String
const finishTransaction = compose(remainingBalance, updateLedger);
// getTwenty :: Account -> Maybe(String)
const getTwenty = compose(map(finishTransaction), withdraw(20));
const r = getTwenty({ balance: 200.00 });
console.log({r});
// Just('Your balance is $180')
const t = getTwenty({ balance: 10.00 });
console.log({t});
// Nothing
last statement const t
throws an error like below.
Cannot destructure property 'balance' of 'object null' as it is null.
Can anyone help me write a code so that when withdraw
fails finishTransaction
will never execute
Metadata
Assignees
Labels
No labels