Skip to content

Instantly share code, notes, and snippets.

View soegaard's full-sized avatar

Jens Axel Søgaard soegaard

View GitHub Profile
#lang racket
(define (replace expr from to)
; in the expression e replace f with t
(define (rep e)
(cond
[(list? e)
(define tail (map rep (rest e)))
(define head (first e))
(cond
@soegaard
soegaard / render-a.rkt
Created February 17, 2013 21:16
Render an "a" using Times Roman size 72. Is the right edge of the "a" missing?
#lang racket
(require racket/draw)
(define a-font
(make-font #:size 72
#:face "Times Roman"))
(define bm (make-object bitmap% 200 200))
(define bm-dc (new bitmap-dc% [bitmap bm]))
#lang racket
(require (for-syntax racket/generic syntax/parse))
; Normal Racket numbers are represented as (num x #f).
; Integers modulo p are represented as (num x p).
(module ring racket
(provide $ (rename-out [new+ +] [new- -] [new* *] [newexpt expt]))
(require math racket/generic (for-syntax racket/generic syntax/parse))
@soegaard
soegaard / cond-star.rkt
Last active December 15, 2015 07:18
Introduces cond/let. A cond that supports variable bindings. The idea is to reduce right drift. Thoughts? For examples named #:let see remove3 and remove4.
#lang racket
(require (for-syntax syntax/parse)
(only-in srfi/1 car+cdr)
rackunit)
; This file implements an extension of cond that
; supports variable bindings
; A "#let-clause" of the form
; #:let ([var/vars expr] ...),
#lang racket
(require racket/control)
(define (make-fringe-getter tree)
(λ ()
(let loop ([tree tree])
(match tree
[(cons a d) (loop a)
(loop d)]
['() (void)]
@soegaard
soegaard / hmm.rkt
Last active December 15, 2015 09:39
Quiz time: When run in DrRacket, how many "Hello world"s are displayed?
#lang racket
(begin-for-syntax
(displayln "Hello world"))
@soegaard
soegaard / fact.rkt
Created April 14, 2013 20:51
Efficient factorial
#lang racket
(define (fact n)
(mult 1 n 1))
(define (mult m n k)
; m*(m+k)*(m+2k)*...
; last factor <= n
(if (< (- n m) k)
m
(* (mult m n (* 2 k))
#lang racket
(define (ε i j k)
(* (- i j) (- j k) (- k i) 1/2))
(define (cross-product v w)
(define ref vector-ref)
(for/vector ([i 3])
(for*/sum ([j 3] [k 3])
(* (ε i j k) (ref v j) (ref w k)))))
@soegaard
soegaard / gist:5764143
Last active December 18, 2015 09:49
List of languages ordered by number of repositories on Github. The list at https://github.com/languages ranks the top 10 only. This list contains all languages. Hmm. According to https://github.com/blog/841-those-are-some-big-numbers the top list counts the AMOUNT of code, not the number of repositories.
'(("JavaScript" ())
("Ruby" (2))
("Java" (3))
("Shell" (4))
("Python" (5))
("PHP" (6))
("C" (7))
("C++" (8))
("Perl" (9))
("CoffeeScript" (10))
#lang racket
(require (for-syntax racket/list))
(define-syntax (foo stx)
(define (quote-it stx) (list 'quote stx))
(define name+xs (syntax->list stx))
(define name (first name+xs)) ; unused (is foo)
(define xs (rest name+xs))
(define result-as-list (cons 'vector (map quote-it xs)))
(datum->syntax stx result-as-list))