How not to name types and identifiers


From the ‘code which is valid but looks strange and might be removed in the next release of F#, but isn’t a big deal anyways’ department: Adding managed, generic .Net names as part of the inference proceedure process.


#light


 


open System.Collections.Generic


let x = new “List`1“<int>([1..10])


 


Note that you need to use the double back ticks “” in order to declare the type name, otherwise you get a syntax error. Back ticks allow you to specify a literal type name, in case it conflicts with an F# keyword. For example, you can create a C# type named ‘unit’. This also allows you to write the strange, yet valid code:


 


let “_“ = 3


let f x = 3 * 3


assert ((f “_“) = 9)


 


Yes, using back ticks you can name an identifier ‘_’. Not especially useful, but interesting none the less.

Comments (0)