
On 26 April 2004 02:49, S. Alexander Jacobson wrote:
Sun and Dell both sell 64-bit boxes. But the core question is why have two different types at all?
This issue is timely because I just got an error in code that looks vaguely like:
h<-openFile "foo" AppendMode pos <- hFileSize h hPutStr $ show something hClose h content <- readFile "foo" return $ take pos content
This code produces an error because (madness!):
hFileSize::Handle -> IO Integer take::forall a. Int -> [a]->[a]
I have to assume conversion between files and lists is not all that rare even in beginner code.
Note: I don't really care whether everything is 64bit Int or Integer. I just find having to care about this point in such trivial code ridiculous.
Probably if the take function were being designed today, there would be no question about whether it should take Int or Integer. Back then, the Integer overhead was high enough to worry about, and lots of benchmark programs used take/drop. Nowadays, we can't really change the type of take without breaking just about every Haskell program. Cheers, Simon

On Mon, 26 Apr 2004, Simon Marlow wrote:
Probably if the take function were being designed today, there would be no question about whether it should take Int or Integer. Back then, the Integer overhead was high enough to worry about, and lots of benchmark programs used take/drop. Nowadays, we can't really change the type of take without breaking just about every Haskell program.
Ok, but the whole library hierarchy is pretty new, right? There is no reason for Data.FiniteMap.sizeFM to be Int. Moreover take and drop in Data.List could be redefined to take Integer without breakage etc. Aside: Is there truly a substantive amount of code that would break if this was switched? Doesn't type inference mean that most code would switch just fine? -Alex- _________________________________________________________________ S. Alexander Jacobson mailto:me@alexjacobson.com tel:917-770-6565 http://alexjacobson.com
participants (2)
-
S. Alexander Jacobson
-
Simon Marlow