Re: try* macro to catch multiple exception classes with one body. feedback is needed.

2013-06-22 Thread Max Gonzih
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.

2013-06-20 Thread Max Gonzih
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.

2013-06-20 Thread Max Gonzih
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.

2013-06-20 Thread Herwig Hochleitner
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.

2013-06-19 Thread 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?

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.

2013-06-19 Thread Meikel Brandmeyer (kotarak)
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.