[ List of Environment Variables to Dictionary with Values - Idiomatic F# ]
What is the idiomatic way to take a F# list of string like
let myList = ["BUILD_NUMBER"; "GIT_COMMIT"; "GIT_BRANCH"]
and convert that to a Dictionary where the words above are the keys and the corresponding Environment Variable is the value.
Should all that be done in a one-liner or piped expression? I am missing the FP background to know how to go from list to Dictionary. What is the most idiomatic way to do this in F#?
Answer 1
Environment.GetEnvironmentVariable and the dict function should do the work :
let env =
myList
|> Seq.map (fun var -> var, Environment.GetEnvironmentVariable var)
|> dict
Answer 2
Alternatively to @Sehnsucht's answer:
Environment.GetEnvironmentVariables() already returns a dictionary, so if you don't want to restrict yourself to the names you specified you could just say:
let d = Environment.GetEnvironmentVariables()
printfn "%s" d.["BUILD_NUMBER"]
If you only ever access d.[xxxx] in your code (where xxxx is one of the strings you specify in your question), there's arguably no reason to make another dictionary just for those names.