Learning F#
I heard about the new functional programming language, F#, recently by listening to Hanselminutes and .NET Rocks podcasts. It sounded interesting, and I am making a point of trying to broaden my exposure to multiple languages, so I bought a book, Foundations of F# by Apress, read a lot of it, and began to hatch a plan to write a new bingo program in F# for Silverlight and see if I can get it hosted on Silverstream.com.
For step one, I chose to learn how to work with arrays in F# so that I can replace the functionality I used SQL Server 2005 Express for in my first Bingo program. I also know that I need to work with random numbers, so my first project was to fill an array with truly random numbers.
Here's what I came up with in F# to work with the .NET cryptography class and a byte array:
#light
// open references to .NET namespaces used in the following code.
open System
open System.IO
open System.Text
open System.Security.Cryptography
(*
Initialize an RNGCryptoServiceProvider,which is a .NET Framework method capable of generating truly random numbers.
*)
let Gen = new RNGCryptoServiceProvider()
// Initialize a byte array with one value
let myByteArray:byte[] = [|0uy|]
// Define a function to load the byte array with a random byte
let funcRanNumArray x = Gen.GetBytes(x)
// Call the function, passing in the array. The array will be loaded by the GetBytes method.
funcRanNumArray myByteArray
// Print the results to the console
printfn "%u" myByteArray.(0)
Here is a screen shot of my output, after compiling my project, called LearnFSharp and running it from the command line: