Actually, the infix operators + and +. are themselves syntactic sugar for the prefix operators ( + ) and ( +. ). (Try it.) As for why different operators are needed for floats and ints, it's to make type inference easier for the compiler, I think. In an expression like "let triple x = 3 * x", you don't have to tell the compiler the type of x or triple: it assumes both are ints. If you instead use a float, you get a compile error; if you want floats, you have to write the expression differently. The nice thing is that once you get rid of all these compile warnings/errors, the program usually runs correctly first time.
As to the double semicolon, it's because the single semicolon is a statement separator (like in other languages, except you don't use it often in ocaml), while the double semicolon is a function terminator. You don't need the double semicolon all that much: using the interactive toploop, you may need it once in a large block (basically to let the toploop know you're done), and when compiling from a file, often even that can be omitted (for example, if the next statement is a "let"). So you could write rather large programs without any double semicolons.
One advantage that OCaml has over Haskell is speed
Yes, that's the main reason I chose to dig deep into ocaml in the first place. I'd also messed around a bit with lisp (cmucl); it's faster than perl/python but not as fast as C or ocaml. There are some applications for which python is just too slow for me, while C is too tedious, and I never learned C++ or Java.
It's an incredible language. I'm writing programs now that are more concise than the Python equivalent and about as fast as C. It's really the holy grail I was looking for. (According to a more thorough shootout, ocaml is competitive in speed with C and often faster than C++, and well ahead of all other competition in speed.)
The flip side is that before becoming productive one has to get used to a whole new way of thinking about problems: immutable data, everything is a function evaluation, no sequential statements, no side-effects, rely on recursion as much as possible, especially tail-recursion. But ocaml isn't religious about it: it has imperative features, including for and while loops, sequential statements (essentially successive function calls with side-effects and null output), and so on. After a while, though, you find you hardly need any of that. Maybe it's just me, but the sort of work I do is well suited to the functional approach. Also, it has a rich set of data structures and is pretty much agnostic about them: you can use linked lists, hashes, mutable arrays or records, sets, whatever suits your purposes.
The other drawback is the libraries (modules) aren't as complete as the Perl and Python equivalents (though far ahead of most other competition). I imagine that will get cured with time.
Question. "what is the square root of minus one? Well, maths has an answer and we call it i". Isn't that 'begging the question' a bit. It seems like the answer (well, we'll call it "i") has been proposed before anyone has shown if can really happen.
In addition to the long reply by h4rm0ny, let me point out this: you may be objecting here that, once you throw in this "i", the next question is "well, what's the cube root of -1?" and you have to introduce a new number for that. Well, the remarkable thing is that you don't have to. The complex numbers are enough for all polynomial equations (and more). "Analytic" functions of complex variables (basically, well-behaved functions, in a certain technical sense) have all sorts of remarkable properties and make calculations easier in all kinds of other ways: the square root of -1 is just the beginning. (For example, you can express the trigonometric functions, sin and cos, with complex exponentials, which is incredibly useful in calculations.) Plus, in quantum mechanics (needed when you deal with sub-atomic particles), the "wave function" of a particle is intrinsically a complex-valued function: you cannot represent it as a real function. (You can of course represent it as two real functions with certain rules, which is the same thing as a complex function.)
has a menu of recently selected highlighted items. There should be a dock in the "system tray" panel item, looks like a clipboard with the "k" letter. Clicking on it has a history of recently copied (ie highlighted-with-mouse) items, you can select what you like to bring it to the top, then middle-button will paste that next time.
Or else, first paste what you want to insert, then delete what you want to remove...
Just put an analog-to-digital converter on the analog output. There will be some degradation in sound quality, but it's one time and not noticeable for most people (certainly not for people who listen to MP3s), and after that there's no more copy protection. (And there's software for linux that will "trap" the pcm output, eg vsound, with no loss in quality.)
And maybe *you* should learn the difference between a question and a statement and use the appropriate punctuation mark.
If the question mark's good enough for Carl Sandburg, and a hundred other eminent authors, it's good enough for me. Perhaps you need an education in English.
And when you're done with that, maybe *you* should work on recognizing tongue-in-cheek comments.
Perhaps when you try to be humorous you should not say "someone mark this story as redundant". That only makes you look sound petulant.
Maybe Mr. McKusick should have read this earlier post about how Linus is already on top of it.
And maybe *you* should read RTFA (the McKusick interview)? He says explicitly that the paper trail was lacking "until recently" (by which he means the switch to BitKeeper). Maybe you should also learn some respect for people like McKusick who've been hacking free Unix since back when Linus was a kid. Among other things, this guy pretty much invented the modern Unix "fast file system", from which ext2 takes a lot of ideas. More recently, he's been responsible for softupdates in UFS (gaining the speed benefits of async mounts without compromising filesystem integrity in case of crashes).
It will be much harder to get an academic job in the US with a foreign degree.
This is nonsense. Others have pointed out Oxford and Cambridge, and there are dozens of excellent universities in other first world countries; but I can think of at least three people offhand (and perhaps several more if I think a bit) whom I know personally, who did their Ph.D. (and all earlier studies) in India but landed tenure-track academic positions in science departments in good universities in the U.S.
As a recent New York Times article pointed out, the US no longer leads in number of scientific publications (the EU has overtaken it), and its share of Nobel prizes is dropping.
If you read those links, you'd know that Romila Thapar does not reject the idea that the Aryans came from the Iran region: she only rejects the idea that it was an invasion, calling it a "graduated migration" instead. It seems to me that calling them a separate race in today's India is a judgement call: they may have been at one time, but today you have Indians who look just like Europeans (including skin colour), Indians who look nothing at all like Europeans, and every fine shade in between.
Ah, now I know where you're coming from. You must feel traumatised that not only did the government that wanted to rewrite textbooks lose the election, but the minister personally responsible lost individually too.
That's why kids have such trouble with fractions; until you *get* it, it's counterintuitive.
You must be one of those funny foreigners. Americans don't have trouble with fractions, they have trouble with decimal digits. That's why fuel stations advertise "gas" (petrol, which is a liquid here same as everywher else) at $ 1.85 9/10 to a gallon (or whatever). I had to be told what that means: it means $ 1.859, ie the 9/10 means 9/10 of a cent, but if you wrote it as the decimal number 1.859 people would get confused about what it meant.
Parsis aren't Iranians, any more than other Indians are. They are Zoroastrians who have lived in India for centuries, but whose ancestors came from Persia (present-day Iran). If you care about that, the Vedic Aryans from whom today's Indians are descended, too, came from the Caspian Sea region near present-day Iran, a couple of millenia earlier.
a given audio stream, at a given bitrate, for a given length of time, always has the same filesize. What else do you think bitrate measures?
BTW, I think the difference between MP3 and Vorbis at 128 kb/s is perfectly noticeable. MP3 sounds rather bad, vorbis sounds pretty good. And the point is precisely to tell which format sounds best, so you don't want to do 512 kb/s bitrate where all formats sound close to CD quality.
By the way, a free Windows port does exist, under cygwin.
That was the 2nd link in my original post.
No, your link (which I admit I didn't follow earlier) points to an attempted port to native win32 (based on the qt in kde-cygwin, but replacing x11 function with native win32 functions). qt-cygwin uses x11, as in XFree86-cygwin.
But when the subject of a Free Qt for Windows comes up, the immediate, flippant response is "port it yourself!", which is exactly what Ximian is doing.
No, Ximian is duplicating Microsoft's work (reimplementing it from scratch), not porting Microsoft's GPL'd code. See my other reply to your post.
...including porting it to windows. Troll Tech hasn't done that for you, of course, and why should they?
Um, they already did. They simply refuse to release it under an OSI-compliant license.
And that's their choice. It doesn't stop you from doing another port.
That leaves anyone ambitious enough to try a port of the X11 code with the responsibility of ensuring that the port is feature complete and compatible with Trolltech's official, non-Free version.
So? If it's a port of the Unix code, as opposed to a rewrite, it ought to have the same API or you're doing something wrong.
The way I look at it is, Windows is a non-free platform anyway, so people who complain that Qt is non-free on that platform are whining pointlessly. (By the way, a free Windows port does exist, under cygwin. This should be enough for those who just want to run their unixland free software under windows.)
K's QT isn't truely OSS since you have to pay out the ass to use it on Windows,
Bullshit. Apparently nothing Troll Tech does is right. I'm sure you guys will find a way to whine if they released Qt into the public domain. The linux version of Qt is GPL'd and you can do whatever you like with it that you can do with other GPL'd software, including porting it to windows. Troll Tech hasn't done that for you, of course, and why should they?
Many of us English folks grew up with the BBC Micro computer in schools.
Aah, I remember those. We had them in India too. Lovely machines. The other machines at school were the Tandy TRS-80, which nobody wanted to use. The IBM PC-AT already existed but was too expensive at the time.
Congratulations on the well-written troll. Some people may have taken you seriously until the congressman bit. Some people may have taken that seriously too. Anyway,
And in some ways, the lack of simplicity of environments like Python is harmful too. Much of the fun of programming was learning how to do amazing things at a relatively low level. Now languages are so complex, and libraries so relied upon, I'd venture to say most programmers do not understand how their programs will run, that something as simple as a change of data structure might make their program run 10,000% faster. Hashing? Sorting? Let the interpreter do it. That stuff's "too hard".
Yes, like we all understand what a 10 PRINT "HELLO" actually does behind the scenes.
This has alread caused a fork in Gentoo. ...(*cough*xfree86*cough*thebsds*cough*)
Well, and what became of the zynot fork?
Theo de Raadt could fork NetBSD, and more recently Keith Packard and friends could fork XFree86 and Matt Dillon could fork FreeBSD, because these people are developing the system itself and have really innovative ideas on how to do it. A linux distro is basically a collection of other people's software, and the scope for innovation is limited. Gentoo has some genuine innovation in its portage system, which is why it became so successful, but I don't see what role zynot can fill in the linux landscape.
As to the double semicolon, it's because the single semicolon is a statement separator (like in other languages, except you don't use it often in ocaml), while the double semicolon is a function terminator. You don't need the double semicolon all that much: using the interactive toploop, you may need it once in a large block (basically to let the toploop know you're done), and when compiling from a file, often even that can be omitted (for example, if the next statement is a "let"). So you could write rather large programs without any double semicolons.
Yes, that's the main reason I chose to dig deep into ocaml in the first place. I'd also messed around a bit with lisp (cmucl); it's faster than perl/python but not as fast as C or ocaml. There are some applications for which python is just too slow for me, while C is too tedious, and I never learned C++ or Java.
The flip side is that before becoming productive one has to get used to a whole new way of thinking about problems: immutable data, everything is a function evaluation, no sequential statements, no side-effects, rely on recursion as much as possible, especially tail-recursion. But ocaml isn't religious about it: it has imperative features, including for and while loops, sequential statements (essentially successive function calls with side-effects and null output), and so on. After a while, though, you find you hardly need any of that. Maybe it's just me, but the sort of work I do is well suited to the functional approach. Also, it has a rich set of data structures and is pretty much agnostic about them: you can use linked lists, hashes, mutable arrays or records, sets, whatever suits your purposes.
The other drawback is the libraries (modules) aren't as complete as the Perl and Python equivalents (though far ahead of most other competition). I imagine that will get cured with time.
In addition to the long reply by h4rm0ny, let me point out this: you may be objecting here that, once you throw in this "i", the next question is "well, what's the cube root of -1?" and you have to introduce a new number for that. Well, the remarkable thing is that you don't have to. The complex numbers are enough for all polynomial equations (and more). "Analytic" functions of complex variables (basically, well-behaved functions, in a certain technical sense) have all sorts of remarkable properties and make calculations easier in all kinds of other ways: the square root of -1 is just the beginning. (For example, you can express the trigonometric functions, sin and cos, with complex exponentials, which is incredibly useful in calculations.) Plus, in quantum mechanics (needed when you deal with sub-atomic particles), the "wave function" of a particle is intrinsically a complex-valued function: you cannot represent it as a real function. (You can of course represent it as two real functions with certain rules, which is the same thing as a complex function.)
Or else, first paste what you want to insert, then delete what you want to remove...
No, they don't get it.
If the question mark's good enough for Carl Sandburg, and a hundred other eminent authors, it's good enough for me. Perhaps you need an education in English.
And when you're done with that, maybe *you* should work on recognizing tongue-in-cheek comments.
Perhaps when you try to be humorous you should not say "someone mark this story as redundant". That only makes you look sound petulant.
And maybe *you* should read RTFA (the McKusick interview)? He says explicitly that the paper trail was lacking "until recently" (by which he means the switch to BitKeeper). Maybe you should also learn some respect for people like McKusick who've been hacking free Unix since back when Linus was a kid. Among other things, this guy pretty much invented the modern Unix "fast file system", from which ext2 takes a lot of ideas. More recently, he's been responsible for softupdates in UFS (gaining the speed benefits of async mounts without compromising filesystem integrity in case of crashes).
You can get the same from MS, free.
RTFA. (Wow, what a concept!) He covers that.
This is nonsense. Others have pointed out Oxford and Cambridge, and there are dozens of excellent universities in other first world countries; but I can think of at least three people offhand (and perhaps several more if I think a bit) whom I know personally, who did their Ph.D. (and all earlier studies) in India but landed tenure-track academic positions in science departments in good universities in the U.S.
As a recent New York Times article pointed out, the US no longer leads in number of scientific publications (the EU has overtaken it), and its share of Nobel prizes is dropping.
If you read those links, you'd know that Romila Thapar does not reject the idea that the Aryans came from the Iran region: she only rejects the idea that it was an invasion, calling it a "graduated migration" instead. It seems to me that calling them a separate race in today's India is a judgement call: they may have been at one time, but today you have Indians who look just like Europeans (including skin colour), Indians who look nothing at all like Europeans, and every fine shade in between.
Ah, now I know where you're coming from. You must feel traumatised that not only did the government that wanted to rewrite textbooks lose the election, but the minister personally responsible lost individually too.
I live in the northeast and $2.29 9/10 is ubiquitous. I think I've seen that style in California too, but couldn't swear to it.
You must be one of those funny foreigners. Americans don't have trouble with fractions, they have trouble with decimal digits. That's why fuel stations advertise "gas" (petrol, which is a liquid here same as everywher else) at $ 1.85 9/10 to a gallon (or whatever). I had to be told what that means: it means $ 1.859, ie the 9/10 means 9/10 of a cent, but if you wrote it as the decimal number 1.859 people would get confused about what it meant.
Parsis aren't Iranians, any more than other Indians are. They are Zoroastrians who have lived in India for centuries, but whose ancestors came from Persia (present-day Iran). If you care about that, the Vedic Aryans from whom today's Indians are descended, too, came from the Caspian Sea region near present-day Iran, a couple of millenia earlier.
BTW, I think the difference between MP3 and Vorbis at 128 kb/s is perfectly noticeable. MP3 sounds rather bad, vorbis sounds pretty good. And the point is precisely to tell which format sounds best, so you don't want to do 512 kb/s bitrate where all formats sound close to CD quality.
Of course, if that turns out to be inferior to any of the other formats, it would prove that something's wrong with the tests.
No, Ximian is duplicating Microsoft's work (reimplementing it from scratch), not porting Microsoft's GPL'd code. See my other reply to your post.
And that's their choice. It doesn't stop you from doing another port.
So? If it's a port of the Unix code, as opposed to a rewrite, it ought to have the same API or you're doing something wrong.
The way I look at it is, Windows is a non-free platform anyway, so people who complain that Qt is non-free on that platform are whining pointlessly. (By the way, a free Windows port does exist, under cygwin. This should be enough for those who just want to run their unixland free software under windows.)
Bullshit. Apparently nothing Troll Tech does is right. I'm sure you guys will find a way to whine if they released Qt into the public domain. The linux version of Qt is GPL'd and you can do whatever you like with it that you can do with other GPL'd software, including porting it to windows. Troll Tech hasn't done that for you, of course, and why should they?
Aah, I remember those. We had them in India too. Lovely machines. The other machines at school were the Tandy TRS-80, which nobody wanted to use. The IBM PC-AT already existed but was too expensive at the time.
And in some ways, the lack of simplicity of environments like Python is harmful too. Much of the fun of programming was learning how to do amazing things at a relatively low level. Now languages are so complex, and libraries so relied upon, I'd venture to say most programmers do not understand how their programs will run, that something as simple as a change of data structure might make their program run 10,000% faster. Hashing? Sorting? Let the interpreter do it. That stuff's "too hard".
Yes, like we all understand what a 10 PRINT "HELLO" actually does behind the scenes.
What's a hypocracy? A country run by hypocrites? ("hypocrats?") That seems not inappropriate...
...(*cough*xfree86*cough*thebsds*cough*)
Well, and what became of the zynot fork?
Theo de Raadt could fork NetBSD, and more recently Keith Packard and friends could fork XFree86 and Matt Dillon could fork FreeBSD, because these people are developing the system itself and have really innovative ideas on how to do it. A linux distro is basically a collection of other people's software, and the scope for innovation is limited. Gentoo has some genuine innovation in its portage system, which is why it became so successful, but I don't see what role zynot can fill in the linux landscape.