F#2.0命名空间警告

时间:2010-02-12 07:27:12

标签: f# namespaces

我刚刚安装了最新版本的F#,并打开了一个旧解决方案,看看会告诉我什么。

这是一个多文件解决方案,其中第一个文件包含List模块上的一些“扩展函数”:

module List = 
    ///Given list of 'rows', returns list of 'columns' 
    let rec transpose lst =
        match lst with
        | (_::_)::_ -> List.map List.hd lst :: transpose (List.map List.tl lst)
        | _         -> []

编译器不再喜欢这个,并说:

  

库或多文件应用程序中的文件必须以命名空间或模块声明开头,例如'namespace SomeNamespace.SubNamespace'或'module SomeNamespace.SomeModule'

但如果我这样做:

module Foo.List = 

它说:

  

模块缩写必须是简单名称,而不是路径

我在这里缺少什么?那个“特殊”案例的解决方案是什么,我正在扩展来自其他地方的模块?

1 个答案:

答案 0 :(得分:6)

明确命名空间:

namespace Microsoft.FSharp.Collections

module List =  
    ///Given list of 'rows', returns list of 'columns'  
    let rec transpose lst = 
        match lst with 
        | (_::_)::_ -> List.map List.head lst :: transpose (List.map List.tail lst) 
        | _         -> []

请注意,List.hdList.tl已重命名为List.headList.tail