Re: clojure, not the go to for data science

2015-03-31 Thread Phillip Lord
Alexis  writes:

> Colin Yates  writes:
>
>> I used it a few years back
>
> [snip]
>
>> [and] even after man-months spent tinkering, hunting down the right version
>> on MELPA or MARMALADE (or whatever it is called)
>
> i basically only use MELPA and GNU ELPA. In terms of the ~200 packages i've
> installed from MELPA, i can't remember having to deal with versioning issues
> at all. Further, despite some people fretting about the theoretical lack of
> stability of packages on MELPA, i've only rarely had to deal with broken
> packages - and those breakages have been fixed very rapidly by the
> maintainers.

I have. Mostly with Clojure as it happens -- the move from slime to
nrepl was quite painful. And the lack of stability on MELPA was a
significant cause.

> *nod*
>
> However, Emacs configuration management has, i feel, improved significantly
> over the last couple of years, with things like `use-package`:
>
> https://github.com/jwiegley/use-package
>
> enabling one to create easily-reproducible config setups across
> environments/machines.

This was the cause of all my grief with MELPA though. My setup is
use-package based (actually, I added the ELPA/package.el integration).
I sync my .emacs across machines, and use-package auto-installs missing
packages. This meant I got different versions on every machine,
depending on when the auto-install happened.

Fingers crossed more package authors add support for MELPA stable. I use
it exclusively now.

Phil

-- 
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: clojure, not the go to for data science

2015-03-31 Thread Colin Yates
Ha! Genius.

On 30 March 2015 at 19:47, danle...@gmail.com  wrote:
> http://www.scribd.com/doc/30605092/Saturn-v-Flight-Manual
>
> I have tracked down the flight manual of the Saturn-V rocket so we can 
> objectively decide whether emacs is more, or less, difficult.
>
> --
> 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: clojure, not the go to for data science

2015-03-31 Thread Colin Yates
Yes, exactly this.

The camel breaking straw for me was yet another iteration of 'come on,
let's tame this beast, find package X to scratch itch Y, update and
watch something break. Spend hours numptying and googling around, give
up, fresh re-install, do some paid work'. Rinse and repeat.

Cursive - from day one it has worked for what I need out of the box.

Do I miss some things from emacs? Sure - keyboard navigation, buffer
switching, kill ring, ability to run over ssh on the powerful company
servers, undo-tree and so on. Do I hope that one day when I grow up I
will be good enough to build me own emacs-based-editor - sure :). I
had better stop thinking about emacs as it is feeding my ever-present
'grass is greener' gene

On 31 March 2015 at 10:54, Phillip Lord  wrote:
> Alexis  writes:
>
>> Colin Yates  writes:
>>
>>> I used it a few years back
>>
>> [snip]
>>
>>> [and] even after man-months spent tinkering, hunting down the right version
>>> on MELPA or MARMALADE (or whatever it is called)
>>
>> i basically only use MELPA and GNU ELPA. In terms of the ~200 packages i've
>> installed from MELPA, i can't remember having to deal with versioning issues
>> at all. Further, despite some people fretting about the theoretical lack of
>> stability of packages on MELPA, i've only rarely had to deal with broken
>> packages - and those breakages have been fixed very rapidly by the
>> maintainers.
>
> I have. Mostly with Clojure as it happens -- the move from slime to
> nrepl was quite painful. And the lack of stability on MELPA was a
> significant cause.
>
>> *nod*
>>
>> However, Emacs configuration management has, i feel, improved significantly
>> over the last couple of years, with things like `use-package`:
>>
>> https://github.com/jwiegley/use-package
>>
>> enabling one to create easily-reproducible config setups across
>> environments/machines.
>
> This was the cause of all my grief with MELPA though. My setup is
> use-package based (actually, I added the ELPA/package.el integration).
> I sync my .emacs across machines, and use-package auto-installs missing
> packages. This meant I got different versions on every machine,
> depending on when the auto-install happened.
>
> Fingers crossed more package authors add support for MELPA stable. I use
> it exclusively now.
>
> Phil
>
> --
> 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: clojure, not the go to for data science

2015-03-31 Thread Colin Yates
This. I am amazed it isn't more widely shouted about.

On Sunday, 29 March 2015 12:34:23 UTC+1, Jony Hudson wrote:
>
> First, let me shamelessly plug Gorilla REPL http://gorilla-repl.org . 
> It's a notebook type REPL, which I think works well as an environment for 
> the sort exploratory programming of that's common when analysing data. We 
> use it for science-involving-data every day in our research group, and I 
> think a few others do too.
>
> Regarding the question, my guess at the answer would be "fashion". My 
> experience has been that Clojure is a fine environment for technical 
> computing. It's not as complete, library wise, as the alternatives, so it's 
> sometimes a struggle. But it has some strengths over the others too 
> (deployment, in particular - and I find Java is a really nice low-level 
> escape hatch, compared to the alternatives). My guess is that it would take 
> some high profile organisation to adopt it as a data science platform, and 
> talk about it a lot, for it to really catch on, because that seems to be 
> how fashion works!
>
>
> Jony
>
>
> On Sunday, 29 March 2015 10:55:34 UTC+1, Sayth Renshaw wrote:
>>
>> Hi 
>>
>> I last learned clojure in 1.2. Just curious why Clojure hasn't developed 
>> as a go to for data science? 
>>
>> It never seems to get a mention R,Python and now Julia get the attention. 
>> By design it would appear that Clojure would be a good fit. Is it a lack of 
>> libraries, ease of install, no good default environment  (R Rstudio, 
>> IPython ) where as you would need to use emacs with clojure, or is there 
>> just a better default use of Clojure? 
>>
>> Sayth
>
>

-- 
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] Phoenix 0.1.0 - help with structuring & configuring Component-based systems

2015-03-31 Thread Jeroen van Dijk
Thanks for sharing James! I'll have a look.

As a side note, I see in the example code that you are dissoc-ing on the
component. This can lead to unexpected behaviour as I have
experienced (mostly in repl cases), as this will return a map instead of a
record when the field is not part of the record. This is also mentioned in
the readme of https://github.com/stuartsierra/component where `(assoc
component ::field nil)` is recommended

Jeroen

On Sun, Mar 29, 2015 at 9:44 PM, James Henderson 
wrote:

> A link would have been really helpful, I'm guessing! Here it is:
>
> https://github.com/james-henderson/phoenix
>
> James
>
>
> On Sunday, 29 March 2015 20:42:06 UTC+1, James Henderson wrote:
>>
>> Hi all,
>>
>> I've just released v0.1.0 of Phoenix - a 'batteries included, but
>> removable' library to wire up and configure Component-based systems. If
>> you've ever wondered whether you really have to copy and paste
>> 'system.clj', 'dev.clj' and 'user.clj' from one Component project to the
>> next, it's well worth having a look at!
>>
>> Having used Phoenix in anger on a few projects for a couple of weeks,
>> it's now had a fair bit of battle-testing, kinks ironed, and the like - so
>> thought I'd make another post to the list :)
>>
>> Features added since I last posted:
>>
>>- Many re-usable Components - CLJS compiler, Aleph, http-kit, JDBC
>>pool, CSS compiler (using Garden) - see https://github.com/james-
>>henderson/phoenix/tree/master/modules/
>> for
>>more details. These components can be used whether or not you choose to 
>> use
>>Phoenix, and, likewise, non-Phoenix components can be used in
>>Phoenix-configured systems - hooray for composability :)
>>- Support for managing passwords/credentials - you can store these,
>>encrypted, in your configuration, and Phoenix will decrypt them for you.
>>- Pulling configuration variables from environment variables and JVM
>>properties, in addition to the Phoenix config files
>>- 'Batteries removable' API - if you need a little more flexibility,
>>or want to compose Phoenix with something else.
>>- A fair few bugfixes/API changes through usage
>>
>> There's also a couple of Lein templates to get up and running quickly:
>>
>>-  `lein new phoenix-webapp  -- :reagent` will get you a
>>working webapp (other options are `:om`, `:om-sablono` or `:flow`).
>>- If you don't want the CLJS side, `lein new phoenix-api `
>>just has an example server-side API.
>>
>> Would be great to get your thoughts and feedback on this - is this a good
>> way to wire up such systems?
>>
>> Cheers,
>>
>> James
>>
>  --
> 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: [ANN] Phoenix 0.1.0 - help with structuring & configuring Component-based systems

2015-03-31 Thread James Henderson
Thanks Jeroen - I'd not spotted that! Yes, definitely a better idea - 
will update the examples.


James

On 31/03/15 12:49, Jeroen van Dijk wrote:

Thanks for sharing James! I'll have a look.

As a side note, I see in the example code that you are dissoc-ing on 
the component. This can lead to unexpected behaviour as I have 
experienced (mostly in repl cases), as this will return a map instead 
of a record when the field is not part of the record. This is also 
mentioned in the readme of https://github.com/stuartsierra/component 
where `(assoc component ::field nil)` is recommended


Jeroen

On Sun, Mar 29, 2015 at 9:44 PM, James Henderson > wrote:


A link would have been really helpful, I'm guessing! Here it is:

https://github.com/james-henderson/phoenix

James


On Sunday, 29 March 2015 20:42:06 UTC+1, James Henderson wrote:

Hi all,

I've just released v0.1.0 of Phoenix - a 'batteries included,
but removable' library to wire up and configure
Component-based systems. If you've ever wondered whether you
really have to copy and paste 'system.clj', 'dev.clj' and
'user.clj' from one Component project to the next, it's well
worth having a look at!

Having used Phoenix in anger on a few projects for a couple of
weeks, it's now had a fair bit of battle-testing, kinks
ironed, and the like - so thought I'd make another post to the
list :)

Features added since I last posted:

  * Many re-usable Components - CLJS compiler, Aleph,
http-kit, JDBC pool, CSS compiler (using Garden) - see
https://github.com/james-henderson/phoenix/tree/master/modules/
for more details. These components can be used whether or
not you choose to use Phoenix, and, likewise, non-Phoenix
components can be used in Phoenix-configured systems -
hooray for composability :)
  * Support for managing passwords/credentials - you can store
these, encrypted, in your configuration, and Phoenix will
decrypt them for you.
  * Pulling configuration variables from environment variables
and JVM properties, in addition to the Phoenix config files
  * 'Batteries removable' API - if you need a little more
flexibility, or want to compose Phoenix with something else.
  * A fair few bugfixes/API changes through usage

There's also a couple of Lein templates to get up and running
quickly:

  *  `lein new phoenix-webapp  -- :reagent` will
get you a working webapp (other options are `:om`,
`:om-sablono`or `:flow`).
  * If you don't want the CLJS side, `lein new phoenix-api
` just has an example server-side API.

Would be great to get your thoughts and feedback on this - is
this a good way to wire up such systems?

Cheers,

James

-- 
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 a topic in the 
Google Groups "Clojure" group.
To unsubscribe from this topic, visit 
https://groups.google.com/d/topic/clojure/EgfoZK0vV08/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 p

Re: clojure, not the go to for data science

2015-03-31 Thread Erebus Mons
Joseph Guhlin wrote:

> Incanter gets your pretty far, especially when combined with  Gorilla
> REPL, but all the tools and features aren't quite there yet, but progress
> is being made. 

Incanter is undergoing major change with the migration to core.matrix, and a 
break in the API.

Has anybody of you tested incanter 1.9?
Are there plans for the release date of the stable 2.0?

And how different is incanter 2.x from incanter 1.5x? 

In other words, if you were tempted to start data analysis in clojure now, 
what would you do:

a) take incanter 1.9
b) take incanter 1.5.6
c) wait a few more weeks/months for the release of incanter 2.0?

Best,

EM



-- 
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: clojure, not the go to for data science

2015-03-31 Thread Phillip Lord

Colin Yates  writes:
> The camel breaking straw for me was yet another iteration of 'come on,
> let's tame this beast, find package X to scratch itch Y, update and
> watch something break. Spend hours numptying and googling around, give
> up, fresh re-install, do some paid work'. Rinse and repeat.

It is worth saying, of course, that a lot of this has gone away, and
that package management in Emacs has changed massively in the last few
years. MELPA-stable has helped me move of the bleeding edge in most
cases. Still not perfect, but it is coming along.

-- 
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: clojure, not the go to for data science

2015-03-31 Thread Phillip Lord

Fluid Dynamics  writes:
>> That's nonsense.  As soon as you have made yourself acquainted with the 
>> basic Emacs terminology and concepts, getting started with Clojure 
>> development is a piece of cake.  Of course,
>
>
> the devil is in the details. Including the implementation details that leak 
> out all over the place, starting with the ubiquitous use of the term 
> "buffer" in user-facing documentation.


This is not an implementation detail. It's just the name that the Emacs
developers picked. There is a data structure which represents this idea
of a buffer underneath.

It's a slightly unfortunate name, as it's unusual, but better that
window which is usual but means something else. But what you see is
history poking through, not implementation detail. If Emacs were written
now, these things would have different names. It's a price you pay with
using emacs.

The benefit is that Emacs is that its not constantly changing, and it
gives you some stability over the years. I like latex, for instance, for
the same reason. I can still access a 10 year old document and use it.


Phil

-- 
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: Deterministic macro expansion for Clojure?

2015-03-31 Thread Mike Haney
You also might want to check out this talk http://youtu.be/YHctJMUG8bI

In part of the talk, he describes how they generate symbols deterministically 
to use in query fragments that can be predictably combined into Datomic 
queries.  Different application, but mostly the same requirements as you stated.

-- 
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: clojure, not the go to for data science

2015-03-31 Thread Phillip Lord
Mikera  writes:

>> I would say, lack of numpy or equivalent. And nice tools to link between 
>> Clojure and the many C/Fortran numeric libraries. Python and R do this 
>> natively. 
>>
>
> core.matrix is effectively the equivalent of NumPy
>
> In some ways it is much more versatile, because it works with a general 
> array abstraction rather than a specific concrete array format. There are 
> core.matrix implementations (e.g. Clatrix) that link to native numerical 
> libraries.


I didn't know about the native implementation!

But my point was a more general one. If I have an old fortran numerical
library that I want to pull into my analysis. How easy is it to do this
in python and how easy in Clojure?

> native back end performance since you can use tools like Clatrix to access 
> BLAS etc. And aside from that, the JVM gives you a lot of big advantages on 
> the server side (sophisticated memory management, excellent JIT 
> compilation, concurrency, portability, library ecosystem etc.). I never 
> quite understand the motivation of people who seem to want to reinvent all 
> of this (probably badly) in native code. The JVM is an amazing piece of 
> engineering, and I believe that a lot of the sucess of Clojure comes from 
> taking advantage of this.


My experience of most big data projects is that a lot of it involves
writing some scripts to do some data munging, and then plug it into
some existing library for numerical analysis.

The JVM is a good piece of software and supports an amazing ecosystem.
It's just not that easy to break out of the ecosystem.

Of course, this might just be because people haven't tried enough. I
think that the lack of syntactic flexibility of Java made it problematic
in the past. Now with languages like Clojure or Scala which have at
least as much of flexibility as python (more in fact), perhaps this will
change.

Phil

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


ReadyForZero Hiring Clojure, ClojureScript (Backend, Frontend, Mobile, Data) in Los Angeles (Will Relocate)

2015-03-31 Thread Ignacio Thayer
ReadyForZero (YC S2010) is hiring all types of Clojure engineers, or those 
who desire to learn it in Los Angeles (relocation available).

We've been using Clojure since 2011. We've been a little quiet about our 
use of it and haven't released much OSS because we were a heads-down, 
unprofitable startup, but we have 75K lines+ of Clojure code (for scale, 
not that more lines is good). We've used Clojure to help hundreds of 
thousands with their finances, move money, achieve security compliance, 
prevent fraud, manage infrastructure, and more.

We recently announced an acquisition and we are growing the team and are 
looking for folks that want to use Clojure to do good.

If you are interested or have questions about our use of Clojure, you can 
email me directly at ignacio.tha...@readyforzero.com. If you think anyone 
might be interested, please share or have them reach out as well.

Thanks! We're looking forward to becoming a more active part of the 
community.

Ignacio Thayer
Co-founder/CTO ReadyForZero.com
ignacio.tha...@readyforzero.com
www.readyforzero.com/jobs

-- 
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: ReadyForZero Hiring Clojure, ClojureScript (Backend, Frontend, Mobile, Data) in Los Angeles (Will Relocate)

2015-03-31 Thread Jeremy Dunck
The related acq announcement:
http://blog.readyforzero.com/positive-readyforzero/

(I'm not moving to LA, but I think RFZ is great and wish the best.)
On Mar 31, 2015 9:00 AM, "Ignacio Thayer"  wrote:

> ReadyForZero (YC S2010) is hiring all types of Clojure engineers, or those
> who desire to learn it in Los Angeles (relocation available).
>
> We've been using Clojure since 2011. We've been a little quiet about our
> use of it and haven't released much OSS because we were a heads-down,
> unprofitable startup, but we have 75K lines+ of Clojure code (for scale,
> not that more lines is good). We've used Clojure to help hundreds of
> thousands with their finances, move money, achieve security compliance,
> prevent fraud, manage infrastructure, and more.
>
> We recently announced an acquisition and we are growing the team and are
> looking for folks that want to use Clojure to do good.
>
> If you are interested or have questions about our use of Clojure, you can
> email me directly at ignacio.tha...@readyforzero.com. If you think anyone
> might be interested, please share or have them reach out as well.
>
> Thanks! We're looking forward to becoming a more active part of the
> community.
>
> Ignacio Thayer
> Co-founder/CTO ReadyForZero.com
> ignacio.tha...@readyforzero.com
> www.readyforzero.com/jobs
>
>  --
> 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.


[ANN] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Alex Miller
Clojure 1.7.0-alpha6 is now available.

Try it via
- Download: https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0-alpha6/
- Leiningen: [org.clojure/clojure "1.7.0-alpha6"]

Regression fixes from previous alphas (and one from 1.6):

1) CLJ-1544 was rolled back and will be investigated for a future release.
2) CLJ-1637 fixed regression with vec on MapEntry
3) CLJ-1663 fixed regression in classloader (affected Cursive)
4) CLJ-1638 fixed regression with removed PersistentVector.create(List)
method
5) CLJ-1681 fixed regression in 1.6 with NPE on reflection warning for
literal nil arg
6) CLJ-1604 fixed problem with AOT and shadowing clojure.core symbols that
prevented update

Some highlights new in alpha6:

## Transducer-related changes:

The LazyTransformer introduced to create lazy transforming sequences has
been
replaced with a TransformingIterator. This was done to simplify the code
around transformations and to make certain use cases around eduction more
efficient.

## Faster reduce, iterator, and sequence paths

A lot of work has been done across a set of tickets to improve the ability
of
collections to provide more efficient reduce or iterator performance, and
also to
make common sequence generators create faster sequence and reduce paths. You
should see significant performance in many reduce-related paths (this
includes
reduce, transduce, into, and anything else built on reduce).

Many of those changes also have beneficial sequence performance, so you may
see
some benefits even in code that does not use transducers.

* Most uses of SeqIterator have now been replaced with iterators that
directly walk
the underlying source for improved efficiency. This includes maps, sets,
records, etc.
* repeat - now returns a faster sequence with a fast reduce path
* cycle - now returns a faster sequence with a fast reduce path
* iterate - now returns a faster sequence with a fast reduce path
* range - (did not quite make it in, but coming soon...)
* keys - iterates directly over the keys of a map, without seq or MapEntry
allocation
* vals - iterates directly over the vals of a map, without seq or MapEntry
allocation
* iterator-seq - now creates a chunked sequence when previously it was
unchunked
* vec and set - were not changed in this release but were set up in a
previous alpha
  to take advantage of the reduce and iterator changes above

## Reader conditionals

Reader Conditionals is a new capability to support portable code that
can run on multiple Clojure platforms with only small changes. In
particular, this feature aims to support the increasingly common case
of libraries targeting both Clojure and ClojureScript.

Code intended to be common across multiple platforms should use a new
supported file extension: ".cljc". When requested to load a namespace,
the platform-specific file extension (.clj, .cljs) will be checked
prior to .cljc.

A new reader form can be used to specify "reader conditional" code in
cljc files (and *only* cljc files). Each platform defines a feature
identifying the platform (:clj, :cljs, :cljr). The reader conditional
specifies code that is read conditionally based on the feature/

Form #? takes a list of alternating feature and expression. These are
checked like cond and the selected expression is read and returned. Other
branches are unread. If no branch is selected, the reader reads nothing
(not nil, but literally as if reading ""). An optional ":default" branch
can be used as a fallthrough.

Reader conditional with 2 features and a default:

#?(:clj Double/NaN
   :cljsjs/NaN
   :default nil)

There is also a reader conditional splicing form. The evaluated expression
should be sequential and will be spliced into the surrounded code, similar
to unqoute-splicing.

For example:

   [1 2 #?@(:clj [3 4] :cljs [5 6])]

This form would read as [1 2 3 4] on Clojure, [1 2 5 6] on ClojureScript,
and [1 2] on any other platform.

Additionally, the reader can now be invoked with options for the features
to use and how to interpret reader conditionals. By default, reader
conditionals
are not allowed, but that can be turned on, or a "preserve" mode can be
used to
preserve all branches (most likely useful for tooling or source transforms).

In the preserve mode, the reader conditional itself and any tagged literals
within the unselected branches are returned as tagged literal data.

For more information, see:
http://dev.clojure.org/display/design/Reader+Conditionals

Two important side notes:
- Clojure dependencies have been updated and you must re-run antsetup.sh if
you
build Clojure locally with ant.
- The equivalent ClojureScript support for reader conditionals is not yet
available
but is a top priority to release as soon as possible... stay tuned.

## Printing as data

There have been enhancements in how the REPL prints values without a
print-method, specifically Throwable and the fallthrough Object case.
Both cases now print in a tagged literal data form that can be read
by the reader.

Re: [ANN] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Alex Miller
In case anyone is curious about the path from here to a final release, the 
remaining items on the 1.7 list can always be found here:

http://dev.clojure.org/jira/secure/IssueNavigator.jspa?mode=hide&requestId=10519

The main "feature" things to be done before a beta are optimized range and 
the socket repl (which is undergoing a bit of a refactor in its 
conception). However, I am prioritizing the completion of reader 
conditionals for tools.reader and ClojureScript first.

After that, it's just a matter of working any issues or regressions down to 
release. The more people that try alpha6 and give feedback (positive or 
negative), the faster we can know what if anything needs to be done before 
release, so your assistance is welcomed!! Please give it a shot on your own 
project or library.

Because a lot of performance-related changes went into alpha6, I'm also 
interested in feedback related to that (good or bad).

Thanks,
Alex


On Tuesday, March 31, 2015 at 11:51:13 AM UTC-5, Alex Miller wrote:
>
> Clojure 1.7.0-alpha6 is now available.
>
>

-- 
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: Deterministic macro expansion for Clojure?

2015-03-31 Thread Karsten Schmidt
On similar lines as Ben suggested (but different use case), here's
what I've been doing to rewrite expressions:

(defmacro rewrite-v2
  [src & body]
  (let [[a x y] (repeatedly gensym)]
`(let [~(with-meta a {:tag "doubles"}) ~src
   ~x (aget ~a 0)
   ~y (aget ~a 1)]
   ~@(postwalk-replace {'x x 'y y} body

This allows me to write things like:
(rewrite-v2 buf (Math/sqrt (+ (* x x) (* y y

...and replaces all `x` & `y` with values looked up from the given array.
More elaborate examples/versions of this are here:
https://github.com/thi-ng/geom/blob/master/geom-core/src/vector.org#vec2-1

Hth!


On 31 March 2015 at 14:51, Mike Haney  wrote:
> You also might want to check out this talk http://youtu.be/YHctJMUG8bI
>
> In part of the talk, he describes how they generate symbols deterministically 
> to use in query fragments that can be predictably combined into Datomic 
> queries.  Different application, but mostly the same requirements as you 
> stated.
>
> --
> 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.



-- 
Karsten Schmidt
http://postspectacular.com | http://toxiclibs.org | http://toxi.co.uk

-- 
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] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Geraldo Lopes de Souza
Hi,

The fancy printing of exceptions is not working for me. 

Ubuntu 14.04.2 LTS
java version "1.8.0_40"
plain clojure jar or lein 2.5.1
gnome terminal

Regards,

Geraldo

On Tuesday, March 31, 2015 at 1:51:13 PM UTC-3, Alex Miller wrote:
>
> Clojure 1.7.0-alpha6 is now available.
>
> Try it via
> - Download: 
> https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0-alpha6/
> - Leiningen: [org.clojure/clojure "1.7.0-alpha6"]
>
> Regression fixes from previous alphas (and one from 1.6):
>
> 1) CLJ-1544 was rolled back and will be investigated for a future release.
> 2) CLJ-1637 fixed regression with vec on MapEntry 
> 3) CLJ-1663 fixed regression in classloader (affected Cursive)
> 4) CLJ-1638 fixed regression with removed PersistentVector.create(List) 
> method
> 5) CLJ-1681 fixed regression in 1.6 with NPE on reflection warning for 
> literal nil arg
> 6) CLJ-1604 fixed problem with AOT and shadowing clojure.core symbols that 
> prevented update
>
> Some highlights new in alpha6:
>
> ## Transducer-related changes:
>
> The LazyTransformer introduced to create lazy transforming sequences has 
> been 
> replaced with a TransformingIterator. This was done to simplify the code
> around transformations and to make certain use cases around eduction more 
> efficient.
>
> ## Faster reduce, iterator, and sequence paths
>
> A lot of work has been done across a set of tickets to improve the ability 
> of
> collections to provide more efficient reduce or iterator performance, and 
> also to
> make common sequence generators create faster sequence and reduce paths. 
> You
> should see significant performance in many reduce-related paths (this 
> includes 
> reduce, transduce, into, and anything else built on reduce). 
>
> Many of those changes also have beneficial sequence performance, so you 
> may see
> some benefits even in code that does not use transducers.
>
> * Most uses of SeqIterator have now been replaced with iterators that 
> directly walk
> the underlying source for improved efficiency. This includes maps, sets, 
> records, etc.
> * repeat - now returns a faster sequence with a fast reduce path
> * cycle - now returns a faster sequence with a fast reduce path
> * iterate - now returns a faster sequence with a fast reduce path
> * range - (did not quite make it in, but coming soon...)
> * keys - iterates directly over the keys of a map, without seq or MapEntry 
> allocation
> * vals - iterates directly over the vals of a map, without seq or MapEntry 
> allocation
> * iterator-seq - now creates a chunked sequence when previously it was 
> unchunked
> * vec and set - were not changed in this release but were set up in a 
> previous alpha
>   to take advantage of the reduce and iterator changes above
>
> ## Reader conditionals
>
> Reader Conditionals is a new capability to support portable code that
> can run on multiple Clojure platforms with only small changes. In
> particular, this feature aims to support the increasingly common case
> of libraries targeting both Clojure and ClojureScript.
>
> Code intended to be common across multiple platforms should use a new
> supported file extension: ".cljc". When requested to load a namespace,
> the platform-specific file extension (.clj, .cljs) will be checked
> prior to .cljc.
>
> A new reader form can be used to specify "reader conditional" code in
> cljc files (and *only* cljc files). Each platform defines a feature
> identifying the platform (:clj, :cljs, :cljr). The reader conditional
> specifies code that is read conditionally based on the feature/
>
> Form #? takes a list of alternating feature and expression. These are
> checked like cond and the selected expression is read and returned. Other
> branches are unread. If no branch is selected, the reader reads nothing
> (not nil, but literally as if reading ""). An optional ":default" branch
> can be used as a fallthrough.
>
> Reader conditional with 2 features and a default:
>
> #?(:clj Double/NaN
>:cljsjs/NaN
>:default nil)
>
> There is also a reader conditional splicing form. The evaluated expression
> should be sequential and will be spliced into the surrounded code, similar
> to unqoute-splicing.
>
> For example:
>
>[1 2 #?@(:clj [3 4] :cljs [5 6])]
>
> This form would read as [1 2 3 4] on Clojure, [1 2 5 6] on ClojureScript,
> and [1 2] on any other platform.
>
> Additionally, the reader can now be invoked with options for the features
> to use and how to interpret reader conditionals. By default, reader 
> conditionals
> are not allowed, but that can be turned on, or a "preserve" mode can be 
> used to
> preserve all branches (most likely useful for tooling or source 
> transforms).
>
> In the preserve mode, the reader conditional itself and any tagged literals
> within the unselected branches are returned as tagged literal data.
>
> For more information, see:
> http://dev.clojure.org/display/design/Reader+Conditionals
>
> Two important side notes:
> - Clojure dependencies have b

Re: [ANN] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Karsten Schmidt
This is exciting! Thanks Alex et al! Been using alpha5 w/o problems in
several projects (and w/ noticeable improvements when I started using
transducers) and will switch to alpha6 asap.

On 31 March 2015 at 18:29, Alex Miller  wrote:
> In case anyone is curious about the path from here to a final release, the
> remaining items on the 1.7 list can always be found here:
>
> http://dev.clojure.org/jira/secure/IssueNavigator.jspa?mode=hide&requestId=10519
>
> The main "feature" things to be done before a beta are optimized range and
> the socket repl (which is undergoing a bit of a refactor in its conception).
> However, I am prioritizing the completion of reader conditionals for
> tools.reader and ClojureScript first.
>
> After that, it's just a matter of working any issues or regressions down to
> release. The more people that try alpha6 and give feedback (positive or
> negative), the faster we can know what if anything needs to be done before
> release, so your assistance is welcomed!! Please give it a shot on your own
> project or library.
>
> Because a lot of performance-related changes went into alpha6, I'm also
> interested in feedback related to that (good or bad).
>
> Thanks,
> Alex
>
>
> On Tuesday, March 31, 2015 at 11:51:13 AM UTC-5, Alex Miller wrote:
>>
>> Clojure 1.7.0-alpha6 is now available.
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Clojure Dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure-dev+unsubscr...@googlegroups.com.
> To post to this group, send email to clojure-...@googlegroups.com.
> Visit this group at http://groups.google.com/group/clojure-dev.
> For more options, visit https://groups.google.com/d/optout.



-- 
Karsten Schmidt
http://postspectacular.com | http://toxiclibs.org | http://toxi.co.uk

-- 
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] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Alex Miller
As I mentioned in the change log, the current repl chooses to continue 
printing exceptions with no change. But if you print an exception yourself 
with, for example, (println *e), you should see it. Currently you'll see 
that printed without any pretty-printing - there will likely still be some 
changes around the exception printing before release.

On Tuesday, March 31, 2015 at 12:40:31 PM UTC-5, Geraldo Lopes de Souza 
wrote:
>
> Hi,
>
> The fancy printing of exceptions is not working for me. 
>
> Ubuntu 14.04.2 LTS
> java version "1.8.0_40"
> plain clojure jar or lein 2.5.1
> gnome terminal
>
> Regards,
>
> Geraldo
>
> On Tuesday, March 31, 2015 at 1:51:13 PM UTC-3, Alex Miller wrote:
>
> Clojure 1.7.0-alpha6 is now available.
>
> Try it via
> - Download: 
> https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0-alpha6/
> - Leiningen: [org.clojure/clojure "1.7.0-alpha6"]
>
> Regression fixes from previous alphas (and one from 1.6):
>
> 1) CLJ-1544 was rolled back and will be investigated for a future release.
> 2) CLJ-1637 fixed regression with vec on MapEntry 
> 3) CLJ-1663 fixed regression in classloader (affected Cursive)
> 4) CLJ-1638 fixed regression with removed PersistentVector.create(List) 
> method
> 5) CLJ-1681 fixed regression in 1.6 with NPE on reflection warning for 
> literal nil arg
> 6) CLJ-1604 fixed problem with AOT and shadowing clojure.core symbols that 
> prevented update
>
> Some highlights new in alpha6:
>
> ## Transducer-related changes:
>
> The LazyTransformer introduced to create lazy transforming sequences has 
> been 
> replaced with a TransformingIterator. This was done to simplify the code
> around transformations and to make certain use cases around eduction more 
> efficient.
>
> ## Faster reduce, iterator, and sequence paths
>
> A lot of work has been done across a set of tickets to improve the ability 
> of
> collections to provide more efficient reduce or iterator performance, and 
> also to
> make common sequence generators create faster sequence and reduce paths. 
> You
> should see significant performance in many reduce-related paths (this 
> includes 
> reduce, transduce, into, and anything else built on reduce). 
>
> Many of those changes also have beneficial sequence performance, so you 
> may see
> some benefits even in code that does not use transducers.
>
> * Most uses of SeqIterator have now been replaced with iterators that 
> directly walk
> the underlying source for improved efficiency. This includes maps, sets, 
> records, etc.
> * repeat - now returns a faster sequence with a fast reduce path
> * cycle - now returns a faster sequence with a fast reduce path
> * iterate - now returns a faster sequence with a fast reduce path
> * range - (did not quite make it in, but coming soon...)
> * keys - iterates directly over the keys of a map, without seq or MapEntry 
> allocation
> * vals - iterates directly over the vals of a map, without seq or MapEntry 
> allocation
> * iterator-seq - now creates a chunked sequence when previously it was 
> unchunked
> * vec and set - were not changed in this release but were set up in a 
> previous alpha
>   to take advantage of the reduce and iterator changes above
>
> ## Reader conditionals
>
> Reader Conditionals is a new capability to support portable code that
> can run on multiple Clojure platforms with only small changes. In
> particular, this feature aims to support the increasingly common case
> of libraries targeting both Clojure and ClojureScript.
>
> Code intended to be common across multiple platforms should use a new
> supported file extension: ".cljc". When requested to load a namespace,
> the platform-specific file extension (.clj, .cljs) will be checked
> prior to .cljc.
>
> A new reader form can be used to specify "reader conditional" code in
> cljc files (and *only* cljc files). Each platform defines a feature
> identifying the platform (:clj, :cljs, :cljr). The reader conditional
> specifies code that is read conditionally based on the feature/
>
> Form #? takes a list of alternating feature and expression. These are
> checked like cond and the selected expression is read and returned. Other
> branches are unread. If no branch is selected, the reader reads nothing
> (not nil, but literally as if reading ""). An optional ":default" branch
> can be used as a fallthrough.
>
> Reader conditional with 2 features and a default:
>
> #?(:clj Double/NaN
>:cljsjs/NaN
>:default nil)
>
> There is also a reader conditional splicing form. The evaluated expression
> should be sequential and will be spliced into the surrounded code, similar
> to unqoute-splicing.
>
> For example:
>
>[1 2 #?@(:clj [3 4] :cljs [5 6])]
>
> This form would read as [1 2 3 4] on Clojure, [1 2 5 6] on ClojureScript,
> and [1 2] on any other platform.
>
> Additionally, the reader can now be invoked with options for the features
> to use and how to interpret reader conditionals. By default, reader 
> conditionals
> are not a

Re: [ANN] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Sean Corfield
Looks like a great set of updates!

Unfortunately, as several of us found out today, the change to the StringReader 
invoke() signature breaks Instaparse so I’m blocked from testing the World 
Singles code base with alpha6 (or master) at the moment. Is that just a hazard 
of relying on the internals of reader classes or would Clojure/core consider 
that breakage avoidable (by adding an overloaded signature instead of just 
changing the current signature)? Since those readers extend AFn, it seems that 
there is an expectation that they would be used as functions in Clojure code 
out in the wild...

Sean

On Mar 31, 2015, at 9:50 AM, Alex Miller  wrote:
> Clojure 1.7.0-alpha6 is now available.
> 
> Try it via
> - Download: https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0-alpha6/ 
> 
> - Leiningen: [org.clojure/clojure "1.7.0-alpha6"]
> 
> Regression fixes from previous alphas (and one from 1.6):
> 
> 1) CLJ-1544 was rolled back and will be investigated for a future release.
> 2) CLJ-1637 fixed regression with vec on MapEntry 
> 3) CLJ-1663 fixed regression in classloader (affected Cursive)
> 4) CLJ-1638 fixed regression with removed PersistentVector.create(List) method
> 5) CLJ-1681 fixed regression in 1.6 with NPE on reflection warning for 
> literal nil arg
> 6) CLJ-1604 fixed problem with AOT and shadowing clojure.core symbols that 
> prevented update
> 
> Some highlights new in alpha6:
> 
> ## Transducer-related changes:
> 
> The LazyTransformer introduced to create lazy transforming sequences has been 
> replaced with a TransformingIterator. This was done to simplify the code
> around transformations and to make certain use cases around eduction more 
> efficient.
> 
> ## Faster reduce, iterator, and sequence paths
> 
> A lot of work has been done across a set of tickets to improve the ability of
> collections to provide more efficient reduce or iterator performance, and 
> also to
> make common sequence generators create faster sequence and reduce paths. You
> should see significant performance in many reduce-related paths (this 
> includes 
> reduce, transduce, into, and anything else built on reduce). 
> 
> Many of those changes also have beneficial sequence performance, so you may 
> see
> some benefits even in code that does not use transducers.
> 
> * Most uses of SeqIterator have now been replaced with iterators that 
> directly walk
> the underlying source for improved efficiency. This includes maps, sets, 
> records, etc.
> * repeat - now returns a faster sequence with a fast reduce path
> * cycle - now returns a faster sequence with a fast reduce path
> * iterate - now returns a faster sequence with a fast reduce path
> * range - (did not quite make it in, but coming soon...)
> * keys - iterates directly over the keys of a map, without seq or MapEntry 
> allocation
> * vals - iterates directly over the vals of a map, without seq or MapEntry 
> allocation
> * iterator-seq - now creates a chunked sequence when previously it was 
> unchunked
> * vec and set - were not changed in this release but were set up in a 
> previous alpha
>   to take advantage of the reduce and iterator changes above
> 
> ## Reader conditionals
> 
> Reader Conditionals is a new capability to support portable code that
> can run on multiple Clojure platforms with only small changes. In
> particular, this feature aims to support the increasingly common case
> of libraries targeting both Clojure and ClojureScript.
> 
> Code intended to be common across multiple platforms should use a new
> supported file extension: ".cljc". When requested to load a namespace,
> the platform-specific file extension (.clj, .cljs) will be checked
> prior to .cljc.
> 
> A new reader form can be used to specify "reader conditional" code in
> cljc files (and *only* cljc files). Each platform defines a feature
> identifying the platform (:clj, :cljs, :cljr). The reader conditional
> specifies code that is read conditionally based on the feature/
> 
> Form #? takes a list of alternating feature and expression. These are
> checked like cond and the selected expression is read and returned. Other
> branches are unread. If no branch is selected, the reader reads nothing
> (not nil, but literally as if reading ""). An optional ":default" branch
> can be used as a fallthrough.
> 
> Reader conditional with 2 features and a default:
> 
>   #?(:clj Double/NaN
>  :cljsjs/NaN
>  :default nil)
> 
> There is also a reader conditional splicing form. The evaluated expression
> should be sequential and will be spliced into the surrounded code, similar
> to unqoute-splicing.
> 
> For example:
> 
>[1 2 #?@(:clj [3 4] :cljs [5 6])]
> 
> This form would read as [1 2 3 4] on Clojure, [1 2 5 6] on ClojureScript,
> and [1 2] on any other platform.
> 
> Additionally, the reader can now be invoked with options for the features
> to use and how to interpret reader condi

Re: [ANN] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Michael Blume
I've proposed a patch to instaparse to fix this, I realize it's not the
most elegant version check ever, but it should fix the problem
https://github.com/Engelberg/instaparse/pull/94

On Tue, Mar 31, 2015 at 3:21 PM Sean Corfield  wrote:

> Looks like a great set of updates!
>
> Unfortunately, as several of us found out today, the change to the
> StringReader invoke() signature breaks Instaparse so I’m blocked from
> testing the World Singles code base with alpha6 (or master) at the moment.
> Is that just a hazard of relying on the internals of reader classes or
> would Clojure/core consider that breakage avoidable (by adding an
> overloaded signature instead of just changing the current signature)? Since
> those readers extend AFn, it seems that there is an expectation that they
> would be used as functions in Clojure code out in the wild...
>
> Sean
>
> On Mar 31, 2015, at 9:50 AM, Alex Miller  wrote:
>
> Clojure 1.7.0-alpha6 is now available.
>
> Try it via
> - Download:
> https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0-alpha6/
> - Leiningen: [org.clojure/clojure "1.7.0-alpha6"]
>
> Regression fixes from previous alphas (and one from 1.6):
>
> 1) CLJ-1544 was rolled back and will be investigated for a future release.
> 2) CLJ-1637 fixed regression with vec on MapEntry
> 3) CLJ-1663 fixed regression in classloader (affected Cursive)
> 4) CLJ-1638 fixed regression with removed PersistentVector.create(List)
> method
> 5) CLJ-1681 fixed regression in 1.6 with NPE on reflection warning for
> literal nil arg
> 6) CLJ-1604 fixed problem with AOT and shadowing clojure.core symbols that
> prevented update
>
> Some highlights new in alpha6:
>
> ## Transducer-related changes:
>
> The LazyTransformer introduced to create lazy transforming sequences has
> been
> replaced with a TransformingIterator. This was done to simplify the code
> around transformations and to make certain use cases around eduction more
> efficient.
>
> ## Faster reduce, iterator, and sequence paths
>
> A lot of work has been done across a set of tickets to improve the ability
> of
> collections to provide more efficient reduce or iterator performance, and
> also to
> make common sequence generators create faster sequence and reduce paths.
> You
> should see significant performance in many reduce-related paths (this
> includes
> reduce, transduce, into, and anything else built on reduce).
>
> Many of those changes also have beneficial sequence performance, so you
> may see
> some benefits even in code that does not use transducers.
>
> * Most uses of SeqIterator have now been replaced with iterators that
> directly walk
> the underlying source for improved efficiency. This includes maps, sets,
> records, etc.
> * repeat - now returns a faster sequence with a fast reduce path
> * cycle - now returns a faster sequence with a fast reduce path
> * iterate - now returns a faster sequence with a fast reduce path
> * range - (did not quite make it in, but coming soon...)
> * keys - iterates directly over the keys of a map, without seq or MapEntry
> allocation
> * vals - iterates directly over the vals of a map, without seq or MapEntry
> allocation
> * iterator-seq - now creates a chunked sequence when previously it was
> unchunked
> * vec and set - were not changed in this release but were set up in a
> previous alpha
>   to take advantage of the reduce and iterator changes above
>
> ## Reader conditionals
>
> Reader Conditionals is a new capability to support portable code that
> can run on multiple Clojure platforms with only small changes. In
> particular, this feature aims to support the increasingly common case
> of libraries targeting both Clojure and ClojureScript.
>
> Code intended to be common across multiple platforms should use a new
> supported file extension: ".cljc". When requested to load a namespace,
> the platform-specific file extension (.clj, .cljs) will be checked
> prior to .cljc.
>
> A new reader form can be used to specify "reader conditional" code in
> cljc files (and *only* cljc files). Each platform defines a feature
> identifying the platform (:clj, :cljs, :cljr). The reader conditional
> specifies code that is read conditionally based on the feature/
>
> Form #? takes a list of alternating feature and expression. These are
> checked like cond and the selected expression is read and returned. Other
> branches are unread. If no branch is selected, the reader reads nothing
> (not nil, but literally as if reading ""). An optional ":default" branch
> can be used as a fallthrough.
>
> Reader conditional with 2 features and a default:
>
> #?(:clj Double/NaN
>:cljsjs/NaN
>:default nil)
>
> There is also a reader conditional splicing form. The evaluated expression
> should be sequential and will be spliced into the surrounded code, similar
> to unqoute-splicing.
>
> For example:
>
>[1 2 #?@(:clj [3 4] :cljs [5 6])]
>
> This form would read as [1 2 3 4] on Clojure, [1 2 5 6] on ClojureScript,
> and [1 2] 

Re: [ANN] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Alex Miller
>From my perspective, Instaparse is reaching pretty far into the guts there. 
>I'll talk to Rich about it though.

-- 
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] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Mark Engelberg
I can push a new version of instaparse incorporating Michael Blume's pull
request by the end of the day.

