Serras explains typeof(MSIL)
I recently posted a note to the F# list on how to get the effect of typeof(...) in F# code through the use of F#'s inline Common IL. The code I used has now been beautifully explained by Alejandro Serrano (who assures me he is a high-school student from Spain!).
Furthermore, the shortly-to-be-announced F# 1.0.1 incoroprates the typeof operator into the Microsoft.FSharp.Idioms module, a typical use being:
(typeof() : typ<CustomVertex.PositionColored>).result
Now, back to putting those finishing touches on F# 1.0.1....
[ Technical note: the implementation is
let inline typeof () : typ<'a> =
let tok = (# "ldtoken !0" type('a) : System.RuntimeTypeHandle ) in
let res = System.Type.GetTypeFromHandle(tok) in
{ result = res }
The "inline" is required to ensure the code works with or without generics: without generics, F# use template expansion to implement these sorts of type-specific helper functions. The generic functions in CompatArray for manipulating array types work the same way. ]
Comments
- Anonymous
January 28, 2005
Thanks for linking to my blog. Apart from articles I'm going to publish a guide to F# for beginner. Check it!