From f542ed357d6057ee0cf54efea32590c9f29a442b Mon Sep 17 00:00:00 2001 From: "Duong H. Nguyen" Date: Sun, 5 Jan 2014 21:25:12 +0700 Subject: Add input/output section for Racket --- racket.html.markdown | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/racket.html.markdown b/racket.html.markdown index adacd91d..8c15d447 100644 --- a/racket.html.markdown +++ b/racket.html.markdown @@ -6,6 +6,7 @@ contributors: - ["th3rac25", "https://github.com/voila"] - ["Eli Barzilay", "https://github.com/elibarzilay"] - ["Gustavo Schmidt", "https://github.com/gustavoschmidt"] + - ["Duong H. Nguyen", "https://github.com/cmpitg"] --- Racket is a general purpose, multi-paradigm programming language in the Lisp/Scheme family. @@ -600,6 +601,45 @@ vec ; => #(1 2 3 4) ;; expected: positive? ;; given: -5 ;; more details.... + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; 11. Input & output +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; Racket has this concept of "port", which is very similar to file descriptor +;; in other languages + +;; Open "/tmp/tmp.txt" and write "Hello World" +;; This would trigger an error if the file's already existed +(define out-port (open-output-file "/tmp/tmp.txt")) +(displayln "Hello World" out-port) +(close-output-port out-port) + +;; Append to "/tmp/tmp.txt" +(define out-port (open-output-file "/tmp/tmp.txt" + #:exists 'append)) +(displayln "Hola mundo" out-port) +(close-output-port out-port) + +;; Read from the file again +(define in-port (open-input-file "/tmp/tmp.txt")) +(displayln (read-line in-port)) +; => "Hello World" +(displayln (read-line in-port)) +; => "Hola mundo" +(close-input-port in-port) + +;; Alternatively, with call-with-output-file you don't need to explicitly +;; close the file +(call-with-output-file "/tmp/tmp.txt" + #:exists 'update ; Rewrite the content + (λ (out-port) + (displayln "World Hello!" out-port))) + +;; And call-with-input-file does the same thing for input +(call-with-input-file "/tmp/tmp.txt" + (λ (in-port) + (displayln (read-line in-port)))) ``` ## Further Reading -- cgit v1.2.3 From 17f4ff8588acfa4a0306f01b56de7abe4d9d9c89 Mon Sep 17 00:00:00 2001 From: "Duong H. Nguyen" Date: Sun, 5 Jan 2014 21:29:27 +0700 Subject: Fix Racket style --- racket.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/racket.html.markdown b/racket.html.markdown index 8c15d447..856fa75c 100644 --- a/racket.html.markdown +++ b/racket.html.markdown @@ -617,7 +617,7 @@ vec ; => #(1 2 3 4) ;; Append to "/tmp/tmp.txt" (define out-port (open-output-file "/tmp/tmp.txt" - #:exists 'append)) + #:exists 'append)) (displayln "Hola mundo" out-port) (close-output-port out-port) -- cgit v1.2.3 From 6801c7056d0e2d2eac269ff81a969c29775f6e4a Mon Sep 17 00:00:00 2001 From: "Duong H. Nguyen" Date: Sun, 5 Jan 2014 21:37:35 +0700 Subject: Improve language usage in Racket guide --- racket.html.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/racket.html.markdown b/racket.html.markdown index 856fa75c..eddc00bf 100644 --- a/racket.html.markdown +++ b/racket.html.markdown @@ -606,8 +606,8 @@ vec ; => #(1 2 3 4) ;; 11. Input & output ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Racket has this concept of "port", which is very similar to file descriptor -;; in other languages +;; Racket has this concept of "port", which is very similar to file +;; descriptors in other languages ;; Open "/tmp/tmp.txt" and write "Hello World" ;; This would trigger an error if the file's already existed -- cgit v1.2.3