Blue Theme Orange Theme Green Theme Red Theme
 
Home | Forums | Videos | Photos | Downloads | Blogs | Interviews | Jobs | Beginners | Training
 | Consulting  
Submit an Article Submit a Blog 
 Login Close
User Id:
Password:
 
Forgot Password
Forgot Username
Why Register
 Jump to
Skip Navigation Links
TechnologyExpand Technology
WebsiteExpand Website
World Class ASP.NET Hosting – Click Here for 3 Months Free/NO Setup Fee!
 Resources  
Close
 Our Network  
Close
Search :       Advanced Search »
Home » F# » Getting Started With F#

Getting Started With F#

This is the first in a series of articles discussing the F# programming language. I cover how to get your dev environment set up to develop with this awesome NET Framework language

Author Rank:
Total page views :  10711
Total downloads : 
   Print Read/Post comments Post a comment  Similar Articles  
   Email to a friend  Bookmark  Author's other articles  
 
Become a Sponsor


I've spent the last week trying to get up to speed with F# and am very exicted about the language.

It's tough to change from thinking OOP (which I've been doing for years) to thinking functionally.   If you haven't taken the plunge, I would definitely recommend learning F# because not only is it a VERY useful tool to have for certain problems, it will make you a better C# coder especially since C# has become much more "functional" with the 3.5 release.

One of the really cool things is that if you have been working with C# for a while, all of the libraries you have learned will still be there once you get F# under your fingers.

I'll continue to write about the ways I come to understand different facets of F# coming from being a C# coder for years.  If you are with me, hold on to you hat... you are in for a real ride!

To get started, you have to download the compiler and get your environment set up.  I'm using VisualStudio2008, but you can use 2005 as well.  The main thing for now is to get the scripting host plug-in.

Download the compiler, scripting utility and VisualStudio plugin from http://research.microsoft.com/fsharp/release.aspx

NOTE: At the time this article was written I was using the the "1.9.3.14" release

After you download the F# compiler and install it you can make a new F# project.  The template is in the "Other Project Types" tree branch of the "New Project" dialog.

Once you create the project, we have to hook up the plugin, so go to Tools > Add-in Manager...

 

Then check the boxes on the "F# Interactive for Visual Studio" line.  If this hasn't shown up for you, you probably have a problem with the install.

Click "OK"

Now we are ready to get started....

From your solution explorer... right-click on the project and select Add > New Item...

We'll just be poking around for now and I'll probably get into all the file types another time.  For now, just choose "F# Source File"

And click on "Add" and you'll get a bunch of template code that is interesting to look through but was a little overwhelming for me at first.

So select all the code and delete it so we have a clean slate to start with.

On the first line of your code page type "3+4" select what you have typed and while holding down the [Alt] key hit the [Enter].   [Alt + Enter] will execute whatever code you have selected in your main code window in the interactive environment (the plug-in we added earlier).

This is the environment we'll be using from now on.  After all the introductory text in the F# interactive window, you should see

> val it : int = 7

Meaning the value of our expression has evaluated to 7 (the value of it is 7)

You can right-click anywhere in the F# interactive window and select "clear" to clean up the text.

So we have a clean slate to start with.

From now on, we'll just be using the F# interactive window just to get familiar with the language.

Whenever you type a command into the F# interactive window, you need to terminate it with two semi-colons ";;"

Let's look at the simplest parts of the language right now. Every time you type a command with a terminating ";;" in the interactive window, you will get a response back which makes it an ideal environment for playing with the language when getting started.

If you type in

3;;

You will get the type of the thing you entered and the value of it,

3;;
val it : int = 3

So we can see we have an integer (int) type with a value of 3.

If you type in "3.0;;" you see we have a float

3.0;;
val it : float = 3.0

If you type in "3+4;;" you see we have another int

3+4;;
val it : int = 7

and if you type in "3+4.0;;" what do you think we get?

That's right... an error. (Exciting, isn't it?)

3+4.0;;
>   3+4.0;;
  --^^^^
 
