New reference implementation taylanbayirli@xxxxxx (29 Aug 2015 17:38 UTC)
Re: New reference implementation Per Bothner (29 Aug 2015 20:23 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (29 Aug 2015 21:38 UTC)
Re: New reference implementation Per Bothner (30 Aug 2015 09:20 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (30 Aug 2015 10:45 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (31 Aug 2015 21:22 UTC)
Re: New reference implementation Per Bothner (31 Aug 2015 22:11 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (01 Sep 2015 08:44 UTC)
Re: New reference implementation Per Bothner (01 Sep 2015 10:44 UTC)
Re: New reference implementation John Cowan (30 Aug 2015 01:24 UTC)
Re: New reference implementation Arthur A. Gleckler (30 Aug 2015 04:35 UTC)
Re: New reference implementation John Cowan (30 Aug 2015 17:10 UTC)
Re: New reference implementation Per Bothner (30 Aug 2015 05:06 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (30 Aug 2015 08:06 UTC)
Re: New reference implementation Per Bothner (30 Aug 2015 08:25 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (30 Aug 2015 08:49 UTC)
Re: New reference implementation Per Bothner (30 Aug 2015 09:33 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (30 Aug 2015 12:35 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (22 Sep 2015 21:27 UTC)
Re: New reference implementation Per Bothner (24 Sep 2015 00:25 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (24 Sep 2015 08:26 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (26 Sep 2015 11:49 UTC)
Re: New reference implementation Per Bothner (28 Sep 2015 17:47 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (28 Sep 2015 19:54 UTC)
Re: New reference implementation Per Bothner (02 Oct 2015 06:07 UTC)
Re: New reference implementation Per Bothner (02 Oct 2015 06:36 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (02 Oct 2015 09:39 UTC)
Re: New reference implementation Per Bothner (06 Oct 2015 21:13 UTC)
Re: New reference implementation taylanbayirli@xxxxxx (07 Oct 2015 09:17 UTC)

Re: New reference implementation taylanbayirli@xxxxxx 30 Aug 2015 10:45 UTC

Per Bothner <xxxxxx@bothner.com> writes:

> For example:
>   "I've been looking at the srfi-64 reference implementation and I
>   find the structure a bit complicated and hard to understand.
>   I also found what appears to be some bugs and inconsisteniesy from
>   the specification.  I tried to see how if I could simplify the
>   implementation; I'm happy with the result, and I'm hoping the result
>  [see link] might replace   the existing implementation.  What do you think?"
>
> See how much less obnoxious that sounds, while still conveying
> the same message?

Yes, I see.  However, while I don't want to be rude, I don't want to be
blatantly dishonest either, and I can't choose what does and doesn't
frustrate me. :-) I would need to suppress a lot of frustration building
up from working on (and using) the code to be able to write like that.
Though I guess I can work on getting less frustrated in first place, by
trying harder to not be too perfectionist.

>> Well, it clearly wasn't very well tested,
>
> Can I suggest you re-read and think about what you write before
> you post it?  This is another confrontational statement that
> you should expect would produce more heat than light.
>
> Thousands of tests have been written using the reference implementation.
> These have not exhaustively tested very corner case (far from it),
> but saying "wasn't very well tested" leaves out the question of who
> was supposed to test it, and how.

As soon as I started using SRFI-64, the bug where the test name
expression doesn't get evaluated was one of the first things to hit me.
I guess it was just a very bad coincidence; I can see that most people
don't use that feature.

(FWIW here's how it's used in my case:
https://github.com/TaylanUB/scheme-srfis/blob/master/test-all.scm )

> There is a srfi-64 meta-test.  I tried your implementation, and it had
> 4 unexpected failures.  This could be  a bug in srfi-64-test.scm,
> but I suggest you take a look at it.
>
> You could also try running the Kawa test suite ('make check') replacing
> gnu/kawa/slib/testing.scm with your version,

I'll look into it.

>> I don't use any of the words I use as slander.  I believe I made a
>> reasonable job of pointing out concrete issues with the code's style and
>> how these lead to actual bugs.
>
> No you didn't.  You pointed out some concrete issues (bugs), but there
> is little reason to ascribe those to the code's style.  At most, the goal
> of supporting non-portable features where possible [leads] to some
> conditional code not getting tested.

I think there is good reason to ascribe at least some of the bugs to
overall style:

- If the 'test-assert' definitions had used either of cons or quoting
  uniformly instead of switching styles, then the name-evaluation bug
  would have either surfaced much earlier (because it would have
  happened in Kawa, MzScheme, and Guile 2.x as well), or it wouldn't
  have happened (the subtler/maybe harmless bug of evaluating the name
  twice would have happened in both).

- Same thing if it hadn't been cond-expand'ed in first place.
  Cond-expand is also especially nasty in that a (meta-)test suite will
  have no possibility of catching the bug unless the test suite is run
  with multiple implementations.

- There is a dedicated "on test end" procedure, yet the on-test-end hook
  of the runner is called by the "report test results" procedure.  In my
  opinion, this has good bug-inducing potential in further work with the
  code, even if it's not a bug yet.

Since I'm normally very perfectionist/idealist/pedantic, but strain
myself to be pragmatic instead, I jump immediately when I notice that
pedantry *would* have had a pragmatic benefit after all.  Test suites
are the most important way to achieve confidence in lack of bugs as I
see it, but in this case we have a couple of bugs that escaped the test
suite for the library (the meta-test suite), as well as thousands of
programs using the library (test suites), and yet they would have been
prevented by some pedantry in code style.

Therefore, please allow me to conclude that a fair share of pedantry in
code style is beneficial in programming.

(For something related but slightly different: I happen to have a
similar pedantry-rooted analysis in the first section of this document:
http://taylanub.github.io/doc/scheme-values.txt re. "unspecified" return
values vs. zero-value returns in Scheme, and how it relates to real
issues that came up in GNU Guix's code-base.  Pedantry is under-rated!)

Taylan