#lang racket/base (provide (all-defined-out)) (define (to-string x) (cond [(string? x) x] [(or (null? x) (void? x)) ""] [(or (symbol? x) (number? x) (path? x) (char? x)) (format "~a" x)] ;; special handling for procedures, because if a procedure reaches this func, ;; it usually indicates a failed attempt to use a tag function. ;; meaning, it's more useful to raise an error. [(procedure? x) (error 'pollen "Can't convert procedure ~a to string" x)] [else (format "~v" x)]))