Родилось в одним из диалогов с дедфудом.
Позволяет юзать синтаксис как у околохацкеля чтобы задавать значения и объявлять лямбдочки.
Для полноценной костылезации надо переопределять свой reader через #lang, что делать конечно лень.
;; gayfood.rkt
#lang racket
(require syntax/parse)
(require (for-syntax syntax/parse))
(provide (all-defined-out))
(begin-for-syntax
(define-syntax-class gaylambda
#:literals (->)
(pattern (-> (arg:id ...) body:expr))))
(define-syntax (-> stx)
(syntax-parse stx
[f:gaylambda #'(lambda (f.arg ...) f.body)]))
(define-syntax (= stx)
(syntax-parse stx
#:literals (=)
[(= a:id b:expr) #'(define a b)]))
;; test
#lang sweet-exp racket
require("gayfood.rkt")
{ closureLambda = {(i) -> {i * i}} }
printf("closureLambda(10) = ~a\n" closureLambda(10))
выводит 100, охуеть, правда?