Inside Microsoft's New F# Language 618
robyn217 writes "There's a new language being formed in the bowels of Microsoft. Recently I got word that the language F# (pronounced F Sharp) is nearing workable stages at Microsoft Research. So, I went in for a look-see. What I found was an interesting blend of imperative (Java, C#) and functional languages(it's ML-based, too!). It looks pretty enticing to me from a computer science perspective, but I'm not sure it would fly in the professional market. I can see the ease of development that a language loosely based on ML would bring, but I can't see coders switching over in droves since it's a tough learning curve." Our previous story on F#.
That's how I feel about most Microsoft languages (Score:5, Funny)
F#ing VB.
F#ing Win32 API
# == Hash (Score:5, Funny)
F#ism is finally back in F#ion.
I guess this means all Microsoft programmers are F#ists.
Oh well, they're only in it for the C# anyway.
Re:That's how I feel about most Microsoft language (Score:3, Insightful)
Microsoft's next language (Score:4, Funny)
Oh wait, their lawyers already use it. Must be past beta then.
Re:That's how I feel about most Microsoft language (Score:3, Insightful)
Oh, wait...
It's OCaml for the .NET CLR... (Score:4, Informative)
Re:It's OCaml for the .NET CLR... (Score:4, Insightful)
Yes, but the problem with most ML implementations is that they are academic toy languages. You can't do anything useful with them because you can't connect them to real I/O and if you can you can't distribute the code as noone else has the environment.
Adding the dotNET classes to ML means you have a real programming environment for a functional language.
Re:It's OCaml for the .NET CLR... (Score:4, Informative)
In all honesty, what are you talking about? You can pick up OCaml right now and I/O is just fine. Period.
if you can you can't distribute the code as noone else has the environment
So everyone has to use C forever and ever?
Re:It's OCaml for the .NET CLR... (Score:5, Insightful)
One way to overcome that inertia is to provide bindings for your niche language against a major runtime - like compiling it to Java bytecode, or, in this case, IL.
Now, .NET has it's own inertia to overcome, but because it's Microsofts baby, it has alot of advantages that the language/runtime that Joe Programmer makes doesn't have.
This is interesting for a couple other reasons - it's been reported before that it should be easy to port functional languages to .NET - and that it's apparently hard to have them compile to Java (I don't know crap about functional languages, I'm just parroting here), so here's the proof of that. Also, like it or not, .NET is very big and is being very heavily pushed by the single most influential company in IT - and if you're a fan of functional languages, I don't see how this is a loss for you or why you're bitter about it.
Re:It's OCaml for the .NET CLR... (Score:3, Interesting)
Your 90% list is probably more like Java, C/C++, Perl and VB...
Re:It's OCaml for the .NET CLR... (Score:3, Informative)
Yeah, yeah and you could write programs in ANSI Pascal, problem was you could not do it without a lot of hassle.
Under dotNET there are no second class languages (well apart from C++), they all can access the same runtime. That is a major advance. OK you could write to the Java bytecode but anything other than Java will always be a second class language in that environment.
Re:It's OCaml for the .NET CLR... (Score:4, Interesting)
This used to be true ten years ago, but you are way out of date. OCaml works great for I/O. If available Debian packages are any measure, OCaml has had quite the active and growing developer base too.
The major semantic hurdles for even (mostly-)pure functional languages (c.f. Haskell) were solved many years ago. (Look up the papers of John Launchbury, Simon Peyton-Jones, and others on State Transformers in Haskell. See also papers about how the use of the 'monad' from category theory introduced an incredibly powerful tool into languages such as Haskell). The Fox project at CMU used Standard ML to create a nifty layered TCP/IP stack and HTTP sever back in the mid 90's.
The various current functional languages may have issues, social and/or technical, w.r.t. mass adoption... but the I/O problem definitely isn't one of them anymore.
Re:It's OCaml for the .NET CLR... (Score:4, Informative)
--snip--
F# seems to be based very closely upon ocaml, which was the language that I used for day to day work before Java.
I think ocaml is a fantastic language, although, like everything, it had a few significant problems five years ago:
- obscure [ F# could fix this ]
- not as many libraries as a mainstream language [ F# could fix this. ]
- not great module support - if module A depends on B, then B cannot depend on A.
Disclaimer: everything I say comes from personal, but old, experience, and a cursory look at the F# web site.
Interesting properties of ocaml:
1) Functions are first class objects. E.g..
let add x y = x+y;
let add3 = add 3;
print (add3 4);
-> 7
2) Polymorphism works well. So you could define a function that takes an array of objects x and a function that maps x to y, and produce an array of objects y. Eg
let a = [| 5,6,7 |]
print (Array.map add3 a)
-> [| 8,9,10 |]
3) Type checking is strong, compile time, and usually implicit. All types in the examples above are deduced correctly. Disadvantage: You can't have operator overloading, even for the plus sign... so + means integer addition, and +. means double addition.
4) You can return multiple values from a function
let cis t = (cos t,sin t);
let (ct,st) = cis (PI
print ct;
-> 0.0
5) Variables are final by default, but can explicitly be made not-final. There are also control structures that make many things that one does in Java by changing variables simpler. This can make debugging simpler, but takes a while to get used to.
6) There is some very powerful pattern matching code - imagine a more powerful case where you could say
int x;
Point y
switch (x,y) {
case 7,null: do this
case 4,Point(3,?) : do that
case x,Point(y,x) : print y
default:
}
[ Actually, there is no direct concept of null, but that is not the point. ]
I particularly liked ocaml as it allowed imperative features, had GC and exceptions, and had a very good compiler that produced fast code. I was very impressed by the French academic group that made it and supported it.
[ Note examples are not valid ocaml - they are ocaml features with a javaified syntax to make them easier to explain, and besides, I have not used the language for years. ]
The current F# implementation does not sound very efficient for a variety of reasons. It is also not nicely polymorphic in the same way that ocaml is. This defeats a lot of the point of it. They need support for generics in the VM for these to work well. There is a different group at MS research working on this - I would be delighted if both the F# project and the generics project make it into the mainstream.
It is not clear how well the ML view of types will match up with the C# view of types. ML programming feels different to Java programming, and this could make the
--snip--
Obviously (Score:2, Funny)
What a softball on a Slashdot story. I bet
21 joke made with reference to this phrase
Let's watch and see
Re:Obviously (Score:2)
It is alright so far, thought it is only 8:00AM central right now. Thanks for asking though, how is your day?
F? (Score:2, Funny)
F-sharp?
F-UD?
Sheesh. Don't we have enough languages already? I thought C# was the absolute savior of the MS-centric tech world.
Just learn how to program in one language before you hit another one.
Re:F? (Score:5, Interesting)
Re:F? (Score:2)
Python has its functions as objects, as well as some map functions. C++ has functors. Java has reflection, etc, etc.
Re:F? (Score:2)
Re:F? (Score:5, Interesting)
If you've never done functional programming, it a different animal from imperitive programming, and if you do know python, it borrows a number of things from FP, not just lambdas. Look at python's map, apply, and reduce functions, along with list comprehensions (taken from Haskell, which I really need to learn). Although, it should be noted that python's recursion really isn't optimized for FP, but you can still do quite a few things that a functional programmer would be at home with.
It is octothorp !! (Score:2)
Re:F? (Score:2)
F-hash (Score:3, Funny)
hash definitions [wordreference.com]
Of course when ever I see F# and Micro$oft together I read F#$%
The description reads like F# is OCaml on hash ie dumbed down.
Re:F-hash (Score:3, Funny)
For some reason, British Telecom operators refer to the # key as "the square key". Well on my phone the two upright lines are not perpendicular to the two horizontal lines, so it's more of a rhombus than a square, but when I explain that to the ops, they hang up...
Re:F? (Score:3, Funny)
I don't get how a # can be called a pound. What do you guys call £ then?
Re:F? (Score:5, Funny)
Yes !!! (Score:5, Funny)
Figures... (Score:4, Funny)
Re:Figures... (Score:2, Insightful)
This isn't all apparently... (Score:5, Interesting)
He wouldn't confirm whether they would have the X# naming convention
Re:This isn't all apparently... (Score:5, Interesting)
It looks like Microsoft is going to provide me a dream palette of languages to pick from. Maybe this will help make things like Design By Contract a little more mainstream?
OTOH, there is a right way and a wrong way of approaching this. In the example of DBC, MS would do good by providing an Eiffel implementation for their CLR. In the example of F#, MS would be more correct to introduce Scheme and LISP dialects rather than invent their own.
Not because these languages are perfect, but because developers are already familiar with these environments. We can't continue to "invent" new ways of doing things, the software industry has been introducing new standards at such an astonishing rate that we may jeopardize our ability to maintain legacy systems that are generationally distanced. Systems that were maintained 10 or 20 years ago rely on technologies that a recent college grad will be entirely unfamiliar with.
Very few industries have this kind of halflife, let's not make it worse with [Aa-Zz]#.
Re:This isn't all apparently... (Score:4, Informative)
Bertrand Meyer is one of the biggest .NET boosters on the planet, and he already oversaw a port of Eiffel to .NET [eiffel.com]. This was available like a year ago.
There's also a Scheme compiler, called Hotdog [nwu.edu], with a .NET backend:
Keep in mind that F# is but one of MANY language research projects going on at Microsoft Research, and there are many more going on at other sites that Microsoft is tangentially involved with.
Re:This isn't all apparently... (Score:4, Funny)
F sharp or F hash? (Score:4, Funny)
Heh
In the UK we call that square thingy a hash
Do you think C hash has done well here :-P
Will F hash do any better?
(Or does "making a hash of it" get lost in the translation?)
Re:F sharp or F hash? (Score:2)
It's actually called an "octothorpe". Search for the earliest C# discussions on /. ... various linguist geeks babbled about this endlessly, even getting into minutiae about a hash being right-angle lines but a sharp note being angular, etc etc.
No, I'm not a language geek so yes, it was mostly a boring conversation. :)
Yes, I can't wait for G# (Score:3, Funny)
'Ai! ai!' wailed Legolas. 'A Billrog! A Billrog is come!'
We have been working with it for a while. (Score:5, Funny)
Gee Flat (Score:5, Funny)
But, an F# is the same as a Gb (G flat) which has as 6 flats.
Now the C# scale has 7 sharps, but it's the same as a Db (D flat) which only has 5 flats.
Most people think (D flat) instead of C#.
F# is a very bright scale. It sounds very nice on an Alto Saxophone, whereas the C# scale is a little more moody, depressed.
Maybe Microsoft is trying to back off the use of C#.
Re:Gee Flat (Score:3, Funny)
Re:Gee Flat (Score:4, Insightful)
And besides, everyone knows that D minor is the saddest of all keys [roadie.net].
Re:Gee Flat (Score:2)
Re:Gee Flat (Score:2)
Not precisely true, at least on keyboard instruments. A major third plus a major third plus a major fourth should yield an ocatave, but the math doesn't work out that way. So compromises must be made, which is done by tempering [uk-piano.org] the piano. Due to the tempering, intervals do change slightly from key to key.
In wind and string instruments, the player has more control of the pitch of each note, but when playing in ensembles, an effort is generally
Re:Gee Flat (Score:2)
Actually, it's apparent that Microsoft is trying to put on some kind of a concert based on the names of programming languages.
They're trying to prevent stuff like this! [infoworld.com]
Re:Gee Flat (Score:4, Funny)
Re:Gee Flat (Score:3, Insightful)
Most people think of the note as C# because it is the third sharp added as you move up the circle of fifths. The A major scale includes a C#. D flat, on the other hand, does not arrive until 4 flats, in the A flat major scale. As a string player, I can tell you we play in multiple sharps far more than multiple flats (Who ever heard of a violin concerto in A flat?).
Re:Gee Flat (Score:3, Informative)
They are in fact the same note. Granted, no string player hits any note dead-on, so maybe some tend to hit a pitch a little higher or lower when going up or down a scale, but it has nothing to do with the notes actually being different.
Could be useful? (Score:5, Interesting)
Re:Could be useful? (Score:3, Insightful)
Re:Could be useful? (Score:5, Interesting)
Funny quote of the day (Score:5, Interesting)
Map then applies whatever function we pass in to every member in the array (called a list in functional programming).
So, all you functional programmers, remember... a list is just another name for an array :-P
Seriously, though... I was discussing the future of programming languages with some friends and we agreed that a real step forward would be to provide features such as higher order functions in a mainstream language... could this be it?
If so then it's a little worrying... I'd rather not see any revolutionary languages come out of MS, if at all possible...
(Cambridge's Computer Science degree teaches ML followed by Java in the first year... would they switch to teaching just F# if it became popular?)
Re:Funny quote of the day (Score:2)
Re:Funny quote of the day (Score:4, Insightful)
If you consider Python to be mainstream, then there's already a mainstream language that supports both functional programming and advanced types like lists and associative arrays (aka dictionaries).
I stumbled on to Python about a year ago and have been so impressed by it that it's becoming my languange of choice for new development.
Check Python out. Really
Re:Funny quote of the day (Score:3, Interesting)
Anywho, Perl has more users than Python, has been around for longer and boasts the same
Re:Funny quote of the day (Score:3, Interesting)
Perl has higher order functions, and is reasonably 'mainstream'. So do Python and Tcl and most other scripting languages that let you pass around pointers to functions. But without typechecking it can get a bit error-prone to do the kind of really complex stuff you might do in Haskell or ML.
Re:Funny quote of the day (Score:3, Informative)
Re:Funny quote of the day (Score:4, Insightful)
In Lisp, I could take the contents of a Web form, for instance, and use that to make a function that would encode, for instance, your preferences in music, then use that newly-formed function to rate MP3's as your are browsing.
(defun make-rating-function (web-form-contents)
(lambda (music)
(+ (* (country-rating web-form-contents) (country-genre music))
(* (rock-rating web-form-contents) (rock-genre music))
(* (classical-rating web-form-contents) (classical-genre music)))))
Then, that rating function can be stored in a variable for later use on the music.
You could implement this in C, by storing the array of three values, but it is much less flexible. My make-rating-function could return one out of any number of functions, which take different information out of the web-form-contents. For instance, classical music listeners have very different ways of choosing music, so you would give them a music-rating-function that looked at composers more than performers, while rock fans would look more at bands that groups of people tend to rate similarly.
(defun make-rating-function (web-form-contents)
(if (classical-music-lover web-form-contents)
(make-classical-rating web-form-contents)
(if (rock-music-lover web-form-contents)
(make-rock-rating web-form-contents)
where make-rock-rating is written as above.
Once you make the choice of functions depend on the data, it becomes cumbersome to do in C. It's like doing polymorphism in C: you need to start making case statements all over the place to check what kind of customer you are dealing with. Lisp makes this kind of stuff easy to express---dealing with functions is as easy as dealing with integers and floats.
Re:Funny quote of the day (Score:3, Insightful)
However, in Lisp, I can *redefine* functions continuously, and previous references to those functions remain intact.
At any point, in my web server example, I could change the definition of any one of the generating functions, *as* the program is running, without stopping and recompiling the whole program. This kind of dynamism is pervasive throughout th
I like the idea (Score:5, Informative)
Re:I like the idea (Score:3, Interesting)
It's much in the style of ML, but with ideas from many other languages thrown in.
And it definitely isn't an "academic" language... it's developed and used by Ericsson
to drive telecommunications systems which have to handle a huge load, and cant be allowed to crash.
Luckily, it's now open source (sorta), and the basic Erlang OTP package
contains about as many side features as Python does
It's inherently parallel (a single program can easily distribute itself acr
Related to Harlequin ML (Score:4, Interesting)
Microsoft Attempt to Own the RIAA (Score:5, Funny)
The have: C#,F#
Left: A,A#,B,C,D,D#,E,F,G,G#
Can't wait for the other 10 programming languages
Re:Microsoft Attempt to Own the RIAA (Score:2)
Re:Microsoft Attempt to Own the RIAA (Score:2, Funny)
A, B and C have been already been used for programmin languages, so this leaves out only 7 available names.
OTOH, they can still use flats, and if they pretend that the equal temperament is not used at MS (today, different tunings are used also to perform music of the past in an authentic way) then C# and
Filters (Score:2, Insightful)
And, you know, I've been working for a very large financial institution for 2.5 years. I've seen no sign of C# anywhere. Going to the programming racks at Borders would make you think differently. I honestly think there's more C# books out there n
Re:Filters (Score:3, Informative)
First of all, I've been working in a probably-much-larger (one of the largest) financial institutions for six years, and I see C# all over the place. So much for anecdotes.
Second, I've been working for various large companies since Internet-based e-mail started, and I've never seen anything that would filter F#. So much for speculation.
Now if I just had some moderator points. :P :)
Re:Filters (Score:3, Informative)
We have a common Tech Library (in San Fran) where you can check out books. I see 3 C# books in the online listing. I imagine some division somewhere is toying with it. Everyone I know about in the company is doing C/C++/Perl/Java.
I was a sysadmin for a few years. I've seen several instances where f
Why I like Java... (Score:3, Insightful)
I know, AWT->SWING and a bunch of other examples, but a CORE PART of Java does not change. It remains the same as much as possible, in regards to the API.
MS goes ahead and changes things completely every few years. Java, for the most part, does NOT require tons of relearning. The API's are there if you need them, but a majority of them do not change. They might get "cleaned up" a bit, or a few deprecated here or there, or in my opinion a few too many may be created to do the same task, but if you could knock up a Java prog years back, it's the same way today for the most part. SIMPLE.
Re:Why I like C... (Score:3, Insightful)
That is one of the most ridiculous things I've ever read. What are Perl, Python, php and Java implemented in? C! If C wasn't portable enough to run on all the platforms those languages do, those language's runtimes wouldn't compile on those platforms!
Find me a platform that runs any of those languages that doesn't also have a gcc port that allows you to write port
Hmmm... (Score:2)
Perl (Score:2)
Gee C# was so flawed that its already superceded (Score:2, Interesting)
The first is for the silicon scrapers. Guys who write device drivers and who are amply served by assembler (for the real propeller-head bit-twiddlers) and and by C (Not C++, C) There is no sense of reality at this level.
The second level is for the tool makers. The guys who bring you APIs and services like TCP/IP, Tuxedo, database managers, OpenGL, compilers, browsers and the like. Those folks use C++ and Java. Its a mistake to think that you can make an application in
Re:Gee C# was so flawed that its already supercede (Score:5, Funny)
Christ, if that's simple, I'd hate to hear you describe complicated.
After reading this article... (Score:5, Funny)
Re:After reading this article... (Score:5, Funny)
Caml (Score:2, Informative)
Brilliant naming (Score:2)
Haskell next? (Score:5, Informative)
Until today, both ML and Haskell had a common problem: a lack of commercial and real world interest in it and therefore a lack of real-world libraries and supporting frameworks. But now things are going to be changed.
First Ericson came with Erlang, an excelent essence of FP, LP, scripting and networking. Now M$ (I know - evil, but anyway) came with F# bringing OCaml [ocaml.org] to the real world saving from being forgotten somewhere in Inria.
What next? I think that would be Haskell, the language even more suprior to ML, with already OOP [chalmers.se], Parallel [hw.ac.uk] and Cuncurrent [hw.ac.uk] extensions. Also I like its Functional-Logical dialect - Curry [uni-kiel.de]. But who will bring it to the real world? IBM?
Re:Haskell next? (Score:5, Informative)
There's some interesting papers by him over here [microsoft.com].
Re:Haskell next? (Score:4, Informative)
Haskell is most certainly not dynamically typed. Like ML, it is a statically typed language with a compiler that does type inference at compile type. You don't usually have to manually declare types but you still have to get them right at compile time. There are some differences between ML's type system and Haskell's but they're basically the same animal.
ML and Haskell differ mainly in that ML is an eager language, which evaluates all arguments to functions before evaluating the function. Haskell is a lazy language which delays evalution of function arguments until their values are needed.
Erlang, on the other hand is dynamically typed.
The process now understood (Score:5, Funny)
This may help explain Microsofts process for developing new software. How are things "formed in the bowels" anyway? A simple understanding is that good stuff is essentially chewed to pieces and then deconstructed in an acidic bath. Once the good stuff reaches the bowels then an attempt is made to remove everything that is of value. Once that has been accomplished we are, I suppose, left with a Microsoft product that is ready to (careful here now) ship (Whew! Now that was one major Freudian slip just waiting to happen....).
Imperative and functional lanuages (Score:5, Interesting)
Functional languages are amazing creatures. They're really strange to work in. They take a serious change of mindset. They can be very slow to execute. I/O is really odd when side effects are forbidden.
They have astounding benefits, too. The localization of effect means that they're really easy to debug. The lack of side effects means that some really enormous optimizations are open, which is crucial since the naive execution is slow.
Once you throw in any imperative aspects at all, these effects go right out the window. Even a single imperative statement potentially interferes with every optimization. ("Can I eliminate this execution branch? It seems like a redundant call but it might branch to that imperative statement.")
I think that this got in the way of ML. It can be easy to want to add just a tiny imperative element to make something easier, but that small crack opened up a lot of headaches for me. I greatly preferred the purity of Haskell.
I haven't read the F# spec, so I may be overreacting from the notoriously inaccurate Slashdot summary. That's next.
Strange then (Score:3, Interesting)
Data here.
Functional Programming (Score:5, Interesting)
Functional Programming is a Very Good Thing to learn.
After being interested in functional programming languages for a while I had the opportunity to spend some time reviewing a textbook using ML. I figured that was the time to learn the language. Got frustrated quickly, I got several ML systems (including the one mentioned in the book) and no two worked alike. Hell, the syntax varies enough that there are ML dialects that look like completely different languages.
A while later I decided that perhaps it was time to spend some energy seriously learning Haskell. I got and installed Hugs (Haskell.org [haskell.org] is a wonderful resource with several Haskell systems listed, tutorials, documentation, libraries and so on). Hugs implemented pretty much all of the Haskell described in the manual I found and the tutorials. (Today, I'd probably use the interactive GHC.)
It took a while, some dedication and a lot of grumbling to figure out how things worked and I'm still learning bits and pieces of the language and associated libraries and stuff.
Now Haskell is one of my favorite languages and I want to use functional tools (higher order functions, laziness, and so on) in every language I use. I'd say that Haskell changed my ideas about programming, my approach to problems, and my toolset both deeply and widely - and for the better. Probably as deep a shift in technology and technique for me as OOP (I started programming in Fortran, APL, Algol...) - but then OOP just always seemed Right to me.
Part of what made the learning process so effective was that Haskell makes it very hard to have side effects - so where in ML the books/tutorials often introduce mechanisms for building variable that work more or less like those in C - in Haskell this is very difficult.
So, while F# may be an interesting language, if you want to learn a new language, try Haskell. You may have to be obstinate. And if it works with you as it did me, it will drive you crazy until it clicks (and I remember exactly the problem that did it) and then you'll just kind do one of those quiet awestruck "wow"s and watch your view of programming change.
Haskell isn't the right language for everything. I also use Java, C and Python (and a few others) often - but for lots of problems, for doing a quick model of something to try it out, for just helping your mind think about a problem a bit differently ... Haskell is great.
But remember - you may well have to be stubborn about persisting till it clicks.
And on a related note...
Does anyone know if anything ever came out of the development of the functional scripting language "Sheep" for the amiga?
Nickle (Score:3, Interesting)
Want an "interesting mix of imperative and functional features" in a language any C/C++/Java programmer can start working with immediately? Try Nickle [nickle.org].
Undermining search engines? (Score:3, Interesting)
I just did some tests with C# and less than half the search engines I looked at actually used the full string for the query. The rest dropped the # as punctuation and gave me any generic "C" results it could find.
Was there any thought put into this? Have we heard any statements or interviews from Microsoft about this?
Personally, with C, C++, and C# all looking identical to some search engines, I think they are going to make life rough for developers trying to look up documents/tips/errors/FAQs about their respective languages...
Re:Well... (Score:5, Insightful)
F# will be learned by people when managers and not university lecturers decide that it is something that coders need to learn or even when coders decide it's necessary for something.
Stop thinking that the world is out to make you use MS products no matter what. The businesses that do the employment and the people who should be advising them (cough -you- cough) are the people who make those decisions.
Anyone learning Computer Science should in no way be gearing themselves with any particular product
Any university offering courses in computer science is doing students a dis-service if it sends them out of the institution without an MS-centric, Linux-centric or any other square peg solution to fit any hole they come across.
I always thought the aim of education and particularly any discipline that considers itself a science was to teach skills and thinking which could be applied across the field so the graduates would find themselves able to adapt to any language or equipment that they found it necessary to use.
Re:Well... (Score:2)
You mean with not without right?
Back in the day they taught methodology and standard languages, namely Assembly, C, Cobol, and Pascal
Re:Well... (Score:2, Insightful)
You'll lose your job if you only know a handful of trendy technologies and nothing more. If you know some languages that are passsing into the "legacy" category,
Re:What will they do? (Score:2, Funny)
Re:What will they do? (Score:5, Funny)
Re:What will they do? (Score:5, Funny)
Re:What will they do? (Score:5, Funny)
In newer versions of
Not to mention music scales.. (Score:2)
Re:What will they do? (Score:2, Funny)
Re:Wrong... you couldn't.... (Score:2)
Get over it. He's just trying to convey the idea, not show you a working example of a piece of code in a particular language.
Re:Wrong... you couldn't.... (Score:2)
Anyway, I definately enjoy reading critical comments from people so knowledgable(to read: arrogant) that they don't bother reading their own quotations.
Re:Wrong... you couldn't.... (Score:5, Insightful)
map (fun x -> x*x) list
Re:Aside from all the obvious jokes (Score:5, Informative)
Re:first post (Score:2, Informative)
Not really. F# and g form a dissonance, called a minor second. It happens though that I like g-f#, a major seventh. But maybe a listen to too much contemporary music.
The best man (Score:3, Insightful)
I certainly wouldn't hire an insecure prick for any job. Especially if he was so insecure he was grasping for straws as to why he wasn't succeeding. You think because someone doesn't speak english without an accent they're stupid? How's your hindi?