F# - 这段代码不是为我编译的

sta*_*ker 0 f#

这段代码不是为我编译的: let countDown = [5L .. ?1L .. 0L];;

我有一本书(第33页)说它应该归还:
val countDown : int list = [5L; 4L; 3L; 2L; 1L; 0L]

编译器错误:

Program.fs(42,24): error FS0010: Unexpected character '?' in expression
>
> let countDown = [5L .. ?1L .. 0L];;

  let countDown = [5L .. ?1L .. 0L];;
  -----------------------^
Run Code Online (Sandbox Code Playgroud)

这本书错了.但为什么?它是对语言的更新吗?实现这个目标的方法是什么?

编辑:问题是?从PDF复制的-字符不是字符.

Tom*_*cek 9

即使没有Igor建议的修改,您的原始代码也能正常工作:

Microsoft (R) F# 2.0 Interactive build 4.0.30319.1
Copyright (c) Microsoft Corporation. All Rights Reserved.

> let l = [ 10L .. -1L .. 0L ];;
val l : int64 list = [10L; 9L; 8L; 7L; 6L; 5L; 4L; 3L; 2L; 1L; 0L]
Run Code Online (Sandbox Code Playgroud)

一个可能的细微错误是,如果你(例如)粘贴了Word(或其他程序)中的代码,它可能已经-用一些看起来相同的其他类型的破折号替换了符号,但实际上有不同的代码.

打破代码的另一种方法是删除一些空格 - 例如,在..和之间必须有一个空格-1L.否则,我认为没有任何理由不起作用.