Skip to content

Instantly share code, notes, and snippets.

@jbclements
jbclements / borrowck.rs
Created February 15, 2013 18:57
How to make the borrow live long enough?
pub struct AStruct {
x : uint
}
pub enum HasAStruct {
A(~AStruct)
}
pub fn getAStruct(a: &lt/HasAStruct) -> &lt/AStruct {
match *a {
@jbclements
jbclements / bugreport.rs
Created February 5, 2013 02:20
this doesn't trigger the bug... maybe splitting it over multiple files?
pub trait HasGet {
fn get(&self) -> int;
}
pub type struct_inr = @StructInr;
pub struct StructInr {
x : int
}
pub impl StructInr : HasGet {
let maybe_it = match expanded {
mr_item(it) => fld.fold_item(it),
mr_expr(_) => cx.span_fatal(pth.span,
~"expr macro in item position: "
+ *extname),
mr_any(_, item_maker, _) =>
option::chain(item_maker(), |i| {fld.fold_item(i)}),
MacroDef(ref mdef) => {
exts.insert((*mdef).name, (*mdef).ext);
None
let maybe_it = match expanded {
mr_item(it) => fld.fold_item(it),
mr_expr(_) => cx.span_fatal(pth.span,
~"expr macro in item position: "
+ *extname),
mr_any(_, item_maker, _) =>
option::chain(item_maker(), |i| {fld.fold_item(i)}),
MacroDef(ref mdef) => {
exts.insert((*mdef).name, (*mdef).ext);
None
@jbclements
jbclements / render-example.rkt
Created December 18, 2012 22:27
example code using profile and graphviz
#lang racket
(require profile
(prefix-in gv: profile/render-graphviz))
(define (f)
(sleep 0.5)
(+ (g) (h)))
(define (g) (sleep 0.5) 13)
@jbclements
jbclements / alpha-channel-experimentation.rkt
Created November 29, 2012 01:16
bitmap rendering behaves strangely....
#lang racket
(require 2htdp/image
(only-in mred make-bitmap bitmap-dc% color% bitmap%)
(only-in 2htdp/private/image-more render-image)
rackunit)
;; return a portion of the alpha map for the image
(define (image->alpha/cropped image x y w h)
(define bm (make-object bitmap% w h #f #t))
@jbclements
jbclements / alpha-channel-experimentation.rkt
Created November 28, 2012 23:46
possibly a bug in get-argb-pixels?
#lang racket
(require 2htdp/image
(only-in mred make-bitmap bitmap-dc% color%)
(only-in 2htdp/private/image-more render-image)
rackunit)
;; return a portion of the alpha map for the image
(define (image->alpha/cropped image x y w h)
(define bm (make-bitmap w h))
@jbclements
jbclements / collision-detection.rkt
Created November 28, 2012 08:06
Unbelievably primitive image detection for 2htdp/image
#lang racket
(require 2htdp/image
(only-in mred make-bitmap bitmap-dc%)
(only-in 2htdp/private/image-more render-image)
rackunit)
(define star1 (star-polygon 40 5 2 "solid" "seagreen"))
(define star2 (rotate 20 (star-polygon 40 5 2 "solid" "seagreen")))
@jbclements
jbclements / reverb-example.rkt
Created November 24, 2012 17:10
an example of using reverb... downloads new version of rsound.
#lang racket
(require (planet clements/rsound:4:4))
(require (planet clements/rsound:4:4/single-cycle))
(require (planet clements/rsound:4:4/network))
(require (planet clements/rsound:4:4/reverb-typed))
(require racket/flonum)
(define hi-tones
(for/list ([i 16])
@jbclements
jbclements / reverb-typed.rkt
Created November 24, 2012 16:33
An implementation of reverb for rsound.
#lang typed/racket
(require racket/flonum)
(require/typed (planet clements/rsound:4/network)
[#:struct network/s ([ins : Index]
[outs : Index]
[maker : Procedure])])
;; this file provides the "reverb" network
(provide reverb)