F# 导入模块失败-未定义模块且未定义值或构造函数

F# 导入模块失败-未定义模块且未定义值或构造函数,f#,F#,我想使用BasicFunctions.fs文件中模块中的函数。 完成后,下一步就是完成 他回答了这个问题,帮了点忙。这个问题似乎与我的情况无关 尝试1:更改配置以包含第二个文件 如果我将项目配置myFsharpApp.fsproj更改为此 <ItemGroup> <Compile Include="BasicFunctions.fs" /> <Compile Include="Program.fs" /&g

我想使用BasicFunctions.fs文件中模块中的函数。 完成后,下一步就是完成

他回答了这个问题,帮了点忙。这个问题似乎与我的情况无关

尝试1:更改配置以包含第二个文件 如果我将项目配置
myFsharpApp.fsproj
更改为此

  <ItemGroup>
    <Compile Include="BasicFunctions.fs" />
    <Compile Include="Program.fs" />
  </ItemGroup>
使用
dotnet build
然后返回

  • 错误FS0039:命名空间或模块“BasicFunctions”不可用 明确的
  • 错误FS0001:类型不匹配。应为“a->”b->“c” 但是给定一个“a->unit”,类型“a->b”不匹配 “单位”类型
  • 错误FS0039:未定义值或构造函数“sampleFunction1”。[C:\dev\fsharp\myFSharpApp\myFSharpApp.fsproj]
  • 大部分代码都是从中复制的。不同之处在于,我希望从文件
    BasicFunctions.fs
    导入函数,并希望打印
    samplefunction1x=x*x+3

    代码结构如下所示

    // BasicFunctions.fs
    module BasicFunctions = 
        let sampleFunction1 x = x*x + 3
    
    // Program.fs
    module main =
        open BasicFunctions
    
    // Define a new function to print a name.
    let printGreeting name =
        printfn "Hello %s from F#!" name
    
    [<EntryPoint>]
    let main argv =
        printfn "%d" BasicFunctions.sampleFunction1 3 // 12 expected
        0 // return an integer exit code
    
    • 顶层模块的定义没有=和缩进
    • 没什么
    • 空间是一个函数应用程序,所以为了以正确的优先级调用,您需要使用paradensis或pipe
    所以它变成如下所示

    // BasicFunctions.fs
    module BasicFunctions
    
    let sampleFunction1 x = x * x + 3
    
    // Program.fs
    open BasicFunctions
    
    [<EntryPoint>]
    let main argv =
        sampleFunction1 3 
        |> printfn "%d" 
        0
    
    //BasicFunctions.fs
    模块基本功能
    让SampleFunction1x=x*x+3
    //Program.fs
    开放基本函数
    []
    让主argv=
    样本函数1 3
    |>printfn“%d”
    0
    
    请注意,您可以跳过“打开”并直接引用模块。这两个文件都需要按顺序包含

      <ItemGroup>
        <Compile Include="BasicFunctions.fs" />
        <Compile Include="Program.fs" />
      </ItemGroup>
    
    
    
    我仍然会出错-请参阅上面我的附加屏幕,以查看我是否遗漏了任何内容。您的fsproj看起来如何?请参阅上面的更新以验证文件的名称是否正确。编辑中说的是基本功能,而不是基本功能,这是原因。我忽略了文件名是
    BasicFunctions.fs
    而不是
    BasicFunctions.fs
    // BasicFunctions.fs
    module BasicFunctions
    
    let sampleFunction1 x = x * x + 3
    
    // Program.fs
    open BasicFunctions
    
    [<EntryPoint>]
    let main argv =
        sampleFunction1 3 
        |> printfn "%d" 
        0
    
      <ItemGroup>
        <Compile Include="BasicFunctions.fs" />
        <Compile Include="Program.fs" />
      </ItemGroup>