On Tue, Mar 31, 2015 at 3:57 PM, Alex Miller  wrote:

> From my perspective, Instaparse is reaching pretty far into the guts
> there. I'll talk to Rich about it though.
>
> --
> 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: [ANN] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Sean Corfield
On Mar 31, 2015, at 3:57 PM, Alex Miller  wrote:
> From my perspective, Instaparse is reaching pretty far into the guts there. 
> I'll talk to Rich about it though.

Thanks. I know we've had several discussions about what should be considered 
"API" around some of the Java code that implements Clojure and it struck me as 
odd that these pieces were clearly designed to be called from Clojure yet 
otherwise seemed to be "internal" so I'd definitely be curious as to the 
thinking there.

Sean Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/

dev.Objective() - Developing Apps, Developing Skills, Developing Community
-- May 12-15, 2015 - Bloomington, MN - http://devobjective.com



-- 
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] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Sean Corfield
On Mar 31, 2015, at 4:00 PM, Mark Engelberg  wrote:
> I can push a new version of instaparse incorporating Michael Blume's pull 
> request by the end of the day.

That would be great, Mark! Thank you!

Sean Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)



-- 
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] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Mark Engelberg
The reason instaparse uses Clojure's string reader is to make sure that
strings inside the context-free grammar DSL are handled consistently with
Clojure's logic for interpreting strings.

