Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let a = Some (Some (Some (Some 1)))) // a är av typ int option option option option
- // Plocka ut int'en i objektorienterat språk:
- // Enkelt, men enkelt att göra fel
- if (a.isSome && a.value.IsSome && a.value.value.isSome && a.value.value.value.isSome)
- return 25 * a.value.value.value.value;
- else
- return 0;
- // Plocka ut i F# med pattern matching
- // Säkert, alla states tas om hand om uttryckligen men dålig dry och trist att skriva / underhålla
- match a with
- | Some a ->
- match a with
- | Some a ->
- match a with
- | Some a ->
- match a ->
- | Some -> printfn %d" a
- | None -> 0
- | None -> 0
- | None -> 0
- | None -> 0
- // Med option-monaded i F#:
- // Lika säkert som förra lösningen, men mycket mindre kod!
- match a |> Option.map >> Option.map >> Option.map >> Option.map (fun a -> a) with
- | Some a -> a * 25
- | None -> 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement