Skip to content

Instantly share code, notes, and snippets.

View 7sharp9's full-sized avatar

Dave Thomas 7sharp9

  • Moirae Software Engineering Ltd
  • UK
  • X @7sharp9_
View GitHub Profile
@7sharp9
7sharp9 / desugaredasync.fs
Created May 17, 2011 00:56
desugared async
namespace Pipelets
open System
open System.Reflection
open System.Collections.Concurrent
open FSharp.Control
type pipelet<'a,'b>(processor, router: seq<IPipeletInput<'b>> * 'b -> seq<IPipeletInput<'b>>, capacity, ?overflow, ?blockingTime) =
let buffer = BlockingQueueAgent<_> capacity
let routes = ref List.empty<IPipeletInput<'b>>
let queuedOrRunning = ref false
@7sharp9
7sharp9 / barbershop.scala
Created July 1, 2011 11:48 — forked from toluju/barbershop.scala
A better scala barbershop simulator.
import scala.actors.Actor
import scala.actors.Actor._
import scala.util.Random
import scala.collection.{immutable, mutable}
val rand = new Random()
case class Customer(id: Int) {
var shorn:Boolean = false
}
http.createServer(function (request, response) {
var uri = url.parse(request.url).pathname;
if(uri=='/pong') {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('PONG');
} else if ((match = uri.match(/^\/echo\/(.*)$/)) != null) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end(match[1]);
let server = HttpServer((fun(headers, close, svr, sd) ->
let header = sprintf "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 20\r\nConnection: close\r\nServer: Fracture\r\nDate: %s\r\n\r\n" (DateTime.UtcNow.ToShortDateString())
let body = "Hello world.\r\nHello."
let encoded = System.Text.Encoding.ASCII.GetBytes(header + body)
do svr.Send(sd.RemoteEndPoint, encoded, true)), body = fun(body, svr, sd) ->
Debug.WriteLine( sprintf "%s" (Text.Encoding.ASCII.GetString(body.Array)) ) )
server.Listen(6667)
printfn "Http Server started"
Console.ReadKey() |> ignore
@7sharp9
7sharp9 / test.fs
Created November 15, 2011 23:20
simple hhtp
let server = new HttpServer(OnHeaders = respondHelloWorld ) )
@7sharp9
7sharp9 / pipelets_loop.fs
Created December 6, 2011 00:25
new pipelets loop
let computeAndRoute data routes = async{data |> transform |> router <| routes}
let mailbox = MailboxProcessor.Start(fun inbox ->
let rec loop routes = async {
let! msg = inbox.Receive()
match msg with
| Payload(data) ->
ss.Release() |> ignore
Async.StartWithContinuations(computeAndRoute data routes, ignore, errors, ignore)
return! loop routes
@7sharp9
7sharp9 / pipelets loop option2.fs
Created December 6, 2011 00:29
pipelets loop option2
let mailbox = MailboxProcessor.Start(fun inbox ->
let rec loop routes = async {
let! msg = inbox.Receive()
match msg with
| Payload(data) ->
ss.Release() |> ignore
let result = compute data routes |> Async.Catch |> Async.RunSynchronously
match result with
| Choice1Of2 _ -> ()
| Choice2Of2 exn -> errors exn
@7sharp9
7sharp9 / async_catch.fs
Created January 3, 2012 23:42
fixing-a-hole
let mailbox = MailboxProcessor.Start(fun inbox ->
let rec loop routes = async {
let! msg = inbox.Receive()
match msg with
| Payload(data) ->
ss.Release() |> ignore
let result = async{data |> transform |> router <| routes}
|> Async.Catch
|> Async.RunSynchronously
match result with
@7sharp9
7sharp9 / CsBs.cs
Created March 11, 2012 16:03
F# Black-Scholes
public class Options
{
public enum Style
{
Call,
Put
}
public static double BlackScholes(Style callPut, double s, double x, double t, double r, double v)
{
@7sharp9
7sharp9 / XsThemeHelp.fs
Created March 29, 2013 09:20
A few helpers around Colours in Xamarin Studio, these will become extensions of the Types eventually: let myGdkColour = myCairoColour |> CairoColor.toGdk
let colourStyles = Mono.TextEditor.Highlighting.SyntaxModeService.GetColorStyle(MonoDevelop.Ide.IdeApp.Preferences.ColorScheme)
let keywordColour = colourStyle.GetForeground (colourStyle.KeywordProperty)
let cairoToHsl (c:Cairo.Color) = HslColor.op_Implicit(c)
let gdkToHsl (c:Gdk.Color) = HslColor.op_Implicit(c)
let hslToCairo (c:HslColor) : Cairo.Color = HslColor.op_Implicit(c)
let hslToGdk (c:HslColor) : Gdk.Color = HslColor.op_Implicit(c)
let cairoToGdk = cairoToHsl >> hslToGdk