HaskellのPackage
GHCの仕様ではない
公開されているものの中ではPackage名はユニークでないといけない
似たような名前のModuleが別Packageに入っていることもある
例
Data.Functor.ConstModuleはbase packageに
Data.Functor.ConstantModuleはtransformerspackageに
定義されている
知らん人に急にModule生やされたら嫌じゃない?
Parsec.HogeというModuleを勝手(?)に作られそう
A.B.CとA.B.Dみたいなmoduleがあったときに、これらの関連具合を知りたい
全く別の人がこういう名前でライブラリとして公開できるのかどうか
それとも、A以下は全て、もしくは、A.B以下は全て、同じ組織が管理しているのかどうか
Module名でコンフリクトしちゃうじゃん #?? こっちのpackageの方が、Data.Functor.Constの名にふさわしいのに、既に取られている、みたいなことは起こらないの?
どのModuleに入れるかって自由にやっていいのか?
それともどこかが管理しているのか?
「Data.Functor以下に入れる確固たる理由」が必要にならないのか?
「俺はA.B配下に入れるべきだと思うけど、君はA.D配下に入れるべきと思うんだね」みたいになりそう
A.B.Cmoduleをhogepackageとpiyopackageに定義するとか
Haskell Package Versioning Policy
Package ID
package名と、バージョン番号の組み合わせ
table:例
package名 hspec
version 2.5.7
package id hspec-2.5.7
Packageのコンテンツ
.cabalなどが含まれる
packageのinstall
package名でinstallする
Module名ではなく
package名を調べる
https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F60888%2F9cd8f3df-cf2e-68b7-5aac-dc2c681f374b.png?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=46a3972b0033c8cef31541a3a9adedd6 https://qiita.com/TTsurutani/items/b68956a555747fc3cb0e
スクボでメモる時に、A.B.Cという名前でノートを切るべきなのか、A.Bとかで切るべきなのか、が知りたい
それともpackage名か?
場合に依るかmrsekut.icon
docsに合わすならmodule単位でいいし、集合として意味があるならpackageでいい
packageのinstallの手順
stack install hogeが必要なのかどうか
じゃあ最初からそっちに書いて、buildしたほうが良くね、となったりする
参考
わかりやすい
packageのversion管理