Skip to content

Instantly share code, notes, and snippets.

View endobson's full-sized avatar

Eric Dobson endobson

  • Mountain View, CA
View GitHub Profile
#lang racket
(require (for-syntax racket/syntax))
(require racket/stxparam)
(define-syntax (foo stx)
(syntax-case stx ()
((_ bind-id binding-id body)
(let ()
#lang racket
(define-syntax (make-bind-to-5 stx)
(syntax-case stx ()
((_ id later)
#'(define-syntax (later stx)
(syntax-case stx ()
((_ body)
(with-syntax ((new-id (syntax-local-introduce #'id)))
#lang racket
(define ((wrap-keys-hash wrap-key unwrap-key) hash)
(impersonate-hash hash
(lambda (hash key)
(values (wrap-key key)
function onload() {
newDiv = document.createElement('div');
newDiv.innerHTML = 'Hi there and greetings';
document.body.appendChild(newDiv);
}
main:Diffusion.applyRule :: %forall eaaDH (aaaDI::(*->(*->*))) (maaDJ::(*->*)) . (deepseqzm1zi2zi0zi1:ControlziDeepSeq.TZCNFData
eaaDH)
->
(arrayzm0zi3zi0zi3:DataziArrayziBase.TZCMArray
aaaDI
eaaDH
maaDJ)
->
(eaaDH ->
(main:Point.Neighbors
#lang racket
(require (for-syntax syntax/parse))
(begin-for-syntax
(define-splicing-syntax-class foo
(pattern (~seq))
(pattern (~seq #:foo))))
(define-syntax bar
(define-splicing-syntax-class provide-spec
#:attributes ((forms 1) (provide 0))
(pattern (~and (~seq forms ...) (~seq))
#:attr provide #'null-provide)
(pattern (~and (~seq forms ...) (~seq #:provide))
#:attr provide #'simple-provide)
(pattern (~and (~seq forms ...) (~seq #:provide/contract c))
#:attr provide (contracted-provide contract))))
#lang racket
(require (for-syntax syntax/parse) racket/stxparam)
(define-syntax-parameter llvm-safety 'unsafe)
(define-syntax define-llvm-safety-parameter
(syntax-parser
((_ name:id safe:id unsafe:id)
@endobson
endobson / gist:2266898
Created March 31, 2012 17:22
Recursive contracted structs
#lang racket
(define foo-r (recursive-contract foo?))
(define bar-r (recursive-contract bar?))
(define-struct/contract foo ((v (or/c bar-r #f))))
(define-struct/contract bar ((v (or/c foo-r #f))))
@endobson
endobson / Tree.v
Created April 30, 2012 00:46
Tree Identities in Coq
Require Import List.
Inductive btree : Set :=
| bleaf : btree
| bbranch : btree -> btree -> btree.
Fixpoint btree_id(x : btree) : btree :=
match x with
| bleaf => bleaf
| bbranch l r => bbranch (btree_id l) (btree_id r)