F# For Scripting

It's F# Week at Xamarin. Also, in the US, it's only a 4-day work-week. F# saves 20% of your time. QED.

Anyway, I don't have any actually interesting F# to share, but I recommend:

But what I thought I could quickly contribute is that:

  • F# is an awesome scripting language; and
  • Scripting may be the best way to learn F#

Scripting tasks often involve transforming a stream of text by repeatedly Filtering, Assigning, Reducing, Transforming, and Slicing it ("a sequence of FARTS") and this is an area where the functional approach is pretty clearly easier to work with than the OOP approach of a network of cooperating objects.

And since scripting tasks are often private or semi-private low-complexity chores, they're an excellent domain for regularly exercising your knowledge of a new language. It's all well and good to carve out a couple weekends and work through a book but nothing beats regular exposure.

(While I'm on the subject, these are currently my favorite F# books. Initial exploration:

Deeper dives:

)

F# scripts are F# files with the .fsx extension. On OS X with mono, they can be run with fsharpi script.fsx or:

[code lang="fsharp"]
#if run_with_bin_sh
exec fsharpi --exec \\(0 \\)*
#endif
printfn "%A" fsi.CommandLineArgs
[/code]

To add references, use #r:

[code lang="fsharp"]
#if run_with_bin_sh
exec fsharpi --exec \\(0 \\)*
#endif

#r "System.Core.dll"
#r "System.Xml"

open System
open System.Xml.Linq
open System.IO

//...etc...
[/code]

I've been using F# for scripting for more than a year now and I can honestly say that it's displaced Ruby as my scripting language of choice.

Give it a shot!