{"id":30891475,"url":"https://github.com/ekonbenefits/fsharp.interop.nulloptable","last_synced_at":"2025-10-17T19:22:14.293Z","repository":{"id":56138829,"uuid":"129469703","full_name":"ekonbenefits/FSharp.Interop.NullOptAble","owner":"ekonbenefits","description":"Missing OptionBuilder for F# filling the void to interop with  C#'s ?. usage","archived":false,"fork":false,"pushed_at":"2024-11-15T21:54:36.000Z","size":328,"stargazers_count":5,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-08T18:45:44.932Z","etag":null,"topics":["fsharp","monads","null","nullable","option"],"latest_commit_sha":null,"homepage":"https://ekonbenefits.github.io/FSharp.Interop.NullOptAble/","language":"F#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ekonbenefits.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-04-14T01:22:21.000Z","updated_at":"2022-05-02T14:12:51.000Z","dependencies_parsed_at":"2025-09-08T18:45:46.657Z","dependency_job_id":"7fb751d1-b70d-432d-a53e-a235dbad6dc6","html_url":"https://github.com/ekonbenefits/FSharp.Interop.NullOptAble","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/ekonbenefits/FSharp.Interop.NullOptAble","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekonbenefits%2FFSharp.Interop.NullOptAble","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekonbenefits%2FFSharp.Interop.NullOptAble/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekonbenefits%2FFSharp.Interop.NullOptAble/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekonbenefits%2FFSharp.Interop.NullOptAble/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekonbenefits","download_url":"https://codeload.github.com/ekonbenefits/FSharp.Interop.NullOptAble/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekonbenefits%2FFSharp.Interop.NullOptAble/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278786691,"owners_count":26045588,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fsharp","monads","null","nullable","option"],"created_at":"2025-09-08T18:45:40.292Z","updated_at":"2025-10-07T13:48:32.834Z","avatar_url":"https://github.com/ekonbenefits.png","language":"F#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FSharp.Interop.NullOptAble [![NuGet Status](http://img.shields.io/nuget/v/FSharp.Interop.NullOptAble.svg?style=flat)](https://www.nuget.org/packages/FSharp.Interop.NullOptAble/)\n\nMissing OptionBuilder for F# filling the void to interop with  C#'s `?.` usage.\nIt works with Nulls, Options, Nullables.\n\nCI Builds available: [![MyGet Pre Release](https://img.shields.io/myget/ci-fsharp-optionbuilder/vpre/FSharp.Interop.NullOptAble.svg)](https://www.myget.org/feed/ci-fsharp-optionbuilder/package/nuget/FSharp.Interop.NullOptAble)\n\nBuild Statuses:\n\n* Windows: [![Build status](https://ci.appveyor.com/api/projects/status/57yssc1q22p7j0y7/branch/master?svg=true)](https://ci.appveyor.com/project/jbtule/fsharp-interop-nulloptable/branch/master)\n* Mac \u0026 Linux: [![Build Status](https://travis-ci.org/ekonbenefits/FSharp.Interop.NullOptAble.svg?branch=master)](https://travis-ci.org/ekonbenefits/FSharp.Interop.NullOptAble)\n\n## Basic Info\n\nThere are more C# devs relying on the safe nav operator `?.` and so nulls will only get worse on the C# side, making it more likely null's are going to drop out of APIs.\n\nThis project creates an `option { }` computational expression and `chooseSeq { }` computational expression that allows binding `'T option`/`'T Nullable`/`'T:null` thus either returns an option or a sequence respectively.\n\nWith `chooseSeq` if you `yield!` another chooseSeq it will work recursively flatten or any sequence of `NonNullSeq`, list, or Set type. Any other sequence will be treated like a `T:null` object `yield!` and `let!` work with `'T option`/`'T Nullable`/`'T:null`\n\n### Examples\n\n```fsharp\nlet x = Nullable(3)\nlet y = Nullable(3)\noption {\n    let! x' = x\n    let! y' = y\n    return (x' + y')\n} |\u003e should equal (Some 6)\n```\nSee more examples in [Tests/RealWorld.fs](https://ekonbenefits.github.io/FSharp.Interop.NullOptAble/RealWorld.html).\n\n### Operator Examples\n\nThis library also has some operators available when specifically included\n```fsharp\nusing FSharp.Interop.NullOptAble.Operators\n```\nYou can find examples of them in [Tests/RealWorldOperators.fs](https://ekonbenefits.github.io/FSharp.Interop.NullOptAble/RealWorldOperators.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekonbenefits%2Ffsharp.interop.nulloptable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fekonbenefits%2Ffsharp.interop.nulloptable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekonbenefits%2Ffsharp.interop.nulloptable/lists"}