事が急速に変わるので、私はこの質問を投稿しました。うまくいけば、Haskellプロジェクトを開始するコミュニティ合意された方法を明確にすることができます。Haskellプロジェクトを構築するための最新の標準ワークフローは何ですか?
プロジェクト#1:スクエア、正方形の数字ライブラリ私は2つの別々のプロジェクトを持っている想像してみてください。デセップはありません。
-- Square.hs module Square where square :: Num a => a -> a square x = x * x
プロジェクト#2:直角三角形の最長辺を見つけ斜辺、ライブラリと実行可能。
-- Main.hs import System.Environment import Hypotenuse main = do [x,y] <- fmap (map read) getArgs print $ hypotenuse x y
は、GHC 7.10.2とコンピュータ、スタックと陰謀団がインストールされ、単一のディレクトリを皮切り~/OrganizeMe
、~/OrganizeMe/Square.hs
を含む、~/OrganizeMe/Hypotenuse.hs
、
-- Hypotenuse.hs
module Hypotenuse where
import Square
hypotenuse :: Floating a => a -> a -> a
hypotenuse x y = sqrt $ square x + square y
と:第1位に依存します~/OrganizeMe/Main.hs
、上記のとおり - 経験豊かなHaskellerがこれらのプロジェクトを設計するのに使う完全なunixコマンドは何ですか?以下を含みます:
これらのプロジェクトのディレクトリツリーを整理します。 (必要に応じて、及び
git
)Stack
/Cabal
/etc
を構成。
ビルドしてローカルにインストールします。
公開
Hackage
/Stackage
。
私はStackといくつかのCabalチュートリアルの全ドキュメントを読んでいます。今私は多くの機能について知っていますが、ディレクトリツリーがどのように整理されているのかまだ分かりません。 '.cabal'ファイルを持つプロジェクト用に、スタック用と複数のサブディレクトリ用に1つのディレクトリが必要ですか?それとも代わりに?私はどのように相互にインポートローカルプロジェクトをリンクすることができますか?希望の実例は、これらの質問や他の質問を明確にすることができます。 – MaiaVictor
Stack/Stackageがいいです。商業的裏書とすべてを持っています。 –
私のモバイルでは時間がかかりませんが、あなたは正しい考えを持っています。 1つのライブラリごとに1つのサブディレクトリがあり、それぞれがカバールファイルを持ち、stack.yamlファイルから各ディレクトリを参照します。ワイレポはこれの実例を提供します –