Skip to content

Instantly share code, notes, and snippets.

Avatar

Lincoln Atkinson latkin

View GitHub Profile
@latkin
latkin / README.md
Last active Aug 29, 2015
Extended 'for' loops for F#
View README.md

Backing code and examples for two different mini-frameworks adding extended imperative-style for loops in F#.

Discussed in blog post here.

@latkin
latkin / readme.md
Last active Aug 29, 2015
Blog: Non-transitive dice
@latkin
latkin / test.fsx
Created Apr 22, 2015
Try block perf overhead
View test.fsx
#time ;;
let testNoTry () =
let mutable x = 0
for i in 1 .. 1000000000 do
x <- x + 1
x
let testTry () =
let mutable x = 0
@latkin
latkin / code.fsx
Last active Aug 29, 2015
Benchmark of groupBy perf
View code.fsx
open System.Collections.Generic
open System.Diagnostics
let groupBy keyMaker elements =
elements |> Seq.groupBy keyMaker |> Seq.length
let loopGroup keyMaker elements =
let d = Dictionary<string, seq<'a>>()
for p in elements do
let key = keyMaker p
@latkin
latkin / ops.fsx
Created Apr 30, 2015
Scoping nonstructural operators
View ops.fsx
[<AutoOpen>]
module Ops =
open NonStructuralComparison
let inline nsHash x = hash x
let inline nsCompare x = compare x
let inline (=&) a b = a = b
let inline (<>&) a b = a <> b
let inline (<&) a b = a < b
let inline (>&) a b = a > b
let inline (<=&) a b = a <= b
@latkin
latkin / code.fsx
Last active Aug 29, 2015
Seq.cache repro
View code.fsx
open System.Collections.Generic
let someDataSource = seq{ 1 .. 100 }
let ordersForTask = Dictionary<int, seq<int>>()
let getOrdersForTask task =
match ordersForTask.TryGetValue task with
| true, orders -> orders
| false, _ ->
let orders =
@latkin
latkin / readme.md
Last active Aug 29, 2015
Blog: A handy Powershell filter for converting plain text to objects
@latkin
latkin / readme.md
Last active Aug 29, 2015
Blog: Null-checking considerations in F#
@latkin
latkin / ProvidedTypes.fs
Last active Oct 6, 2015
Static params to provided methods
View ProvidedTypes.fs
(*
* all of ProvidedTypes.fs
* as of https://github.com/fsprojects/FSharp.TypeProviders.StarterPack/blob/245fe3b0126ac6a326a14a0f6b1ef569680b08b3/src/ProvidedTypes.fs
*)
// then add to the bottom
interface ITypeProvider2 with
member __.GetStaticParametersForMethod(methodWithoutArguments:MethodBase) =
match methodWithoutArguments.Name with