Reputation: 310852
Imagine the following interface in C#:
interface IFoo {
void Bar();
}
How can I implement this in F#? All the examples I've found during 30 minutes of searching online show only examples that have return types which I suppose is more common in a functional style, but something I can't avoid in this instance.
Here's what I have so far:
type Bar() =
interface IFoo with
member this.Bar() =
void
Fails with _FS0010:
Unexpected keyword 'void' in expression_.
Upvotes: 20
Views: 2524
Reputation: 123
The equivalent in F# is:
type IFoo =
abstract member Bar: unit -> unit
Upvotes: 3
Reputation: 78262
The equivalent is unit which is syntactically defined as ()
.
type Bar() =
interface IFoo with
member this.Bar () = ()
Upvotes: 22
Reputation: 118865
For general info on F# types, see
The basic syntax of F# - types
From that page:
The unit type has only one value, written "()". It is a little bit like "void", in the sense that if you have a function that you only call for side-effects (e.g. printf), such a function will have a return type of "unit". Every function takes an argument and returns a result, so you use "unit" to signify that the argument/result is uninteresting/meaningless.
Upvotes: 7
Reputation: 5930
The return type needs to be (), so something like member this.Bar = () should do the trick
Upvotes: 6