Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
27
Task/Monads-Maybe-monad/J/monads-maybe-monad.j
Normal file
27
Task/Monads-Maybe-monad/J/monads-maybe-monad.j
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
NB. monad implementation:
|
||||
unit=: <
|
||||
bind=: (@>)( :: ])
|
||||
|
||||
NB. monad utility
|
||||
safeVersion=: (<@) ( ::((<_.)"_))
|
||||
safeCompose=:dyad define
|
||||
dyad def 'x`:6 bind y'/x,unit y
|
||||
)
|
||||
|
||||
NB. unsafe functions (fail with infinite arguments)
|
||||
subtractFromSelf=: -~
|
||||
divideBySelf=: %~
|
||||
|
||||
NB. wrapped functions:
|
||||
safeSubtractFromSelf=: subtractFromSelf safeVersion
|
||||
safeDivideBySelf=: divideBySelf safeVersion
|
||||
|
||||
NB. task example:
|
||||
safeSubtractFromSelf bind safeDivideBySelf 1
|
||||
┌─┐
|
||||
│0│
|
||||
└─┘
|
||||
safeSubtractFromSelf bind safeDivideBySelf _
|
||||
┌──┐
|
||||
│_.│
|
||||
└──┘
|
||||
Loading…
Add table
Add a link
Reference in a new issue