- Paperback: 500 pages
- Publisher: Manning Publications; 1 edition (January 25, 2010)
- Language: English
- ISBN-10: 1933988924
- ISBN-13: 978-1933988924
- Product Dimensions: 7.4 x 1.1 x 9.2 inches
- Shipping Weight: 2.1 pounds (View shipping rates and policies)
- Average Customer Review: 26 customer reviews
- Amazon Best Sellers Rank: #632,937 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Real-World Functional Programming: With Examples in F# and C# 1st Edition
Use the Amazon App to scan ISBNs and compare prices.
"Enlightenment Now: The Case for Reason, Science, Humanism, and Progress"
Is the world really falling apart? Is the ideal of progress obsolete? Cognitive scientist and public intellectual Steven Pinker urges us to step back from the gory headlines and prophecies of doom, and instead, follow the data: In seventy-five jaw-dropping graphs, Pinker shows that life, health, prosperity, safety, peace, knowledge, and happiness are on the rise. Learn more
Frequently bought together
Customers who bought this item also bought
Customers who viewed this item also viewed
About the Author
Tomas Petricek discovered functional programming as a graduate student atCharles University in Prague. He has been a Microsoft C# MVP since 2004 andis one of the most active members in the F# community. In addition to his workwith F#, he has been using C# 3.0 in a functional way since the early previews in2005. He interned with the F# team at Microsoft Research, and he has developeda client/server web framework for F# called F# WebTools. His articles on functionalprogramming in .NET and various other topics can be found at his web sitetomasp.net.
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
Since F# lives in .Net, and .Net is inherently object-oriented; it makes sense to understand something of the mapping that takes place behind the scenes when F# code is mapped into the .Net world.
Many of the interesting new features introduced into C# are actually hand-me-downs from FP (functional programming). This includes generics, LINQ, anonymous methods, lambdas, type inference, etc.. Since many programmers need to use C# in the work-a-day world, it makes sense to understand the functional elements of C# by seeing them in a functional language like F#, where they can be seen in their purest (least hobbled) state. Once these concepts are understood, it is then much easier to understand how to wield these tools effectively in C#.
That said, there are also limits to how much functional programming can be done in C# (and how effectively it can be accomplished). This book clearly demarcates the boundaries of what is (and isn't) feasible in C# vis-à-vis functional programming.
One of the things I liked best about this book is the discussion on why functional programming makes code easier to read, write, and verify. This discussion does not appeal to what might be (for many) inaccessible theory (i.e. denotational semantics, category theory, etc.). Instead it is demonstrated in amazingly simple, straightforward ways! This discussion is very effective.
Another facet of this book's approach that I applaud is the demonstration of lambda calculus. Why would a practical book dabble in theory? There's actually a very pragmatic payoff in doing this: functional programming has a lot of underpinnings in lambda calculus. Those that have been exposed to lambda calculus will feel right at home in F#. Those that haven't are likely to feel more "culture shock" when being exposed to concepts like currying and lazy evaluation. Functional programming really does represent a substantially different way of thinking about computation.
This book also features an excellent discussion about design patterns; comparing and contrasting how they are implemented in OOP (object-oriented programming) versus FP. Some classic design patterns in OOP essentially come for free in FP (e.g. the "visitor" pattern).
What has really struck a nerve in me is how much greater appreciation I have for the weaknesses that C#/OOP can present. For example, the author's discussion of side effects and mutability (OOP programmers accept this an move on), were placed in a new (and insidious) perspective for me. Have any of you studied the many functional influences grafted into the C# language (e.g., generic delegates, LINQ) and thought, "There's some larger perspective here I'm not being told?" (Almost like a joke you're not being let in on?) This book gives you that larger perspective. I have already had many moments of revelation.
Will this book compel me to abandon C#? Will it convince me to take up F#? I really don't know, and I don't care. Fundamentally, this book is giving me a fresh perspective into C#, and the book is well worth the price of admission right there. To the extent that I'm also learning functional programming concepts, all the better!
I also offer my thanks to Manning, who has put together a mind-blowing collection of C# titles. Thanks so much!
[Full disclosure: I'm a non-professional, enthusiast programmer (C#/WPF), so qualify my opinion with that perspective.]
I would like to recommend it to any .Net developer like me whom wants to discover and learn functional programming without much compromise.
This is not a book to teach you F#, it'll explain a lot and you'll be able to use some F#, but the main focus is the FUNCTIONAL PROGRAMMING, which is awesome.
Very well written, objective and touched the most important concepts of functional programming (closures, partial application, explained BIND to me, 1st order functions, tail recursion).
If you like what you read you can go further. Best intro I have found to .Net devs.
I'll finish saying, i cannot remember my old mindset before this book.
Most recent customer reviews
The book is well organized, clear and really help you understand Functional Programming...Read more