-- 
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] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Mark Engelberg
Included Michael Blume's pull request in version 1.3.6.


On Tue, Mar 31, 2015 at 4:11 PM, Mark Engelberg 
wrote:

> The reason instaparse uses Clojure's string reader is to make sure that
> strings inside the context-free grammar DSL are handled consistently with
> Clojure's logic for interpreting strings.
>

-- 
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] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Alexander Gunnarson
This patch is great! It's much needed for my development workflow. One 
question: how do I enable conditional reading by default in the REPL? Do I 
set certain system properties in the command line like "cond_read=true" ?

-- 
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] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Sean Corfield
With instaparse 1.3.6 available, we’ve been able to upgrade our dev stack to 
Clojure 1.7.0-alpha6 and all our automated tests pass (and our full build/test 
script seems to be running a bit faster although we haven’t actually 
benchmarked our application yet). We’ll push alpha6 into QA either later today 
or tomorrow in preparation for our next production build (we’re running alpha5 
in production right now).

Sean

On Mar 31, 2015, at 3:21 PM, Sean Corfield  wrote:
> Looks like a great set of updates!
> 
> Unfortunately, as several of us found out today, the change to the 
> StringReader invoke() signature breaks Instaparse so I’m blocked from testing 
> the World Singles code base with alpha6 (or master) at the moment. Is that 
> just a hazard of relying on the internals of reader classes or would 
> Clojure/core consider that breakage avoidable (by adding an overloaded 
> signature instead of just changing the current signature)? Since those 
> readers extend AFn, it seems that there is an expectation that they would be 
> used as functions in Clojure code out in the wild...
> 
> Sean
> 
> On Mar 31, 2015, at 9:50 AM, Alex Miller  > wrote:
>> Clojure 1.7.0-alpha6 is now available.
>> 
>> Try it via
>> - Download: https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0-alpha6/ 
>> 
>> - Leiningen: [org.clojure/clojure "1.7.0-alpha6"]
>> 
>> Regression fixes from previous alphas (and one from 1.6):
>> 
>> 1) CLJ-1544 was rolled back and will be investigated for a future release.
>> 2) CLJ-1637 fixed regression with vec on MapEntry 
>> 3) CLJ-1663 fixed regression in classloader (affected Cursive)
>> 4) CLJ-1638 fixed regression with removed PersistentVector.create(List) 
>> method
>> 5) CLJ-1681 fixed regression in 1.6 with NPE on reflection warning for 
>> literal nil arg
>> 6) CLJ-1604 fixed problem with AOT and shadowing clojure.core symbols that 
>> prevented update
>> 
>> Some highlights new in alpha6:
>> 
>> ## Transducer-related changes:
>> 
>> The LazyTransformer introduced to create lazy transforming sequences has 
>> been 
>> replaced with a TransformingIterator. This was done to simplify the code
>> around transformations and to make certain use cases around eduction more 
>> efficient.
>> 
>> ## Faster reduce, iterator, and sequence paths
>> 
>> A lot of work has been done across a set of tickets to improve the ability of
>> collections to provide more efficient reduce or iterator performance, and 
>> also to
>> make common sequence generators create faster sequence and reduce paths. You
>> should see significant performance in many reduce-related paths (this 
>> includes 
>> reduce, transduce, into, and anything else built on reduce). 
>> 
>> Many of those changes also have beneficial sequence performance, so you may 
>> see
>> some benefits even in code that does not use transducers.
>> 
>> * Most uses of SeqIterator have now been replaced with iterators that 
>> directly walk
>> the underlying source for improved efficiency. This includes maps, sets, 
>> records, etc.
>> * repeat - now returns a faster sequence with a fast reduce path
>> * cycle - now returns a faster sequence with a fast reduce path
>> * iterate - now returns a faster sequence with a fast reduce path
>> * range - (did not quite make it in, but coming soon...)
>> * keys - iterates directly over the keys of a map, without seq or MapEntry 
>> allocation
>> * vals - iterates directly over the vals of a map, without seq or MapEntry 
>> allocation
>> * iterator-seq - now creates a chunked sequence when previously it was 
>> unchunked
>> * vec and set - were not changed in this release but were set up in a 
>> previous alpha
>>   to take advantage of the reduce and iterator changes above
>> 
>> ## Reader conditionals
>> 
>> Reader Conditionals is a new capability to support portable code that
>> can run on multiple Clojure platforms with only small changes. In
>> particular, this feature aims to support the increasingly common case
>> of libraries targeting both Clojure and ClojureScript.
>> 
>> Code intended to be common across multiple platforms should use a new
>> supported file extension: ".cljc". When requested to load a namespace,
>> the platform-specific file extension (.clj, .cljs) will be checked
>> prior to .cljc.
>> 
>> A new reader form can be used to specify "reader conditional" code in
>> cljc files (and *only* cljc files). Each platform defines a feature
>> identifying the platform (:clj, :cljs, :cljr). The reader conditional
>> specifies code that is read conditionally based on the feature/
>> 
>> Form #? takes a list of alternating feature and expression. These are
>> checked like cond and the selected expression is read and returned. Other
>> branches are unread. If no branch is selected, the reader reads nothing
>> (not nil, but literally as if reading ""). An optional ":default" branch
>> can be used as a fallthroug

