[racket-dev] exact nonnegative integers as sequences?
Three minutes ago, Robby Findler wrote:
> On Mon, Apr 18, 2011 at 9:59 AM, Eli Barzilay <eli at barzilay.org> wrote:
> > 9 minutes ago, Matthew Flatt wrote:
> >> Thanks for the clarifications, and I now agree that it's not about
> >> genericity.
> >>
> >> I think it's about scripts to programs, though. In a script, not
> >> having to type `(in-range ....)' or `(in-list ....)' feels
> >> worthwhile. You make a good point that those scriptish shortcuts can
> >> make understanding the code a little harder, and using `in-range' or
> >> `in-list' can good for long-term maintenance. Still, I think it's
> >> better to allow the shortcuts.
> >
> > Is there any difference between this and other generic operations
> > (which could also benefit from types being more explicit and more
> > checked)?
> >
> > [Not intended as a flame -- I'm curious to see if there's something
> > makes some generics be worse than others.]
>
> As you probably guessed, I think that this is more of a
> coherent-language-design issue, but I bet someone could conduct some
> kind of a survey type thing to figure out what leads to more bugs or
> what programmers find confusing or something along those lines (ie,
> you decide on some concrete measure for "worse" and then conduct a
> study to try to answer that question).
:) My own use of the for loops is usually without using the generic
dispatch thing, similar to regexp functions. I get the feeling that
you'd similarly want those to throw errors on strings and require an
explicit `regexp' if you really want to use a string -- but there the
reason is clearer: you have (regexp-match "foo" "bar") and it's easy
to mix the two -- so to avoid relying on my memory, I'd just use
(regexp-match "foo" #rx"bar") and let racket barf at me when I need
to change the order. (And even TR won't save me there.)
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!