Re: [ClojureScript] Is this a ClojureScript compiler bug or intended result?

2018-08-13 Thread David Nolen
The compiler emits to *out* during compilation. You will need to print to
some other output stream like *err* for now.

David

On Mon, Aug 13, 2018 at 2:41 AM Philos Kim  wrote:

> I wrote a macro in ClojureScript and wanted to test the macro by using
> println function like this,
>
> ;; qna/macro.clj
> (ns qna.macro)
>
> (defmacro my-add [a b]
>   (println "a =" a "b =" b)   ; <-- Here
>   `(+ ~a ~b))
>
>
> ;; qna/main.cljs
> (ns qna.main
>   (:require-macros [qna.macro :refer [my-add]]))
>
> (defn ^:export main []
>   (my-add 2 3))
>
>
> resources/public/index.html and project.clj are like the following.
>
> ;; resources/public/index.html
> 
> 
>   
> 
> QnA Demo
>   
>
>   
> QnA Demo
> 
>
> 
> qna.main.main();
>   
> 
>
>
> ;; project.clj
> (defproject qna "0.1.0-SNAPSHOT"
>   :dependencies [[org.clojure/clojure "1.9.0"]
>  [org.clojure/clojurescript "1.10.339"]]
>   :min-lein-version "2.6.0"
>   :plugins [[lein-cljsbuild "1.1.7"]
> [lein-figwheel "0.5.16"]]
>   :clean-targets ^{:protect false}
>   ["target"
>"resources/public/js/out"
>"resources/public/js/main.js"]
>   :cljsbuild
>   {:builds
>[{:id "dev"
>  :source-paths ["src"]
>  :compiler {:main  qna.main
> :output-to "resources/public/js/main.js"
> :output-dir "resources/public/js/out/"
> :asset-path "js/out/"
> :optimizations :none
> :source-map true
> :pretty-print true} }]})
>
> When I open the above .html file in the browser, I encounter the following
> error.
>
> Uncaught SyntaxError: Unexpected identifier in main.js:4
>
> And the compiled main.js file is like this.
>
> // Compiled by ClojureScript 1.10.339 {}
> goog.provide('qna.main');
> goog.require('cljs.core');
> a = 2 b = 3  // <-- embedded printed result
> qna.main.main = (function qna$main$main(){
> return ((2) + (3));
> });
> goog.exportSymbol('qna.main.main', qna.main.main);
>
> //# sourceMappingURL=main.js.map
>
>
> To sum up, whenever I evalute (println ...) within a macro, the printed
> result doesn't go to the REPL but is embedded into the compiled .js file.
>
> If this is a bug of ClojureScript, I will register this error in the
> ClojureScript JIRA.
>
>
>
>
>
> --
> Note that posts from new members are moderated - please be patient with
> your first post.
> ---
> You received this message because you are subscribed to the Google Groups
> "ClojureScript" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojurescript+unsubscr...@googlegroups.com.
> To post to this group, send email to clojurescript@googlegroups.com.
> Visit this group at https://groups.google.com/group/clojurescript.
>

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojurescript+unsubscr...@googlegroups.com.
To post to this group, send email to clojurescript@googlegroups.com.
Visit this group at https://groups.google.com/group/clojurescript.


[ClojureScript] Re: Is this a ClojureScript compiler bug or intended result?

2018-08-13 Thread Thomas Heller
You can use `cljs.util/debug-prn` if you need to print during macro 
expansion.

Whether or not this should be called a bug I don't know.

On Monday, August 13, 2018 at 8:41:05 AM UTC+2, Philos Kim wrote:
>
> I wrote a macro in ClojureScript and wanted to test the macro by using 
> println function like this,
>
> ;; qna/macro.clj
> (ns qna.macro)
>
> (defmacro my-add [a b]
>   (println "a =" a "b =" b)   ; <-- Here
>   `(+ ~a ~b))
>
>
> ;; qna/main.cljs
> (ns qna.main
>   (:require-macros [qna.macro :refer [my-add]]))
>
> (defn ^:export main []
>   (my-add 2 3))
>
>
> resources/public/index.html and project.clj are like the following.
>
> ;; resources/public/index.html
> 
> 
>   
> 
> QnA Demo
>   
>   
>   
> QnA Demo
>  
>
> 
> qna.main.main();
>   
> 
>
>
> ;; project.clj
> (defproject qna "0.1.0-SNAPSHOT"
>   :dependencies [[org.clojure/clojure "1.9.0"]
>  [org.clojure/clojurescript "1.10.339"]]
>   :min-lein-version "2.6.0"
>   :plugins [[lein-cljsbuild "1.1.7"]
> [lein-figwheel "0.5.16"]]
>   :clean-targets ^{:protect false}
>   ["target"
>"resources/public/js/out"
>"resources/public/js/main.js"]
>   :cljsbuild
>   {:builds
>[{:id "dev"
>  :source-paths ["src"]
>  :compiler {:main  qna.main
> :output-to "resources/public/js/main.js"
> :output-dir "resources/public/js/out/"
> :asset-path "js/out/"
> :optimizations :none
> :source-map true
> :pretty-print true} }]})
>
> When I open the above .html file in the browser, I encounter the following 
> error.
>
> Uncaught SyntaxError: Unexpected identifier in main.js:4
>
> And the compiled main.js file is like this.
>
> // Compiled by ClojureScript 1.10.339 {}
> goog.provide('qna.main');
> goog.require('cljs.core');
> a = 2 b = 3  // <-- embedded printed result
> qna.main.main = (function qna$main$main(){
> return ((2) + (3));
> });
> goog.exportSymbol('qna.main.main', qna.main.main);
>
> //# sourceMappingURL=main.js.map
>
>
> To sum up, whenever I evalute (println ...) within a macro, the printed 
> result doesn't go to the REPL but is embedded into the compiled .js file.
>
> If this is a bug of ClojureScript, I will register this error in the 
> ClojureScript JIRA.
>
>
>
>
>
>

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojurescript+unsubscr...@googlegroups.com.
To post to this group, send email to clojurescript@googlegroups.com.
Visit this group at https://groups.google.com/group/clojurescript.


[ClojureScript] Is this a ClojureScript compiler bug or intended result?

2018-08-13 Thread Philos Kim
I wrote a macro in ClojureScript and wanted to test the macro by using 
println function like this,

;; qna/macro.clj
(ns qna.macro)

(defmacro my-add [a b]
  (println "a =" a "b =" b)   ; <-- Here
  `(+ ~a ~b))


;; qna/main.cljs
(ns qna.main
  (:require-macros [qna.macro :refer [my-add]]))

(defn ^:export main []
  (my-add 2 3))


resources/public/index.html and project.clj are like the following.

;; resources/public/index.html


  

QnA Demo
  
  
  
QnA Demo
 


qna.main.main();
  



;; project.clj
(defproject qna "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.9.0"]
 [org.clojure/clojurescript "1.10.339"]]
  :min-lein-version "2.6.0"
  :plugins [[lein-cljsbuild "1.1.7"]
[lein-figwheel "0.5.16"]]
  :clean-targets ^{:protect false}
  ["target"
   "resources/public/js/out"
   "resources/public/js/main.js"]
  :cljsbuild
  {:builds
   [{:id "dev"
 :source-paths ["src"]
 :compiler {:main  qna.main
:output-to "resources/public/js/main.js"
:output-dir "resources/public/js/out/"
:asset-path "js/out/"
:optimizations :none
:source-map true
:pretty-print true} }]})

When I open the above .html file in the browser, I encounter the following 
error.

Uncaught SyntaxError: Unexpected identifier in main.js:4

And the compiled main.js file is like this.

// Compiled by ClojureScript 1.10.339 {}
goog.provide('qna.main');
goog.require('cljs.core');
a = 2 b = 3  // <-- embedded printed result
qna.main.main = (function qna$main$main(){
return ((2) + (3));
});
goog.exportSymbol('qna.main.main', qna.main.main);

//# sourceMappingURL=main.js.map


To sum up, whenever I evalute (println ...) within a macro, the printed 
result doesn't go to the REPL but is embedded into the compiled .js file.

If this is a bug of ClojureScript, I will register this error in the 
ClojureScript JIRA.





-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojurescript+unsubscr...@googlegroups.com.
To post to this group, send email to clojurescript@googlegroups.com.
Visit this group at https://groups.google.com/group/clojurescript.