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

时间:2016-06-20 13:02:33

标签: f# functional-programming

当我宣布以下清单时

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

F#interactive 会将其解释为包含[2; 5; 8]的列表。 控制台输出将是:

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

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

背后的数学是什么?我不知道输入是如何与输出相关的。

1 个答案:

答案 0 :(得分:10)

来自The F# Language Specification

  

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

或只是:

[start .. step .. stop]