當我輸入一個(大)模塊爲主要模塊中的下列方式之一:哈斯克爾:與模塊導入不必要的二進制增長
import Mymodule
import qualified Mymodule as M
import Mymodule (MyDatatype)
編譯的二進制增長同樣數額巨大時相比,我不不導入該模塊。無論我在主模塊中是否使用該模塊內的任何內容,都會發生這種情況。不應該編譯器(我在Debian測試中使用GHC)只添加到二進制文件中運行它需要什麼?
在我的具體情況下,我在MyModule中有一個巨大的Map,我沒有在Main模塊中使用它。選擇性地導入我真正需要的東西,並沒有改變編譯好的二進制文件的增長。
引用ehird:「就GHC而言,導入列表僅用於可讀性和避免名稱衝突;它們完全不影響鏈接的內容。」這不可能是真實的,因爲即使我只在主模塊中放置「import Mymodule」而不在模塊內部使用任何東西,尺寸的增長也會發生。 – Josephine 2012-02-10 10:34:30
「導入列表」是指要在模塊名稱後面括號中導入的標識符列表,而不是模塊頂部的導入語句列表。 – ehird 2012-02-10 13:49:49
對,這很有道理。感謝您的澄清和非常豐富的答案! – Josephine 2012-02-10 20:48:28