
Hello, All! What is the standard Haskell convenience about export of module names for testing? As I understand, I should export all of them which looks like abstraction leak, but without this I can't test them, right? === Best regards, Paul

It is common to export an Foo.Internal module that has the internals of
your library in it, with a doc at the top that this is meant for internal
use. It can be used both for testing and sometimes the user of your
library can do something with it you didn't think of if he has access to
the internals.
On Mon, Oct 2, 2017 at 5:28 AM, Baa
Hello, All!
What is the standard Haskell convenience about export of module names for testing? As I understand, I should export all of them which looks like abstraction leak, but without this I can't test them, right?
=== Best regards, Paul _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners

It is common to export an Foo.Internal module that has the internals of your library in it, with a doc at the top that this is meant for internal use. It can be used both for testing and sometimes the user of your library can do something with it you didn't think of if he has access to the internals.
Hm, but if I have 10 modules in src/ (m1.hs, ..., m10.hs) I must create, for example 10 folders like src/m1/, ..., src/m10/ and their individual M*.Internal module, right? So, `m1`, for example, becomes: src/ m1/ Internal.hs All.hs ? And `All.hs` imports and re-exports module (or its part only) `Internal.hs`? Something like this? === Best regards, Paul

All I can give are examples. These have single Internal modules.
https://hackage.haskell.org/package/text-1.2.2.2/docs/Data-Text-Internal.htm...
https://hackage.haskell.org/package/aeson-1.2.2.0/docs/Data-Aeson-Internal.h...
https://hackage.haskell.org/package/pipes-4.3.5/docs/Pipes-Internal.html
https://hackage.haskell.org/package/reflex-0.4.0/docs/Reflex-Spider-Internal...
whereas opaleye for example has an entire Internal hierarchy.
https://hackage.haskell.org/package/opaleye-0.6.0.0
On Mon, Oct 2, 2017 at 6:49 AM, Baa
It is common to export an Foo.Internal module that has the internals of your library in it, with a doc at the top that this is meant for internal use. It can be used both for testing and sometimes the user of your library can do something with it you didn't think of if he has access to the internals.
Hm, but if I have 10 modules in src/ (m1.hs, ..., m10.hs) I must create, for example 10 folders like src/m1/, ..., src/m10/ and their individual M*.Internal module, right? So, `m1`, for example, becomes:
src/ m1/ Internal.hs All.hs ?
And `All.hs` imports and re-exports module (or its part only) `Internal.hs`? Something like this?
=== Best regards, Paul _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners

Thank you, David!
All I can give are examples. These have single Internal modules.
https://hackage.haskell.org/package/text-1.2.2.2/docs/Data-Text-Internal.htm... https://hackage.haskell.org/package/aeson-1.2.2.0/docs/Data-Aeson-Internal.h... https://hackage.haskell.org/package/pipes-4.3.5/docs/Pipes-Internal.html https://hackage.haskell.org/package/reflex-0.4.0/docs/Reflex-Spider-Internal...
whereas opaleye for example has an entire Internal hierarchy.
https://hackage.haskell.org/package/opaleye-0.6.0.0
On Mon, Oct 2, 2017 at 6:49 AM, Baa
wrote: It is common to export an Foo.Internal module that has the internals of your library in it, with a doc at the top that this is meant for internal use. It can be used both for testing and sometimes the user of your library can do something with it you didn't think of if he has access to the internals.
Hm, but if I have 10 modules in src/ (m1.hs, ..., m10.hs) I must create, for example 10 folders like src/m1/, ..., src/m10/ and their individual M*.Internal module, right? So, `m1`, for example, becomes:
src/ m1/ Internal.hs All.hs ?
And `All.hs` imports and re-exports module (or its part only) `Internal.hs`? Something like this?
=== Best regards, Paul _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
participants (2)
-
Baa
-
David McBride