akkadotnet/akka.net — pull request #538 by Horusiath (2014-12-27 18:29:49+00:00)
Title: F# API - README + more changes

## Breaking Changes

I've exposed a `Watch/Unwatch` methods into separate `ICanWatch` interface. It's now implemented by `IActorContext`, `Inboxable` and F# actors. Since `Inboxable.Watch` had previously void as return type, now it returns actor reference (also have an `Unwatch` method, which was not present before). I've also removed a `watch` function from F# API (it has been replaced by `monitor`, mentioned below).

Also some of the F# modules (Configuration, Strategy) now require qualified access - calling their functions without module prefix was unclear and could result in enigmatic code i.e. `load` vs `Configuration.load`.

## New F# functions

1. `Configuration.load()` - alias to `ConfigurationFactory.Load` method.
2. `monitor`/`demonitor` functions - similar to `Watch`/`Unwatch` (naming inspired by Erlang). Can operate directly on Inbox or Actor instances.
3. `pub`, `sub`, `unsub` functions - Publish/Subscribe functions. Reason for abbreviation is that Pub/Sub is also a popular naming shortcut for related pattern.
4. Scheduling functions - `schedule` and `scheduleOnce` work on functions, while `scheduleTell` and `scheduleTellOnce` work on message passed to actor refs. Moreover they take native F# functions as a parameters, so that explicit conversion to `System.Action` is no longer necessary.

## README.md for F# project

All F# API functions, grouped and explained with examples. I hope, that this could be a foundation to the F# API Documentation on Akka.NET home page.