I am using the F# CTP 1.9.7.8 and running the samples based on Tomas Petricek's article, on page 12
type MyCell(n:int) =
let mutable data = n + 1
do printf "Creating MyCell(%d)" n
member x.Data
with get() = data
and set(v) = data <- v
member x.Print() =
printf "Data %d" n
override x.ToString() =
sprintf "(Data %d)" data
static member FromInt(n) =
MyCell(n)
Four questions comes into mind as I typed this into the F# Interactive:
- Why do I get an error message as shown below in Figure 1.
- Why is there an
=beside themember x.Print(),x.ToString()but not inmember x.Data? - Where did the
xcome from? and why is it there when the typeMyCellis being defined so how can you reference an 'object' in that way, such as forx.Print(),x.ToString()andx.Data?
> type MyCell(n:int) = - let mutable data = n + 1 type MyCell(n:int) = -----^^^^^^^ stdin(6,6): error FS0547: A type definition requires one or more members or othe r declarations. If you intend to define an empty class, struct or interface, the n use 'type ... = class end', 'interface end' or 'struct end'. -
Figure 1.
Thanks, Best regards, Tom.