la-yumba / functional-csharp-code

Code samples for Functional Programming in C#

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Option.Map results in exception creating a new Some(null)

dcook-net opened this issue · comments

Hi.
First off: reading the book at the moment and think it's great. Thank you.

I encountered a bug today when I tried to do this:

return Option<T>.Map(t => t.NullableA?.NullableB) // and either nullable A or B were null!

Creating a Some with a value of null threw an exception.
My first thought was 'why doesn't that just create a None instead of throwing' but then I realised Its because its within a constructor.

What would you recommend as a sensible replacement to the code above?
I replaced it with

return Option<T>.Match( Some: t => t.NullableA?.NullableB is null ? None : Some(b.NullableA?.NullableB), None:() => None);

I'm assuming I've misunderstood something.
Thanks
Dave