Skip to content

Instantly share code, notes, and snippets.

@dyoo
dyoo / gist:5096373
Created March 6, 2013 03:03
dc example
#lang racket
(require racket/draw)
;; draw-rectangle: dc -> void
(define (draw-rectangle dc)
(send dc set-brush "green" 'solid)
(send dc set-pen "blue" 1 'solid)
(send dc draw-rectangle 0 10 30 10)
(send dc set-pen "red" 3 'solid)
(send dc draw-line 0 0 30 30)
#lang racket/base
(define (post-title s)
`(h1 ,s))
(define (post-body . paragraphs)
`(div ((class "post-body"))
,@(filter (lambda (x) (not (string? x))) paragraphs)))
(define (paragraph p)
`(p ,p))
#lang s-exp syntax/module-reader
shriphani/lang/semantics
#lang racket
(require racket/stxparam)
(define verbosity-level (make-parameter 0))
(define-syntax (log stx)
(syntax-case stx ()
([_ num msg ...]
#`(when (>= (verbosity-level) num)
(apply printf (list msg ...))))))
@dyoo
dyoo / gist:5052730
Created February 27, 2013 23:14
performance test on compiling for the repl
#lang racket/base
(define this-namespace (make-base-empty-namespace))
(define (make-repl-namespace [module-path 'racket/base])
(parameterize ([current-namespace this-namespace])
(dynamic-require module-path #f))
(define ns (make-empty-namespace))
(parameterize ([current-namespace ns])
(namespace-attach-module this-namespace module-path)
#lang typed/racket
(define-type pixel Integer)
(: create-bitmap : Integer Integer (Integer Integer -> pixel) -> (Vectorof (Vectorof pixel)))
(define (create-bitmap width height generator)
(for/vector: : (Vectorof (Vectorof pixel)) ((y : Integer (in-range height)))
(for/vector: : (Vectorof pixel) ((x : Integer (in-range width)))
(generator x y))))
@dyoo
dyoo / dc-delegate.rkt
Last active December 14, 2015 03:59
A delegate for dc<%>.
#lang racket
(require racket/gui/base)
;; Defines a dc<%> implementation that can wrap around
;; another dc.
(define wrapped-dc%
(class* object% (dc<%>)
(init-field delegate)
(super-new)
#lang racket
(provide foo%)
(define foo%
(class object%
(super-new)
(define (end-impl)
(displayln "not yet"))
@dyoo
dyoo / gist:5021197
Created February 23, 2013 20:23
A syntax parse example for parsing subterms in arbitrary order.
#lang racket
(require (for-syntax syntax/parse))
(struct person (name age) #:transparent)
;; Accept name and age in any order:
(define-syntax (new-person stx)
(syntax-parse stx
[(_ (~or (~optional ((~datum name) name) #:defaults ([name #'"Jane Doe"]))
#lang racket
(require racket/draw racket/gui/base)
(define instructions
'((move 61.17578125 98.36328125)
(curve 62.4765625 99.390625 64.015625 99.90234375 65.7890625 99.90234375)
(curve 67.953125 99.90234375 70.05078125 99.40234375 72.078125 98.3984375)
(curve 75.49609375 96.734375 77.20703125 94.01171875 77.20703125 90.23046875)
(line 77.20703125 85.2734375)
(curve 76.453125 85.75390625 75.48828125 86.15234375 74.30078125 86.47265625)