在閱讀F# Component Design Guidelines後,我看不到任何評論,我是否應該聲明模塊&其類型具有相同的名稱。F#指南建議聲明具有相同名稱的模塊和類型嗎?
通常我的項目沒有任何循環依賴性,所以我不需要創建一個新模塊(例如InfrastructureTypes
或DomainTypes
)將每個類型放在一個地方。
例如,如果我有一個記錄類型System
及其一堆功能,我應該將所有內容放入一個模塊文件中嗎?這是我的嘗試:
// 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