From 5c1a4dc5fe8990135e76d65db084a2074033ec4d Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Fri, 25 Jul 2014 12:52:47 -0700 Subject: [PATCH] update sugar/list with values->list --- list.rkt | 8 +++++++- main.rkt | 6 ++---- scribblings/list.scrbl | 10 +++++++++- values.rkt | 13 ------------- 4 files changed, 18 insertions(+), 19 deletions(-) delete mode 100644 values.rkt diff --git a/list.rkt b/list.rkt index 3eefadb..88ba00e 100644 --- a/list.rkt +++ b/list.rkt @@ -69,4 +69,10 @@ (define-syntax (when/splice stx) (syntax-case stx () [(_ test body) - #'(if test (list body) '())])) \ No newline at end of file + #'(if test (list body) '())])) + + +(provide values->list) +(define-syntax (values->list stx) + (syntax-case stx () + [(_ values-expr) #'(call-with-values (λ () values-expr) list)])) \ No newline at end of file diff --git a/main.rkt b/main.rkt index 3c1e217..19cc0e5 100644 --- a/main.rkt +++ b/main.rkt @@ -9,8 +9,7 @@ "list.rkt" "misc.rkt" "string.rkt" - "len.rkt" - "values.rkt") + "len.rkt") (provide (all-from-out @@ -22,5 +21,4 @@ "list.rkt" "misc.rkt" "string.rkt" - "len.rkt" - "values.rkt")) \ No newline at end of file + "len.rkt")) \ No newline at end of file diff --git a/scribblings/list.scrbl b/scribblings/list.scrbl index 25d5dac..8b76832 100644 --- a/scribblings/list.scrbl +++ b/scribblings/list.scrbl @@ -3,7 +3,7 @@ @(require scribble/eval (for-label racket sugar)) @(define my-eval (make-base-eval)) -@(my-eval `(require sugar)) +@(my-eval `(require sugar racket/list)) @title{List} @defmodule[sugar/list] @@ -82,3 +82,11 @@ A special version of @racket[when] that you can use inside @racket[quasiquote] t `(,@(when/splice (even? 2) "hooray")) `(,@(when/splice (even? 3) "hooray")) ] + +@defform[(values->list values)] +Convert @racket[_values] to a simple list. + +@examples[#:eval my-eval +(split-at '(a b c d e f) 3) +(values->list (split-at '(a b c d e f) 3)) +] diff --git a/values.rkt b/values.rkt deleted file mode 100644 index 46e2cc1..0000000 --- a/values.rkt +++ /dev/null @@ -1,13 +0,0 @@ -#lang racket/base -(require (for-syntax racket/base)) - -(provide (all-defined-out)) - -(define-syntax (values->list stx) - (syntax-case stx () - [(_ values-expr) #'(call-with-values (λ () values-expr) list)])) - - -(define-syntax (apply-values stx) - (syntax-case stx () - [(_ proc values) #'(apply proc (values->list values))]))