Skip to content

Instantly share code, notes, and snippets.

#!/usr/bin/env python3
# Copyright kurinoku 2023
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of
# this software and associated documentation files (the “Software”), to deal
# in the Software without restriction, including without limitation the rights to
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
# of the Software, and to permit persons to whom the Software is furnished to do
# so, subject to the following conditions:
#
@kurinoku
kurinoku / check-is-defined.rkt
Last active June 18, 2023 21:02
Use identifier-binding to check if an identifier is defined or not
#lang racket
(require (for-syntax racket/syntax
syntax/parse))
(module+ test
(require rackunit)
(let ()
(define/if-not-exists t 0)
(check-equal? t 0))
#lang racket/gui
(define (maybe-set-box! b v)
(when b
(set-box! b v)))
(define rect-snip-class%
(class snip-class%
(inherit set-classname)
(super-new)
@kurinoku
kurinoku / eval.rkt
Last active December 10, 2023 21:28
[Racket] Dynamically evaluate your language using `make-module-evaluator`
#lang racket/base
(require racket/sandbox
racket/runtime-path
"parser.rkt"
"tokenizer.rkt"
"expander.rkt"
syntax/strip-context)
;; To pass to the module datum