Er zijn twee problemen - ten eerste moet u het interval opgeven dat u wilt gebruiken tussen de elementen van de lijst. Dit zou een TimeSpan
zijn, maar het heeft geen statisch Zero
-lid.
Deze beperking is vereist door de operator voor overslaan van bereik , waarvoor het 'stap' -type statische vereist (+)
en Nul
leden
U kunt uw eigen structuur definiëren die echter de vereiste bewerkingen ondersteunt:
type TimeSpanW = { span : TimeSpan } with
static member (+) (d:DateTime, wrapper) = d + wrapper.span
static member Zero = { span = new TimeSpan(0L) }
U kunt dan doen:
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]