visual-studio-2010 - F# "The value or constructor ... not defined"

标签 visual-studio-2010 f#

所以,这是我的第二个 F# 控制台应用程序。
代码是这样的:

let rec fact n =


 if n = 1 then 1.0
  else float(n)*fact(n-1);;

let rec pow x n = 
  if n = 1 then x
  else float(x) * pow x (n-1);;

let rec func1 eps x n = 
    let  f = fact (2 * n) * (fun n -> pow x n / float(n)) (2*n+1) / (pow 4.0 n * pow (fact n) 2)
    if abs f < eps then f
    else f + func1 eps x (n+1);;

let  quarter = func1 1.0e-2 1.0 2;;  

当我尝试运行时 let quarter = func1 1.0e-2 1.0 2;; , 交互式控制台显示 error FS0039: The value or constructor 'func1' is not defined .
出了什么问题或者我的代码缺少什么?
提前致谢。

最佳答案

使用 F# 交互式时,首先需要评估定义要使用的函数的代码。因此,如果您只选择脚本的最后一行,则会出现错误。我想您正在使用 Alt+Enter 将代码发送到 F# 交互式 - 如果您复制代码并手动输入,您会看到如下内容:

Microsoft (R) F# Interactive version 12.0.30815.0
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

> let  quarter = func1 1.0e-2 1.0 2;;

  let  quarter = func1 1.0e-2 1.0 2;;
  ---------------^^^^^

stdin(1,16): error FS0039: The value or constructor 'func1' is not defined

要解决问题,您需要选择文件中的所有内容(最后一行除外)并按 Alt+Enter。然后你应该看到类似的东西:
>     
val fact : n:int -> float

> 
val pow : x:float -> n:int -> float

> 
val func1 : eps:float -> x:float -> n:int -> float

这告诉您 F# Interactive 处理了函数定义 fact , powfunc1并且您现在可以在您正在评估的其他表达式中使用它们:
> let  quarter = func1 1.0e-2 1.0 2;;
val quarter : float = 0.2250279793

关于visual-studio-2010 - F# "The value or constructor ... not defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30965037/

相关文章:

generics - 如何在F#中声明通用异常类型

algorithm - F#写红黑树的难点

mysql - Crystal Report 13在VS 2010中提示数据库登录

c# - MVC Visual Studio 在模型文件夹中添加 .dbml 文件

c# - 有什么方法可以阻止我的应用程序在 Windows 7 机器上运行?

c++ - 我的编译器在 C/C++、OCaml 和 F# 之间犹豫不决

f# - 从文件中获取配置值,如果文件不存在则获取环境变量

F# 初学者在多个依赖名称上使用 let

visual-studio-2010 - 安装 Visual Studio 2012 Release Preview 后出现错误 'LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt'

vb.net - VB.NET 和 VB 的区别