People often ask me how to find F# jobs. I don't have any special connections to companies using F#, and I don't have any special tricks either. I wish I did!
So, given that, here's my take on F# jobs.
For job hunting my suggestions are:
(* | |
WHAT'S GOING ON HERE?! | |
Sometimes you don't care about a particular type, you're interested in one field only, let's say `EntityId`. | |
Instead of using interface (which isn't even possible if don't own a type), | |
we can do structural typing in F# using SRTP and Active Patterns. | |
Active patterns are not required for this, but they do make code much easier to use. | |
*) | |
// So we have 2 types with field `EntityId: string`: |
module TestingInterpreter = | |
open CardManagement | |
open System | |
open CardDomain | |
open CardManagement.Common.Errors | |
open CardManagement.Common.CommonTypes | |
open CardManagement.Common.CountryModule | |
open CardProgramBuilder | |
open CardManagement.Common |
[<AutoOpen>] | |
module PriorityQueue = | |
[<AutoOpen>] | |
module private Heap = | |
type 'a Node = | |
| Empty | |
| Node of 'a NodeData | |
and 'a NodeData = |
let inline tryParse<'a when 'a: (static member TryParse: string * byref<'a> -> bool)> x = | |
let mutable res = Unchecked.defaultof<'a> | |
if (^a: (static member TryParse: string * byref<'a> -> bool) (x, &res)) | |
then Some res | |
else None | |
let a = tryParse<int>("19") | |
let b = tryParse<Guid>("4A9FA193-26D6-4D21-8610-02B060D43744") | |
let c = tryParse<DateTimeOffset>("ddd") |
module HexGrid = | |
[<Struct>] | |
type HexId = | |
{ | |
X: int | |
Y: int | |
Z: int | |
} | |
with |
let (|CosmosException|_|) (ex:exn) = | |
match ex with | |
| :? DocumentClientException as ex -> Some ex | |
| :? AggregateException as ex when (ex.InnerException :? DocumentClientException) -> | |
ex.InnerException :?> DocumentClientException |> Some | |
| _ -> None | |
let (|NotFoundInCosmos|_|) ex = | |
match ex with | |
| CosmosException ex when (ex.StatusCode = Nullable HttpStatusCode.NotFound) -> Some ex |
namespace Fsion | |
open System.Threading | |
[<Struct;NoEquality;NoComparison>] | |
type Cancel = | |
private | |
| Cancel of bool ref * children: Cancel list ref | |
module internal Cancel = |
type CosmosDbConfig = | |
{ | |
Endpoint: string | |
AuthKey: string | |
} | |
type ProductBlobConfig = | |
{ | |
ConnectionString: string | |
ContainerName: string |