aboutsummaryrefslogtreecommitdiff
path: root/entries/markusde/good-code/good-code.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'entries/markusde/good-code/good-code.rkt')
-rw-r--r--entries/markusde/good-code/good-code.rkt50
1 files changed, 0 insertions, 50 deletions
diff --git a/entries/markusde/good-code/good-code.rkt b/entries/markusde/good-code/good-code.rkt
deleted file mode 100644
index 0f45fc5..0000000
--- a/entries/markusde/good-code/good-code.rkt
+++ /dev/null
@@ -1,50 +0,0 @@
-#lang racket
-;; Requires Algebraic Racket https://docs.racket-lang.org/algebraic/index.html
-
-;; When I learned how to program, we kind of had to learn by osmosis.
-;; They would show us good code, and bad code, and say
-;; "write a fibonacci function which relies on how bad your code is"
-
-
-;; Generates a syntax object which comutes the nth fibonacci
-;; number with fib(n) linter warnings
-(define (generate-fib n)
- (cond
- [(zero? n) (syntax 0)]
- [(equal? n 1) (datum->syntax #'lex (quote ((lambda (x) 1) "gregor")))]
- [else (datum->syntax #'lex
- (quasiquote (+ (unquote (generate-fib (- n 1)))
- (unquote (generate-fib (- n 2))))))]))
-
-(eval (generate-fib 0))
-(eval (generate-fib 1))
-(eval (generate-fib 2))
-(eval (generate-fib 3))
-(eval (generate-fib 4))
-
-
-;; Compiles a racket program that computes the fibonacci numbers
-;; Reports the number of linter warnings
-;; Leaves the compiled fibonacci-n binary, which computes fib(n)
-(define (fibonacci n)
- (begin
- (define outfile (string-append "fibonacci-" (number->string n) ".rkt"))
- (define out (open-output-file outfile #:exists 'replace))
- (displayln "#lang algebraic/racket/base/linted" out)
- (writeln (syntax->datum (generate-fib n)) out)
- (close-output-port out)
- (define err-out (let ([str-port (open-output-string)])
- (parameterize ([current-error-port str-port])
- (system (string-append "raco exe " outfile))
- )
- (get-output-string str-port)))
- (delete-file outfile)
- (println (/ (length (string-split err-out "\n")) 4))))
-
-(fibonacci 0)
-(fibonacci 1)
-(fibonacci 2)
-(fibonacci 3)
-(fibonacci 4)
-
-