Re: Why aren't libraries like clojure/(data.csv, ...) on clojars.org?

2015-05-10 Thread Alex Miller
As usual, the answer is a combination of technical goals intertwined with 
history. Stuart Sierra is probably the one with the most knowledge of the 
history - it predates my involvement with Clojure in a deep way. Best link 
I see is: http://dev.clojure.org/pages/viewpage.action?pageId=950842. In 
summary, it was of primary importance to be available to the broader Java 
ecosystem and Maven central was already blessed and understood by that 
audience.

This is also from a time when builds based on Maven, Ant, Gradle, etc were 
more common than the relatively new and less-featured Leiningen. Those 
tools already understood Maven Central but had to be configured to use 
Clojars. I'm unsure of the exact timeline, but I'm pretty sure Clojars 
predated Leiningen by a year or two.

On Sunday, May 10, 2015 at 5:43:47 AM UTC-5, Jakub Holy wrote:

 This is essentially a question to Cognitect / developers of the clojure/* 
 libraries but I do not know of a better communication channel than this one.

 To me, clojars is the one place to go to find out what libraries are there 
 and especially what is the latest version. It always surprises me that some 
 core libraries such as .e.g clojure.data.cvs aren't there. It is annoying 
 and difficult to remember that I have to search both clojars and Maven 
 Central. I think it would be really wonderful if these libraries too could 
 be on clojars. Or is there any reason why this cannot be the case?

 (I know there are sites for finding libraries such as Clojure Toolbox but 
 that is not really what I am asking for here.)

 Thank you!

 Best regards, Jakub Holy


-- 
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/d/optout.


Re: Why aren't libraries like clojure/(data.csv, ...) on clojars.org?

2015-05-10 Thread Jakub Holy
Thank you, Alex. I understand and agree with the importance of publishing
to Maven Central but my question is why can't we publish *also* to Clojars?

--
Forget software. Strive to make an impact, deliver a valuable change.

(Vær så snill og hjelp meg med å forbedre norsken min – skriftlig og
muntlig. Takk!)

Jakub Holy
Solutions Engineer | +47 966 23 666
Iterate AS | www.iterate.no
The Lean Software Development Consultancy
- http://theholyjava.wordpress.com/ -
11. mai 2015 07:19 skrev Alex Miller a...@puredanger.com:

 As usual, the answer is a combination of technical goals intertwined with
 history. Stuart Sierra is probably the one with the most knowledge of the
 history - it predates my involvement with Clojure in a deep way. Best link
 I see is: http://dev.clojure.org/pages/viewpage.action?pageId=950842. In
 summary, it was of primary importance to be available to the broader Java
 ecosystem and Maven central was already blessed and understood by that
 audience.

 This is also from a time when builds based on Maven, Ant, Gradle, etc were
 more common than the relatively new and less-featured Leiningen. Those
 tools already understood Maven Central but had to be configured to use
 Clojars. I'm unsure of the exact timeline, but I'm pretty sure Clojars
 predated Leiningen by a year or two.

 On Sunday, May 10, 2015 at 5:43:47 AM UTC-5, Jakub Holy wrote:

 This is essentially a question to Cognitect / developers of the clojure/*
 libraries but I do not know of a better communication channel than this one.

 To me, clojars is the one place to go to find out what libraries are
 there and especially what is the latest version. It always surprises me
 that some core libraries such as .e.g clojure.data.cvs aren't there. It is
 annoying and difficult to remember that I have to search both clojars and
 Maven Central. I think it would be really wonderful if these libraries too
 could be on clojars. Or is there any reason why this cannot be the case?

 (I know there are sites for finding libraries such as Clojure Toolbox but
 that is not really what I am asking for here.)

 Thank you!

 Best regards, Jakub Holy

  --
 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/kGwmWLRAUNo/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/d/optout.


-- 
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/d/optout.


Re: [ANN] Fipp 0.6.0 release: Clojure 1.7 and experimental ClojureScript support

2015-05-10 Thread Brandon Bloom
Just cut a 0.6.1 release with a few small fixes on the Clojure side and now 
moderately-less experimental ClojureScript support.

I know that, as of the this past week, you now have ∞×2 more options for 
ClojureScript pretty printing. Coincidence? or Thank you .cljc? You 
decide. Anyway, while clojure.pprint and its cljs.pprint port are both 
supremely useful and excellent software, Fipp has a lot to offer too!

Please give it a try, you may become addicted to how snappy it prints; or 
you may discover you have something other than EDN which you wish to pretty 
print. Fipp is the fastest game in town, and its simple/easy generic engine 
is available for your use and abuse.

Cheers,
Brandon

On Sunday, May 3, 2015 at 11:01:19 AM UTC-7, Brandon Bloom wrote:

 Fipp is a better pretty printer for Clojure (and now/soon ClojureScript!)

 https://github.com/brandonbloom/fipp

 Please give it a try and let me know how it goes.

 Version 0.6.0 includes...
 - Several nice performance improvements via Transducers
 - A totally rewritten Edn printer with tagged literal support
 - Experimental ClojureScript support

 Known CLJS Issues
 - No tagged literal support yet
 - The cljs.jar repl does something funky to newlines when printing
 - Lots of CLJS types with pr extensions are not yet specially handled
 - A bunch more stuff, to be fixed soon!

 Keep an eye out for related upgrades to the Pudget and Whidbey companion 
 projects when I get some more free time.

 Cheers,
 Brandon




-- 
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/d/optout.


Re: What is best practice regarding transducers

2015-05-10 Thread Brandon Bloom


 If you have a public project on Github that is using transducers, would 
 you please point me to it? I would like to see what you did. 


Fipp's Clojure 1.7 tuned-up engine uses transducers to emulate 
mapcat(-with-state), while minimizing intermediate object allocations. 
Reducers was used previously, but mapcat still required intermediate 
allocations. Transducers avoid that, but take on a more effectful feel.

Code 
here: 
https://github.com/brandonbloom/fipp/blob/648d928d94f0b247af9a0c4f95e7ec7024b5b001/src/fipp/engine.cljc

-- 
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/d/optout.


Re: What does ^:internal mean?

2015-05-10 Thread Robert Levy
Some people don't like the native approach to private vars since anyone who
wants to override it can do so anyway, so they go with a purely
conventional and unenforced approach: delineate the boundaries of API vs
internal using :internal or :impl and/or put the internal bits in an impl
namespace.  The origins of this are partly in the Joy of Clojure and partly
in Phil Hagelberg's code I believe.

On Sun, May 10, 2015 at 12:00 PM, piastkra...@gmail.com wrote:

 Sadly, Google seems to think I am search for internal when I search for
 ^:internal so that makes it hard to find the documentation. I am curious
 about this code:

 ;;; Capture the standard def forms' arglists
 (def ^:internal defn-arglists (vec (:arglists (meta #'defn
 (def ^:internal fn-arglists (vec (:arglists (meta #'fn
 (def ^:internal defmulti-arglists (vec (:arglists (meta #'defmulti
 (def ^:internal def-arglists '[[symbol doc-string? init?]])

 From here:


 https://github.com/palletops/api-builder/blob/4d82355bec1ebdf7c501be71e2f3d156ae84ad2c/src/com/palletops/api_builder/impl.clj

 What does ^:internal mean in this context?







  --
 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/d/optout.


-- 
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/d/optout.


Re: What is best practice regarding transducers

2015-05-10 Thread Steve Miner
xempty is a transducer that just returns an empty result, essentially ignoring 
the input.  The thought was that a degenerate transducer might be useful in a 
complex chain if you want to stop processing.  I haven’t actually used it for 
anything, just experimenting.

 On May 10, 2015, at 3:12 PM, piastkra...@gmail.com wrote:
 
 That is interesting. What is xempty for? 

-- 
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/d/optout.


Re: ANN: ClojureScript 0.0-3255 - pretty printer latest Closure Compiler / Library

2015-05-10 Thread David Nolen
ClojureScript now requires Clojure 1.7.0-beta2

On Sunday, May 10, 2015, Dmitri dmitri.sotni...@gmail.com wrote:

 Is there possibly anything else missing in the package, figwheel doesn't
 appear to find the repl ns.

 lein figwheel
 Retrieving org/clojure/clojurescript/0.0-3269/clojurescript-0.0-3269.pom
 from central
 Retrieving org/clojure/clojurescript/0.0-3269/clojurescript-0.0-3269.jar
 from central
 Exception in thread main java.io.FileNotFoundException: Could not locate
 cljs/repl__init.class or cljs/repl.clj on classpath: ,
 compiling:(figwheel_sidecar/repl.clj:1:1)



 On Sunday, May 10, 2015 at 10:20:13 AM UTC-4, David Nolen wrote:

 Just cut 0.0-3269 which adds the missing analysis and source map bits
 back into the artifacts. It also cleans up :libs support and fixes a
 related regression with Closure compatible libraries that follow classpath
 conventions (like transit-js). Both :libs Closure libraries and classpath
 aware Closure compatible libraries now enjoy REPL support.

 David

 On Sun, May 10, 2015 at 9:41 AM, David Nolen dnolen...@gmail.com wrote:

 It appears there are still some important bits missing from the
 artifacts. Working through the issues and will cut a release soon.

 David

 On Sun, May 10, 2015 at 12:22 AM, Rangel Spasov rasp...@gmail.com
 wrote:

 Hey guys,

 0.0-3264 fails for me with:

 clojure.lang.ExceptionInfo: failed compiling
 file:resources/public/js/compiled/out/cljs/core.cljs

  at clojure.core$ex_info.invoke (core.clj:4591)

 Caused by: java.lang.IllegalArgumentException: No implementation of
 method: :make-reader of protocol: #'clojure.java.io/IOFactory found
 for class: nil

  at clojure.core$_cache_protocol_fn.invoke (core_deftype.clj:554)

 0.0-3255 seems fine.

 @raspasov

 On Saturday, May 9, 2015 at 12:33:52 PM UTC-7, David Nolen wrote:

 Just released 0.0-3264, it fixes a critical issue where .js files were
 missing from the artifacts due to the changed build. Also included are a
 several fixes around the :libs feature, REPLs, and stack trace mapping.

 David

 On Fri, May 8, 2015 at 3:23 PM, David Nolen dnolen...@gmail.com
 wrote:

 ClojureScript, the Clojure compiler that emits JavaScript source code.

 README and source code: https://github.com/clojure/clojurescript

 Leiningen dependency information:

 [org.clojure/clojurescript 0.0-3255]

 A big thanks goes out to Jonathan Boston and Shaun Lebron for this
 release. Thanks to their efforts ClojureScript now includes a full
 port of clojure.pprint under the cljs.pprint namespace. This was the
 last major namespace in need of porting to ClojureScript.

 The release also bumps several dependencies: Clojure 1.7.0-beta2,
 tools.reader 0.9.2, Closure Compiler v20150505, and Closure Library
 0.0-20150505-021ed5b3.

 This release also fixes some regressions around async testing,
 docstring REPL support, arglist meta, and more.

 As always feedback welcome!

 ## 0.0-3255

 ### Changes
 * Update Closure Library dependency
 * CLJS-1252: Update Closure Compiler Dependency to v20150505
 * .clj - .cljc for important analysis / compilation bits
 * add public cljs.compiler.api namespace
 * CLJS-1224: cljs.repl: Memoize stack frame mapping
 * depend on tools.reader 0.9.2

 ### Enhancements
 * add cljs.pprint/pp macro
 * CLJS-710: port clojure.pprint
 * CLJS-1178: Compiler does not know Math ns is not not-native
 * add getBasis methods to deftype and defrecord ctors a la Clojure JVM
 * support ^long and ^double type hints

 ### Fixes
 * fix cljs-1198 async testing regression
 * CLJS-1254: Update REPL browser agent detection CLJS-1253: Create/Use
   new Closure Library Release
 * CLJS-1225: Variadic function with same name as parent function gives
   runtime error in advanced compile mode.
 * CLJS-1246: Add cljs.core/record? predicate.
 * CLJS-1239: Make eduction variadic.
 * CLJS-1244: tagged-literal precondition check missing wrapping vector
 * CLJS-1243: Add TaggedLiteral type  related fns
 * CLJS-1240: Add cljs.core/var?
 * CLJS-1214: :arglists meta has needless quoting CLJS-1232: bad
   arglists for doc, regression
 * CLJS-1212: Error in set ctor for  8-entry map literal
 * CLJS-1218: Syntax quoting an alias created with :require-macros
   throws ClassCastException
 * CLJS-1213: cljs.analyzer incorrectly marks all defs as tests when
   eliding test metadata
 * CLJS-742: Compilation with :output-file option set fails


  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clo...@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+u...@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 

Re: ANN: ClojureScript 0.0-3255 - pretty printer latest Closure Compiler / Library

2015-05-10 Thread Dmitri
Is there possibly anything else missing in the package, figwheel doesn't 
appear to find the repl ns.

lein figwheel
Retrieving org/clojure/clojurescript/0.0-3269/clojurescript-0.0-3269.pom 
from central
Retrieving org/clojure/clojurescript/0.0-3269/clojurescript-0.0-3269.jar 
from central
Exception in thread main java.io.FileNotFoundException: Could not locate 
cljs/repl__init.class or cljs/repl.clj on classpath: , 
compiling:(figwheel_sidecar/repl.clj:1:1)



On Sunday, May 10, 2015 at 10:20:13 AM UTC-4, David Nolen wrote:

 Just cut 0.0-3269 which adds the missing analysis and source map bits back 
 into the artifacts. It also cleans up :libs support and fixes a related 
 regression with Closure compatible libraries that follow classpath 
 conventions (like transit-js). Both :libs Closure libraries and classpath 
 aware Closure compatible libraries now enjoy REPL support.

 David

 On Sun, May 10, 2015 at 9:41 AM, David Nolen dnolen...@gmail.com 
 javascript: wrote:

 It appears there are still some important bits missing from the 
 artifacts. Working through the issues and will cut a release soon.

 David

 On Sun, May 10, 2015 at 12:22 AM, Rangel Spasov rasp...@gmail.com 
 javascript: wrote:

 Hey guys,

 0.0-3264 fails for me with:

 clojure.lang.ExceptionInfo: failed compiling 
 file:resources/public/js/compiled/out/cljs/core.cljs

  at clojure.core$ex_info.invoke (core.clj:4591)

 Caused by: java.lang.IllegalArgumentException: No implementation of 
 method: :make-reader of protocol: #'clojure.java.io/IOFactory found for 
 class: nil

  at clojure.core$_cache_protocol_fn.invoke (core_deftype.clj:554)

 0.0-3255 seems fine. 

 @raspasov

 On Saturday, May 9, 2015 at 12:33:52 PM UTC-7, David Nolen wrote:

 Just released 0.0-3264, it fixes a critical issue where .js files were 
 missing from the artifacts due to the changed build. Also included are a 
 several fixes around the :libs feature, REPLs, and stack trace mapping.

 David

 On Fri, May 8, 2015 at 3:23 PM, David Nolen dnolen...@gmail.com 
 wrote:

 ClojureScript, the Clojure compiler that emits JavaScript source code.

 README and source code: https://github.com/clojure/clojurescript

 Leiningen dependency information:

 [org.clojure/clojurescript 0.0-3255]

 A big thanks goes out to Jonathan Boston and Shaun Lebron for this
 release. Thanks to their efforts ClojureScript now includes a full
 port of clojure.pprint under the cljs.pprint namespace. This was the
 last major namespace in need of porting to ClojureScript.

 The release also bumps several dependencies: Clojure 1.7.0-beta2,
 tools.reader 0.9.2, Closure Compiler v20150505, and Closure Library
 0.0-20150505-021ed5b3.

 This release also fixes some regressions around async testing,
 docstring REPL support, arglist meta, and more.

 As always feedback welcome!

 ## 0.0-3255

 ### Changes
 * Update Closure Library dependency
 * CLJS-1252: Update Closure Compiler Dependency to v20150505
 * .clj - .cljc for important analysis / compilation bits
 * add public cljs.compiler.api namespace
 * CLJS-1224: cljs.repl: Memoize stack frame mapping
 * depend on tools.reader 0.9.2

 ### Enhancements
 * add cljs.pprint/pp macro
 * CLJS-710: port clojure.pprint
 * CLJS-1178: Compiler does not know Math ns is not not-native
 * add getBasis methods to deftype and defrecord ctors a la Clojure JVM
 * support ^long and ^double type hints

 ### Fixes
 * fix cljs-1198 async testing regression
 * CLJS-1254: Update REPL browser agent detection CLJS-1253: Create/Use
   new Closure Library Release
 * CLJS-1225: Variadic function with same name as parent function gives
   runtime error in advanced compile mode.
 * CLJS-1246: Add cljs.core/record? predicate.
 * CLJS-1239: Make eduction variadic.
 * CLJS-1244: tagged-literal precondition check missing wrapping vector
 * CLJS-1243: Add TaggedLiteral type  related fns
 * CLJS-1240: Add cljs.core/var?
 * CLJS-1214: :arglists meta has needless quoting CLJS-1232: bad
   arglists for doc, regression
 * CLJS-1212: Error in set ctor for  8-entry map literal
 * CLJS-1218: Syntax quoting an alias created with :require-macros
   throws ClassCastException
 * CLJS-1213: cljs.analyzer incorrectly marks all defs as tests when
   eliding test metadata
 * CLJS-742: Compilation with :output-file option set fails


  -- 
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clo...@googlegroups.com 
 javascript:
 Note that posts from new members are moderated - please be patient with 
 your first post.
 To unsubscribe from this group, send email to
 clojure+u...@googlegroups.com javascript:
 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+u...@googlegroups.com javascript:.
 For more 

[ANN] clasew 0.1.9

2015-05-10 Thread Frank Castellucci
https://github.com/FrankC01/clasew

*clasew *- Clojure AppleScriptEngine Wrapper

*Intent* - clasew provides an idiomatic Clojure wrapper for Java 
ScriptManager: specifically apple.AppleScriptManager, as well as providing 
scriptable applications HOF DSLs.
Realizing that the audience for such capability may be minimal, others may 
find this a useful addition to the 'niche' library. 

*Changes* - All changes om this release were focused on clasew Excel DSL, 
details: https://github.com/FrankC01/clasew/blob/master/CHANGES.md

Feedback (+/-) and comments (+/-) are always welcome and appreciated.

Enjoy
Frank V. Castellucci

-- 
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/d/optout.


Re: separation of concerns w/o encapsulation

2015-05-10 Thread Frank Castellucci
Brian

One is better off thinking that avoidance, as per your note, is a 
*discipline* of *better practices. *As the architectural concepts of 
Separation of Concerns and Minimized Surface Areas were intended.

Many languages attempt to enforce this notion in something called 
encapsulation. However; Encapsulation is buzz as it is subject to the 
pressures of the moment, including but not limited to:

   1. Market pressure for timely delivery - or *Ef it, I'm just going to 
   expose this one little thing for now...*
   2. Introspection - If I can find it, I'll figure out how to get/set it. 
   Especially easy through such things as:
   3. Byte Code Injection - In the case of Java, and,
   4. Easy work arounds - In the case of Clojure's  *(**def my-local 
   #'ns/their-privates)*

How to avoid it? Discipline and code reviews.

Frank Castellucci




On Friday, May 8, 2015 at 12:29:50 PM UTC-4, Brian Craft wrote:

 Talk on the list about encapsulation usually comes back to some variation 
 of you don't need it when you have immutable data structures. But in the 
 long term I'm finding the problem of working w/o encapsulation is not the 
 danger of data being mutated under you. Rather, it's the danger of all the 
 module boundaries blurring over time, leading to the big ball of mud: a 
 very fragile code base where everything depends on everything else.

 E.g. if you model your application with a plain data structure which you 
 pass around to different modules, each concerned with a small part of that 
 data structure, the tendency over time is for every module to become 
 concerned with every part of that data structure.  Then you have no 
 separation, nothing is reusable, and the code is very fragile.

 How do you avoid this, practically? In OO it would be enforced with 
 encapsulation, so the next developer (which might be me, six months later) 
 trying to fix a bug, or add a feature, knows Oh, I shouldn't peek in here: 
 this module isn't supposed to depend on that piece of data.


-- 
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/d/optout.


Re: ANN: ClojureScript 0.0-3255 - pretty printer latest Closure Compiler / Library

2015-05-10 Thread Rangel Spasov
0.0-3269 fixed it for me, thanks guys!

On Sunday, May 10, 2015 at 7:20:13 AM UTC-7, David Nolen wrote:

 Just cut 0.0-3269 which adds the missing analysis and source map bits back 
 into the artifacts. It also cleans up :libs support and fixes a related 
 regression with Closure compatible libraries that follow classpath 
 conventions (like transit-js). Both :libs Closure libraries and classpath 
 aware Closure compatible libraries now enjoy REPL support.

 David

 On Sun, May 10, 2015 at 9:41 AM, David Nolen dnolen...@gmail.com 
 javascript: wrote:

 It appears there are still some important bits missing from the 
 artifacts. Working through the issues and will cut a release soon.

 David

 On Sun, May 10, 2015 at 12:22 AM, Rangel Spasov rasp...@gmail.com 
 javascript: wrote:

 Hey guys,

 0.0-3264 fails for me with:

 clojure.lang.ExceptionInfo: failed compiling 
 file:resources/public/js/compiled/out/cljs/core.cljs

  at clojure.core$ex_info.invoke (core.clj:4591)

 Caused by: java.lang.IllegalArgumentException: No implementation of 
 method: :make-reader of protocol: #'clojure.java.io/IOFactory found for 
 class: nil

  at clojure.core$_cache_protocol_fn.invoke (core_deftype.clj:554)

 0.0-3255 seems fine. 

 @raspasov

 On Saturday, May 9, 2015 at 12:33:52 PM UTC-7, David Nolen wrote:

 Just released 0.0-3264, it fixes a critical issue where .js files were 
 missing from the artifacts due to the changed build. Also included are a 
 several fixes around the :libs feature, REPLs, and stack trace mapping.

 David

 On Fri, May 8, 2015 at 3:23 PM, David Nolen dnolen...@gmail.com 
 wrote:

 ClojureScript, the Clojure compiler that emits JavaScript source code.

 README and source code: https://github.com/clojure/clojurescript

 Leiningen dependency information:

 [org.clojure/clojurescript 0.0-3255]

 A big thanks goes out to Jonathan Boston and Shaun Lebron for this
 release. Thanks to their efforts ClojureScript now includes a full
 port of clojure.pprint under the cljs.pprint namespace. This was the
 last major namespace in need of porting to ClojureScript.

 The release also bumps several dependencies: Clojure 1.7.0-beta2,
 tools.reader 0.9.2, Closure Compiler v20150505, and Closure Library
 0.0-20150505-021ed5b3.

 This release also fixes some regressions around async testing,
 docstring REPL support, arglist meta, and more.

 As always feedback welcome!

 ## 0.0-3255

 ### Changes
 * Update Closure Library dependency
 * CLJS-1252: Update Closure Compiler Dependency to v20150505
 * .clj - .cljc for important analysis / compilation bits
 * add public cljs.compiler.api namespace
 * CLJS-1224: cljs.repl: Memoize stack frame mapping
 * depend on tools.reader 0.9.2

 ### Enhancements
 * add cljs.pprint/pp macro
 * CLJS-710: port clojure.pprint
 * CLJS-1178: Compiler does not know Math ns is not not-native
 * add getBasis methods to deftype and defrecord ctors a la Clojure JVM
 * support ^long and ^double type hints

 ### Fixes
 * fix cljs-1198 async testing regression
 * CLJS-1254: Update REPL browser agent detection CLJS-1253: Create/Use
   new Closure Library Release
 * CLJS-1225: Variadic function with same name as parent function gives
   runtime error in advanced compile mode.
 * CLJS-1246: Add cljs.core/record? predicate.
 * CLJS-1239: Make eduction variadic.
 * CLJS-1244: tagged-literal precondition check missing wrapping vector
 * CLJS-1243: Add TaggedLiteral type  related fns
 * CLJS-1240: Add cljs.core/var?
 * CLJS-1214: :arglists meta has needless quoting CLJS-1232: bad
   arglists for doc, regression
 * CLJS-1212: Error in set ctor for  8-entry map literal
 * CLJS-1218: Syntax quoting an alias created with :require-macros
   throws ClassCastException
 * CLJS-1213: cljs.analyzer incorrectly marks all defs as tests when
   eliding test metadata
 * CLJS-742: Compilation with :output-file option set fails


  -- 
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clo...@googlegroups.com 
 javascript:
 Note that posts from new members are moderated - please be patient with 
 your first post.
 To unsubscribe from this group, send email to
 clojure+u...@googlegroups.com javascript:
 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+u...@googlegroups.com javascript:.
 For more options, visit https://groups.google.com/d/optout.





-- 
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

Re: Why aren't libraries like clojure/(data.csv, ...) on clojars.org?

2015-05-10 Thread Sergey Didenko
(A bit offtopic) Leiningen fetches libraries from Clojars and Maven, so I
guess this problem is not visible to the big part of the community.


On Sun, May 10, 2015 at 1:43 PM, Jakub Holy jakub.h...@iterate.no wrote:

 This is essentially a question to Cognitect / developers of the clojure/*
 libraries but I do not know of a better communication channel than this one.

 To me, clojars is the one place to go to find out what libraries are there
 and especially what is the latest version. It always surprises me that some
 core libraries such as .e.g clojure.data.cvs aren't there. It is annoying
 and difficult to remember that I have to search both clojars and Maven
 Central. I think it would be really wonderful if these libraries too could
 be on clojars. Or is there any reason why this cannot be the case?

 (I know there are sites for finding libraries such as Clojure Toolbox but
 that is not really what I am asking for here.)

 Thank you!

 Best regards, Jakub Holy

 --
 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/d/optout.


-- 
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/d/optout.


Why aren't libraries like clojure/(data.csv, ...) on clojars.org?

2015-05-10 Thread Jakub Holy
This is essentially a question to Cognitect / developers of the clojure/* 
libraries but I do not know of a better communication channel than this one.

To me, clojars is the one place to go to find out what libraries are there 
and especially what is the latest version. It always surprises me that some 
core libraries such as .e.g clojure.data.cvs aren't there. It is annoying 
and difficult to remember that I have to search both clojars and Maven 
Central. I think it would be really wonderful if these libraries too could 
be on clojars. Or is there any reason why this cannot be the case?

(I know there are sites for finding libraries such as Clojure Toolbox but 
that is not really what I am asking for here.)

Thank you!

Best regards, Jakub Holy

-- 
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/d/optout.


Re: how goeth the STM experiment?

2015-05-10 Thread piastkrakow


 An other thing when I have used with agents is implement an async 
interface for jdbc 
 like applications. I have a little explication on how it is done 
 here: http://funcool.github.io/suricatta/latest/#_async_interface 


That is an impressive bit of documentation. Thank you. 





On Saturday, May 9, 2015 at 3:33:15 AM UTC-4, Andrey Antukh wrote:

 Hi!

 Personally, I do not have the opportunity to use refs, but atoms and agens 
 I have used it in different ways

 I have used agents for logging system, thanks to its guarantees of 
 execution functions in a serial way. This allows heavy multithreading 
 applications put logs to stdout (or any other destination) and have as 
 result a consistent log.

 An other thing when I have used with agents is implement an async 
 interface for jdbc like applications. I have a little explication on how it 
 is done here: http://funcool.github.io/suricatta/latest/#_async_interface 

 I hope you find it useful.

 Cheers.
 Andrey

 2015-05-09 3:56 GMT+02:00 piast...@gmail.com javascript::

 This seems to be true:

 I would have to say that the biggest surprise is how little they're 
 needed in Clojure.

 Run this search on Google: 

 agent send clojure site:github.com

 The first 5 pages point me to examples from several years ago, or error 
 reports, or unit tests. Nothing substantial or recent. I think it is 
 interesting how many of the results are blog posts or gists -- people talk 
 about agents much more then they actually use them. 

 Still, there are some examples: 


 https://github.com/aphyr/riemann/blob/302cff942f308771b1d8d837cdf9ce2c9090daed/src/riemann/pool.clj

 (defmacro with-pool Evaluates body in a try expression with a symbol 
 'thingy claimed from the given pool, with specified claim timeout. 
 Releases thingy at the end of the body, or if an exception is thrown, 
 invalidates them and rethrows. Example: ; With client, taken from 
 connection-pool, waiting 5 seconds to claim, send ; client a message. 
 (with-pool [client connection-pool 5] (send client a-message)) [[thingy 
 pool timeout]  body] ; Destructuring bind could change nil to a, say, 
 vector, and cause ; unbalanced claim/release. `(let [thingy# (claim ~pool 
 ~timeout) ~thingy thingy#] (try (let [res# (do ~@body)] (release ~pool 
 thingy#) res#) (catch Throwable t# (invalidate ~pool thingy#) (throw 
 t#)



 And:


 https://github.com/clojure/java.jmx/blob/master/src/main/clojure/clojure/java/jmx.clj


 (deftype Bean [state-ref] DynamicMBean (getMBeanInfo [_] (MBeanInfo. (.. 
 _ getClass getName) ; class name Clojure Dynamic MBean ; description (
 map-attribute-infos @state-ref) ; attributes nil ; constructors nil ; 
 operations nil)) (getAttribute [_ attr] (@state-ref (keyword attr))) (
 getAttributes [_ attrs] (let [result (AttributeList.)] (doseq [attr attrs] 
 (.add result (Attribute. attr (.getAttribute _ attr result)) (
 setAttribute [_ attr] (let [attr-name (.getName attr) attr-value (
 .getValue attr) state-update {(keyword attr-name) attr-value}] (condp = (
 type state-ref) clojure.lang.Agent (await (send state-ref (fn [state 
 state-update] (merge state state-update)) state-update)) clojure.lang.Atom 
 (swap! state-ref merge state-update) clojure.lang.Ref (dosync (ref-set 
 state-ref (merge @state-ref state-update)) (setAttributes [_ attrs] (
 let [attr-names (map (fn [attr] (.setAttribute _ attr) (.getName attr)) 
 attrs)] (.getAttributes _ (into-array attr-names)



 I would love to see some other examples.




  

 On Wednesday, May 6, 2015 at 9:49:47 PM UTC-4, Surgo wrote:

 I'm not saying this is everyone's experience o

 ...

-- 
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/d/optout.


Re: ANN: ClojureScript 0.0-3255 - pretty printer latest Closure Compiler / Library

2015-05-10 Thread David Nolen
Just cut 0.0-3269 which adds the missing analysis and source map bits back
into the artifacts. It also cleans up :libs support and fixes a related
regression with Closure compatible libraries that follow classpath
conventions (like transit-js). Both :libs Closure libraries and classpath
aware Closure compatible libraries now enjoy REPL support.

David

On Sun, May 10, 2015 at 9:41 AM, David Nolen dnolen.li...@gmail.com wrote:

 It appears there are still some important bits missing from the artifacts.
 Working through the issues and will cut a release soon.

 David

 On Sun, May 10, 2015 at 12:22 AM, Rangel Spasov raspa...@gmail.com
 wrote:

 Hey guys,

 0.0-3264 fails for me with:

 clojure.lang.ExceptionInfo: failed compiling
 file:resources/public/js/compiled/out/cljs/core.cljs

  at clojure.core$ex_info.invoke (core.clj:4591)

 Caused by: java.lang.IllegalArgumentException: No implementation of
 method: :make-reader of protocol: #'clojure.java.io/IOFactory found for
 class: nil

  at clojure.core$_cache_protocol_fn.invoke (core_deftype.clj:554)

 0.0-3255 seems fine.

 @raspasov

 On Saturday, May 9, 2015 at 12:33:52 PM UTC-7, David Nolen wrote:

 Just released 0.0-3264, it fixes a critical issue where .js files were
 missing from the artifacts due to the changed build. Also included are a
 several fixes around the :libs feature, REPLs, and stack trace mapping.

 David

 On Fri, May 8, 2015 at 3:23 PM, David Nolen dnolen...@gmail.com wrote:

 ClojureScript, the Clojure compiler that emits JavaScript source code.

 README and source code: https://github.com/clojure/clojurescript

 Leiningen dependency information:

 [org.clojure/clojurescript 0.0-3255]

 A big thanks goes out to Jonathan Boston and Shaun Lebron for this
 release. Thanks to their efforts ClojureScript now includes a full
 port of clojure.pprint under the cljs.pprint namespace. This was the
 last major namespace in need of porting to ClojureScript.

 The release also bumps several dependencies: Clojure 1.7.0-beta2,
 tools.reader 0.9.2, Closure Compiler v20150505, and Closure Library
 0.0-20150505-021ed5b3.

 This release also fixes some regressions around async testing,
 docstring REPL support, arglist meta, and more.

 As always feedback welcome!

 ## 0.0-3255

 ### Changes
 * Update Closure Library dependency
 * CLJS-1252: Update Closure Compiler Dependency to v20150505
 * .clj - .cljc for important analysis / compilation bits
 * add public cljs.compiler.api namespace
 * CLJS-1224: cljs.repl: Memoize stack frame mapping
 * depend on tools.reader 0.9.2

 ### Enhancements
 * add cljs.pprint/pp macro
 * CLJS-710: port clojure.pprint
 * CLJS-1178: Compiler does not know Math ns is not not-native
 * add getBasis methods to deftype and defrecord ctors a la Clojure JVM
 * support ^long and ^double type hints

 ### Fixes
 * fix cljs-1198 async testing regression
 * CLJS-1254: Update REPL browser agent detection CLJS-1253: Create/Use
   new Closure Library Release
 * CLJS-1225: Variadic function with same name as parent function gives
   runtime error in advanced compile mode.
 * CLJS-1246: Add cljs.core/record? predicate.
 * CLJS-1239: Make eduction variadic.
 * CLJS-1244: tagged-literal precondition check missing wrapping vector
 * CLJS-1243: Add TaggedLiteral type  related fns
 * CLJS-1240: Add cljs.core/var?
 * CLJS-1214: :arglists meta has needless quoting CLJS-1232: bad
   arglists for doc, regression
 * CLJS-1212: Error in set ctor for  8-entry map literal
 * CLJS-1218: Syntax quoting an alias created with :require-macros
   throws ClassCastException
 * CLJS-1213: cljs.analyzer incorrectly marks all defs as tests when
   eliding test metadata
 * CLJS-742: Compilation with :output-file option set fails


  --
 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/d/optout.




-- 
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 

Re: separation of concerns w/o encapsulation

2015-05-10 Thread Stuart Sierra
I find it's really the same as in any other language. Certainly if you 
don't have any clearly-defined boundaries at all, you'll get a big ball of 
mud.

Encapsulation is about code organization and self-discipline. Define module 
responsibilities and boundaries in your developer documentation. Make it 
clear that X is not supposed to depend on Y. Enforce those boundaries 
through code review and refactoring. Regularly review module definitions to 
make sure they match the real requirements of the system.

I developed Component[1] to help with one aspect of this problem. One 
shared map defines the structure of the entire system, but each “module” is 
only exposed to the subset of the system it needs.

Other approaches: With a shared map, namespaced keywords can be a hint that 
something is “private” to a particular module. Alternately, you could 
establish the convention that elements of a shared data structure should 
*only* be accessed via helper functions, and use public/private Vars to 
enforce which aspects of a data structure are meant to be “public” to other 
modules.

–S

[1]: https://github.com/stuartsierra/component

On Friday, May 8, 2015 at 5:29:50 PM UTC+1, Brian Craft wrote:

 Talk on the list about encapsulation usually comes back to some variation 
 of you don't need it when you have immutable data structures. But in the 
 long term I'm finding the problem of working w/o encapsulation is not the 
 danger of data being mutated under you. Rather, it's the danger of all the 
 module boundaries blurring over time, leading to the big ball of mud: a 
 very fragile code base where everything depends on everything else.

 E.g. if you model your application with a plain data structure which you 
 pass around to different modules, each concerned with a small part of that 
 data structure, the tendency over time is for every module to become 
 concerned with every part of that data structure.  Then you have no 
 separation, nothing is reusable, and the code is very fragile.

 How do you avoid this, practically? In OO it would be enforced with 
 encapsulation, so the next developer (which might be me, six months later) 
 trying to fix a bug, or add a feature, knows Oh, I shouldn't peek in here: 
 this module isn't supposed to depend on that piece of data.


-- 
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/d/optout.


Re: ANN: ClojureScript 0.0-3255 - pretty printer latest Closure Compiler / Library

2015-05-10 Thread David Nolen
It appears there are still some important bits missing from the artifacts.
Working through the issues and will cut a release soon.

David

On Sun, May 10, 2015 at 12:22 AM, Rangel Spasov raspa...@gmail.com wrote:

 Hey guys,

 0.0-3264 fails for me with:

 clojure.lang.ExceptionInfo: failed compiling
 file:resources/public/js/compiled/out/cljs/core.cljs

  at clojure.core$ex_info.invoke (core.clj:4591)

 Caused by: java.lang.IllegalArgumentException: No implementation of
 method: :make-reader of protocol: #'clojure.java.io/IOFactory found for
 class: nil

  at clojure.core$_cache_protocol_fn.invoke (core_deftype.clj:554)

 0.0-3255 seems fine.

 @raspasov

 On Saturday, May 9, 2015 at 12:33:52 PM UTC-7, David Nolen wrote:

 Just released 0.0-3264, it fixes a critical issue where .js files were
 missing from the artifacts due to the changed build. Also included are a
 several fixes around the :libs feature, REPLs, and stack trace mapping.

 David

 On Fri, May 8, 2015 at 3:23 PM, David Nolen dnolen...@gmail.com wrote:

 ClojureScript, the Clojure compiler that emits JavaScript source code.

 README and source code: https://github.com/clojure/clojurescript

 Leiningen dependency information:

 [org.clojure/clojurescript 0.0-3255]

 A big thanks goes out to Jonathan Boston and Shaun Lebron for this
 release. Thanks to their efforts ClojureScript now includes a full
 port of clojure.pprint under the cljs.pprint namespace. This was the
 last major namespace in need of porting to ClojureScript.

 The release also bumps several dependencies: Clojure 1.7.0-beta2,
 tools.reader 0.9.2, Closure Compiler v20150505, and Closure Library
 0.0-20150505-021ed5b3.

 This release also fixes some regressions around async testing,
 docstring REPL support, arglist meta, and more.

 As always feedback welcome!

 ## 0.0-3255

 ### Changes
 * Update Closure Library dependency
 * CLJS-1252: Update Closure Compiler Dependency to v20150505
 * .clj - .cljc for important analysis / compilation bits
 * add public cljs.compiler.api namespace
 * CLJS-1224: cljs.repl: Memoize stack frame mapping
 * depend on tools.reader 0.9.2

 ### Enhancements
 * add cljs.pprint/pp macro
 * CLJS-710: port clojure.pprint
 * CLJS-1178: Compiler does not know Math ns is not not-native
 * add getBasis methods to deftype and defrecord ctors a la Clojure JVM
 * support ^long and ^double type hints

 ### Fixes
 * fix cljs-1198 async testing regression
 * CLJS-1254: Update REPL browser agent detection CLJS-1253: Create/Use
   new Closure Library Release
 * CLJS-1225: Variadic function with same name as parent function gives
   runtime error in advanced compile mode.
 * CLJS-1246: Add cljs.core/record? predicate.
 * CLJS-1239: Make eduction variadic.
 * CLJS-1244: tagged-literal precondition check missing wrapping vector
 * CLJS-1243: Add TaggedLiteral type  related fns
 * CLJS-1240: Add cljs.core/var?
 * CLJS-1214: :arglists meta has needless quoting CLJS-1232: bad
   arglists for doc, regression
 * CLJS-1212: Error in set ctor for  8-entry map literal
 * CLJS-1218: Syntax quoting an alias created with :require-macros
   throws ClassCastException
 * CLJS-1213: cljs.analyzer incorrectly marks all defs as tests when
   eliding test metadata
 * CLJS-742: Compilation with :output-file option set fails


  --
 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/d/optout.


-- 
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/d/optout.


What does ^:internal mean?

2015-05-10 Thread piastkrakow
Sadly, Google seems to think I am search for internal when I search for 
^:internal so that makes it hard to find the documentation. I am curious 
about this code:

;;; Capture the standard def forms' arglists
(def ^:internal defn-arglists (vec (:arglists (meta #'defn
(def ^:internal fn-arglists (vec (:arglists (meta #'fn
(def ^:internal defmulti-arglists (vec (:arglists (meta #'defmulti
(def ^:internal def-arglists '[[symbol doc-string? init?]])

From here: 

https://github.com/palletops/api-builder/blob/4d82355bec1ebdf7c501be71e2f3d156ae84ad2c/src/com/palletops/api_builder/impl.clj

What does ^:internal mean in this context? 







-- 
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/d/optout.


Re: What is best practice regarding transducers

2015-05-10 Thread piastkrakow

That is interesting. What is xempty for? 


On Friday, May 8, 2015 at 4:09:53 PM UTC-4, miner wrote:

 I wouldn’t make any claims about “best practices” but I’ve been playing 
 with transducers in my little project: 

 https://github.com/miner/transmuters 

 I have a blog post about how to “chain” transducers.  (Not sure that’s the 
 best term.)  Basically, I wanted to use a transducer that might terminate 
 (as with ‘take’), and then have another transducer pick up the input from 
 there.  The “chain” transducer is like a sequential combination of 
 transducers.  Of course, you can mix ‘chain’ and ‘comp’ to make work flows. 

 http://conjobble.velisco.com/blog_posts/transducer-chain 

 In any case, it was a fun experiment for me. 

 Steve Miner 
 steve...@gmail.com javascript: 


  On May 6, 2015, at 11:15 AM, larry google groups lawrenc...@gmail.com 
 javascript: wrote: 
  
  I would like to write a detailed blog post about how developers are 
 actually using transducers. If you have a public project on Github that is 
 using transducers, would you please point me to it? I would like to see 
 what you did. 
  
  If you are not using transducers, but you plan to in the near future, I 
 would be curious to see the code where you think they could help you. 



-- 
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/d/optout.


Re: What does ^:internal mean?

2015-05-10 Thread Andy Fingerhut
I am pretty sure that there is nothing in the Clojure compiler that pays
attention to the key :internal in metadata.

People can put whatever metadata they want anywhere they wish, even if the
Clojure compiler ignores it.  This looks like some metadata specific to
pallet, but not sure whether it uses it for anything other than for the
purposes of a hint to people reading the code.  Hopefully someone more
knowledgeable about pallet will correct that guess if it is wrong.

Andy

On Sun, May 10, 2015 at 12:00 PM, piastkra...@gmail.com wrote:

 Sadly, Google seems to think I am search for internal when I search for
 ^:internal so that makes it hard to find the documentation. I am curious
 about this code:

 ;;; Capture the standard def forms' arglists
 (def ^:internal defn-arglists (vec (:arglists (meta #'defn
 (def ^:internal fn-arglists (vec (:arglists (meta #'fn
 (def ^:internal defmulti-arglists (vec (:arglists (meta #'defmulti
 (def ^:internal def-arglists '[[symbol doc-string? init?]])

 From here:


 https://github.com/palletops/api-builder/blob/4d82355bec1ebdf7c501be71e2f3d156ae84ad2c/src/com/palletops/api_builder/impl.clj

 What does ^:internal mean in this context?







  --
 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/d/optout.


-- 
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/d/optout.