C # warns of unused variables that are compile-time constants:
static void Main(string[] args)
{
var unused = "hey";
Console.WriteLine("Hello World!");
}
But the F # compiler does not do this, even if the editor now takes it:

If it covered not only compile-time constants, but also all let bindings, this would lead to a real error in operation caused by a trivial error, something like
let callApiXyz connectionInfo = async {
let fullUrl = sprintf "%s..." connectionInfo.Url
...
let! result = httpGet connectionInfo
...
}
Is there any reason not to have this (other than "features are not free")? I feel this should be more important in a functionally first language, where expressions tend to have no side effects than in C #.
source
share