Great, that does indeed give me exactly what I want.  I guess I just got confused by the type annotation syntax, and for some reason I had the order wrong.

Thanks again!

On 3/20/08, Jeremy Yallop <jeremy.yallop@ed.ac.uk> wrote:
Ralph Douglass wrote:
> With labeled functions, I usually do something like ~snoo:_, but it does
> not work in this exampled with methods:
> ---
> class foo = object
>   method bar ~(snoo : string):_ = ()
> end;;


In this case the ':_' denotes a type annotation, using the "any-type"
expression '_'.  You're declaring the return type of the method, as
you'll see if you change the annotation to something incompatible with
unit, such as

    class foo = object
      method bar ~(snoo : string):int = ()
    end


> On a whim, I did the following, which surprisingly worked:
>
> class foo = object
>   method bar ~(_snoo : string) = ()
> end;;


This works because the "unused variables" warning is disabled for
variables which start with an underscore.  It's a useful feature for
normal bindings but I don't think you should use it for labels, since it
changes the interface.


> Is there a solution to this?


I think the following is what you want:


    class foo = object
      method bar ~snoo:(_:string) = ()
    end


Jeremy.



--
Ralph