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
> <!doctype html>
> <html lang="en">
>   <head>
>     <meta charset='utf-8'>
>     <title>QnA Demo</title>
>   </head>
>   
>   <body>
>     <h2>QnA Demo</h1>
>     <div id="app"></div> 
>
>     <script src="js/main.js"></script>
>     <script>qna.main.main();</script>
>   </body>
> </html>
>
>
> ;; 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.

Reply via email to