为什么将[2..3..10]被解释为[2; 5; 8]

问题描述:

当我声明以下列表为什么将[2..3..10]被解释为[2; 5; 8]

let list = [2..3..10] 

F#交互式将它解释为包含[2; 5; 8]列表。 的控制台输出是:

let list = [2..3..10] 
;; 

val list : int list = [2; 5; 8] 

什么是数学的背后?我看不出输入与输出有关。

+5

[开始..一步..停止] –

+0

,你会想到什么输出? '[2; 5; 8; 11]'? – sepp2k

+0

谢谢@FoggyFinder,现在它是有道理的。随意写一个完整的答案,所以我可以将问题标记为已回答 – Ronin

The F# Language Specification

涉及表达式1 .. expr2的

范围表达式翻译成的 用途(..)运算符,以及涉及expr1的.. .. expr1的被表达式3 翻译成的用途(.. ..)运营商。 (.. ..)运算符 使用expr2的增量为开始 (expr1)和finish(expr3)值之间的值范围生成一个IEnumerable < _>。

或者只是:

[start .. step .. stop]