Are you sure that you blew your entire budget on this email? 

TR is a dependently typed language. While types don't entire values, they 
depend on those 'aspects' of values (is it a cons? is it a positive value?) 
that can be checked with (usually cheap) predicates. 




On Sep 20, 2012, at 5:21 PM, John Clements wrote:

> … and I don't mean Teddy Roosevelt.
> 
> TR just discovered a bug that other type systems totally wouldn't have. As a 
> side-benefit, it appears that TR should be able to generate substantially 
> faster code as a result.
> 
> Short synopsis: 
> 
> I have inner-loop code that's using 'modulo'. As it turns out, modulo is 
> slow, because (among other things) it handles cases where the modulus needs 
> to be added or subtracted more than once.  So, I wrote my own. In fact, I 
> specialized my own to the situation where it wrapped down only, because it 
> was being applied to a counter that only got bumped up by 1.
> 
> I found another use of modulo, and pointed it to the same function.
> 
> OOPS! the program doesn't type-check any more. Why? because TR correctly 
> notes that in my other use of the function, it's entirely possible for the 
> index to be less than zero. 
> 
> In principle, any dependent type system should have been able to figure this 
> out. In practice, though, I don't know of any languages that actually support 
> dependent types in this way… er, agda?
> 
> Anyhow, TR just saved me a bunch of debugging time.
> 
> Of course, I just blew it all, writing this e-mail….
> 
> John
> 
> ____________________
>  Racket Users list:
>  http://lists.racket-lang.org/users


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to