Skip to content

Instantly share code, notes, and snippets.

View davidgrenier's full-sized avatar

David Grenier davidgrenier

View GitHub Profile
#I "../hopac/Libs/Hopac/bin/Release/net7.0/"
#r "Hopac.Core"
#r "Hopac.Platform"
#r "Hopac"
#load "./Bench.fs"
open System
open System.Threading
open Hopac.Extensions
open Hopac.Infixes
type Meta = interface end
type U<'ty>() =
class
interface Meta
end
type K<'ty, 'x>(elem: 'x) =
interface Meta
member x.Elem = elem
open System.Net
open System.Diagnostics
let netsh arguments =
ProcessStartInfo("netsh", arguments, WindowStyle = ProcessWindowStyle.Hidden)
|> Process.Start
let rec loop source dest =
async {
use _ = netsh "interface portproxy reset"
let await (timeout: int) task =
async {
let evt = Event<_>()
let! _ =
async {
do! Async.Sleep timeout
evt.Trigger None
} |> Async.StartChild
let! _ =
#I @"C:\Projects\Lib"
#r "Hopac.dll"
#r "Hopac.Core.dll"
open System
open Hopac
open Hopac.Job.Infixes
open Hopac.Alt.Infixes
open Hopac.Extensions
@davidgrenier
davidgrenier / NTBreakpoint.js
Created September 16, 2014 18:31
Conditional Breakpoint for javascript
var objUserInfo = new ActiveXObject("WScript.network");
if (objUserInfo.UserName == "dgrenier")
debugger;
#r @"C:\Projects\Streams\src\Streams.Core\bin\Release\Streams.Core.dll"
open Nessos.Streams.Core
let data =
[|
let rnd = System.Random().NextDouble >> (*) 1e3
for x in -10.0 .. 10.0 do
yield System.DateTime.Now.AddDays (rnd())
|]
type T = T with
static member (<@>) (x, y: int) = x * y
static member (<@>) (x, y: float) = x * int y
let inline helper (_: ^o) (left: ^t) (right: ^u) = ((^o or ^t): (static member (<@>): ^t * ^u -> int) (left, right))
let inline (<@>) left right = helper T left right
1 <@> 2
1 <@> 2.3
[<Inline "$v.toString(16)">]
let toHex (v: int) = X<_>
let guid() =
let rx = EcmaScript.RegExp("[xy]", "g")
EcmaScript.String("xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx").Replace(rx, As (fun c ->
let r = EcmaScript.Math.Random() * 16.0 |> int
let v =
#if INTERACTIVE
let (++) a b = System.IO.Path.Combine(a, b)
let source = __SOURCE_DIRECTORY__ ++ __SOURCE_FILE__
let args = sprintf "--platform:x86 %s -o:%s" source <| source.Replace("fs", "exe")
System.Diagnostics.Process.Start(System.AppDomain.CurrentDomain.BaseDirectory ++ "fsc", args)
#endif
let time f x =
let ts = System.Diagnostics.Stopwatch.StartNew()
let result = f x