Send Beginners mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://www.haskell.org/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."
Today's Topics:
1. Re: Where do you put your tests? (Michael Orlitzky)
2. Re: Where do you put your tests? (Magnus Therning)
3. Re: Where do you put your tests? (Brent Yorgey)
4. Re: Where do you put your tests? (Michael Orlitzky)
5. simple sound playback (Gnu/Linux) (Christopher Howard)
6. Re: Where do you put your tests? (Magnus Therning)
----------------------------------------------------------------------
Message: 1
Date: Sat, 21 Jul 2012 13:50:46 -0400
From: Michael Orlitzky <[email protected]>
Subject: Re: [Haskell-beginners] Where do you put your tests?
To: [email protected]
Message-ID: <[email protected]>
Content-Type: text/plain; charset=ISO-8859-1
On 07/19/2012 09:27 AM, damodar kulkarni wrote:
>
> Good because library dependencies are reduced, but bad because tests
> are somewhat "disconnected" from the functions they are testing.
>
>
> AFAIK, it's a good engineering practice to separate the tests from the
> code they are supposed to test. Code management issues will be there,
> but those can be taken care with the help of cabal like tool.
> That way, a person who wants to test will use the test-files and the one
> who doesn't want will be spared the trouble of separating tests from the
> intended function code.
>
This is the solution I'd prefer, but I quickly ran into a problem: if I
want to test internal (non-exported) functions, the tests need to be in
the same module as the code.
Is there a way around this?
(For now, I just put the code in the same file and depend on the test libs.)
------------------------------
Message: 2
Date: Sat, 21 Jul 2012 20:04:35 +0200
From: Magnus Therning <[email protected]>
Subject: Re: [Haskell-beginners] Where do you put your tests?
To: Michael Orlitzky <[email protected]>
Cc: [email protected]
Message-ID:
<CAAExw5sQ0DiH19T-R=ZxLfXauz9jdSnz+XFsmR=oseg7qjb...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
On Sat, Jul 21, 2012 at 7:50 PM, Michael Orlitzky <[email protected]> wrote:
> On 07/19/2012 09:27 AM, damodar kulkarni wrote:
>>
>> Good because library dependencies are reduced, but bad because tests
>> are somewhat "disconnected" from the functions they are testing.
>>
>>
>> AFAIK, it's a good engineering practice to separate the tests from the
>> code they are supposed to test. Code management issues will be there,
>> but those can be taken care with the help of cabal like tool.
>> That way, a person who wants to test will use the test-files and the one
>> who doesn't want will be spared the trouble of separating tests from the
>> intended function code.
>>
>
> This is the solution I'd prefer, but I quickly ran into a problem: if I
> want to test internal (non-exported) functions, the tests need to be in
> the same module as the code.
>
> Is there a way around this?
>
> (For now, I just put the code in the same file and depend on the test libs.)
A common issue. I, and some others I've seen, have a FooInternal
module exporting *everything* for the tests, and a Foo module
exporting only the public API.
/M
--
Magnus Therning OpenPGP: 0xAB4DFBA4
email: [email protected] jabber: [email protected]
twitter: magthe http://therning.org/magnus
------------------------------
Message: 3
Date: Sat, 21 Jul 2012 14:12:21 -0400
From: Brent Yorgey <[email protected]>
Subject: Re: [Haskell-beginners] Where do you put your tests?
To: [email protected]
Message-ID: <[email protected]>
Content-Type: text/plain; charset=us-ascii
On Sat, Jul 21, 2012 at 08:04:35PM +0200, Magnus Therning wrote:
> On Sat, Jul 21, 2012 at 7:50 PM, Michael Orlitzky <[email protected]>
> wrote:
> > On 07/19/2012 09:27 AM, damodar kulkarni wrote:
> >>
> >> Good because library dependencies are reduced, but bad because tests
> >> are somewhat "disconnected" from the functions they are testing.
> >>
> >>
> >> AFAIK, it's a good engineering practice to separate the tests from the
> >> code they are supposed to test. Code management issues will be there,
> >> but those can be taken care with the help of cabal like tool.
> >> That way, a person who wants to test will use the test-files and the one
> >> who doesn't want will be spared the trouble of separating tests from the
> >> intended function code.
> >>
> >
> > This is the solution I'd prefer, but I quickly ran into a problem: if I
> > want to test internal (non-exported) functions, the tests need to be in
> > the same module as the code.
> >
> > Is there a way around this?
> >
> > (For now, I just put the code in the same file and depend on the test libs.)
>
> A common issue. I, and some others I've seen, have a FooInternal
> module exporting *everything* for the tests, and a Foo module
> exporting only the public API.
I do this too. (For an example, see
http://hackage.haskell.org/package/split ). It has another benefit
beyond testing: I tend to export both modules from the package, and
make it clear that beginning users should start by looking at the
module with the public API; but for power users who want more control
or access and don't mind the possibility of shooting themselves in the
foot, the "export everything" module is also available.
-Brent
------------------------------
Message: 4
Date: Sat, 21 Jul 2012 14:53:41 -0400
From: Michael Orlitzky <[email protected]>
Subject: Re: [Haskell-beginners] Where do you put your tests?
To: Magnus Therning <[email protected]>
Cc: [email protected]
Message-ID: <[email protected]>
Content-Type: text/plain; charset=UTF-8
On 07/21/2012 02:04 PM, Magnus Therning wrote:
> On Sat, Jul 21, 2012 at 7:50 PM, Michael Orlitzky <[email protected]>
> wrote:
>> On 07/19/2012 09:27 AM, damodar kulkarni wrote:
>>>
>>> Good because library dependencies are reduced, but bad because tests
>>> are somewhat "disconnected" from the functions they are testing.
>>>
>>>
>>> AFAIK, it's a good engineering practice to separate the tests from the
>>> code they are supposed to test. Code management issues will be there,
>>> but those can be taken care with the help of cabal like tool.
>>> That way, a person who wants to test will use the test-files and the one
>>> who doesn't want will be spared the trouble of separating tests from the
>>> intended function code.
>>>
>>
>> This is the solution I'd prefer, but I quickly ran into a problem: if I
>> want to test internal (non-exported) functions, the tests need to be in
>> the same module as the code.
>>
>> Is there a way around this?
>>
>> (For now, I just put the code in the same file and depend on the test libs.)
>
> A common issue. I, and some others I've seen, have a FooInternal
> module exporting *everything* for the tests, and a Foo module
> exporting only the public API.
>
I think I could get rid of the test lib dependencies this way, but
doesn't the export-everything approach prevent GHC from making certain
optimizations?
GHC can be quite a bit more aggressive with pieces of code if it
knows they are not exported.
(I think I may have had evidence of this at one point, but who knows now.)
[1] http://www.haskell.org/ghc/docs/latest/html/users_guide/faster.html
------------------------------
Message: 5
Date: Sat, 21 Jul 2012 19:48:50 -0800
From: Christopher Howard <[email protected]>
Subject: [Haskell-beginners] simple sound playback (Gnu/Linux)
To: Haskell Beginners <[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset="iso-8859-1"
Hi. I've been playing around with gloss and its game modeling module.
However, I am wondering what package to use to get simple sound
playback. (For example, playing an explosion sound when a bomb lands.)
There seem to be lots of modules in the sound category at hackage but
I'm not sure what would be appropriate and simplest to use. (Only
Gnu/Linux compatibility matters, if that helps.)
--
frigidcode.com
indicium.us
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 554 bytes
Desc: OpenPGP digital signature
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20120721/fcde49fc/attachment-0001.pgp>
------------------------------
Message: 6
Date: Sun, 22 Jul 2012 09:42:35 +0200
From: Magnus Therning <[email protected]>
Subject: Re: [Haskell-beginners] Where do you put your tests?
To: Michael Orlitzky <[email protected]>
Cc: [email protected]
Message-ID: <20120722074235.GC1240@ohann>
Content-Type: text/plain; charset="us-ascii"
On Sat, Jul 21, 2012 at 02:53:41PM -0400, Michael Orlitzky wrote:
>On 07/21/2012 02:04 PM, Magnus Therning wrote:
>> On Sat, Jul 21, 2012 at 7:50 PM, Michael Orlitzky <[email protected]>
>> wrote:
>>> On 07/19/2012 09:27 AM, damodar kulkarni wrote:
>>>>
>>>> Good because library dependencies are reduced, but bad
>>>> because tests are somewhat "disconnected" from the functions
>>>> they are testing.
>>>>
>>>>
>>>> AFAIK, it's a good engineering practice to separate the tests
>>>> from the code they are supposed to test. Code management issues
>>>> will be there, but those can be taken care with the help of cabal
>>>> like tool. That way, a person who wants to test will use the
>>>> test-files and the one who doesn't want will be spared the
>>>> trouble of separating tests from the intended function code.
>>>>
>>>
>>> This is the solution I'd prefer, but I quickly ran into a problem:
>>> if I want to test internal (non-exported) functions, the tests
>>> need to be in the same module as the code.
>>>
>>> Is there a way around this?
>>>
>>> (For now, I just put the code in the same file and depend on the
>>> test libs.)
>>
>> A common issue. I, and some others I've seen, have a FooInternal
>> module exporting *everything* for the tests, and a Foo module
>> exporting only the public API.
>>
>
> I think I could get rid of the test lib dependencies this way, but
> doesn't the export-everything approach prevent GHC from making
> certain optimizations?
>
> GHC can be quite a bit more aggressive with pieces of code if it
> knows they are not exported.
>
> (I think I may have had evidence of this at one point, but who knows
> now.)
>
> [1] http://www.haskell.org/ghc/docs/latest/html/users_guide/faster.html
Very possible but correctness trumps speed ;-)
The only only solution I've thought of is to use a C preprocessor to
control what's exported. Of course that means the tests can't link
against the library.
/M
--
Magnus Therning OpenPGP: 0xAB4DFBA4
email: [email protected] jabber: [email protected]
twitter: magthe http://therning.org/magnus
I invented the term Object-Oriented, and I can tell you I did not have
C++ in mind.
-- Alan Kay
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20120722/3866ff5b/attachment-0001.pgp>
------------------------------
_______________________________________________
Beginners mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/beginners
End of Beginners Digest, Vol 49, Issue 25
*****************************************