简体   繁体   中英

Visual Studio 2010 IntelliSense: hints on F# operators

Is it possible to make Visual Studio to display tooltips on operators?

The following image demonstrates a tooltip hint for a function, but it does not work for operators.

一个功能的工具提示提示

Operators usually have simple type specs like 'T -> 'T -> 'T , but such hints can be useful for custom ones.

Following Daniel's suggestion, I'm posting a workaround that I've been using for myself.
The workaround is only partially helpful, and I'm still looking for any better ideas.

let (!><) a = ()
let z1 = op_BangGreaterLess 5

This code is fully valid, since an operator expression generates a function with a compiler-generated name. See this MSDN article , section "Overloaded Operator Names" for complete list of operator names.

Good news is that op_BangGreaterLess supports IntelliSense hints and it also supports "Go to Definition" ( F12 ) command of IDE, pointing to an original operator declaration.
Bad news is that IntelliSense does not allow rapid entry of the full operator name ( Ctrl + Space ), so you have to type the entire name manually.

I'm afraid this is not possible (and even in Visual Studio 2012, I don't get tooltips for operators).

I suppose this could be implemented, but as you say, operators usually have simple types. When using custom operators, these should be probably simple enough so that people can use them without looking at their type (or the associated XML documentation). Otherwise, it might be better to use a named function.

That said, if you're using F# Interactive, then you can easily use that to explore the operator type:

> (!><);;
val it : ('a -> unit) = <fun:clo@2>

If I cannot use F# Interactive, I usually define a simple dummy symbol to get the IntelliSense:

let dummy () = (!><)

Note that I added unit argument to define a function and avoid value restriction error.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM