Как указали Брайан и Скотт, вам нужно заключить файл в пространство имен или объявление модуля. Простое добавление namespace SomeNamespace
может не сработать, если в файле есть привязка верхнего уровня let
(как это должно быть в каком-то модуле). Следующее будет недействительным:
namespace SomeNamespace
let foo a b = a + b // Top-level functions not allowed in a namespace
Тем не менее, я предпочитаю иметь namespace
вместо module
на верхнем уровне, а затем явно оборачивать все функции в module
(как я считаю, что делает код более читабельным):
namespace SomeNamespace
module FooFunctions =
let foo a b = a + b
Но, конечно, вы можете добавить модуль верхнего уровня, как предлагает Брайан (более ранние версии F # автоматически использовали имя файла в PascalCase в качестве имени модуля верхнего уровня, используемого в файле) :
// 'main.fs' would be compiled as:
module Main
let foo a b = a + b