簡體   English   中英

在哪里可以找到Haskell的正確軟件包名稱和版本?

[英]Where can I find correct package name and version for Haskell?

說,我需要System.Eval.Haskell 或其他。 我怎么知道我應該在package.yaml指定哪個軟件包? 當我轉到https://hackage.haskell.org/package/plugins-1.5.7/docs/System-Eval-Haskell.html時 ,看不到任何軟件包名稱。

PS“插件”不適用於我。 因此,我認為這是不同的。 希望如此 :)


看起來在配置中的額外依賴項和“常規”依賴項之間有些不太明顯的區別。 提到plugins-1.5.7確實很有效。 我是在這里做一些依賴關系管理不善,還是那綠色的路要走?

看起來在配置中的額外依賴項和“常規”依賴項之間有些不太明顯的區別。 提到plugins-1.5.7確實很有效。 我是在這里做一些依賴關系管理不善,還是那綠色的路要走?

那就是應該的樣子。 問題在於Haskell軟件包有兩個主要檔案: Hackage (基本上包括所有軟件包和以前的每個版本)和Stackage (是大量的Hackage的子集,捆綁到相互兼容的軟件包和版本的快照中)。 Stack默認情況下是從Stackage提取圖形包,因此,如果您要使用Hackage中不在Stackage中的軟件包,則還必須將其添加到stack.yamlextra-deps stack.yaml 可以在Hackage文檔中找到該軟件包內容頁面是否位於Stackage中 (如果位於Stackage中,則在“分發”字段中將有相應條目)。 Stackage Hoogle也是相關的,它使您可以在Stackage快照中搜索軟件包名稱,模塊和標識符。

PS:有關“黑客”,“堆棧”和“堆棧”之間關系的更多信息,您可以看看我對Cabal和Stack有什么區別的答案 (如果您使用的是,則可以用“ package.yaml ”替換其中提到的“ .cabal文件”。)

當您查看有關黑客的模塊文檔時,程序包名稱位於左上角:

包名稱突出顯示

在這種情況下,確實是插件 1.5.7版。

當您在.cabal文件中聲明依賴項時,Stack會嘗試查找適合您要定位的長期支持 (LTS)集合的版本。

有時,您想要使用與LTS集合中可用版本不同的版本(例如,如果您想要更新的版本),在這種情況下,您可以extra-dependencies.定義軟件包及其特定版本extra-dependencies.

說,我需要System.Eval.Haskell。 或其他。 我怎么知道我應該在package.yaml中指定哪個軟件包?

可能有許多軟件包可以導出特定的模塊,因此您不必從模塊名稱中知道要導入的軟件包。 但通常從Google搜索中顯而易見。

正如duplode提到的那樣,該程序包被命名為plugins ,並且您發現堆棧使用<package_name>-<version>格式在stack.yaml指定程序包名稱+版本。 Cabal使用另一種格式,這種格式更加靈活(可以指定模糊的軟件包版本范圍等)。 由於堆棧適用於軟件包版本的固定快照,因此plugins-1.5.7格式已足夠。

當您在*.cabal文件中編寫plugins時,您指定的內容類似於“任何版本的plugins但都希望使用最新版本”。 但是,由於您的軟件包存儲庫按stack限制為特定的快照,因此您真正要做的就是讓stack管理您的依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM