Share via


Programming F# – Official Cover

Edit 8/19: You might notice, the cover is no longer a jellyfish. While I know this is a slight disapointment for some - including myself - trust me when I say I have a plan to remedy this. Stay tuned!  

So as it turns out my petition for a kickass cover was ultimately unsuccessful. But the good news is that I’m not suck with something neither cute nor cuddly. Instead I got a Jellyfish, after spending some time thinking about it is pretty good. (Though certainly not as awesome as a hydra.)

Jellyfish Facts

  • Jellyfish can be found in every ocean. Therefore, in the time if trouble they can call on the nine pirate lords for help. Much like F# being able to use nine different programming paradigms and styles:
    • functional, imperative, object-oriented, metaprogramming, scripting, concurrent, reactive, declaritive, and awesome. (Yes, ‘awesome’ is a programming paradigm… and Haskell doesn’t support it.)
  • Jellyfish do not have a brain or central nervous system. Just like F#… umm… you don’t need a nervous system to write world-class applications?  Let me get back to you on this one…
  • The real reason I’m excited about having a Jellyfish on the cover is that they can Sting and Kill you. Like F#, Jellyfish are deadly.

So anyways, this October be on the lookout for Jellyfish Book!

Programming F#: Rough Cuts Version

Comments

  • Anonymous
    May 13, 2009
    PingBack from http://asp-net-hosting.simplynetdev.com/programming-f-%e2%80%93-official-cover/

  • Anonymous
    May 13, 2009
    Thank you for submitting this cool story - Trackback from DotNetShoutout

  • Anonymous
    May 13, 2009
    The comment has been removed

  • Anonymous
    May 14, 2009
    Your sly "awesome" comment is a bit immature and only hurts the F# community. I like both F# and haskell but it seems as though you don't quite comprehend the awesomeness of Haskell's type system.

  • Anonymous
    May 14, 2009
    I'm well aware of Haskell's awesome type system, but I needed a programming language to beat on. "C# doesn't have it" doesn't work because there are already a lot of things C# doesn't have that F# does - function values, algebraic data types, etc. "Java doesn't have it" doesn't work for more obvious reasons than C#. The same is true for PHP, C++, and others. Perhaps Python would have been a better choice; though I have empirical evidence that Python does in fact support 'awesome' http://www.xkcd.com/353/ I appreciate your comment. But I assure you that I in no way am trying to criticize Haskell.

  • Anonymous
    May 14, 2009
    Hey Chris, you mentioned meta-programming in F#. How does that work? I've been programming in Common Lisp lately so I've gained a new appreciation for it -- can F# compete or is Clisp the leatherback turtle? :P -Dan

  • Anonymous
    May 14, 2009
    I should point out, I mean can F#'s meta programming facilities compete with Common Lisp's macros. Don't want to start a language holy war. I read up a bit on the "F# quotation" business and it looks really awkward compared to Clisp's... still curious to read your take on it.

  • Anonymous
    May 14, 2009
    F# doesn't support CLisp macros, but rather enables metaprogramming through two mechanisms. Quotations Quotations allow you to write F# code and by getting the quoted form of that code reason about it. You can analyze the code, for example in Expert F# quotations are used to analyze floating point operations to calculate the loss of precision. Very cool. You can also use F# quotations to dynamically create code, for example in my book I have a sample where given a mathematical function quotations are used to generate the derivative of that function symbolically. Reflection The other way F# can do meta programming is through reflection - dynamically loading and invoking types, inspecting attributes, etc. These methods of 'metaprogramming' may be disappointing to some who are used to CLisp macros or even some of the mind-bending things you can do with C++ templates. However, F# is a very young language. We might be able to add more capabilities in the next release.  (Post Visual Studio 2010.)

  • Anonymous
    May 17, 2009
    Every time I look at the picture I go FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU Maybe that's the intention?

  • Anonymous
    May 17, 2009
    Yeah, the cover kind of grosses me out to look at.

  • Anonymous
    May 17, 2009
    Totally, it really grossed me out as well... but that's why I like it. If it were like a toad or cat or something it wouldn't be memorable. You see a giant, gangly jellyfish - that thing is burned into your brain :)

  • Anonymous
    May 17, 2009
    That's not a jellyfish. Any fool can see it's Chthulu, fresh from his aeons-long wait in R'lyeh. I leave it to the reader to draw his or her own conclusions about the editorial direction at O'Reilly...

  • Anonymous
    May 19, 2009
    How does F# compare to Mathematica?

  • Anonymous
    May 21, 2009
    The comment has been removed

  • Anonymous
    May 27, 2009
    So, actually, it was a serious question: is anyone familiar with both the programming environments of F# and Mathematica and, if so, what are the comparisons that come to mind?

  • Anonymous
    May 27, 2009
    I used Mathematica a bit in college but definitely don't consider myself an expert. From what I recall F# and Mathematica are two very different tools for solving very different problems. Mathematica can be though of as an interactive tool for exploring mathematical-style problems, which happens to support programming. F# is a general purpose programming language, that happens to support data exploration. While the FSI window feels in many ways like a limited Mathematica session, it doesn't support saving 'state'. That is if you introduce several values in an FSI session, you cannot save that session and load it at a later time like you can in Mathematica. However, while you can write applications that have UIs, connect to databases, do file IO etc in Mathematica F# provides a much better experience. Both at the library level - from .NET - and at the programming language level. (Since F# was 'built' for that.) If you want to do math / physics, stick with Mathematica. If you want to write programs, check out F#. Does that help any?

  • Anonymous
    May 28, 2009
    Yes indeed it does. Many thanks!

  • Anonymous
    June 03, 2009
    You did so well with that question, here is another. Are there any examples of using MSMQ from F#? I am trying to get my feet wet by doing something familiar, eventually ramping up to doing new things with the language.

  • Anonymous
    June 03, 2009
    Unfortunately, I haven't seen any MSMQ + F# examples out there, but it shouldn't be difficult to write one. But porting a C# MSMQ sample to F# should be a straight forward process.

  • Anonymous
    June 09, 2009
    Those wack invertebrates will sting you!  Old school!

  • Anonymous
    June 28, 2009
    That's clearly the FSM. Flying Spaghetti or F#, you be the judge.

  • Anonymous
    July 04, 2009
    I set this as my MSN picture, and my friends were perplexed as to what a musical note has to do with programming, and what programming has to do with jellyfish.