Re: try* macro to catch multiple exception classes with one body. feedback is needed.
I can't think about another name for my macro :). Any ideas? Regards, Max On 20 Jun 2013 23:26, Herwig Hochleitner hhochleit...@gmail.com wrote: One thing to consider: try* is a compiler builtin form. Those are currently not even namespaced. That might lead to confusion for readers. 2013/6/20 Max Gonzih gon...@gmail.com I updated my macro to your solution, looks really simple and works like before. I don't know why I overcomplicated my original solution so much :). Thanks again! On Thursday, June 20, 2013 8:47:37 AM UTC+3, Meikel Brandmeyer (kotarak) wrote: Hi, Am Mittwoch, 19. Juni 2013 17:00:17 UTC+2 schrieb Max Gonzih: Hi, I implemented small macro to catch multiple exception classes with one body. https://gist.github.com/**Gonzih/5814945https://gist.github.com/Gonzih/5814945 What do you think? Are there better ways to achieve similar results? I would just extend try a simply as possible: simply add the catch-all, but keep catch and finally as is. Here my try: (defmacro try* [ body] (let [catch-all? #(and (seq? %) (= (first %) 'catch-all)) expand-catch (fn [[_catch-all exceptions catch-tail]] (map #(list* 'catch % catch-tail) exceptions)) transform(fn [form] (if (catch-all? form) (expand-catch form) [form]))] (cons `try (mapcat transform body (try* (println :a) (println :b) (catch-all [A B C] e (println (type e))) (catch D _ (println Got D!)) (finally (println Finally!))) expands to (try (println :a) (println :b) (catch A e (println (type e))) (catch B e (println (type e))) (catch C e (println (type e))) (catch D _ (println Got D!)) (finally (println Finally!))) Kind regards Meikel -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to a topic in the Google Groups Clojure group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/0Suarc57WCQ/unsubscribe. To unsubscribe from this group and all its topics, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: try* macro to catch multiple exception classes with one body. feedback is needed.
Right, simpler solution, thanks. Regards, Max On 20 Jun 2013 08:47, Meikel Brandmeyer (kotarak) m...@kotka.de wrote: Hi, Am Mittwoch, 19. Juni 2013 17:00:17 UTC+2 schrieb Max Gonzih: Hi, I implemented small macro to catch multiple exception classes with one body. https://gist.github.com/**Gonzih/5814945https://gist.github.com/Gonzih/5814945 What do you think? Are there better ways to achieve similar results? I would just extend try a simply as possible: simply add the catch-all, but keep catch and finally as is. Here my try: (defmacro try* [ body] (let [catch-all? #(and (seq? %) (= (first %) 'catch-all)) expand-catch (fn [[_catch-all exceptions catch-tail]] (map #(list* 'catch % catch-tail) exceptions)) transform(fn [form] (if (catch-all? form) (expand-catch form) [form]))] (cons `try (mapcat transform body (try* (println :a) (println :b) (catch-all [A B C] e (println (type e))) (catch D _ (println Got D!)) (finally (println Finally!))) expands to (try (println :a) (println :b) (catch A e (println (type e))) (catch B e (println (type e))) (catch C e (println (type e))) (catch D _ (println Got D!)) (finally (println Finally!))) Kind regards Meikel -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to a topic in the Google Groups Clojure group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/0Suarc57WCQ/unsubscribe. To unsubscribe from this group and all its topics, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: try* macro to catch multiple exception classes with one body. feedback is needed.
I updated my macro to your solution, looks really simple and works like before. I don't know why I overcomplicated my original solution so much :). Thanks again! On Thursday, June 20, 2013 8:47:37 AM UTC+3, Meikel Brandmeyer (kotarak) wrote: Hi, Am Mittwoch, 19. Juni 2013 17:00:17 UTC+2 schrieb Max Gonzih: Hi, I implemented small macro to catch multiple exception classes with one body. https://gist.github.com/Gonzih/5814945 What do you think? Are there better ways to achieve similar results? I would just extend try a simply as possible: simply add the catch-all, but keep catch and finally as is. Here my try: (defmacro try* [ body] (let [catch-all? #(and (seq? %) (= (first %) 'catch-all)) expand-catch (fn [[_catch-all exceptions catch-tail]] (map #(list* 'catch % catch-tail) exceptions)) transform(fn [form] (if (catch-all? form) (expand-catch form) [form]))] (cons `try (mapcat transform body (try* (println :a) (println :b) (catch-all [A B C] e (println (type e))) (catch D _ (println Got D!)) (finally (println Finally!))) expands to (try (println :a) (println :b) (catch A e (println (type e))) (catch B e (println (type e))) (catch C e (println (type e))) (catch D _ (println Got D!)) (finally (println Finally!))) Kind regards Meikel -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: try* macro to catch multiple exception classes with one body. feedback is needed.
One thing to consider: try* is a compiler builtin form. Those are currently not even namespaced. That might lead to confusion for readers. 2013/6/20 Max Gonzih gon...@gmail.com I updated my macro to your solution, looks really simple and works like before. I don't know why I overcomplicated my original solution so much :). Thanks again! On Thursday, June 20, 2013 8:47:37 AM UTC+3, Meikel Brandmeyer (kotarak) wrote: Hi, Am Mittwoch, 19. Juni 2013 17:00:17 UTC+2 schrieb Max Gonzih: Hi, I implemented small macro to catch multiple exception classes with one body. https://gist.github.com/**Gonzih/5814945https://gist.github.com/Gonzih/5814945 What do you think? Are there better ways to achieve similar results? I would just extend try a simply as possible: simply add the catch-all, but keep catch and finally as is. Here my try: (defmacro try* [ body] (let [catch-all? #(and (seq? %) (= (first %) 'catch-all)) expand-catch (fn [[_catch-all exceptions catch-tail]] (map #(list* 'catch % catch-tail) exceptions)) transform(fn [form] (if (catch-all? form) (expand-catch form) [form]))] (cons `try (mapcat transform body (try* (println :a) (println :b) (catch-all [A B C] e (println (type e))) (catch D _ (println Got D!)) (finally (println Finally!))) expands to (try (println :a) (println :b) (catch A e (println (type e))) (catch B e (println (type e))) (catch C e (println (type e))) (catch D _ (println Got D!)) (finally (println Finally!))) Kind regards Meikel -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
try* macro to catch multiple exception classes with one body. feedback is needed.
Hi, I implemented small macro to catch multiple exception classes with one body. https://gist.github.com/Gonzih/5814945 What do you think? Are there better ways to achieve similar results? Thanks! -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: try* macro to catch multiple exception classes with one body. feedback is needed.
Hi, Am Mittwoch, 19. Juni 2013 17:00:17 UTC+2 schrieb Max Gonzih: Hi, I implemented small macro to catch multiple exception classes with one body. https://gist.github.com/Gonzih/5814945 What do you think? Are there better ways to achieve similar results? I would just extend try a simply as possible: simply add the catch-all, but keep catch and finally as is. Here my try: (defmacro try* [ body] (let [catch-all? #(and (seq? %) (= (first %) 'catch-all)) expand-catch (fn [[_catch-all exceptions catch-tail]] (map #(list* 'catch % catch-tail) exceptions)) transform(fn [form] (if (catch-all? form) (expand-catch form) [form]))] (cons `try (mapcat transform body (try* (println :a) (println :b) (catch-all [A B C] e (println (type e))) (catch D _ (println Got D!)) (finally (println Finally!))) expands to (try (println :a) (println :b) (catch A e (println (type e))) (catch B e (println (type e))) (catch C e (println (type e))) (catch D _ (println Got D!)) (finally (println Finally!))) Kind regards Meikel -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.