Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open System
- type Maybe<'T> = Just of 'T | Nothing
- let bind ma f =
- match ma with
- | Just x -> f x
- | Nothing -> Nothing
- type MaybeBuilder() =
- member x.Bind(v,f) = bind v f
- member x.Return v = Just v
- member x.ReturnFrom o = o
- member x.Zero() = Nothing
- let maybe = MaybeBuilder()
- let targetFunc (str:string) (date:DateTime) (amount: decimal) (ok:bool) : Maybe<decimal> =
- Console.WriteLine("{0} {1} {2} {3}", str, date, amount, ok)
- if ok
- then Just(amount + 50m)
- else Nothing
- let testFunc (mAmount:Maybe<decimal>) : Maybe<decimal> =
- let mStr = Just("hi")
- let mDate = Just(DateTime.Now)
- let mOk = Just(true)
- maybe {
- let! str = mStr
- let! date = mDate
- let! amount = mAmount
- let! ok = mOk
- return! targetFunc str date amount ok
- }
- let result = testFunc (Just 10m)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement