emacs.d/elpa/racket-mode-20200218.1623/racket/example/example.rkt.faceup
2020-02-22 12:54:34 +01:00

327 lines
11 KiB
Text

«m:;; »«x:-*- racket-indent-sequence-depth: 100; racket-indent-curly-as-sequence: t; -*-
»
«m:;;; »«x:NOTE: After changing this file you will need to M-x faceup-write-file
»«m:;;; »«x:to regenerate the .faceup test comparison file.
»«m:;;;»«x:
»«m:;;; »«x:NOTE: You may need to disable certain features -- for example
»«m:;;; »«x:global-paren-face-mode -- during the M-x faceup-write-file.
»
«k:#lang» «v:racket»
(«k:require» xml)
(«k:provide» valid-bucket-name?)
«m:;; »«x:Various def* forms are font-locked:
»
(«k:define» («f:function» foo)
«:racket-selfeval-face:#t»)
(«k:define» ((«f:curried-function» x) y)
(«b:list» x y))
(«k:define» «v:a-var» «:racket-selfeval-face:10»)
(«b:define/contract» («f:f2» x)
(«b:any/c» . «b:->» . «b:any»)
«:racket-selfeval-face:#t»)
(«k:define-values» («v:1st-var 2nd-var») («b:values» «:racket-selfeval-face:1» «:racket-selfeval-face:2»))
(define-thing «v:foo») «m:;»«x:bug 276
»
«m:;; »«x:let: font-lock identifiers
»
(«k:let» ([«v:foo» «:racket-selfeval-face:10»]
[«v:bar» «:racket-selfeval-face:20»])
foo)
(«k:let» «f:loop» ([«v:x» «:racket-selfeval-face:10»])
(«k:unless» («b:zero?» x)
(loop («b:sub1» x))))
(«k:let*» ([«v:foo» «:racket-selfeval-face:10»]
[«v:bar» «:racket-selfeval-face:20»])
foo)
(«k:let-values» ([(«v:a» «v:b») («b:values» «:racket-selfeval-face:1» «:racket-selfeval-face:2»)])
(«b:values» a b))
(«k:let*-values» ([(«v:a» «v:b») («b:values» «:racket-selfeval-face:1» «:racket-selfeval-face:2»)])
(«b:values» a b))
(«k:letrec-values» ([(«v:a» «v:b») («b:values» «:racket-selfeval-face:1» «:racket-selfeval-face:2»)])
(«b:values» a b))
(«k:let-syntax» ([«v:foo» #«:racket-selfeval-face:'foo»])
foo)
(«k:letrec-syntax» ([«v:foo» #«:racket-selfeval-face:'foo»])
foo)
(«k:let-syntaxes» ([(«v:foo») #«:racket-selfeval-face:'foo»])
foo)
(«k:letrec-syntaxes» ([(«v:foo») #«:racket-selfeval-face:'foo»])
foo)
(«k:letrec-syntaxes+values» ([(«v:foo») #«:racket-selfeval-face:'foo»])
([(a b) («b:values» «:racket-selfeval-face:1» «:racket-selfeval-face:2»)])
foo)
«m:;; »«x:for/fold is indented correctly:
»(«k:for/fold» ([str «s:""»])
([ss '(«s:"a"» «s:"b"» «s:"c"»)])
(«b:string-append» str ss))
«m:;; »«x:Auto-converts word `lambda` to `λ`:
»(«k:lambda» (x) «:racket-selfeval-face:#t»)
«m:;; »«x:Or use M-C-y to insert to insert `λ` char.
»
«m:;; »«x:Smart indentation for quoted lists:
»'(«:racket-selfeval-face:1» «:racket-selfeval-face:2»
«:racket-selfeval-face:3» «:racket-selfeval-face:4»)
«m:;; »«x:Smart indentation for vector literals:
»#(«:racket-selfeval-face:1» «:racket-selfeval-face:2»
«:racket-selfeval-face:3» «:racket-selfeval-face:4»)
«m:;; »«x:Smart indentation for Rackjure dict literals:
»(«k:module» «f:x» «v:rackjure»
{«:racket-selfeval-face:'a» «:racket-selfeval-face:0»
«:racket-selfeval-face:'b» «:racket-selfeval-face:2»})
«m:;; »«x:Silly test submodule example.
»«m:;; »«x:Try using C-c C-f to Fold (hide) it, and C-c C-u to Unfold it.
»(«k:module+» «f:test»
(«k:require» rackunit)
(check-true «:racket-selfeval-face:#t»))
«m:;; »«x:Single line comment
»
«x:#|
Multi-line
comment
|#»
«m:;; »«x:Issue 362
»
«x:#|aaa() |#»
«x:#|(hello)|#»
«m:#;»«x:(sexpr comment)»
«m:;; »«x:Nested sexpr comments
»
(«b:list» «:racket-selfeval-face:2»
«m:#;»«x:2»)
(«b:list» «:racket-selfeval-face:1»
«m:#;»«x:4»
«m:#;»«x:(3)»)
(«k:let» («m:#;»«x:[x #;1]»
[«v:y» «:racket-selfeval-face:2»])
y)
«m:;; »«x:Issue 388
»«:racket-selfeval-face:1» «m:; »«x:#;
»«:racket-selfeval-face:2»
«m:;; »«x:Issue 408
»
«s:"#;"»whatever
«s:"#;"»(whatever)
«s:"#;"»
(whatever)
(«k:define» «v:x» «:racket-here-string-face:#<<FOO
asdfasdf
asdfasdf
asdfasdf
FOO
» )
#;(«k:define» «v:x» «:racket-here-string-face:#<<BAR
asdfasdf
asdfasdf
asdfasdf
BAR
» )
|identifier with spaces|
|;no comment|
| #|no comment|# |
(«k:define» («f:a-function» x «:racket-keyword-argument-face:#:keyword» [y «:racket-selfeval-face:0»])
(«k:and» («b:append» («b:car» '(«:racket-selfeval-face:1» «:racket-selfeval-face:2» «:racket-selfeval-face:3»))))
(«b:regexp-match?» «:racket-selfeval-face:#rx»«s:"foobar"» «s:"foobar"»)
(«b:regexp-match?» «:racket-selfeval-face:#px»«s:"foobar"» «s:"foobar"»)
(«k:define» «v:a» «:racket-selfeval-face:1»)
(«k:let» ([«v:a» «s:"foo"»]
[«v:b» «s:"bar"»])
(«b:displayln» b))
(«k:let*» ([«v:a» «s:"foo"»]
[«v:b» «s:"bar"»])
(«b:displayln» b))
(«k:let-values» ([(«v:a» «v:b») («b:values» «:racket-selfeval-face:1» «:racket-selfeval-face:2»)])
«:racket-selfeval-face:#t»)
(«k:for/list» ([x («k:in-list» («b:list» «:racket-selfeval-face:1» «:racket-selfeval-face:2» («b:list» «:racket-selfeval-face:3» «:racket-selfeval-face:4»)))])
(«k:cond» [(«b:pair?» x) («b:car» x)]
[«k:else» x])))
«m:;; »«x:Issue 261
»«s:"@|widget-id|"» @|foo|
«m:;; »«x:Issue 298
»(«k:define» «v:x» («k:begin» «s:"|"» '\|))
«m:;; »«x:Issue 376
»(«k:define» «v:||» (|list|))
(«k:define» («f:foo»)
(«k:let» ([«v:x» «:racket-selfeval-face:10»])
«:racket-selfeval-face:#t»)
(«k:let» ([«v:x» «:racket-selfeval-face:1»]
[«v:y» «:racket-selfeval-face:2»])
«:racket-selfeval-face:#t»)
(«k:define» «v:1/2-the-way» «:racket-selfeval-face:0»)
(«k:define» «v:less-than-1/2» «:racket-selfeval-face:0»)
«m:;; »«x:Self-eval examples
» («b:values»
1/2-the-way «m:;»«x:should NOT be self-eval
» less-than-1/2 «m:;»«x:should NOT be self-eval
» «:racket-selfeval-face:+inf.0»
«:racket-selfeval-face:-inf.0»
«:racket-selfeval-face:+nan.0»
«:racket-selfeval-face:#t»
«:racket-selfeval-face:#f»
«:racket-selfeval-face:1»
«:racket-selfeval-face:1.0»
«:racket-selfeval-face:1/2»
«:racket-selfeval-face:-1/2»
«:racket-selfeval-face:#b100»
«:racket-selfeval-face:#o123»
«:racket-selfeval-face:#d123»
«:racket-selfeval-face:#x7f7f»
«:racket-selfeval-face:'symbol»
«:racket-selfeval-face:'|symbol with spaces|»
«:racket-selfeval-face:'|;no comment|»
«:racket-selfeval-face:'| #|no comment|# |»
«:racket-selfeval-face:'symbol-with-no-alpha/numeric-chars»
«:racket-selfeval-face:#\c»
«:racket-selfeval-face:#\space»
«:racket-selfeval-face:#\newline»
«m:;; »«x:Literal number examples
»
«m:;; »«x:#b
» «:racket-selfeval-face:#b1.1»
«:racket-selfeval-face:#b-1.1»
«:racket-selfeval-face:#b1e1»
«:racket-selfeval-face:#b0/1»
«:racket-selfeval-face:#b1/1»
«:racket-selfeval-face:#b1e-1»
«:racket-selfeval-face:#b101»
«m:;; »«x:#d
» «:racket-selfeval-face:#d-1.23»
«:racket-selfeval-face:#d1.123»
«:racket-selfeval-face:#d1e3»
«:racket-selfeval-face:#d1e-22»
«:racket-selfeval-face:#d1/2»
«:racket-selfeval-face:#d-1/2»
«:racket-selfeval-face:#d1»
«:racket-selfeval-face:#d-1»
«m:;; »«x:No # reader prefix -- same as #d
» «:racket-selfeval-face:-1.23»
«:racket-selfeval-face:1.123»
«:racket-selfeval-face:1e3»
«:racket-selfeval-face:1e-22»
«:racket-selfeval-face:1/2»
«:racket-selfeval-face:-1/2»
«:racket-selfeval-face:1»
«:racket-selfeval-face:-1»
«m:;; »«x:#e
» «:racket-selfeval-face:#e-1.23»
«:racket-selfeval-face:#e1.123»
«:racket-selfeval-face:#e1e3»
«:racket-selfeval-face:#e1e-22»
«:racket-selfeval-face:#e1»
«:racket-selfeval-face:#e-1»
«:racket-selfeval-face:#e1/2»
«:racket-selfeval-face:#e-1/2»
«m:;; »«x:#i always float
» «:racket-selfeval-face:#i-1.23»
«:racket-selfeval-face:#i1.123»
«:racket-selfeval-face:#i1e3»
«:racket-selfeval-face:#i1e-22»
«:racket-selfeval-face:#i1/2»
«:racket-selfeval-face:#i-1/2»
«:racket-selfeval-face:#i1»
«:racket-selfeval-face:#i-1»
«m:;; »«x:#o
» «:racket-selfeval-face:#o777.777»
«:racket-selfeval-face:#o-777.777»
«:racket-selfeval-face:#o777e777»
«:racket-selfeval-face:#o777e-777»
«:racket-selfeval-face:#o3/7»
«:racket-selfeval-face:#o-3/7»
«:racket-selfeval-face:#o777»
«:racket-selfeval-face:#o-777»
«m:;; »«x:#x
» «:racket-selfeval-face:#x-f.f»
«:racket-selfeval-face:#xf.f»
«:racket-selfeval-face:#x-f»
«:racket-selfeval-face:#xf»
))
(«b:define/contract» («f:valid-bucket-name?» s «:racket-keyword-argument-face:#:keyword» [dns-compliant? «:racket-selfeval-face:#t»])
((«b:string?») («:racket-keyword-argument-face:#:keyword» «b:boolean?») . «b:->*» . «b:boolean?»)
(«k:cond»
[dns-compliant?
(«k:and» («b:<=» «:racket-selfeval-face:3» («b:string-length» s)) («b:<=» («b:string-length» s) «:racket-selfeval-face:63»)
(«b:not» («b:regexp-match» «:racket-selfeval-face:#px»«s:"\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"» s))
(«k:for/and» ([s («b:regexp-split» «:racket-selfeval-face:#rx»«s:"\\."» s)])
(«k:define» («f:valid-first-or-last?» c)
(«k:or» («b:char-lower-case?» («b:string-ref» s «:racket-selfeval-face:0»))
(«b:char-numeric?» («b:string-ref» s «:racket-selfeval-face:0»))))
(«k:define» («f:valid-mid?» c)
(«k:or» (valid-first-or-last? c)
(«b:equal?» c «:racket-selfeval-face:#\-»)))
(«k:define» «v:len» («b:string-length» s))
(«k:and» («b:<» «:racket-selfeval-face:0» len)
(valid-first-or-last? («b:string-ref» s «:racket-selfeval-face:0»))
(valid-first-or-last? («b:string-ref» s («b:sub1» len)))
(«k:or» («b:<=» len «:racket-selfeval-face:2»)
(«k:for/and» ([c («b:substring» s «:racket-selfeval-face:1» («b:sub1» len))])
(valid-mid? c))))))]
[«k:else»
(«k:and» («b:<=» («b:string-length» s) «:racket-selfeval-face:255»)
(«k:for/and» ([c s])
(«k:or» («b:char-numeric?» c)
(«b:char-lower-case?» c)
(«b:char-upper-case?» c)
(«b:equal?» c «:racket-selfeval-face:#\.»)
(«b:equal?» c «:racket-selfeval-face:#\-»)
(«b:equal?» c «:racket-selfeval-face:#\_»))))]))
(«b:displayln» «s:"I'm running!"»)
«m:;; »«x:Issue 366
»#«s:"1"»
#«s:"22"»
#«s:"333"»