Skip to content

Instantly share code, notes, and snippets.

View danking's full-sized avatar

Dan King danking

View GitHub Profile
(define-syntax (val stx)
(syntax-case stx ()
[(_ id v)
#`(define-syntax id
(make-set!-transformer
(lambda (stx)
(syntax-case stx (set!)
[(set! id new-v) #'(error 'id "~a is not mutable" (symbol->string 'id))]
[id (identifier? #'id) #'v]))))]))
#lang typed/racket
(: mergesort : (All (X) ([Listof X] [X X -> Boolean] -> [Listof X])))
(define (mergesort ls <=)
(: mergesort/length : (All (X) ([Listof X] Integer -> [Listof X])))
(define (mergesort/length ls n)
(let* ([n/2 (exact-floor (/ n 2))])
(cond [(= n 0) ls]
[(= n 1) ls]
[else (merge (mergesort/length (take ls n/2) n/2)
#lang racket
(require parser-tools/lex)
(require parser-tools/yacc)
(require (prefix-in : parser-tools/lex-sre))
(provide parse-program current-source-name)
(define current-source-name (make-parameter #f))
@danking
danking / gist:9608764
Created March 17, 2014 21:28
My test program.
#include <sys/param.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <sys/mman.h>
#include <sys/namei.h>
#include <sys/ucred.h>
#include <sys/queue.h>
#include <sys/vnode.h>
#lang racket
(require ffi/unsafe
ffi/unsafe/custodian)
(define n 0)
(define (foo)
(define 100bytes (malloc 100 'raw))
(define uid n)
(set! n (add1 n))
root@shillbsd:/home/danking # cat out
Session: fffffe009e640ba0 Message: Initializing new session
Session: fffffe009e640ba0 Capability: fffffe009e747d20
Session: fffffe009e640ba0 Capability: fffffe009e70b450
+chdir +chroot +create-dir { fffffe009e70b450 } +lookup { fffffe009e70b450 } +addlink +read +stat
Session: fffffe009e640ba0 Message: Granted capabilities on fffffe009e4357e0: fffffe009e70b450
Session: fffffe009e640ba0 Message: Granted capabilities on fffffe009e4357e0: fffffe009e70b450
Session: fffffe009e640ba0 Message: Granted capabilities on fffffe00041319d8: fffffe009e70b450
#lang shill/cap
require shill/contracts
shill/io;
provide [find : forall [X:+path,+lookup,+contents] . [f: X]
[filter: [_: X] -> boolean?]
[cmd: [_: X] -> any]
->
any ];
#lang shill/ambient
require shill/native;
require "syscall-test.cap";
val wallet = create-wallet();
populate-native-wallet(wallet
,open-dir("/")
,"/home/danking/tests/individual-system-call-tests"
,"/libexec:/lib:/usr/lib"
@danking
danking / gist:d2682500fd54bbe5e1e3
Created May 7, 2014 03:41
untyped lambda calculus
#lang racket
(require redex)
(require redex/tut-subst)
(define-language L
(e (e e)
x
v)
(v (lambda (x) e))
@danking
danking / gist:f0cfb4bd1a45973022fc
Created February 17, 2015 01:08
Inability to connect behavior with a Class

Inability to connect behavior with a Class

Use two interfaces: A and AFactory

A is the interface.

AFactory implements all the factory methods as well as behavior relevant to the Class rather than any particular object.

Then you have