diff --git a/.travis.yml b/.travis.yml index ec9bdcc..e677b54 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,7 +30,7 @@ install: before_script: script: - - raco pkg install --deps search-auto --link afl - - raco test -x -p afl + - raco pkg install --deps search-auto --link aful + - raco test -x -p aful after_script: diff --git a/README.md b/README.md index 4eda3c4..85cf412 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,17 @@ -afl [![Build Status](https://travis-ci.org/AlexKnauth/afl.png?branch=master)](https://travis-ci.org/AlexKnauth/afl) +aful [![Build Status](https://travis-ci.org/jsmaniac/aful.png?branch=master)](https://travis-ci.org/jsmaniac/aful) === a lang-extension for adding rackjure-like [anonymous function literals](http://www.greghendershott.com/rackjure/index.html#%28part._func-lit%29) to a language, based on at-exp and rackjure -documentation: http://pkg-build.racket-lang.org/doc/afl/index.html +documentation: http://pkg-build.racket-lang.org/doc/aful/index.html Example: ```racket -#lang afl racket/base +#lang aful racket/base +(map #λ(+ % 1) '(1 2 3)) ;=> '(2 3 4) +``` + +```racket +#lang aful/unhygienic racket/base (map #λ(+ % 1) '(1 2 3)) ;=> '(2 3 4) ``` diff --git a/aful/docs/aful.scrbl b/aful/docs/aful.scrbl index 20e82dd..4ea7aad 100644 --- a/aful/docs/aful.scrbl +++ b/aful/docs/aful.scrbl @@ -4,52 +4,52 @@ scribble-code-examples (for-label (except-in racket/base read read-syntax) - (except-in afl/reader + (except-in aful/reader read read-syntax))) -@title{afl} +@title{aful} -@;; example: @afl-code{(map #λ(+ % 1) '(1 2 3))} -@(define-syntax-rule @afl-code[stuff ...] - @code[#:lang "afl racket" stuff ...]) +@;; example: @aful-code{(map #λ(+ % 1) '(1 2 3))} +@(define-syntax-rule @aful-code[stuff ...] + @code[#:lang "aful racket" stuff ...]) -source code: @url["https://github.com/AlexKnauth/afl"] +source code: @url["https://github.com/AlexKnauth/aful"] -@section{#lang afl} +@section{#lang aful} -@defmodulelang[afl]{ -The @racketmodname[afl] language is a lang-extension like @racketmodname[at-exp] +@defmodulelang[aful]{ +The @racketmodname[aful] language is a lang-extension like @racketmodname[at-exp] that adds @racketmodname[rackjure]-like anonymous function literals to a language. @margin-note{see @secref["func-lit" #:doc '(lib "rackjure/rackjure.scrbl")]} -For example, @racket[@#,hash-lang[] @#,racketmodname[afl] @#,racketmodname[racket/base]] +For example, @racket[@#,hash-lang[] @#,racketmodname[aful] @#,racketmodname[racket/base]] adds anonymous function literals to @racketmodname[racket/base], so that @codeblock{ -#lang afl racket/base} -@code-examples[#:lang "afl racket/base" #:context #'here]|{ +#lang aful racket/base} +@code-examples[#:lang "aful racket/base" #:context #'here]|{ (map #λ(+ % 1) '(1 2 3)) (map #λ(+ % %2) '(1 2 3) '(1 2 3)) }| -For the @racketmodname[afl] language to work properly for a module, the module +For the @racketmodname[aful] language to work properly for a module, the module has to depend on @racketmodname[racket/base] in some way, although that does not mean it has to explicitly require it or that the language it uses has to provide anything from it. It does mean that for instance -@racket[@#,hash-lang[] @#,racketmodname[afl] @#,racketmodname[racket/kernel]] +@racket[@#,hash-lang[] @#,racketmodname[aful] @#,racketmodname[racket/kernel]] won't work properly. } -@section{afl/reader} +@section{aful/reader} -@defmodule[afl/reader] +@defmodule[aful/reader] -@deftogether[(@defproc[(afl-read [in input-port? (current-input-port)] +@deftogether[(@defproc[(aful-read [in input-port? (current-input-port)] [#:arg-str arg-str string? (current-arg-string)]) any]{} - @defproc[(afl-read-syntax [source-name any/c (object-name in)] + @defproc[(aful-read-syntax [source-name any/c (object-name in)] [in input-port? (current-input-port)] [#:arg-str arg-str string? (current-arg-string)]) (or/c syntax? eof-object?)]{})]{ -These procedures implement the @racketmodname[afl] reader. They do so by +These procedures implement the @racketmodname[aful] reader. They do so by constructing a readtable based on the current one, and using that for reading. @@ -57,31 +57,31 @@ The @racket[arg-str] argument lets you specify something else to use as a placeh @racket[%]. @examples[ - (require afl/reader) - (afl-read (open-input-string "#λ(+ % %2)")) - (afl-read (open-input-string "#λ(+ _ _2)") #:arg-str "_") + (require aful/reader) + (aful-read (open-input-string "#λ(+ % %2)")) + (aful-read (open-input-string "#λ(+ _ _2)") #:arg-str "_") ] -@racketmodname[afl/reader] also exports these functions under the names @racket[read] and +@racketmodname[aful/reader] also exports these functions under the names @racket[read] and @racket[read-syntax]. } -@defproc[(make-afl-readtable [orig-readtable readtable? (current-readtable)] +@defproc[(make-aful-readtable [orig-readtable readtable? (current-readtable)] [#:outer-scope outer-scope (-> syntax? syntax?)] [#:arg-str arg-str string? (current-arg-string)]) readtable?]{ -makes an @racketmodname[afl] readtable based on @racket[orig-readtable]. +makes an @racketmodname[aful] readtable based on @racket[orig-readtable]. The @racket[outer-scope] argument should be a function that introduce scopes to preserve hygiene, normally produced by @racket[make-syntax-introducer] and similar functions. For versions of racket that support it, these should generally be specified as use-site scopes. The @racket[arg-str] argument lets you specify something else to use as a placeholder instead of -@racket[%], just like for @racket[afl-read]. +@racket[%], just like for @racket[aful-read]. } -@defproc[(use-afl-readtable [orig-readtable readtable? (current-readtable)] +@defproc[(use-aful-readtable [orig-readtable readtable? (current-readtable)] [#:arg-str arg-str string? (current-arg-string)]) void?]{ -passes arguments to @racket[make-afl-readtable] and sets the @racket[current-readtable] parameter to +passes arguments to @racket[make-aful-readtable] and sets the @racket[current-readtable] parameter to the resulting readtable. It also enables line counting for the @racket[current-input-port] via @racket[port-count-lines!]. @@ -90,15 +90,15 @@ This is mostly useful for the REPL. @verbatim{ Examples: -> @afl-code{(require afl/reader)} -> @afl-code{(use-afl-readtable)} -> @afl-code{(map #λ(+ % %2) '(1 2 3) '(1 2 3))} +> @aful-code{(require aful/reader)} +> @aful-code{(use-aful-readtable)} +> @aful-code{(map #λ(+ % %2) '(1 2 3) '(1 2 3))} @racketresult['(2 4 6)] -> @afl-code{(use-afl-readtable #:arg-str "_")} -> @afl-code{(map #λ(+ _ _2) '(1 2 3) '(1 2 3))} +> @aful-code{(use-aful-readtable #:arg-str "_")} +> @aful-code{(map #λ(+ _ _2) '(1 2 3) '(1 2 3))} @racketresult['(2 4 6)] }} @defparam[current-arg-string arg-str string?]{ -a parameter that controls default values of the @racket[arg-str] arguments to @racket[afl-read] etc. +a parameter that controls default values of the @racket[arg-str] arguments to @racket[aful-read] etc. } \ No newline at end of file diff --git a/aful/info.rkt b/aful/info.rkt index 497b930..effe389 100644 --- a/aful/info.rkt +++ b/aful/info.rkt @@ -1,3 +1,3 @@ #lang info -(define scribblings '(["docs/afl.scrbl" ()])) \ No newline at end of file +(define scribblings '(["docs/aful.scrbl" ()])) \ No newline at end of file diff --git a/aful/lang/language-info.rkt b/aful/lang/language-info.rkt index dae2368..22922ad 100644 --- a/aful/lang/language-info.rkt +++ b/aful/lang/language-info.rkt @@ -13,7 +13,7 @@ (lambda (key default) (case key [(configure-runtime) - (define config-vec '#[afl/lang/runtime-config configure #f]) + (define config-vec '#[aful/lang/runtime-config configure #f]) (define other-config (other-get-info key default)) (cond [(list? other-config) (cons config-vec other-config)] [else (list config-vec)])] diff --git a/aful/lang/reader.rkt b/aful/lang/reader.rkt index 3ad9090..5e4a6c2 100644 --- a/aful/lang/reader.rkt +++ b/aful/lang/reader.rkt @@ -1,10 +1,10 @@ #lang lang-extension -#:lang-extension afl make-afl-lang-reader -#:lang-reader afl-lang +#:lang-extension aful make-aful-lang-reader +#:lang-reader aful-lang (require lang-reader/lang-reader (only-in "../reader.rkt" wrap-reader)) -(define (make-afl-lang-reader lang-reader) +(define (make-aful-lang-reader lang-reader) (define/lang-reader [-read -read-syntax -get-info] lang-reader) (make-lang-reader (wrap-reader -read) @@ -12,7 +12,7 @@ (lambda args (define stx (apply read-syntax args)) (define old-prop (syntax-property stx 'module-language)) - (define new-prop `#(afl/lang/language-info get-language-info ,old-prop)) + (define new-prop `#(aful/lang/language-info get-language-info ,old-prop)) (syntax-property stx 'module-language new-prop))) -get-info)) diff --git a/aful/lang/runtime-config.rkt b/aful/lang/runtime-config.rkt index 453c0bc..b711f2a 100644 --- a/aful/lang/runtime-config.rkt +++ b/aful/lang/runtime-config.rkt @@ -2,8 +2,8 @@ (provide configure) -(require (only-in afl/reader use-afl-readtable)) +(require (only-in aful/reader use-aful-readtable)) (define (configure data) - (use-afl-readtable)) + (use-aful-readtable)) diff --git a/aful/reader.rkt b/aful/reader.rkt index 9b66015..2b52b62 100644 --- a/aful/reader.rkt +++ b/aful/reader.rkt @@ -1,15 +1,15 @@ #lang racket/base -(provide make-afl-readtable - afl-read - afl-read-syntax +(provide make-aful-readtable + aful-read + aful-read-syntax wrap-reader wrap-reader-unhygienic - use-afl-readtable + use-aful-readtable current-arg-string (rename-out - [afl-read read] - [afl-read-syntax read-syntax]) + [aful-read read] + [aful-read-syntax read-syntax]) ) (require racket/match @@ -46,17 +46,17 @@ (module+ test (require rackunit)) -(define (afl-read [in (current-input-port)] #:arg-str [arg-str (current-arg-string)]) +(define (aful-read [in (current-input-port)] #:arg-str [arg-str (current-arg-string)]) (parameterize ([current-arg-string arg-str]) ((wrap-reader read) in))) -(define (afl-read-syntax [src (object-name (current-input-port))] [in (current-input-port)] +(define (aful-read-syntax [src (object-name (current-input-port))] [in (current-input-port)] #:arg-str [arg-str (current-arg-string)]) (parameterize ([current-arg-string arg-str]) ((wrap-reader read-syntax) src in))) (define (wrap-reader p) - (extend-reader p make-afl-readtable)) + (extend-reader p make-aful-readtable)) (require syntax/strip-context) (define ((wrap-reader-unhygienic p) . p-args) @@ -65,13 +65,13 @@ (λ ([orig-rt (current-readtable)] #:outer-scope outer-scope #:arg-str [arg-str (current-arg-string)]) - (make-afl-readtable orig-rt + (make-aful-readtable orig-rt #:outer-scope (λ (stx [mode 'flip]) stx) #:arg-str arg-str)) #:hygiene? #f) p-args))) -(define (make-afl-readtable [orig-rt (current-readtable)] +(define (make-aful-readtable [orig-rt (current-readtable)] #:outer-scope outer-scope #:arg-str [arg-str (current-arg-string)]) (define reader-proc (make-reader-proc orig-rt outer-scope #:arg-str arg-str)) @@ -81,19 +81,19 @@ [rt (make-readtable rt #\l 'dispatch-macro reader-proc)]) rt)) -(define (use-afl-readtable [orig-rt (current-readtable)] #:arg-str [arg-str (current-arg-string)]) +(define (use-aful-readtable [orig-rt (current-readtable)] #:arg-str [arg-str (current-arg-string)]) (port-count-lines! (current-input-port)) - (current-readtable (make-afl-readtable orig-rt #:outer-scope identity #:arg-str arg-str))) + (current-readtable (make-aful-readtable orig-rt #:outer-scope identity #:arg-str arg-str))) (define current-arg-string (make-parameter "%")) (module+ test - (check-equal? (afl-read (open-input-string "#λ(+ % %2)")) + (check-equal? (aful-read (open-input-string "#λ(+ % %2)")) '(lambda (%1 %2) (define-syntax % (make-rename-transformer #'%1)) (+ % %2))) - (check-equal? (afl-read (open-input-string "#λ(+ _ _2)") #:arg-str "_") + (check-equal? (aful-read (open-input-string "#λ(+ _ _2)") #:arg-str "_") '(lambda (_1 _2) (define-syntax _ (make-rename-transformer #'_1)) (+ _ _2))) diff --git a/aful/tests/test-aful-at-exp-racket.rkt b/aful/tests/test-aful-at-exp-racket.rkt index b2c80fc..958f2b5 100644 --- a/aful/tests/test-aful-at-exp-racket.rkt +++ b/aful/tests/test-aful-at-exp-racket.rkt @@ -1,4 +1,4 @@ -#lang afl at-exp racket/base +#lang aful at-exp racket/base (require rackunit) (check-equal? (map #λ(+ % 1) '(1 2 3)) '(2 3 4)) diff --git a/aful/tests/test-aful-racket.rkt b/aful/tests/test-aful-racket.rkt index 79038d3..f734d07 100644 --- a/aful/tests/test-aful-racket.rkt +++ b/aful/tests/test-aful-racket.rkt @@ -1,4 +1,4 @@ -#lang afl racket/base +#lang aful racket/base (module+ test (require rackunit) (check-equal? (map #λ(+ % 1) '(1 2 3)) diff --git a/aful/tests/test-aful-scribble.rkt b/aful/tests/test-aful-scribble.rkt index ebf3eb7..5ccb12f 100644 --- a/aful/tests/test-aful-scribble.rkt +++ b/aful/tests/test-aful-scribble.rkt @@ -1,4 +1,4 @@ -#lang afl scribble/base +#lang aful scribble/base @(require rackunit) @(check-equal? @#λ@title{@%}{This is a Title} @title{This is a Title}) diff --git a/aful/unhygienic/lang/language-info.rkt b/aful/unhygienic/lang/language-info.rkt index dae2368..22922ad 100644 --- a/aful/unhygienic/lang/language-info.rkt +++ b/aful/unhygienic/lang/language-info.rkt @@ -13,7 +13,7 @@ (lambda (key default) (case key [(configure-runtime) - (define config-vec '#[afl/lang/runtime-config configure #f]) + (define config-vec '#[aful/lang/runtime-config configure #f]) (define other-config (other-get-info key default)) (cond [(list? other-config) (cons config-vec other-config)] [else (list config-vec)])] diff --git a/aful/unhygienic/lang/reader.rkt b/aful/unhygienic/lang/reader.rkt index 9f6ee84..6cd5e83 100644 --- a/aful/unhygienic/lang/reader.rkt +++ b/aful/unhygienic/lang/reader.rkt @@ -1,10 +1,10 @@ #lang lang-extension -#:lang-extension afl make-afl-lang-reader -#:lang-reader afl-lang +#:lang-extension aful make-aful-lang-reader +#:lang-reader aful-lang (require lang-reader/lang-reader (only-in "../../reader.rkt" wrap-reader-unhygienic)) -(define (make-afl-lang-reader lang-reader) +(define (make-aful-lang-reader lang-reader) (define/lang-reader [-read -read-syntax -get-info] lang-reader) (make-lang-reader (wrap-reader-unhygienic -read) @@ -12,7 +12,7 @@ (lambda args (define stx (apply read-syntax args)) (define old-prop (syntax-property stx 'module-language)) - (define new-prop `#(afl/lang/language-info get-language-info ,old-prop)) + (define new-prop `#(aful/lang/language-info get-language-info ,old-prop)) (syntax-property stx 'module-language new-prop))) -get-info)) diff --git a/aful/unhygienic/lang/runtime-config.rkt b/aful/unhygienic/lang/runtime-config.rkt index 453c0bc..b711f2a 100644 --- a/aful/unhygienic/lang/runtime-config.rkt +++ b/aful/unhygienic/lang/runtime-config.rkt @@ -2,8 +2,8 @@ (provide configure) -(require (only-in afl/reader use-afl-readtable)) +(require (only-in aful/reader use-aful-readtable)) (define (configure data) - (use-afl-readtable)) + (use-aful-readtable))