Say, I have something like this. It does not compile, but you can see what I'm trying to do. I've tried to google every which way, but no dice. Can this be done?
let inline read (s:string) : ^x =
let parsed = (^x : (static member ofString: string -> ^x option) (s))
// this is the bit I'm not sure how do to. This doesn't compile.
// I'm trying to determine what the statically chosen type for ^x is.
let t = typeof<^x>
match parsed with
| Some y -> y
| None -> failwithf "can't parse %s into %s" s (t.Name)
This works fine and you can use typeof
on statically resolved parameters - the issue is that the parser cannot deal with <^
, because it can also be parsed as an operator.
You can fix this easily just by adding spaces around ^x
:
let t = typeof< ^x >
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With