Re: Debugging in CIDER

2015-03-31 Thread Colin Fleming
This looks nice! In particular the fact that it's expression based makes me
jealous.

>From a look at how it works, is it fair to say that this is mostly designed
for debugging a function at a time, i.e. you can't easily step from one
function to another? Or does it instrument multiple functions in such a way
that you can do that?

On 29 March 2015 at 06:46, Bozhidar Batsov  wrote:

> Hey everyone,
>
> Just wanted to let you know that the most requested feature for CIDER (a
> debugger, in case you're wondering) has just landed in the master branch (
> https://github.com/clojure-emacs/cider/pull/1019#issuecomment-87240470).
>
> The new CIDER debugger is inspired by edebug (Emacs's own debugger) and
> based on https://github.com/razum2um/clj-debugger
>
> It's not super fancy and there's clearly room for improvement in both
> clj-debugger and CIDER itself, but it's a pretty good first step. Please,
> take the new debugger out for a spin and let us know what do you think
> about it. You might also report any problems you've encountered. :-)
>
> If all is well, CIDER 0.9 will probably be released in a week or so.
>
> P.S. Thanks, Artur (https://github.com/Malabarba), for all the hard work
> on the debugger! You've once again showed the power of the OSS! There's
> nothing we can't build together!
>
> --
> 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: [ANN] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Colin Fleming
One question - it appears that the new #object and #error forms aren't
readable at the moment. Is this something that's coming, or is the
intention just that people could provide reader functions for these if they
wanted to?

On 1 April 2015 at 14:01, Sean Corfield  wrote:

> With instaparse 1.3.6 available, we’ve been able to upgrade our dev stack
> to Clojure 1.7.0-alpha6 and all our automated tests pass (and our full
> build/test script seems to be running a bit faster although we haven’t
> actually benchmarked our application yet). We’ll push alpha6 into QA either
> later today or tomorrow in preparation for our next production build (we’re
> running alpha5 in production right now).
>
> Sean
>
> On Mar 31, 2015, at 3:21 PM, Sean Corfield  wrote:
>
> Looks like a great set of updates!
>
> Unfortunately, as several of us found out today, the change to the
> StringReader invoke() signature breaks Instaparse so I’m blocked from
> testing the World Singles code base with alpha6 (or master) at the moment.
> Is that just a hazard of relying on the internals of reader classes or
> would Clojure/core consider that breakage avoidable (by adding an
> overloaded signature instead of just changing the current signature)? Since
> those readers extend AFn, it seems that there is an expectation that they
> would be used as functions in Clojure code out in the wild...
>
> Sean
>
> On Mar 31, 2015, at 9:50 AM, Alex Miller  wrote:
>
> Clojure 1.7.0-alpha6 is now available.
>
> Try it via
> - Download:
> https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0-alpha6/
> - Leiningen: [org.clojure/clojure "1.7.0-alpha6"]
>
> Regression fixes from previous alphas (and one from 1.6):
>
> 1) CLJ-1544 was rolled back and will be investigated for a future release.
> 2) CLJ-1637 fixed regression with vec on MapEntry
> 3) CLJ-1663 fixed regression in classloader (affected Cursive)
> 4) CLJ-1638 fixed regression with removed PersistentVector.create(List)
> method
> 5) CLJ-1681 fixed regression in 1.6 with NPE on reflection warning for
> literal nil arg
> 6) CLJ-1604 fixed problem with AOT and shadowing clojure.core symbols that
> prevented update
>
> Some highlights new in alpha6:
>
> ## Transducer-related changes:
>
> The LazyTransformer introduced to create lazy transforming sequences has
> been
> replaced with a TransformingIterator. This was done to simplify the code
> around transformations and to make certain use cases around eduction more
> efficient.
>
> ## Faster reduce, iterator, and sequence paths
>
> A lot of work has been done across a set of tickets to improve the ability
> of
> collections to provide more efficient reduce or iterator performance, and
> also to
> make common sequence generators create faster sequence and reduce paths.
> You
> should see significant performance in many reduce-related paths (this
> includes
> reduce, transduce, into, and anything else built on reduce).
>
> Many of those changes also have beneficial sequence performance, so you
> may see
> some benefits even in code that does not use transducers.
>
> * Most uses of SeqIterator have now been replaced with iterators that
> directly walk
> the underlying source for improved efficiency. This includes maps, sets,
> records, etc.
> * repeat - now returns a faster sequence with a fast reduce path
> * cycle - now returns a faster sequence with a fast reduce path
> * iterate - now returns a faster sequence with a fast reduce path
> * range - (did not quite make it in, but coming soon...)
> * keys - iterates directly over the keys of a map, without seq or MapEntry
> allocation
> * vals - iterates directly over the vals of a map, without seq or MapEntry
> allocation
> * iterator-seq - now creates a chunked sequence when previously it was
> unchunked
> * vec and set - were not changed in this release but were set up in a
> previous alpha
>   to take advantage of the reduce and iterator changes above
>
> ## Reader conditionals
>
> Reader Conditionals is a new capability to support portable code that
> can run on multiple Clojure platforms with only small changes. In
> particular, this feature aims to support the increasingly common case
> of libraries targeting both Clojure and ClojureScript.
>
> Code intended to be common across multiple platforms should use a new
> supported file extension: ".cljc". When requested to load a namespace,
> the platform-specific file extension (.clj, .cljs) will be checked
> prior to .cljc.
>
> A new reader form can be used to specify "reader conditional" code in
> cljc files (and *only* cljc files). Each platform defines a feature
> identifying the platform (:clj, :cljs, :cljr). The reader conditional
> specifies code that is read conditionally based on the feature/
>
> Form #? takes a list of alternating feature and expression. These are
> checked like cond and the selected expression is read and returned. Other
> branches are unread. If no branch is selected, the reader reads nothing
> (not nil, but literally as if 

Re: [ANN] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Alex Miller
We do not expect to provide readers for the #object and #error forms
(afaik). It's not possible to actual create a new Object or Throwable form
that would be useful as an instance.

The new tagged-literal function could be used as a fallback reader function
for either though, which would then allow you to retrieve either the tag or
form as data.

On Tue, Mar 31, 2015 at 9:57 PM, Colin Fleming 
wrote:

> One question - it appears that the new #object and #error forms aren't
> readable at the moment. Is this something that's coming, or is the
> intention just that people could provide reader functions for these if they
> wanted to?
>
> On 1 April 2015 at 14:01, Sean Corfield  wrote:
>
>> With instaparse 1.3.6 available, we’ve been able to upgrade our dev stack
>> to Clojure 1.7.0-alpha6 and all our automated tests pass (and our full
>> build/test script seems to be running a bit faster although we haven’t
>> actually benchmarked our application yet). We’ll push alpha6 into QA either
>> later today or tomorrow in preparation for our next production build (we’re
>> running alpha5 in production right now).
>>
>> Sean
>>
>> On Mar 31, 2015, at 3:21 PM, Sean Corfield  wrote:
>>
>> Looks like a great set of updates!
>>
>> Unfortunately, as several of us found out today, the change to the
>> StringReader invoke() signature breaks Instaparse so I’m blocked from
>> testing the World Singles code base with alpha6 (or master) at the moment.
>> Is that just a hazard of relying on the internals of reader classes or
>> would Clojure/core consider that breakage avoidable (by adding an
>> overloaded signature instead of just changing the current signature)? Since
>> those readers extend AFn, it seems that there is an expectation that they
>> would be used as functions in Clojure code out in the wild...
>>
>> Sean
>>
>> On Mar 31, 2015, at 9:50 AM, Alex Miller  wrote:
>>
>> Clojure 1.7.0-alpha6 is now available.
>>
>> Try it via
>> - Download:
>> https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0-alpha6/
>> - Leiningen: [org.clojure/clojure "1.7.0-alpha6"]
>>
>> Regression fixes from previous alphas (and one from 1.6):
>>
>> 1) CLJ-1544 was rolled back and will be investigated for a future release.
>> 2) CLJ-1637 fixed regression with vec on MapEntry
>> 3) CLJ-1663 fixed regression in classloader (affected Cursive)
>> 4) CLJ-1638 fixed regression with removed PersistentVector.create(List)
>> method
>> 5) CLJ-1681 fixed regression in 1.6 with NPE on reflection warning for
>> literal nil arg
>> 6) CLJ-1604 fixed problem with AOT and shadowing clojure.core symbols
>> that prevented update
>>
>> Some highlights new in alpha6:
>>
>> ## Transducer-related changes:
>>
>> The LazyTransformer introduced to create lazy transforming sequences has
>> been
>> replaced with a TransformingIterator. This was done to simplify the code
>> around transformations and to make certain use cases around eduction more
>> efficient.
>>
>> ## Faster reduce, iterator, and sequence paths
>>
>> A lot of work has been done across a set of tickets to improve the
>> ability of
>> collections to provide more efficient reduce or iterator performance, and
>> also to
>> make common sequence generators create faster sequence and reduce paths.
>> You
>> should see significant performance in many reduce-related paths (this
>> includes
>> reduce, transduce, into, and anything else built on reduce).
>>
>> Many of those changes also have beneficial sequence performance, so you
>> may see
>> some benefits even in code that does not use transducers.
>>
>> * Most uses of SeqIterator have now been replaced with iterators that
>> directly walk
>> the underlying source for improved efficiency. This includes maps, sets,
>> records, etc.
>> * repeat - now returns a faster sequence with a fast reduce path
>> * cycle - now returns a faster sequence with a fast reduce path
>> * iterate - now returns a faster sequence with a fast reduce path
>> * range - (did not quite make it in, but coming soon...)
>> * keys - iterates directly over the keys of a map, without seq or
>> MapEntry allocation
>> * vals - iterates directly over the vals of a map, without seq or
>> MapEntry allocation
>> * iterator-seq - now creates a chunked sequence when previously it was
>> unchunked
>> * vec and set - were not changed in this release but were set up in a
>> previous alpha
>>   to take advantage of the reduce and iterator changes above
>>
>> ## Reader conditionals
>>
>> Reader Conditionals is a new capability to support portable code that
>> can run on multiple Clojure platforms with only small changes. In
>> particular, this feature aims to support the increasingly common case
>> of libraries targeting both Clojure and ClojureScript.
>>
>> Code intended to be common across multiple platforms should use a new
>> supported file extension: ".cljc". When requested to load a namespace,
>> the platform-specific file extension (.clj, .cljs) will be checked
>> prior to .cljc.
>>
>> A new reader fo

