Saturday, September 25, 2010

GHCi and Cabal

Maybe I'm the only one who didn't already know this, but I'd like to describe how to use GHCi within a Cabal project under development.

Say I'm working on a library foobar:

~/foobar $ find -type f
./foobar.cabal
./Data/FooBar.hs
./Setup.hs
./LICENSE

I want to write a test program, which won't go in the Cabal distribution:

~/foobar $ cat > test.hs
import Data.FooBar
main = print fooBar
^D

~/foobar $ cabal configure && cabal build
Resolving dependencies...
Configuring foobar-0.1...
Preprocessing library foobar-0.1...
Building foobar-0.1...
Registering foobar-0.1...

~/foobar $ ghci test.hs
GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 2] Compiling Data.FooBar      ( Data/FooBar.hs, interpreted )
[2 of 2] Compiling Main             ( test.hs, interpreted )
Ok, modules loaded: Data.FooBar, Main.

GHCi is loading Data.FooBar into the interpreter, but I wanted to test the compiled, optimized version that was just produced by Cabal. Let's try telling it about the dist/ directory:

~/foobar $ ghci test.hs -package-conf dist/package.conf.inplace
GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 2] Compiling Data.FooBar      ( Data/FooBar.hs, interpreted )
[2 of 2] Compiling Main             ( test.hs, interpreted )
Ok, modules loaded: Data.FooBar, Main.

Still no good. Seems that the existence of the file Data/FooBar.hs overrides anything in the package database. Move to another directory:

~/foobar      $ mkdir test && cd test
~/foobar/test $ mv ../test.hs .
~/foobar/test $ ghci test.hs -package-conf ../dist/package.conf.inplace
GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main             ( test.hs, interpreted )
Ok, modules loaded: Main.
*Main> fooBar
Loading package foobar-0.1 ... linking ... done.
"testing 123"

It works. :) For compiled code as well:

~/foobar/test $ ghc --make -O test.hs -package-conf ../dist/package.conf.inplace
[1 of 1] Compiling Main             ( test.hs, test.o )
Linking test ...
~/foobar/test $ ./test
"testing 123"

5 comments:

  1. شركة تنظيف فلل بالرياض تتيح لكم ما تحتاجونه من خدمات تنظيف في مختلف المنشآت بجميع المساحات والأغراض والمحتويات، إذ أن الشركة تقدم من خلال أفضل العمال والمتخصصين وبإشراف الخبراء الذين تستعين بهم الشركة للإشراف على ما يتم القيام به من مهام وخدمات وتوفير كافة سبل الراحة لعملائها الكرام من خلال ما تستعين به من وسائل ومواد ومعدات تتميز بتقنياتها المتطورة والحديثة والتي تواكب من خلالها مستلزمات العصر الحديث و للوصول إلى أفضل ما قد يتطلع له العملاء بجميع فئاتهم في ما يأملون في الوصول لها من مستوى خاص بنظافة المنشأة التي يقيمون فيها أو يعملون بها ويسعون جاهدين إلى أن تظهر بأجمل هيئة وأكمل صورة داخليا وخارجيا.
    تمتع بأسعار لا مثيل لها مع شركة تنظيف فلل بالرياض
    يتمتع عملاء الشركة بمزايا لا تتوافر بالشركات الأخرى إذ أن أسعارنا هي الأرخص والأفضل رغم أن خدماتنا هي الأضمن والأفضل والأكثر تميزا بالمقارنة مع كبرى الشركات المماثلة إذ أن خدماتنا وأسعارنا لا منافس لها وتتميز شركة نظافة فلل بالرياض بما توفره من عروض ذات أسعار وخصومات رائعة ومذهلة على تنظيف الفلل وتعطيرها وتعقيمها جيدا من الاوبئة والجراثيم التي توجد فى تلك المساحات من الفلل الكبيرة والصغيرة .
    https://www.allsaad.com/70-2/
    لمزيد من خدماتنا
    شركة عزل فوم بالرياض

    ReplyDelete
  2. Thanks for sharing.I found a lot of interesting information here. A really good post, very thankful and hopeful that you will write many more posts like this one.
    vidmate.onl
    https://messenger.red/
    showbox.run

    ReplyDelete
  3. عزيزى العميل اهلا ومرحبا بك فى موقع مؤسسة الحرمــين للمقاولات العامة والعوازل
    شركه عزل فوم بالاحساء و الرياض
    الموقع الرائد فى عالم الخدمات المنزليه والاول بالمملكه العربيه السعوديه لما يتمتع به من خدمات مميزه ، فالبرغم من اننا مؤسسه ربحيه الا ان مزاولة نشاطتنا

    شركه عزل فوم بجدة

    شركه عزل فوم بمكة

    شركه عزل فوم بالرياض كلها مرتبط على نحو وثيق
    بتلبية طلبات وحاجات عملائنا ولتحقيق ذلك الهدف نقدم لك كافة الخدمات الشامله بالالتزام الصارم وبأرقى المعايير المهنيه المتطوره
    فلدينا خبره طويله فى مجال مكافحة الحشرات والكشف عن التسربات وتسليك المجارى وعزل الاسطح وترميم وصيانه المنازل وتخزينه بكفاءة منقطعة النظير ، لا تتردد واتصل
    بموقع مؤسسة الحرمــين فخدماتنا ليس لها بديل واسعارنا ليس لها مثيل ،ولدينا فريق عمل يتصل مع العملاء على جسور الثقه

    والصدق والامانه فى العمل ، وهدفنا هو ارضاؤك وراحتك ، لا تقلق ونحن معك

    شركه عزل فوم بالجبيل
    لا تجهد نفسك ونحن تحت امرك ورهن اشارتك .
    أبرز خدمات مؤسسة الحرمــين للمقاولات العامة بالدمام والرياض

    شركه عزل فوم بالدمام

    ReplyDelete
  4. Packers and Movers Bangalore - Reliable and Verified Household Shifting Service Providers Give Reasonable ###Packers and Movers Charges. Cheap and Best Office Relocation Compare Quotation for Assurance for Local and Domestic House Shifting and Get estimates today to save upto 20%, ***Read Customer Reviews - @ Packers And Movers Bangalore

    ReplyDelete
  5. Maharashtra Board Conducts Class 10th Exam Students who Study in Maharashtra Schools, Every year around 13 Lakh Students Appear for the Maharashtra Board 10th Class Main Exam. The Textbooks are Prepared by Senior Experts with in-Depth knowledge of each topic, MSBSHSE Board Every Year 10th Class Collages Open in Month of Jun After Summer Holidays, Every year laks of Students enrolled at Government Collages and Private Collages. Maha SSC Syllabus pdf Students Maharashtra Board Class 10th Book 2021-2022 All Subject get Your Government Colleges Free of cost, Private Colleges Students pay Amount at your After Provide Maharashtra Board SSC Textbook 2021-2022, MSBSHSE 10th Class Students Your books any Damage and Missing Students Do not Tension.

    ReplyDelete