我强烈怀疑这只是base
在写这本书时不是关键字的问题。
尝试不同的标识符:
let generatePowerOfFunc b = (fun exponent -> b ** exponent)
假设您有 2009 年版的 Programming F#,那将是在 F# 2.0 发布之前(尽管在 1.0 之后)。我试图找出它是什么时候作为关键字引入的......
编辑:实际上,查看2009 年编写的这个版本的规范,看起来base
那时已经是一个关键字。我想知道原始代码是否在本书出版之前就已经写好了。
无论哪种方式,我认为基本上将其视为错误是合理的,而使用有效的标识符应该没问题。
编辑:它实际上列在本书的勘误表中:
示例 3-3 在 VS 2010 中不能按原样工作。“base”显然是一个关键字,所以它应该被转义,或者有一些巫术使它不是我在书中遗漏的关键字。示例的第 2 行应如下所示:
let generatePowerOfFunc ``base`` = (fun exponent -> ``base`` ** exponent);;
或者,应选择不同的变量名称。
作者或编辑的注释:
感谢您的反馈,我一定错过了在产品周期后期标记为保留的关键字。
在本书的未来版本中,我将阅读:
let generatePowerOfFunc baseValue = (fun exponent -> baseValue ** exponent);;