I hereby claim:
- I am pirrmann on github.
- I am pirrmann (https://keybase.io/pirrmann) on keybase.
- I have a public key whose fingerprint is C754 AB85 AFA5 4BC4 12CA BDF5 7CE5 02AF 2D5C C545
To claim this, I am signing this object:
//An implementation of basic non-negative integers, based on https://gist.github.com/akimboyko/7019648, | |
//but rewritten in a more F# idiomatic way | |
module Naturals | |
open System | |
type Natural = | |
| Zero | |
| Succ of Natural | |
member x.IsZero' = x = Zero |
module TestCasesBuilder | |
open Microsoft.FSharp.Reflection | |
type TestCasesBuilder() = | |
member x.Zero() = Seq.empty | |
member x.Yield<'T>(t:'T) = | |
let value = | |
if FSharpType.IsTuple(typeof<'T>) | |
then t |> FSharpValue.GetTupleFields |
type ScopeAndRules = | ScopeAndRules of string * int list | |
type RulesBuilder() = | |
member x.Yield(v) = [] | |
[<CustomOperation("scope", MaintainsVariableSpace=true)>] | |
member x.Scope(source, scope) = ScopeAndRules(scope, []) :: source | |
[<CustomOperation("rule", MaintainsVariableSpace=true)>] | |
member x.Rule(source, rule) = | |
match source with | |
| ScopeAndRules(scope, rules) :: tail -> ScopeAndRules(scope, rule :: rules) :: tail |
type SyntaxToken = string | |
type X = | |
{ | |
SomeProperty: string | |
} with | |
member this.AddModifiers(tokens:SyntaxToken array) = | |
{ this with | |
SomeProperty = sprintf "%s + %s" (this.SomeProperty) (System.String.Join(",", tokens)) } |
let (|Operator|_|) s = | |
match s with | |
| "+" -> Some (+) | |
| "-" -> Some (-) | |
| "*" -> Some (*) | |
| "/" -> Some (/) | |
| _ -> None | |
let eval state input = | |
match input, state with |
I hereby claim:
To claim this, I am signing this object:
#r "packages/Unquote/lib/net45/Unquote.dll" | |
open FSharp.Quotations | |
open Swensen.Unquote | |
type IMutationSitePicker = | |
abstract member PickNextSite: bool | |
abstract member NotifyIgnoredSite: unit -> unit | |
abstract member NotifyMutation: unit -> unit |
open FSharp.Interop.Dynamic | |
open Dynamitey | |
let dynamicPropertyGet<'TResult> (name:string) (target:obj) : 'TResult option = | |
let resultType = typeof<'TResult> | |
let (|NoConversion| Conversion|) t = if t = typeof<obj> then NoConversion else Conversion | |
let convert r = match resultType with | NoConversion -> r | _ -> dynImplicit(r) | |
match target with |
let file = System.IO.File.ReadAllText(__SOURCE_DIRECTORY__ + "/training.csv") | |
let parseLine line = | |
let makeWord = Seq.rev >> Seq.toArray >> System.String | |
let rec parseFields chars = | |
match chars with | |
| '\"' :: chars' -> parseEscaped [] chars' | |
| chars' -> parseUnescaped [] chars' | |
and parseEscaped acc chars = seq { |
type Result<'T> = | |
| Success of 'T | |
| Failure of string | |
let bind f = function | Success a -> f a | Failure b -> Failure b | |
let map f = function | Success a -> Success (f a) | Failure b -> Failure b | |
let private combine2 fn2 fn1 arg = | |
match (fn1 arg, fn2 arg) with | |
| Success a, Success b -> Success (a, b) |