Skip to content

Instantly share code, notes, and snippets.

@baronfel
Last active January 23, 2023 02:33
Show Gist options
  • Save baronfel/a4ce11e2e90eb069b8eaf4078fb0a04d to your computer and use it in GitHub Desktop.
Save baronfel/a4ce11e2e90eb069b8eaf4078fb0a04d to your computer and use it in GitHub Desktop.
Between Active Pattern
open System
[<return:Struct>]
let inline (|Between|_|) left right value =
if value > left && value < right then ValueSome () else ValueNone
let today = DateTime.Now
let yesterday = DateTime.Now.AddDays(-1.0)
let tomorrow = DateTime.Now.AddDays(1.0)
let twoDaysAgo = DateTime.Now.AddDays(-2.0)
match today with
| Between twoDaysAgo yesterday -> printfn "Today is between two days ago and yesterday"
| Between yesterday tomorrow -> printfn "Today is between yesterday and tomorrow"
| _ -> printfn "Today is not between yesterday and tomorrow"
match 10 with
| Between 0 5 -> "too far..."
| Between 5 10 -> "closer..."
| Between 10 15 -> "got it"
| _ -> "Impossible to tell :("
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment