A grope is a set
is satisfied for all
| {- | |
| This file demonstrates a technique for making working with de Bruijn-indexed | |
| terms easier that I learnt from the paper /The Linearity Monad/ by Jennifer | |
| Paykin and Steve Zdancewic. After defining well-typed terms `Γ ⊢ τ` using de Bruijn | |
| indices, we define an auxiliary function `lam` that takes in the variable term explicitly: | |
| > lam : {V : Type} {Γ : Cxt V} {τ σ : Ty V} | |
| > → (({Δ : Cxt V} → {{IsExt Δ (Γ , τ)}} → Δ ⊢ τ) | |
| > → (Γ , τ) ⊢ σ) | |
| > → Γ ⊢ τ ⇒ σ |
| (import (chezscheme)) | |
| (define handler-key (gensym)) | |
| (define th #f) | |
| (define x 0) | |
| (define (sub) | |
| (define n | |
| (call/cc (lambda (k) |
| #lang racket | |
| (require (for-syntax syntax/parse)) | |
| (define (reify-name n) | |
| (string->symbol | |
| (string-append "_" (number->string n)))) | |
| (struct fresh (value count) | |
| #:methods gen:custom-write | |
| [(define (write-proc self out mode) | |
| (if (fresh-value self) |
| #lang racket | |
| (require nanopass) | |
| (define-language L | |
| (terminals | |
| (symbol (x))) | |
| (Expr (e) | |
| (λ x e) | |
| (e0 e1) | |
| x)) |
| #lang racket | |
| (require (for-syntax syntax/parse)) | |
| (define-syntax (math stx) | |
| (syntax-parse stx | |
| #:datum-literals (+ *) | |
| [(_ (o ...) op o* ...) | |
| #'(let ([k (math o ...)]) | |
| (math k op o* ...))] | |
| [(_ (o ...)) #'(math o ...)] |
| #lang racket | |
| (require plot | |
| plot/utils) | |
| (plot3d | |
| (parametric-surface3d | |
| (λ (θ t) | |
| (define R 1) | |
| (define s (/ t 2)) | |
| (list |
| #lang racket | |
| (require plot) | |
| (define (complex->vector z) | |
| (vector (real-part z) (imag-part z))) | |
| (define ps | |
| (for/list ([x (in-range 0 1 1/100)]) | |
| (complex->vector (exp (* 0+1i 2 pi x))))) |
| #lang racket | |
| (require pict | |
| rebellion/collection/multiset) | |
| (define (square bit) | |
| (define pict-size 5) | |
| (match bit | |
| [1 (filled-rectangle pict-size pict-size)] | |
| [0 (rectangle pict-size pict-size)])) |
| #lang racket | |
| (define (d form) | |
| (match form | |
| [`(+ ,f ,g) `(+ ,(d f) ,(d g))] | |
| [`(* ,f ,g) `(+ (* ,(d f) ,g) (* ,f ,(d g)))] | |
| [`(∘ ,f ,g) `(* (∘ ,(d f) ,g) ,(d g))] | |
| [`(d ,n ,o) `(d ,(add1 n) ,o)] | |
| [o `(d 1 ,o)])) |