[ACCEPTED]-What the difference between a namespace and a module in F#?-namespaces
A namespace is a .Net thing, common in many 28 industrial-strength languages, just a way 27 to organize frameworks and avoid naming 26 conflicts among different libraries. Both 25 you and I can define a type "Foo" and use 24 them both in a project, provided they are 23 in different namespaces (e.g. NS1.Foo and 22 NS2.Foo). Namespaces in .Net contain types.
A 21 module is an F# thing, it is roughly analogous 20 to a "static class"... it is an entity that 19 can hold let-bound values and functions, as 18 well as types (note that namespaces cannot 17 directly contain values/functions, namespaces 16 can only contain types, which themselves 15 can contain values and functions). Things 14 inside a module can be referenced via "ModuleName.Thing", which 13 is the same syntax as for namespaces, but 12 modules in F# can also be 'opened' to allow 11 for unqualified access, e.g.
open ModuleName ... Thing // rather than ModuleName.Thing
(EDIT: Namespaces 10 can also similarly be opened, but the fact 9 that modules can contain values and functions 8 makes opening a module more 'interesting', in 7 that you can wind up with values and functions, e.g. "cos", being 6 names you can use directly, whereas in other 5 .Net languages you'd typically always have 4 to qualify it, e.g. "Math.cos").
If you type 3 in code at 'the top level' in F#, this code 2 implicitly goes in a module.
Hope that helps 1 somewhat, it's a pretty open-ended question. :)
More Related questions