Thank you for your comment

Beau­tiful Racket / tuto­rials

stackerizer-test.rkt
#lang s-exp "stackerizer.rkt"
(+ 1 2 3 4)
1
2
#lang s-exp "stackerizer.rkt"
(+ 1 2 3 4)
copy to clipboard
stackerizer.rkt
#lang br/quicklang
(provide + *)

(define-macro (stackerizer-mb EXPR)
  #'(#%module-begin
     EXPR))
(provide (rename-out [stackerizer-mb #%module-begin]))
1
2
3
4
5
6
7
#lang br/quicklang
(provide + *)

(define-macro (stackerizer-mb EXPR)
  #'(#%module-begin
     EXPR))
(provide (rename-out [stackerizer-mb #%module-begin]))
copy to clipboard
stackerizer-test.rkt
#lang s-exp "stackerizer.rkt"
(+ 1 (+ 2 (+ 3 4))) ; 10
1
2
#lang s-exp "stackerizer.rkt"
(+ 1 (+ 2 (+ 3 4))) ; 10
copy to clipboard
stackerizer-test.rkt
#lang s-exp "stackerizer.rkt"
(+ (+ 1 2) (+ 3 4)) ; 10
1
2
#lang s-exp "stackerizer.rkt"
(+ (+ 1 2) (+ 3 4)) ; 10
copy to clipboard
stackerizer-test.rkt
#lang s-exp "stackerizer.rkt"
(+ 1 (+ 2 (+ 3 (+ 4 5)))) ; 15
1
2
#lang s-exp "stackerizer.rkt"
(+ 1 (+ 2 (+ 3 (+ 4 5)))) ; 15
copy to clipboard
stackerizer.rkt
#lang br/quicklang
(provide + *)

(define-macro (stackerizer-mb EXPR)
  #'(#%module-begin
     EXPR))
(provide (rename-out [stackerizer-mb #%module-begin]))

(define-macro-cases +
  [(+ FIRST) #'FIRST]
  [(+ FIRST NEXT ...) #'(list 'dyadd FIRST (+ NEXT ...))])
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#lang br/quicklang
(provide + *)

(define-macro (stackerizer-mb EXPR)
  #'(#%module-begin
     EXPR))
(provide (rename-out [stackerizer-mb #%module-begin]))

(define-macro-cases +
  [(+ FIRST) #'FIRST]
  [(+ FIRST NEXT ...) #'(list 'dyadd FIRST (+ NEXT ...))])
copy to clipboard
stackerizer-test.rkt
#lang s-exp "stackerizer.rkt"
(+ 1)
1
2
#lang s-exp "stackerizer.rkt"
(+ 1)
copy to clipboard
stackerizer-test.rkt
#lang s-exp "stackerizer.rkt"
(+ 1 2)
1
2
#lang s-exp "stackerizer.rkt"
(+ 1 2)
copy to clipboard
stackerizer-test.rkt
#lang s-exp "stackerizer.rkt"
(+ 1 2 3 4 5)
1
2
#lang s-exp "stackerizer.rkt"
(+ 1 2 3 4 5)
copy to clipboard
stackerizer.rkt
#lang br/quicklang
(provide + *)

(define-macro (stackerizer-mb EXPR)
  #'(#%module-begin
     (for-each displayln (reverse (flatten EXPR)))))
(provide (rename-out [stackerizer-mb #%module-begin]))

(define-macro-cases +
  [(+ FIRST) #'FIRST]
  [(+ FIRST NEXT ...) #'(list '+ FIRST (+ NEXT ...))])
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#lang br/quicklang
(provide + *)

(define-macro (stackerizer-mb EXPR)
  #'(#%module-begin
     (for-each displayln (reverse (flatten EXPR)))))
(provide (rename-out [stackerizer-mb #%module-begin]))

(define-macro-cases +
  [(+ FIRST) #'FIRST]
  [(+ FIRST NEXT ...) #'(list '+ FIRST (+ NEXT ...))])
copy to clipboard
stackerizer-test.rkt
#lang s-exp "stackerizer.rkt"
(+ 1 2 3 4 5)
1
2
#lang s-exp "stackerizer.rkt"
(+ 1 2 3 4 5)
copy to clipboard
stackerizer.rkt
#lang br/quicklang
(provide + *)

(define-macro (stackerizer-mb EXPR)
  #'(#%module-begin
     (for-each displayln (reverse (flatten EXPR)))))
(provide (rename-out [stackerizer-mb #%module-begin]))

(define-macro (define-op OP)
  #'(define-macro-cases OP
      [(OP FIRST) #'FIRST]
      [(OP FIRST NEXT (... ...))
       #'(list 'OP FIRST (OP NEXT (... ...)))]))

(define-op +)
(define-op *)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#lang br/quicklang
(provide + *)

(define-macro (stackerizer-mb EXPR)
  #'(#%module-begin
     (for-each displayln (reverse (flatten EXPR)))))
(provide (rename-out [stackerizer-mb #%module-begin]))

(define-macro (define-op OP)
  #'(define-macro-cases OP
      [(OP FIRST) #'FIRST]
      [(OP FIRST NEXT (... ...))
       #'(list 'OP FIRST (OP NEXT (... ...)))]))

(define-op +)
(define-op *)
copy to clipboard
stackerizer.rkt
#lang br/quicklang
(provide + *)

(define-macro (stackerizer-mb EXPR)
  #'(#%module-begin
     (for-each displayln (reverse (flatten EXPR)))))
(provide (rename-out [stackerizer-mb #%module-begin]))

(define-macro (define-ops OP ...)
  #'(begin
      (define-macro-cases OP
        [(OP FIRST) #'FIRST]
        [(OP FIRST NEXT (... ...))
         #'(list 'OP FIRST (OP NEXT (... ...)))])
      ...))

(define-ops + *)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#lang br/quicklang
(provide + *)

(define-macro (stackerizer-mb EXPR)
  #'(#%module-begin
     (for-each displayln (reverse (flatten EXPR)))))
(provide (rename-out [stackerizer-mb #%module-begin]))

(define-macro (define-ops OP ...)
  #'(begin
      (define-macro-cases OP
        [(OP FIRST) #'FIRST]
        [(OP FIRST NEXT (... ...))
         #'(list 'OP FIRST (OP NEXT (... ...)))]) 
      ...))

(define-ops + *)
copy to clipboard
stackerizer-test.rkt
#lang s-exp "stackerizer.rkt"
(* 3 (+ 8 4))
1
2
#lang s-exp "stackerizer.rkt"
(* 3 (+ 8 4))
copy to clipboard
stackerizer-test.rkt
#lang s-exp "stackerizer.rkt"
(* 1 2 (+ 3 4 (* 5 6 (+ 7 8 (* 9 10)))))
1
2
#lang s-exp "stackerizer.rkt"
(* 1 2 (+ 3 4 (* 5 6 (+ 7 8 (* 9 10)))))
copy to clipboard
← prev next →