Either cata try
https://github.com/eu81273/jsfiddle-console
by dimitrs_papadimitriou
HTML
<script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>
<script src="https://code.jquery.com/jquery-3.4.0.js"></script>
JavaScript
const right = (v) => ({
map: (f) => right(f(v)),
cata: (alg) => alg.right(v),
});
const left = (v) => ({
map: () => left(v),
cata: (alg) => alg.left(v),
});
var Try = (f) => {
try {
var result = f();
return right(result);
} catch (e) {
return left(e);
}
}
Try(()=> 3/4)
.map(x=>`the computation result is :${x}`)
.cata({
right: v => console.log(v),
left: v => console.log("error : " + v)
})
Try(()=> 3/e)
.map(x=>`the computation result is :${x}`)
.cata({
right: v => console.log(v),
left: v => console.log("error : " + v)
})
right(4)
.map(x => x * x)
.cata({
right: v => console.log(v),
left: v => console.log("left" + v)
})
left(4)
.map(x => x * x)
.cata({
right: v => console.log(v),
left: v => console.log("left " + v)
})