F# Component Design Guidelinesを読んだ後、同じ名前を持つモジュール&を宣言する必要があるかどうかについてのコメントは表示されません。F#ガイドラインは、同じ名前のモジュールとタイプを宣言することをお勧めしますか?
通常、私のプロジェクトには周期的な依存関係がないため、すべてのタイプを1つの場所に入れるために新しいモジュール(例:InfrastructureTypes
またはDomainTypes
)を作成する必要はありません。
たとえば、レコードタイプがSystem
であり、その機能が多数ある場合、すべてを1つのモジュールファイルに入れる必要がありますか?これは私の試みです:のようにモジュール内の型を有するとは対照的に、
// System.fs
module System
type rec System =
{ name : string
children : System list }
let init() = { name = ""; children = [] }
let addChild system child =
{ system with system.children = child :: system.children }
let removeChild system child =
let rec removeChild children acc child =
match children with
| c :: children ->
if c <> child then removeChild children (c :: acc) child
else removeChild children acc child
| [] -> List.rev acc
let children = removeChild system.Children [] child
{ system with system.children = children }
@MiP - 型とモジュールは同じレベル*で定義されていることに注意してください。あなたの例では、ファイルは 'module System'で始まります。これは"このファイルの残りの部分は 'System'という名前のモジュールの中にあります。それに対して正しい方法は、タイプとモジュールの両方を同じレベルに定義することです。私はコメントボックスでそれを明確にすることはできませんので、私はこれを拡大して答えを投稿します。 – rmunn
@rmunnありがとう、私はもう少し明確にした。 – TheQuickBrownFox
@TheQuickBrownFoxあなたのソリューションでは、これらのモジュールとタイプを同じレベルにするためにマスターモジュールを作成する必要がありますか? – MiP