
On Wed, 27 Sep 2006, Brian Hulley wrote:
Hi - Consider the scenario when you want to find a function that returns the i'th element of an array but all you know is that there is a module called Data.Array.IArray that will probably have such a function in it. So you start typing in your program:
let ith = Data.Array.IArray.
at this point, you'd hope the editor you're using would somehow display a list of avaliable values exported from Data.Array.IArray including the indexing function, so you could select it, thus I would *like* to be able to use the syntax:
let ith = Data.Array.IArray.(!)
because it's not the user's fault that the person who wrote Data.Array.IArray decided to use a symbol instead of an identifier for this function - the user of Data.Array.IArray in this case just wants to see normal identifiers to use with prefix application so the use of (!) at this point effectively gets rid of the unwanted operatorness associated with the function.
This cool editor is able to show a list of functions with the given qualification but is not able to enclose the qualified identifier in parentheses? I don't think that it is a good idea to move the qualification away from the qualified identifier. The parentheses around the infix operator are a special case of sections. With the proposed syntactic change, we would have two meanings of parentheses: Section and making an infix operator prefix. One can also mix up Data.Array.IArray.(!) more easily with function composition Data.Array.IArray . (!) if Data.Array.IArray is also a constructor.