Skip to content

Instantly share code, notes, and snippets.

@edgarfgp
Created July 28, 2022 09:43
Show Gist options
  • Save edgarfgp/66a73f3d990b54d1588af3f75b5dff23 to your computer and use it in GitHub Desktop.
Save edgarfgp/66a73f3d990b54d1588af3f75b5dff23 to your computer and use it in GitHub Desktop.
Active Patterns. with Pattern matching
let (|IsOneOf|_|) x y = if x = y then Some() else None
type SomeRecord =
{ ExternalEnum: int
SomeStringData: string }
let toProcess =
[ { ExternalEnum = 1
SomeStringData = "I contain xml" }
{ ExternalEnum = 2
SomeStringData = "I contain json" }
{ ExternalEnum = 3
SomeStringData = "I contain csv" }
{ ExternalEnum = 4
SomeStringData = "I also contain json" } ]
let processJsonFiles (record: SomeRecord) =
match record with
| { ExternalEnum = IsOneOf 2 | IsOneOf 4
SomeStringData = _ } -> Some "parsed json"
| _ -> None
toProcess
|> List.map processJsonFiles
|> List.iter (printfn "%A")
@edgarfgp
Copy link
Author

Credit to @TheAngryByrd. Saving as a gist so I do not forget about this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment