Three minutes ago, Robby Findler wrote: > On Mon, Apr 18, 2011 at 9:59 AM, Eli Barzilay <e...@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! _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev