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
module EasyLayout
open System
open System.Drawing
open Microsoft.FSharp.Quotations
open Microsoft.FSharp.Quotations.Patterns
open Microsoft.FSharp.Quotations.DerivedPatterns
open MonoTouch.Foundation
open MonoTouch.UIKit
namespace FSHelloSceneKit
open System
open MonoTouch.UIKit
open MonoTouch.Foundation
open MonoTouch.SceneKit
type FSHelloSceneKitViewController () =
inherit UIViewController()
@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