In F# I can easily do
let a = [1 .. 10];;
Then why can\'t I do
let a = DateTime.Parse(\"01/01/2012\")
let b = DateTime.Parse(\"
There are two problems - firstly you need to specify the interval you want to use between elements of the list. This would be a TimeSpan
, however it does not have a static Zero
member.
This constraint is required by the skip range operator which requires the 'step' type to have static (+)
and Zero
members
You can define your own structure which supports the required operations however:
type TimeSpanW = { span : TimeSpan } with
static member (+) (d:DateTime, wrapper) = d + wrapper.span
static member Zero = { span = new TimeSpan(0L) }
You can then do:
let ts = new TimeSpan(...)
let dateList = [a .. {span = ts} .. b]
Edit: Here's an alternative syntax using discriminated unions that you may prefer:
type Span = Span of TimeSpan with
static member (+) (d:DateTime, Span wrapper) = d + wrapper
static member Zero = Span(new TimeSpan(0L))
let ts = TimeSpan.FromDays(1.0)
let dateList = [a .. Span(ts) .. b]