It's been six months since I last announced this, so: Factual is
perpetually hiring smart, driven engineers to solve deep problems in data
analysis and systems engineering. We have offices in both SF and LA, and
remote candidates with a strong background in analysis will be considered.
analysis experience?
On Saturday, January 18, 2014 7:34:38 AM UTC+7, Zach Tellman wrote:
It's been six months since I last announced this, so: Factual is
perpetually hiring smart, driven engineers to solve deep problems in data
analysis and systems engineering. We have offices in both SF and LA
At Factual we get a lot of data thrown at us, and often don't have control
over the rate at which it comes in. As such, it's preferable that our
buffer isn't bounded by the process' memory, since a temporary blip in
throughput may cause GC pauses, OOM exceptions, and other things that will
useful for you,
please let me know.
Zach
On Fri, Feb 7, 2014 at 5:26 AM, Bob Hutchison hutch-li...@recursive.cawrote:
On Feb 6, 2014, at 6:45 PM, Zach Tellman z...@factual.com wrote:
At Factual we get a lot of data thrown at us, and often don't have control
over the rate at which it comes
I added the above-described features a few weeks back, but only got around
to marking 0.1.1 today. Fsync batching is described at the end of the
README, let me know if you have any questions.
On Friday, February 7, 2014 11:52:11 AM UTC-8, Zach Tellman wrote:
Hi Bob,
Right now the API only
interval?
Please forgive my suspicious nature,
Leif
On Friday, March 7, 2014 4:21:44 PM UTC-5, Zach Tellman wrote:
I added the above-described features a few weeks back, but only got
around to marking 0.1.1 today. Fsync batching is described at the end of
the README, let me know if you
This one's pretty simple: it's an immutable map that can only have positive
integers as keys. It can be found at
https://github.com/ztellman/immutable-int-map.
The one interesting aspect of this is that it has an efficient merge
mechanism, which means it plays better with Clojure's reducer
, April 20, 2014 9:44:21 PM UTC-7, Plinio Balduino wrote:
it's an immutable map that can only have positive integers as keys -- Like
an array?
(My question is child of my complete ignorance, and I'm not questioning
your knowledge or motivation)
Plínio
On Mon, Apr 21, 2014 at 1:40 AM, Zach
Correct. I'll clarify that I mean 64 bit integers in the readme.
On Apr 21, 2014 5:26 AM, Alex Miller a...@puredanger.com wrote:
Never mind, look like you mean integer in the generic sense and you are
using longs, right?
--
You received this message because you are subscribed to the Google
I've thrown together a very simple Tetris clone, which can be found at
http://github.com/ztellman/penumbra/blob/master/src/examples/tetris.clj
. Excluding the parts hidden away by the framework, it's a purely
functional implementation. I figured a few people here might find it
interesting.
On Dec 1, 8:15 am, David Nolen dnolen.li...@gmail.com wrote:
On Tue, Dec 1, 2009 at 1:10 AM, Phil Hagelberg p...@hagelb.org wrote:
David Nolen dnolen.li...@gmail.com writes:
The problem is that JOGL needs JNIs and JNIs need to be on
java.library.path or java.ext.dirs, not the classpath.
On Dec 2, 12:38 pm, David Nolen dnolen.li...@gmail.com wrote:
Yeah it sounds like you'll need to package up JOGL 2 and push it to Clojars
right?
On Wed, Dec 2, 2009 at 3:20 PM, Zach Tellman ztell...@gmail.com wrote:
On Dec 1, 3:31 pm, David Nolen dnolen.li...@gmail.com wrote:
So just
At first glance I don't see a clean to make this completely higher-
order, but here's a shorter (albeit a little messy) version:
(loop [a a0]
(let [[a b c d e] (reduce #(conj %1 (%2 (last %1))) [a] [f1 f2 f3
f4])
g (f5 c)
h (- e f2 f5)]
(if (or (f6? b) (= g h))
All of these seem to distract from the activity we're trying to fund:
the development of Clojure. If the current approach can bring in
enough money, it strikes me as fairly ideal. We'll just have to wait
and see if it does.
--
You received this message because you are subscribed to the Google
At the REPL, in 1.2.0-master
(meta (second '(a #^b c)))
nil
In 1.1.0-new (and I believe all previous versions)
(meta (second '(a #^b c)))
{:tag b}
Is this intentional, or a bug? Is the new type hint syntax being
introduced in 1.2?
--
You received this message because you are subscribed to
I've double-checked I have the latest from github, cleaned and
recompiled, and I'm still getting the same results.
user= [*clojure-version* (meta (second '(a #^b c)))]
[{:interim true, :major 1, :minor 2, :incremental 0, :qualifier
master} nil]
Does anyone have an idea what's going on here?
On
A few months back I created very basic bindings for CL4Java (the code
for it still exists in Penumbra, under src/opencl). It then
subsequently was renamed to JOCL, which was already in use by another
OpenCL library, and they started to work on combining their efforts,
and I decided to wait until
In the past, I haven't had a lot of luck putting the JOGL libraries on
the classpath. A much better approach, I've found, is to create a
custom script to load up clojure, and put the class and library paths
as parameters to the java executable. My library used to target JOGL
(it now uses LWJGL),
how about 'patois' or 'creole'
On Mar 17, 12:08 am, mac markus.gustavs...@gmail.com wrote:
After just a little more test and polish I plan on calling clj-native
1.0. But clj-native is a *really* boring name so I want to change it
before 1.0 and I don't have very good imagination when it comes
Possibly this fall out from the latest commit requiring an explicit
'this' reference (ba6cc3b), I haven't checked any versions but the
most recent.
user (defprotocol Protocol (f [a b c]))
Protocol
user (def p (reify Protocol (f [a b c] [a b c])))
#'user/p
user (f p :a)
No single method: f of
You're right, that does explain it. I assumed that variadic arguments
were supported, but maybe I was wrong. Can anyone confirm whether or
not this was ever intended to work?
On Apr 6, 2:32 am, Jarkko Oranen chous...@gmail.com wrote:
On Apr 6, 8:16 am, Zach Tellman ztell...@gmail.com wrote
Wrappers for OpenCL have been discussed a few times on this list, so
hopefully a few of you will be interested to hear that one is
available at http://github.com/ztellman/calx.
In my opinion, the C-variant language used by OpenCL doesn't have too
much incidental complexity, so I don't think I'll
.
Thanks,
On Mon, Jun 21, 2010 at 2:04 AM, Zach Tellman ztell...@gmail.com wrote:
Wrappers for OpenCL have been discussed a few times on this list, so
hopefully a few of you will be interested to hear that one is
available athttp://github.com/ztellman/calx.
In my opinion, the C
I've had Graphviz integration in Lamina for a while [1], and have generally
found it to be fun and useful. To let everyone join in the fun, I've
extracted that functionality into its own library, Rhizome [2]. Feedback
is welcome.
Zach
[1] https://github.com/ztellman/lamina/wiki/Channels
[2]
What (+ x y) compiles down is highly dependent on the surrounding context,
including but not limited to the local type-hints and the value of
*unchecked-math*. Actually verifying that it's calling the primitive,
unboxed, easily inlined clojure.lang.Numbers.add(long, long) requires
either a
I agree that namespaces should be designed to be consumed, but that can be
pretty taxing on the developer. In my libraries, I tend to split the
functions into whatever sub-namespaces I want to keep the organization easy
for me, and then import all the functions I want to expose into a
The only things I know that Gloss lacks relative to Erlang's
functionality is arbitrary bit-lengths for integers and mixed-endian
support, both of which I plan to add in the near future. Lacking
Erlang's built in pattern matching, the Clojure implementation will
probably be less elegant in some
(future ...) enqueues tasks onto a thread pool.
On Dec 17, 10:47 am, nicolas.o...@gmail.com nicolas.o...@gmail.com
wrote:
How about futures? They are in clojure.core and can be used for much the
same purposes as Fork/Join, unless your individual tasks are so small that
the performance
If you decide to try Aleph and have any questions, I'm available via
Github or on the mailing list at http://groups.google.com/group/aleph-lib.
Zach
On Dec 24, 10:55 am, paul santa clara kesseri...@gmail.com wrote:
I have had a lot of success with Aleph. Just remember to clone the git repo
as
it mentions in the stacktrace [3] is methods on a reify,
which calls the same method again, or in the most recent case, just
return nil.
[1]http://www.minecraft.net/docs/NBT.txt
[2]https://gist.github.com/761997
[3]http://pastebin.com/AqrsbjuS
On Nov 28 2010, 8:14 pm, Zach Tellman ztell
.
Thanks!
Pepijn de Vos
On Jan 1, 10:47 pm, Zach Tellman ztell...@gmail.com wrote:
The header-body function in (header ...) must return a codec, so you
need to call compile-frame on the vector you're generating. Since you
don't want to call compile-frame every time you decode a frame, you
think is happening is that repeated reads up to the first \0
and then tries to fit the subframes inside of that. What I think it
*should* do is, check the next byte for a delimiter, if not, read a
subframe, rinse and repeat.
Pepijn
On Jan 2, 7:38 pm, Zach Tellman ztell...@gmail.com wrote
Thanks for the patch! It's too bad that Gloss wasn't directly suited
to your needs, but I appreciate you taking the time to familiarize
yourself with the code and add new functionality.
Zach
On Jan 5, 2:45 pm, Eric Schulte schulte.e...@gmail.com wrote:
also, here's a patch to Gloss which I've
I don't know if your example codec is as simple as your real problem,
but here's a codec that will work for the string you provided:
(repeated
(string :utf-8 :delimiters [\n \n\0])
:delimiters [\n\0] :strip-delimiters? false)
This terminates the whole sequence only on \n\0, but doesn't strip
Using Aleph (https://github.com/ztellman/aleph), you can create a
server that broadcasts messages from any client to all other clients
very easily:
(use 'aleph.http 'lamina.core)
(def broadcast-channel (permanent-channel))
(start-http-server
(fn [ch _]
(siphon broadcast-channel ch)
I definitely find them useful.
On Apr 18, 8:47 am, Laurent PETIT laurent.pe...@gmail.com wrote:
Hello,
The -? and -? macros are currently inside old, soon to be
deprecated clojure contrib.
They have proven useful to me a number of times, and I personnally
wouldn't see them stay in the soon
Unfortunately, you just missed the monthly Bay Area user group meetup,
which was yesterday. But with Google I/O going on, maybe there are
enough people around that an impromptu meetup would be plausible.
Zach
On May 10, 1:07 pm, David Jagoe davidja...@gmail.com wrote:
G'day everyone,
Forgive
I updated Penumbra to target the project structure for Leiningen 2 a while
back, are you using v1 by any chance?
Zach
On Thursday, October 11, 2012 12:34:44 PM UTC-7, JvJ wrote:
I'm trying to make a project using Penumbra for opengl, but somehow I get
an issue when I try (use
If the upstream channel is permanent, then it won't close if all downstream
channels are closed. You can create a permanent channel using
(permanent-channel) or (channel* :permanent? true). Once you have that,
you can replace all that code with a simple (siphon perm-ch conn-ch)
As an aside,
That documentation is for the Lamina library, and describes how full-duplex
client connections are represented. If you created a TCP client, all that
would be true.
However, you are writing a server, and using HTTP, which is a much more
structured protocol. Each request takes only a single
At the Bay Area user group meeting in June, there was a very
interesting discussion about how to best use Clojure's concurrency
primitives to field large numbers of concurrent requests, especially
in a long-poll/push type application. We didn't arrive at any solid
conclusion, but it was clear to
On Jul 7, 2:57 am, ngocdaothanh ngocdaoth...@gmail.com wrote:
[org.jboss.netty/netty 3.2.0.BETA1]
Netty 3.2.1.Final has been released.
I think the ! mark in respond! is kind of misleading. Why not change
it to arespond?
For some reason I couldn't get 3.2.1.Final to come in via maven. I
On Jul 7, 9:12 am, David Nolen dnolen.li...@gmail.com wrote:
On Wed, Jul 7, 2010 at 5:15 AM, Zach Tellman ztell...@gmail.com wrote:
With this in mind, I decided to make the thinnest possible wrapper
around Netty such that a person could play around with alternate ways
to use Clojure
On Jul 7, 8:28 am, ngocdaothanh ngocdaoth...@gmail.com wrote:
For some reason I couldn't get 3.2.1.Final to come in via maven.
I think you need to add this to project.clj:
:repositories [[jboss http://repository.jboss.org/nexus/content/
groups/public/]]
Thanks, I'll give that a try.
On Jul 7, 11:17 am, David Nolen dnolen.li...@gmail.com wrote:
On Wed, Jul 7, 2010 at 2:10 PM, James Reeves jree...@weavejester.comwrote:
On 7 July 2010 19:04, David Nolen dnolen.li...@gmail.com wrote:
So something like this:
(defn hello-world [request]
(future
Hi Victor,
I've written Penumbra (http://github.com/ztellman/penumbra), which is
a wrapper for OpenGL that allows for some limited general purpose
computation. I've also written Calx (http://github.com/ztellman/calx)
which is a wrapper for OpenCL, and it's designed for general purpose
I don't really understand what's being debated here. Aleph is fully
Ring-compliant in every way but its threading model. I don't think
anything in the Ring utilities are thread-aware, so they're all okay
to use. I'm not very familiar with Compojure, but as long as you're
willing to make an
Also, I've just created a mailing list for Aleph at
http://groups.google.com/group/aleph-lib, since it seems like that
might reduce the clutter here.
On Jul 21, 10:40 am, Zach Tellman ztell...@gmail.com wrote:
I don't really understand what's being debated here. Aleph is fully
Ring-compliant
Both of those seem to be about persisting data across requests. I
apologize if I'm being dense, but how does the threading model affect
how they work?
On Jul 21, 11:28 am, gary b gary.b...@gmail.com wrote:
On Jul 21, 10:40 am, Zach Tellman ztell...@gmail.com wrote:
I don't think anything
On Jul 21, 11:51 am, David Nolen dnolen.li...@gmail.com wrote:
On Wed, Jul 21, 2010 at 2:42 PM, Zach Tellman ztell...@gmail.com wrote:
Both of those seem to be about persisting data across requests. I
apologize if I'm being dense, but how does the threading model affect
how they work
(respond! req (ring-handler req)))
On Jul 21, 12:06 pm, Zach Tellman ztell...@gmail.com wrote:
On Jul 21, 11:51 am, David Nolen dnolen.li...@gmail.com wrote:
On Wed, Jul 21, 2010 at 2:42 PM, Zach Tellman ztell...@gmail.com wrote:
Both of those seem to be about persisting data across
Lines of code are a terrible metric for language complexity. If I
write a function and abstract away half the code, have I made Clojure
twice as simple?
If you want to really evaluate Clojure, write a non-trivial
application and see whether the complexity is still manageable. Code
golf doesn't
When writing Calx [1], I discovered it was a huge pain to deal with
mixed C datatypes in Java. When writing Aleph [2], I discovered the
problem increases by a factor of ten when dealing with streams of
bytes. In an attempt to alleviate my own pain, and hopefully help a
few other people out, I've
Yes. There are Eclipse license headers on all the files, I'll just
update the README to reflect that.
On Nov 23, 9:51 am, Stuart Halloway stuart.hallo...@gmail.com wrote:
Neat. License same as Clojure's?
Stu
When writing Calx [1], I discovered it was a huge pain to deal with
mixed
be to just turn any vector which is alternating
keys and types into an ordered-map, but that seems a bit too magical.
Zach
On Nov 23, 12:12 pm, Chris Perkins chrisperkin...@gmail.com wrote:
On Nov 23, 12:03 pm, Zach Tellman ztell...@gmail.com wrote:
When writing Calx [1], I discovered
On Nov 24, 12:42 am, Michael Wood esiot...@gmail.com wrote:
Hi
On 24 November 2010 04:43, Zach Tellman ztell...@gmail.com wrote:
There are a couple of different things being discussed here. I don't
think there's any harm in allowing maps as frames, as long as people
understand
On Nov 23, 2:52 pm, zoka ztomi...@gmail.com wrote:
JVM stores numbers in in big endian format - is there a way to process
binary stream containing little endian numbers?
Zoka
On Nov 24, 7:24 am, Zach Tellman ztell...@gmail.com wrote:
Good question. The solution didn't make the cut for my
to accept ByteBuffers with wrong order() and encode fun
will always generate the correct result.
Zoka
On Nov 25, 3:00 am, Zach Tellman ztell...@gmail.com wrote:
ByteBuffers have an order() method which allows you to toggle the
endianness. I haven't tested this, but since everything
Potemkin [1] is a collection of facades and utilities that I've found
helpful when writing larger-scale libraries or applications. I've never
formally announced it before, but I think it's gotten to the point where
others can benefit from it.
A few highlights:
* 'def-map-type', which allows
At Factual, we build and constantly refine a canonical index of real world
entities: businesses, locations, and products [1]. We also provide ways
for other data to be resolved against our index [2] [3], allowing our
service to act as a join table for real-world entities, breaking down
I've recently been trying to pull out useful pieces from some of my more
monolithic libraries. The most recent result is 'byte-streams' [1], a
library that figures how how to convert between different byte
representations (including character streams), and how to efficiently
transfer bytes
This is really cool, thanks for taking the time to do this. I was able to
eke out another 1.8x speedup by changing the keyword equality checks with
'identical?' [1], and there might be some further room for improvement by
defining inline forms for some of the smaller functions.
Zach
[1]
This is really cool, thanks for doing this. I was able to eke out another
1.8x speedup by replacing '=' with 'identical?' for the keyword comparisons
[1]. There also might be further room for improvement by defining inline
forms for some of the smaller functions.
Zach
[1]
On Saturday, June 29, 2013 1:57:58 PM UTC-4, Zach Tellman wrote:
I've recently been trying to pull out useful pieces from some of my more
monolithic libraries. The most recent result is 'byte-streams' [1], a
library that figures how how to convert between different byte
representations
a reasonable thing to have in contrib at least?
On Saturday, 29 June 2013 18:57:58 UTC+1, Zach Tellman wrote:
I've recently been trying to pull out useful pieces from some of my more
monolithic libraries. The most recent result is 'byte-streams' [1], a
library that figures how how to convert
Last year, I gave a talk at the Conj on my attempt to write an AI for the
board game Go. Two things I discovered is that it was hard to get
predictable performance, but even once I made sure I had all the right type
hints, there was still a lot of room at the bottom for performance
I've just released Vertigo [1], which I describe in this
thread: https://groups.google.com/forum/#!topic/clojure/BayfuaqMzvs. I
suspect this has some bearing on the conversation.
Zach
[1] https://github.com/ztellman/vertigo
On Tuesday, July 9, 2013 8:11:58 AM UTC-7, Alexander Gunnarson
Hi Patrick,
A similar question has been asked in the Aleph mailing list, and you can
see my answer there:
https://groups.google.com/forum/#!topic/aleph-lib/SIO9Z8d3tdo. For future
reference, you're more likely to get my attention, or the attention of
someone else who can answer your
There was some discussion a few days ago about how the lack of local
mutable variables were harming performance, or possibly elegance, I'm not
sure. Regardless, I fixed it: https://github.com/ztellman/proteus
Enjoy!
--
--
You received this message because you are subscribed to the Google
, Zach Tellman ztel...@gmail.comjavascript:
wrote:
There was some discussion a few days ago about how the lack of local
mutable variables were harming performance, or possibly elegance, I'm not
sure. Regardless, I fixed it: https://github.com/ztellman/proteus
Enjoy!
--
--
You received
It looks like the macroexpansion code in conditions.free is fairly generic.
What would you say to putting it into its own library?
On Thu, Jul 11, 2013 at 6:54 PM, Ben Wolfson wolf...@gmail.com wrote:
On Thu, Jul 11, 2013 at 6:48 PM, Zach Tellman ztell...@gmail.com wrote:
Yeah, for safety's
some way to deal with strings other
variable-length data.
I'm also curious if its possible to make the analog of this for fressian,
basically to avoid unpacking objects that are not necessary for the
computation at hand.
On Tue, Jul 9, 2013 at 8:56 PM, Zach Tellman ztell...@gmail.com wrote
in fewer
passes.
On Mon, Jul 15, 2013 at 1:40 PM, Zach Tellman ztell...@gmail.com wrote:
If you (vertigo.core/wrap a-file-name), that will use mmap under the
covers, so if no one's tried it, it's easy enough to start.
With respect to non-fixed data layouts, that could be supported
I actually haven't applied it yet. I'll post results once I have.
On Wed, Jul 17, 2013 at 11:49 AM, Daniel doubleagen...@gmail.com wrote:
How did this affect performance in your Go AI?
On Tuesday, July 9, 2013 10:56:03 PM UTC-5, Zach Tellman wrote:
Last year, I gave a talk at the Conj
https://github.com/ztellman/byte-transforms
This is just a thin wrapper over byte-streams [1] and some best-in-class
hashing and compression algorithms, but I figure there are at least a few
people who, like me, have put off using Snappy or MurmurHash because they
didn't feel like crawling
This is just a thin wrapper over byte-streams [1] and some best-in-class
hash and compression algorithms, but I figure there are at least a few
people out there who'd like to use Snappy or MurmurHash but don't want to
crawl through javadocs. Enjoy.
Zach
[1]
https://github.com/ztellman/immutable-bitset
There's not much to describe here, this provides an implementation of an
integer-only set which can take up three orders of magnitude less memory
under certain conditions. I needed this to implement a Bloom filter, but I
figured it had applications
])
IllegalArgumentException java.nio.Buffer.position (Buffer.java:216)
Thanks,
Ezra
On Tuesday, July 9, 2013 11:56:03 PM UTC-4, Zach Tellman wrote:
Last year, I gave a talk at the Conj on my attempt to write an AI for the
board game Go. Two things I discovered is that it was hard to get
Actually, looking at the readme, I can see the code you were trying to use.
Sorry, I'm not sure how I didn't catch that before, but I've fixed it.
Zach
On Wed, Jul 31, 2013 at 10:17 AM, Zach Tellman ztell...@gmail.com wrote:
Hi Ezra,
This is admittedly a little confusing, but you're
I just pulled some code I wrote while trying to optimize 'memoize' into its
own library: https://github.com/ztellman/clj-tuple. It only has the one
function, so I assume no one will need too much explanation. However,
there may still be room for performance improvements, so if anyone wants to
names .e0, .e1 etc. considered part of the public
interface of tuple objects?
On Sat, Aug 24, 2013 at 7:38 PM, Zach Tellman ztel...@gmail.comjavascript:
wrote:
I just pulled some code I wrote while trying to optimize 'memoize' into
its own library: https://github.com/ztellman/clj-tuple
to the tuple, does it return a tuple too? Also instead of
tupleN, you could fall back to the PersistentVector.
JW
On Sun, Aug 25, 2013 at 4:38 AM, Zach Tellman ztel...@gmail.comjavascript:
wrote:
I just pulled some code I wrote while trying to optimize 'memoize' into
its own library
be a good idea.
On 8/25/13 9:35 AM, Zach Tellman wrote:
I don't think so, even the existence of all the Tuple* types are an
implementation detail, and you'd need to hint it as the right one to get
sane performance. (nth t n) has good performance, you should prefer
that.
On Saturday
On Saturday, August 24, 2013 7:38:25 PM UTC-7, Zach Tellman wrote:
I just pulled some code I wrote while trying to optimize 'memoize' into
its own library: https://github.com/ztellman/clj-tuple. It only has the
one function, so I assume no one will need too much explanation. However,
there may
When I announced Proteus [1], it was rightfully pointed out that it didn't
play nicely with macros which rely on env, as well as a few forms like
'letfn' that I hadn't explicitly handled. This flaw has been shared by
pretty much every library of this sort, and since this is a problem I've
walking
mechanism is exposed for more general transformations a la Proteus.
Hope that helps,
Zach
On Mon, Sep 2, 2013 at 11:20 PM, Konrad Hinsen
googlegro...@khinsen.fastmail.net wrote:
--On 2 septembre 2013 13:49:01 -0700 Zach Tellman ztell...@gmail.com
wrote:
The resulting library
this way is the only way to make sure that locals are consistent
everywhere, rather than just in your own targeted use to track shadowing.
Hope that helps,
Zach
On Tue, Sep 3, 2013 at 12:41 PM, Konrad Hinsen
googlegro...@khinsen.fastmail.net wrote:
--On 3 septembre 2013 02:08:23 -0700 Zach
In the first of what I hope will be many annoucements, we're open sourcing
a library we've found useful at Factual:
https://github.com/Factual/clj-leveldb. This is just a simple wrapper
around LevelDB, which is an in-process persistent k/v store from Google.
If anyone has questions, I'm happy
...@khinsen.fastmail.net wrote:
Zach Tellman writes:
I see. This is honestly something I hadn't considered, but since
Riddley actually uses the Clojure compiler internals to track
locals, this would be as simple as a (when-not (contains?
(riddley.compiler/locals) (first expr
:
**
On Wed, Sep 4, 2013, at 09:25 AM, Zach Tellman wrote:
I'm not sure what you mean by complete recursive expansion. Could
you expand
on that?
Completely ;-)
By complete recursive expansion I mean that you get a form that is fully
reduced to
the core language, i.e. it contains
confusing and makes it necessary to use something like clojure.core/and
within where if you want normal clojure-land and semantics), but it's a
style of non-anaphoric macro that relies on receiving an unexpanded form.
On Wed, Sep 4, 2013 at 9:27 AM, Zach Tellman ztell...@gmail.com wrote:
So
It is probably instructive to look at how (use-primitive-operators) works
in primitive-math [1], though maybe not something you want to emulate. The
basic mechanism is pretty simple: use 'ns-unmap' to get rid of the
operators you want to shadow, and bring in the operators from the alternate
argument to the macros, so
anything which works exactly like the compiler needs to mimic that as
well.
Zach
On Thu, Sep 5, 2013 at 3:09 AM, Konrad Hinsen
googlegro...@khinsen.fastmail.net wrote:
**
Zach Tellman writes:
I guess I'm confused, then. You contrast complete recursive
/riddley/
On Monday, 2 September 2013 21:49:01 UTC+1, Zach Tellman wrote:
When I announced Proteus [1], it was rightfully pointed out that it
didn't play nicely with macros which rely on env, as well as a few forms
like 'letfn' that I hadn't explicitly handled. This flaw has been shared
:
Zach Tellman writes:
I guess I'm confused, then. You contrast complete recursive
expansion with what the compiler does, and then say it's recursive
prewalk expansion, which is exactly what the compiler does. Can
you clarify the difference between what you're doing and what
Not doing actual replacement via code-walking will prevent any functions
with inline definitions actually being able to benefit from this. I'm not
sure if those are used in core.matrix, though.
On Thu, Sep 5, 2013 at 4:54 AM, Colin Fleming
colin.mailingl...@gmail.comwrote:
This is actually
If anyone has questions about working at Factual, I'm happy to answer them,
and can be reached at zach at factual.com. The short version, though, is
that it's great and you should come work with us.
For some examples of Clojure we're writing and using at Factual, check out:
This is a lein plugin which hijacks the Clojure reader and allows all forms
to be transformed before they're passed to the compiler. Usage and
potential applications are described in the readme:
https://github.com/ztellman/sleight
I wrote the original version of this a year ago, but due to
The byte-transforms library will also take care of the gzip stuff for
you: https://github.com/ztellman/byte-transforms
On Thursday, October 10, 2013 10:26:35 PM UTC-4, Brian Craft wrote:
I like the blurb:
This library is a Rosetta stone for all the byte representations Java has
to offer,
It's relatively rare that people write variants of Clojure data structures.
Partially, this is because the existing data structures are quite good,
but it's also because it's surprisingly difficult. Clojure's vectors,
sets, and maps each implement about a dozen interfaces with overlapping
1 - 100 of 167 matches
Mail list logo