stdin(6,2): error: FS0001: This expression has type
      float
but is here used with type
      int
stopped due to error

This is because F# is strongly typed and our types on both sides of the ‘+' sign have to match.

Let's look at the plus sign a little closer.  Type in "(+);;"

(+);;
val it : (int -> int -> int) = <fun:it@8>

Ok... now it starts to get interesting.  What the heck does that mean?

Basically we have a new "type" which is a function.  The value of ‘+' is actually a function that takes two integers and outputs an integer which gives it a type of "int -> int -> int".  The far right hand side of the "->" chain is the output, so if we were to input two integers A and B and get a result C this is how it would line up with our function syntax:

Since we are dealing with a functional language, functions are really first-class variables, no different from integers, floats, doubles, or strings.

Anyways... you get the idea. Using F# interactive to explore is a great way get a feel of the language. 

I'll be back with more later and start to dive a bit deeper.   

Until next time,
happy coding


Login to add your contents and source code to this article
 About the author
 
Matthew Cochran
Looking for C# Consulting?
C# Consulting is founded in 2002 by the founders of C# Corner. Unlike a traditional consulting company, our consultants are well-known experts in .NET and many of them are MVPs, authors, and trainers. We specialize in Microsoft .NET development and utilize Agile Development and Extreme Programming practices to provide fast pace quick turnaround results. Our software development model is a mix of Agile Development, traditional SDLC, and Waterfall models.
Click here to learn more about C# Consulting.
 
Introducing MaxV - one click. infinite control. Hyper-V Hosting from MaximumASP.
Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Dynamic PDF
ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
Go.NET
Build custom interactive diagrams, network, workflow editors, flowcharts, or software design tools. Includes many predefined kinds of nodes, links, and basic shapes. Supports layers, scrolling, zooming, selection, drag-and-drop, clipboard, in-place editing, tooltips, grids, printing, overview window, palette. 100% implemented in C# as a managed .NET Control. Document/View/Tool architecture with many properties&events. Optional automatic layout.
Dundas Software
Dundas Chart for .NET is the most advanced .NET charting package available today.  With an extremely complete feature set, elegant architecture and easy implementation, Dundas Chart can quickly add advanced Charting functionality to enhance and transform ASP.NET and Windows Forms applications.  Whether you are implementing charting into internal projects, or building applications for clients, Dundas Chart offers advanced technology and advanced results to get the most out of data.
Clickatell's SMS Gateway
Clickatell's Developer Solutions allow you to SMS enable any website or application via a range of API's. Learn More about our API connections.
Free access to .NET Memory Management video
Everything you need to know about Garbage Collection, Temporary Objects, Fragmentation, Finalization and common causes of memory leaks in .NET. Watch the video here.
Microsoft Visual Studio 2010 Professional
Microsoft Visual Studio 2010 Professional will launch on April 12, but you can beat the rush and secure your copy today by pre-ordering at the affordable estimated retail price of $549 (US). Pre-order now.
Nevron Chart for .NET 2010.1 Now Available
The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
Developer-Ready ASP.NET 2.0 Web Hosting with 3 MONTHS FREE
Now supporting .NET 3.0 Framework with Windows Workflow Foundation, Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF), windows CardSpace (WCS)! Providing more flexibility for Developers with Web Services Support and a User/Permission Manger. Also supporting MS SQL 2005/2000 with Real-Time Backups, FREE Automated Attach .MDF Tool, FREE SQL Restore and Shrink SQL DB Tools, and SQL
 
   Print Read/Post comments Post a comment  Similar Articles  
   Email to a friend  Bookmark  Author's other articles  
 
 Post a Feedback, Comment, or Question about this article
Subject:  
Comment:  
Become a Sponsor
 Comments

 Hosted by MaximumASP  |  Found a broken link?  |  Contact Us  |  Terms & conditions  |  Privacy Policy  |  Site Map  |  Suggest an Idea  |  Media Kit
Current Version: 5.2009.6.2
 © 2010  contents copyright of their authors. Rest everything copyright Mindcracker. All rights reserved.