Open technoknol opened 1 year ago
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.
const t
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
withdraw
finishTransaction
I was able to fix this by changing iwthdraw like this:
iwthdraw
const withdraw = curry((amount, { balance }) => balance >= amount ? Maybe.of({ balance: balance - amount }) : Nothing());
I have used this code in ramda for practice and code looks like below:
last statement
const t
throws an error like below.Can anyone help me write a code so that when
withdraw
failsfinishTransaction
will never execute