[英]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.yaml
的extra-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.