F#从另一个文件中引用模块功能

时间:2017-12-14 14:39:24

标签: .net f# functional-programming .net-core

我正在编写一个非常初学者的F#程序( F#Core & Visual Studio代码),如下所示:

1.Sort.fs

namespace Demo

module Sort =
    let rec quickSort list =
        match list with
        | [] -> []
        | head::tail ->
            let smalls =
                tail |> List.filter(fun c-> c<head)|> quickSort
            let bigs =
                tail |> List.filter(fun c-> c>=head)|> quickSort
            List.concat [smalls;[head];bigs]        

2.Program.fs

namespace Demo

open Sort

module Program =
    let list = [3;1;8;4;9;5;7;6]

    [<EntryPoint>] 
    let main argv =
        list |> Sort.quickSort |> printfn "%A"       
        printfn "Hello World from F#!"
        0

但是,当我尝试open Sort模块进入Main时,我遇到以下错误:

  

命名空间或模块&#39;排序&#39;没有定义。

     

价值,名称空间,类型或模块&#39;排序&#39;没有定义。也许你想要以下之一:      SQRT

如果我把sort模块放在同一个文件下 - `Program.fs,一切正常。还有其他需要引用文件吗?

1 个答案:

答案 0 :(得分:3)

项目资源管理器中的文件顺序非常重要。 如果您要使用模块Sort中的模块Program,则必须在Sort.fs之前显示Program.fs

可以找到更多信息hereherehere