Bernadette
Bernadette

Reputation: 61

Is it possible to define different attributes for recursive classes in F#

I want to declare two classes that are associated, therefore I am declaring them together linked by an 'and'. Each has different attributes but this code is not working ("Unexpected keyword 'and' in definition" error at keyword 'and'. How should I declare the attributes of the second class?

[<AbstractClass>]
type foo() =
  abstract member fun1 : foo -> foo2
[<Serializable>]
and foo2() = class
  member x.bar y = y
end

Upvotes: 6

Views: 237

Answers (2)

Bernadette
Bernadette

Reputation: 69

Yes, I opened System and yes the solution is to place it after the and.

Ta!

Upvotes: 3

elmattic
elmattic

Reputation: 12174

It works for me. Did you do open System?

open System

[<AbstractClass>]
type foo() =
  abstract member fun1 : foo -> foo2
and [<Serializable>] foo2() = class
  member x.bar y = y
end

Edit: Ah, it seems that the second attribute should be AFTER the and.

Upvotes: 10

Related Questions