Простір імен - це .Net-річ, поширена в багатьох мовах промислової потужності, просто спосіб організувати структуру та уникнути конфліктів імен між різними бібліотеками. Ми з вами можемо визначити тип "Foo" і використовувати їх обох у проекті, за умови, що вони знаходяться в різних просторах імен (наприклад, NS1.Foo та NS2.Foo). Простори імен у .Net містять типи.
Модуль - це річ F #, він приблизно аналогічний "статичному класу" ... це сутність, яка може містити обмежені значення та функції, а також типи (зауважте, що простори імен не можуть безпосередньо містити значення / функції, простори імен може містити лише типи, які самі можуть містити значення та функції). На речі всередині модуля можна посилатися через "ModuleName.Thing", що є тим самим синтаксисом, що і для просторів імен, але модулі в F # також можна "відкрити", щоб забезпечити некваліфікований доступ, наприклад
open ModuleName
...
Thing // rather than ModuleName.Thing
(РЕДАКТУВАТИ: Простори імен також можна відкрити подібним чином, але той факт, що модулі можуть містити значення та функції, робить відкриття модуля більш "цікавим", оскільки ви можете закінчити значеннями та функціями, наприклад "cos", будучи іменами, якими ви можете користуватися безпосередньо, тоді як в інших мовах .Net вам зазвичай завжди потрібно це кваліфікувати, наприклад, "Math.cos").
Якщо ви вводите код на "верхньому рівні" в F #, цей код неявно надходить у модуль.
Сподіваюся, це дещо допоможе, це досить відкрите питання. :)