I’ve used extension methods for a while in F# as a neat way of adding utility methods to system types. For example, suppose you have a set and want to add some elements to it? You might write something like this:
let collection = ... // initial set defined elsewhere
let collection = // add extra elements into collection
[| 1; 2; 3 |] |> Array.fold (fun (acc : Set<'T>) item -> acc.Add item) collection
You might find yourself writing this snippet frequently and for different container types. Instead of defining the operation every time, it’s better to write an extension method:
namespace MusingStudio.Extensions
module Set =
let AddMulti (items : seq<'T>) (collection : Set<'T>) =
items |> Seq.fold (fun (acc : Set<'T>) item -> acc.Add item) collection
Then, by bringing the extensions into scope, we can call AddMulti as if it were part of the system Set interface:
open MusingStudio.Extensions
[<EntryPoint>]
let main argv =
let initial = [| 1; 2; 3 |] |> Set.ofArray
let updated = initial |> Set.AddMulti [| 4; 5; 6 |]
printfn "%A" updated
0 // return an integer exit code
I was looking for a way to get the current time/date in Swift, and found some code on Stack Overflow that uses Extension Methods to do it. I’ve added a couple more methods to get the seconds and day-of-month:
import Foundation
// From: http://stackoverflow.com/questions/24070450/how-to-get-the-current-time-and-hour-as-datetime
extension NSDate
{
func hours() -> Int
{
//Get Hours
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.Hour, fromDate: self)
let hours = components.hour
//Return Hour
return hours
}
func minutes() -> Int
{
//Get Minutes
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.Minute, fromDate: self)
let minutes = components.minute
//Return Minute
return minutes
}
func seconds() -> Int
{
// Get Seconds
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.Second, fromDate: self)
let seconds = components.second
return seconds
}
func day() -> Int
{
// Get Day
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.Day, fromDate: self)
let day = components.day
return day
}
}
This simplifies the interface to NSDate:
// Get the time properties let currentDate = NSDate() let minutes = currentDate.minutes() let hours = currentDate.hours() let seconds = currentDate.seconds() let dayOfMonth = currentDate.day()

I was thrilled when the IET announced that they were organising a seminar on the 
This book tells the journey taken by the author in his attempts to find and interview all the remaining astronauts who have walked on the moon. Twelve men in history have known what it is like, and at the time of his writing, only nine were alive. The book describes the impact such an event had on the lives of the men.




When Scott Meyers
The BCS hosted a presentation by Simon Taylor of Barclays Bank.