Re: [ANN] Clojure 1.7.0-alpha6 released

2015-03-31 Thread Colin Fleming
Ok, thanks - I was looking for a way to access the data, right, I'll try
tagged-literal for this.

On 1 April 2015 at 17:03, Alex Miller  wrote:

> We do not expect to provide readers for the #object and #error forms
> (afaik). It's not possible to actual create a new Object or Throwable form
> that would be useful as an instance.
>
> The new tagged-literal function could be used as a fallback reader
> function for either though, which would then allow you to retrieve either
> the tag or form as data.
>
> On Tue, Mar 31, 2015 at 9:57 PM, Colin Fleming <
> colin.mailingl...@gmail.com> wrote:
>
>> One question - it appears that the new #object and #error forms aren't
>> readable at the moment. Is this something that's coming, or is the
>> intention just that people could provide reader functions for these if they
>> wanted to?
>>
>> On 1 April 2015 at 14:01, Sean Corfield  wrote:
>>
>>> With instaparse 1.3.6 available, we’ve been able to upgrade our dev
>>> stack to Clojure 1.7.0-alpha6 and all our automated tests pass (and our
>>> full build/test script seems to be running a bit faster although we haven’t
>>> actually benchmarked our application yet). We’ll push alpha6 into QA either
>>> later today or tomorrow in preparation for our next production build (we’re
>>> running alpha5 in production right now).
>>>
>>> Sean
>>>
>>> On Mar 31, 2015, at 3:21 PM, Sean Corfield  wrote:
>>>
>>> Looks like a great set of updates!
>>>
>>> Unfortunately, as several of us found out today, the change to the
>>> StringReader invoke() signature breaks Instaparse so I’m blocked from
>>> testing the World Singles code base with alpha6 (or master) at the moment.
>>> Is that just a hazard of relying on the internals of reader classes or
>>> would Clojure/core consider that breakage avoidable (by adding an
>>> overloaded signature instead of just changing the current signature)? Since
>>> those readers extend AFn, it seems that there is an expectation that they
>>> would be used as functions in Clojure code out in the wild...
>>>
>>> Sean
>>>
>>> On Mar 31, 2015, at 9:50 AM, Alex Miller  wrote:
>>>
>>> Clojure 1.7.0-alpha6 is now available.
>>>
>>> Try it via
>>> - Download:
>>> https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0-alpha6/
>>> - Leiningen: [org.clojure/clojure "1.7.0-alpha6"]
>>>
>>> Regression fixes from previous alphas (and one from 1.6):
>>>
>>> 1) CLJ-1544 was rolled back and will be investigated for a future
>>> release.
>>> 2) CLJ-1637 fixed regression with vec on MapEntry
>>> 3) CLJ-1663 fixed regression in classloader (affected Cursive)
>>> 4) CLJ-1638 fixed regression with removed PersistentVector.create(List)
>>> method
>>> 5) CLJ-1681 fixed regression in 1.6 with NPE on reflection warning for
>>> literal nil arg
>>> 6) CLJ-1604 fixed problem with AOT and shadowing clojure.core symbols
>>> that prevented update
>>>
>>> Some highlights new in alpha6:
>>>
>>> ## Transducer-related changes:
>>>
>>> The LazyTransformer introduced to create lazy transforming sequences has
>>> been
>>> replaced with a TransformingIterator. This was done to simplify the code
>>> around transformations and to make certain use cases around eduction
>>> more efficient.
>>>
>>> ## Faster reduce, iterator, and sequence paths
>>>
>>> A lot of work has been done across a set of tickets to improve the
>>> ability of
>>> collections to provide more efficient reduce or iterator performance,
>>> and also to
>>> make common sequence generators create faster sequence and reduce paths.
>>> You
>>> should see significant performance in many reduce-related paths (this
>>> includes
>>> reduce, transduce, into, and anything else built on reduce).
>>>
>>> Many of those changes also have beneficial sequence performance, so you
>>> may see
>>> some benefits even in code that does not use transducers.
>>>
>>> * Most uses of SeqIterator have now been replaced with iterators that
>>> directly walk
>>> the underlying source for improved efficiency. This includes maps, sets,
>>> records, etc.
>>> * repeat - now returns a faster sequence with a fast reduce path
>>> * cycle - now returns a faster sequence with a fast reduce path
>>> * iterate - now returns a faster sequence with a fast reduce path
>>> * range - (did not quite make it in, but coming soon...)
>>> * keys - iterates directly over the keys of a map, without seq or
>>> MapEntry allocation
>>> * vals - iterates directly over the vals of a map, without seq or
>>> MapEntry allocation
>>> * iterator-seq - now creates a chunked sequence when previously it was
>>> unchunked
>>> * vec and set - were not changed in this release but were set up in a
>>> previous alpha
>>>   to take advantage of the reduce and iterator changes above
>>>
>>> ## Reader conditionals
>>>
>>> Reader Conditionals is a new capability to support portable code that
>>> can run on multiple Clojure platforms with only small changes. In
>>> particular, this feature aims to support the increasingly common case
>>> of libraries t