#clojure logs

2008-10-10

00:57mhincheyslime fails to start with the latest clojure. Anyone else having a problem?
01:23yangsxmhichey: how latest is it?
01:29tWipmhinchey: I had the same problem
01:29mhincheyyangsx: svn 1057
01:29tWipComplained about *1 symbol on core.clj:124
01:30mhincheytWip: hmm, I wrote that part, but it does work with the latest clojure
01:30tWipoh ok. I'm using the latest released 20080916
01:30mhincheymy problem is I think caused by Rich's new ## changes
01:31mhincheyI'll post to the group
01:32tWipbut the *1 thing should work on latest svn rev clojure? I'll need to try that then
01:33yangsxmhinchey: I just updated to svn 1057 and you're right
01:36lisppaste8yangsx pasted "clojure svn 1057 failed with slime" at http://paste.lisp.org/display/68237
01:37mhincheyyangsx: yes
01:38mhincheytWip: yes, *1, *2, *3 are supported like clojure's internal repl, the previous 3 input commands
01:38tWipnice
01:41mhincheytWip: I think most people use clojure from svn or github rather than the releases, so other projects like swank stay current with the svn clojure
01:46tWipyeah, but I like releases... especially at work if I need to depend on a version :)
01:47yangsxmhinchey: I checkout svn 1056 and that works fine with slime. You're right, svn 1057 is the culprit.
01:48mhincheyyangsx: thanks, I posted to the group
01:49lisppaste8yangsx annotated #68237 with "changes in svn 1057 breaks swank-clojure" at http://paste.lisp.org/display/68237#1
01:56scgilardihttp://github.com/mikehinchey/swank-clojure/tree/master has a fork of jochu's swank for clj that supports *1, *2, *3
01:58mhincheyscgilardi: jochu merged that into his
01:58scgilardioh cool
02:00scgilarditemporarily reverting the ## reader macro should work for now, right?
02:01mhincheyyes
03:06lisppaste8schlarf pasted "eval and refs" at http://paste.lisp.org/display/68240
03:07schlarfcan someone help me with that? i want to be able to change a and then just re-eval c tog et the new value(30)
03:08hoeckschlarf: why `eval'?
03:10hoeckschlarf: (dosync (ref-set a 3))
03:11hoeckinstead of (def a 3)
03:12schlarfhoeck: i am writing an object-system, iw ant to be able to define a method as a list then callt he method later and have it re-lookup the variables(the objects attributes)
03:13schlarfref-set doesnt work by itself
03:15schlarfah i see
03:20hoeckyou need to wrap ref-set in a transaction with (dosync ..)
03:27schlarfyes
03:39schlarfif i have a reference number, how can i get its value? i mean it is not deffed just like (ref 4)
03:39schlarfthen i have clojure.lang.Ref@14ce5eb
03:39schlarfand @ at that doesnt work...
05:57schlarfhow can i replace a symbol ina list with something from another list?
05:58schlarflike i ahve (* a b) and a list of (a -> func(a) b -> func(b)) and i want eval(* a b) to replace a aiwth func(a) when ti is run
06:01parth_mschlarf: If I understand you correctly, is this what you want?
06:02parth_muser[1] => (map #(% {:a 1 :b 2} %) [:a :b :c :d])
06:02parth_m(1 2 :c :d)
06:02parth_mInstead of list (a -> func(a) b -> func(b)) I have used a map {:a 1 :b 2}
06:13schlarfyes thanks think it is
09:54tayssirHi! When installing Clojure with Slime integration, should I ignore the readme files in the Jochu-* directories and just do what it says on the Clojure wiki?
09:55tayssirThere's all sorts of autoload stuff in the Jochu-* readme files, which aren't mentioned on the wiki.
10:53tayssirHi, where do I find the clojure.jar file, if I compiled it from SVN using Mven? The closest I see is clojure-lang-1.0-SNAPSHOT.jar.
10:53H4nstayssir: that is it.
10:53alecI use that one - it ends up in target/
10:54tayssirAh, thanks!
10:55rhickeyhttp://www.pragprog.com/titles/shcloj/programming-clojure
10:56gnuvinceNice!
10:56tWipvery nice!
10:56H4nscool!
10:57gnuvincehttp://www.reddit.com/r/programming/comments/76dfm/upcoming_book_from_the_pragmatic_programmers/
10:58tWipI don't get the cover image though :P
11:00H4nsseems pretty clear!
11:02rhickeyheh
11:09tayssirCathedral vs. bazaar, maybe?
11:10gnuvinceI don't think the PP book covers have any real significance
11:10gnuvinceThe Ruby on Rails book 2nd edition has a skater boy on it
11:11gnuvincehttp://www.pragprog.com/titles/rails2/agile-web-development-with-rails
11:14tayssirI suspect that has to do with the soul grinding that skaters do on stair-rails.
11:14cmvkkwouldn't it be because agility is required to skate well?
11:15rhickeyI like the Clojure cover better, seems more aspirational
11:16rhickeyvs a picture of a hasp or something
11:16solkisreminds me of of a fractal almost
11:17ChouserI see parens
11:17fogus200 pgs! My kind of book.
11:17gnuvinceClojure has been out for what, a year now?
11:18rhickeyjust about
11:18gnuvinceIt sure is nice to see books already being written about it.
11:20solkisrhickey: this must be satisfying to see after your years or hard work... congrats!
11:21rhickeyI count the release as Oct 16, 2007, when I sent an email to the jFli and Foil lists, picked up by Planet Lisp, then Reddit, and the snowball's been running downhill ever since
11:22Chouseroo, so it's almost the anniversary. Party at my house!
11:23gnuvinceChouser: where is that?
11:23ChouserFort Wayne, Indiana
11:23gnuvinceYeah, kinda of a long drive for me.
11:24ChouserWhere are you?
11:24gnuvinceMontreal
11:24ChouserAh, indeed.
11:24gnuvinceIt's about 10 hours to get to Sandusky, OH.
11:42rhickeyinteresting watching Erlangers muse about how to handle the transactional nature of the Clojure ant sim: http://groups.google.com/group/erlang-questions/browse_frm/thread/7b9b002368a378dd?hl=en#
11:46arohnerwow that is convoluted
11:48rhickeyit will be interesting to see where they end up
11:49arohneryeah
11:55Chouserthat page is having a lot of trouble loading for me
11:55rhickeyChouser: which one?
11:55Chouserthe google group erlang link you posted
11:56Chouserhm, all google groups pages?
11:57Chouserhuh. some kind of browser issue. personal problem...
11:57alechappened to me too
11:57alecended up loading after a while
11:58cemerickyeah, groups is having issues
11:58ChouserI tried in a fresh firefox profile and it came right up.
12:19arohnerlisppaste8: url
12:19lisppaste8To use the lisppaste bot, visit http://paste.lisp.org/new/clojure and enter your paste.
12:23lisppaste8arohner pasted "list vs. '" at http://paste.lisp.org/display/68264
12:24arohnerin that paste, can someone please help me understand why #4 is different from #5?
12:25hircusarohner: quote (either (quote foo) or 'foo) means take the expression literally
12:25hircusso System/currentTimeMills is never called in #5
12:26rhickeyuser=> (list [1 2 (System/currentTimeMillis)])
12:26rhickey([1 2 1223655773276])
12:26rhickeyuser=> '([1 2 (System/currentTimeMillis)])
12:26rhickey([1 2 (System/currentTimeMillis)])
12:26arohnerok, I don't know why I got it stuck in my head that quote == list
12:27arohnerlist evaluates its arguments
12:27hircusarohner: well, it works until you try sticking variables and/or expressions :)
12:27hircusdoes clojure have quasiquotes like Scheme, I wonder
12:27hircusso you can do `([1 2 ,(System/currentTimeMillis)])
12:27rhickeyone of the nice things about Clojure is that you have evaluated vectors as an alternative to (back)quoted lists as data
12:28lisppaste8alec annotated #68264 with "fix #5" at http://paste.lisp.org/display/68264#1
12:29rhickeyand vectors are definitely preferred for that - I'd much rather see [1 2 3] than '(1 2 3)
12:29arohnerin this case, I'm trying not to evaluate things until later
12:30arohnerso I'd like to delay that function call
12:30arohneris there a better way to do that?
12:31rhickeyarohner: are you writing a macro?
12:32arohnerI think I have to
12:33TommyOnMachi
12:33arohnerTommyOnMac: hi
12:35TommyOnMacAre there any more Freemind lovers in here?
12:36TommyOnMacI found a couple of mind maps for C# and Python, and wanted one for Clojure
12:36TommyOnMac( http://freemind.sourceforge.net/wiki/extensions/freemind/flashwindow.php?startCollapsedToLevel=3&initLoadFile=/wiki/images/e/ee/CSharp_2_WebLinks2.mm&mm_title=C%23%202.0%20Computer%20Language%20-%20Contents )
12:36TommyOnMacsorry for the long url
12:36TommyOnMacI've entered "The Reader" into Freemind just to see how it would look like
12:36TommyOnMacIt's Clojure.png and .mm in here http://groups.google.com/group/clojure/files
12:36TommyOnMacwhat do you guys think?
12:37TommyOnMacWOuldn't it be lovely to have the whole language / api in that form?
12:40cemerickI've always been very intrigued with the mind mapping concept, but I've never liked any of the tools.
12:40TommyOnMacFreemind is very nice
12:40TommyOnMacit's non-bloated and to the point
12:41cemerickVisualizations can obviously be very helpful in some circumstances,
12:41TommyOnMacperfect for taking notes during a meeting
12:41cemerickIt's hard to beat a whiteboard :-)
12:42TommyOnMacit's hard to save a whiteboard
12:42TommyOnMacand mail it
12:42TommyOnMac:)
12:42cemericktrue, true; I've been using http://qipit.com lately for that. A hacky solution, but good in a pinch.
12:46TommyOnMacmap enter to sibling and tab to child
12:47scottjTommyOnMac: looks good.
12:47arohneris `(~foo) inside of a macro equivalent to '(foo) outside of a macro?
12:48TommyOnMacrtfmm :)
12:50arohnerI've tried
12:51arohnerI have an existing function that takes & arguments
12:51scottjarohner: Does ~foo evaluate foo?
12:52arohnerI want to write a macro that takes & arguments, and saves the arguments in a datastructure, and then later apply the arguments to the existing function
12:52cemerickarohner: I've always ended up using (quote foo) inside a macro; I've not been able to puzzle out a more succinct way to emit '(foo)
12:52cemerick...which is probably due to my less-than-stellar skillz :-)
12:53cemerickor, sorry, ~(quote foo)
12:53TommyOnMacinstead of one fat macro, can you divide it into smaller ones?
12:54arohnercemerick: shouldn't it be (quote ~foo)?
12:54arohnerTommyOnMac: right now, it's only two lines. :-) my trouble is coming from trying to understand macros, quote and quasiquote
12:55TommyOnMacand you tried macroexpand?
12:55cemerickarohner: ah, right; (quote ~foo) => 'foo, (quote ~foo) => '(foo)
13:12leafwhi all. How can one convert a string such as "#^ints" to a proper symbol to be used for introducing a primitive type hint?
13:13leafwI know there is a way to do it, just can't recall it -- clojure's library is very horizontal
13:15rhickeyleafw: putting #^ in the string sets you off on the wrong path
13:16leafwgood to know . How would you do it? I am trying to make a macro that takes any array type and can process it natively
13:16leafwint[] float[] short[] byte[]
13:17leafwI thought of declaring a table of class vs type decoration, and then use it accordingly in the body of the macro
13:17rhickeyleafw: you've looked at amap and areduce?
13:18leafwreading doc now
13:19arohnerif I have a macro take takes a rest arg, is there a way to get the contents of the rest arg into the macro body?
13:19rhickeylook at the code too, both are macros that manipulate primitive arrays generically
13:19leafwthe problem here is that I don't know the type of the array being passed. Comes from an ugly library, the method in question returnin an Object, so one has to either know it or guess it
13:19leafwthanks, will look at the amap/.areduce definitions
13:19rhickeyarohner: sure, in a syntax-quote, ~@
13:21leafwdoes amap consider the problem of signed byte ? I.e. a byte[] contains values from -128 to 127, so adding -5 to it is wrong if the math considers ints. One has to 0xff the byte first to an int, then (byte ...) it back.
13:21leafwbut one doesn't want to do that for, say, floats
13:21arohnerrhickey: thanks!
13:21leafwsp the body of the function to write has to know the type, to be able to fix these issues
13:22rhickeyleafw: that's not about the mapping but the operation, and right now byte arrays are second class vs. int/long/float/double
13:22leafwbyte arrays are second class? What do you mean?
13:23leafwbyte arrays are my primary data type, for imaging (8-bit images in ImageJ)
13:23rhickeythere's inlining for the other 4
13:23leafwbut not for byte[], urgh
13:24leafwyou are missing short[] as well.
13:24leafwanother very much used data type in Image/j (16-bit images).
13:26leafwso I think I'm going to go ahead and try thathorrible approach of mine. How would one generate a type decorator in place?
13:26leafwyou sid strings is not the way to go
13:30leafwI know there is a function to create symbols in place, just forgot its name and I can't find it in the docs. If someone recalls its name I'd appreciate it.
13:31gnuvince(gensym)?
13:31rhickey(doc symbol)
13:31leafwno, gensym is to create unqieurly named symbols
13:31leafwuniquely
13:32leafwnice, so (symbol "#^ints") works.
13:33rhickeyno #^ is not part of the symbol when used - #^x y === #^{:tag x} y
13:34rhickeyuser=> '#^x y
13:34rhickeyy
13:34rhickeyuser=> (meta '#^x y)
13:34rhickey{:tag x}
13:35leafwhum
13:35Chouserwhy does the #^ have to be quoted?
13:36rhickey#^ tells the reader, make the next thing read the metadata for the following thing
13:36rhickeyChouser: we're talking about macros - just trying to show what the reader reads given forms
13:36leafwstill the question remains, then, on how would one generate the '#^x for meta to do it ...
13:37leafwChouser: I would like to automate type decoration for #^bytes and #^shorts
13:37Chouser(meta (with-meta {} {:tag Integer}))
13:38rhickeyleafw: you need to understand code is data
13:38rhickey#^bytes isn't a thing in itself
13:38leafwrhickey: I admit I still don't get it
13:38leafw#^bytes is a metadata key, IIUC
13:39rhickeyuser=> '#^x y
13:39rhickeyy
13:39rhickeyuser=> (meta '#^x y)
13:39rhickey{:tag x}
13:39rhickeyyou need to understand this^^
13:39ChouserI continue to have trouble groking metadata on vars vs. values, and I'm not sure if that's related to quoting the #^x or not.
13:39rhickeygiven #^x y the reader produces a symbol
13:39leafwok
13:39rhickeyy
13:39ChouserI just thought I'd ask questions since leafw brought it up. :-)
13:40rhickeywith the metadata {:tag x}
13:40leafwso (meta '#^x y) is calling meta on the var y created with metadata #^x
13:41rhickeyif you wanted to programmatically do the same, you could say (with-meta 'y {:tag 'x}):
13:41rhickeyuser=> (with-meta 'y {:tag 'x})
13:41rhickeyy
13:41rhickeyuser=> (meta (with-meta 'y {:tag 'x}))
13:41rhickey{:tag x}
13:41leafwaha
13:41leafwwhy is y quoted?
13:42rhickeymacros don't produce output for consumption by the reader - they produce data for consumption by the compiler
13:42leafwI see, with-meta creates a symbol with name the first argument
13:42leafwhumno
13:42rhickeyno, with-meta returns a version of whatever it was passed, in this case the symbol y, with the metadata provided
13:43leafwok
13:43Chouserah, is the ' in '#^x y effectively quoting the whole thing?
13:43leafwthis fails: {:tag '#^ints}
13:44leafwI must confess I am rather confused.
13:44leafwis even possible at all what I am trying to do?
13:45rhickeyChouser: yes ' == quote the next thing read and return it, #^ == add the next thing read as metadata to the following thing read and return that
13:45leafwso #^ is a macro?
13:45Chouser(meta '#^ints y) ==> {:tag ints}
13:45Chouser(meta (with-meta 'y {:tag 'ints})) ==> {:tag ints}
13:46rhickeyleafw: yes, see http://clojure.org/reader
13:46leafwI see, I was confising then #^ints with ints. The first is the #^ "macro" that passes its attched hint to the next thing
13:46leafws/confising/confusing/
13:46rhickeya reader macro
13:47leafwthanks rhickey
13:47rhickeyyw
14:11lisppaste8leafw pasted "type hints" at http://paste.lisp.org/display/68270
14:12leafwjust pasted some code ... each element works separately, but together they don't
14:13leafwparticularly, (println (get table-types (.getClass ip))) works, but fails when run in the 'add' function
14:14leafwcomments appreciated.
14:14rhickeyleafw: without a macro, there's no way to convey the hints to the compiler - attributing values at runtime has no effect
14:14leafwrhickey: ok
14:14leafwso it needs to be a macro
14:15leafwI am still not comfortable with macros, so I tried defn first. Thanks for th e tip.
14:18Chouserleafw: have you read any kind of tutorial on writing macros?
14:18leafwjust changing defn to defmacro should work in this very simple case. but it doesn't: the error: Caused by: java.lang.IllegalArgumentException: No matching field found: getPixels for class clojure.lang.PersistentList
14:18leafwI did. I am familiar with `, ~ and ~@
14:19leafwbut the whole thin just did click yet, obviously
14:19Chouserok. On Lisp was what convinced me macros were king, and also taught me how to write them
14:19Chouserthat book's available free online
14:19leafwgigamonkeys did it for me.
14:21cemerickYeah, On Lisp is the bible in that area.
14:21leafw(defmacro [x] (println x)) works, but in the pasted case, it parses the argument ip as a PersistentList
14:21cemerickIf you find a sympathetic printer, you can get the online PDF bound up.
14:21leafwI read on screen with the eee or a iLiad from iRex
14:21leafwthe latter is pretty nic: allows for notes to be written on pdfs.
14:23ChouserI think what you're trying to do is made trickier by the fact that type hints (and other metadata) aren't printed.
14:23rhickeyChouser: how so?
14:25leafwany ideas why clojure thinks that ip should be a PersistentList? It's clearly not -- it's an Object, of type byte[], float[] ...
14:25leafwsorry, an ImageProcessor ... whose .getPixels returns those byte[], float[] ... as Object
14:26alecleafw: code in a defmacro that's not inside an interpolated list is run at macroexpand-time
14:26leafwok
14:26leafwso it's a list.
14:26leafwthanks
14:27alecso if you have (defmacro x [y] (println y)) or whatever, at macroexpansion time, it will print the argument
14:27ChouserThe paste.lisp.org captcha cracks me up
14:27lisppaste8Chouser pasted "type hints don't print" at http://paste.lisp.org/display/68271
14:27leafwalec: I understand now why it was printing not im my repl but on the terminal.
14:28Chouseroh.
14:29Chouser(defmacro th [] `(with-meta 'y {:tag 'ints}))
14:30rhickey(binding [*print-meta* true] (prn (macroexpand '(th))))
14:31rhickeycould provide repl binding so you could do: (set! *print-meta* true) and have it stick
14:31Chouseroh
14:32Chouseroh!
14:32leafwrhickey: shorts and bytes are not proper type hints for arrays?
14:32arohnerI like that
14:32Chousermy binding was gone by the time the repl printed. duh.
14:32leafwin my macroexpansion they appear as (quote user/bytes) ad (quote user/shorts)
14:34lisppaste8leafw annotated #68270 with "second round" at http://paste.lisp.org/display/68270#1
14:35ChouserI don't think you want to have your whole table-types in every expansion
14:36leafwChouser: no, I don't. This is just a test. Which fails.
14:36Chouser:-)
14:36leafwjava.lang.IncompatibleClassChangeError (native_arrays.clj:0)
14:36leafwthe line number doesn't help, certainly. The other error with the file name in it is line 14: the macro invocation
14:36Chouserdo you have a working example of what you want your macro to produce?
14:37leafwonce I have the type, I can decide to do special things in generic functions that would apply kernels to the image
14:37leafwsuch as 0xff each byte before doing math, but not shorts or floats
14:38Chouserok, but I would highly recommend writing up one complete example of what the macro might produce, and make sure that's working.
14:38leafwI could do it all with reflection or duplicating and so, but I'd rather not: very large images.
14:38Chouserthen move on to writing a macro that can produce that
14:39leafwthe part that needs testing is how to assign types on the fly, not the other one.
14:40leafwI'mnot even sure that bytes and shorts are valid array flags. I think they are not, for what rhickey said as being "second class".
14:41Chousershorts and bytes appear to be valid hints
14:42Chouserbased on Compiler.java, around line 779
14:43Chouserso do you want to write "generic" functions that work on boxed objects, but then in places have an "if" and do something different for a particular type?
14:49leafwChouser: yes, I want to do so. Just because byte[] is such an aweful type to work with, and just because my byte[] arrays are so large. I wish they were signed, but changing tht is beyond my control.
14:51leafwI'm reading the Compiler.java, even chars and booleans are supported
14:59lisppaste8rhickey pasted "mcast" at http://paste.lisp.org/display/68273
15:00rhickeymcast is a macro that adds a type hint to an expression
15:00leafwwhich needs a very recent svn checkout right :)
15:00rhickeyno
15:01leafwhum, fails to run here
15:01leafwtrunk@1043
15:03leafwsorry, must be my interpreter. Line by line it works; all pasted together, it doesn't.
16:45solkisI just documented a detailed, step-by-step procedure for getting clojure, emacs and slime/swank setup on ubuntu here >> http://riddell.us/clojure
16:46solkisI thought about putting in on the wiki but its pretty specific to ubuntu and some of this information was already covered.
16:46rhickeyyou could stick a link on the wiki
16:46solkisIt contains some detailed steps and then demonstrates the ants.clj script.
16:47solkisrhickey: will do
16:48solkisI'm a newb to fp and clojure and it is definitely at that level.
16:49achim_phi! why is the use of eval generally frowned upon in lisp circles? i'm quite a lisp n00b, admittedly, but isn't eval quintessential to the whole code=data thing?
16:50rhickeymacros are the quintessential code is data, eval usually indicates not grokking macros, other than when writing a repl or such
16:53tayssirEval is typically viewed as too powerful a hammer; typically there's simpler ways to do what you want.
16:54tayssirOr at least more readable ones.
16:58achim_pokay, thanks! i've yet to get a feel for this. not that i was tempted to use it yet, but whenever i see it mentioned, it's followed by a statement like "of course, we don't use it", and i wondered why that is
17:20tayssirIs the Slime setup info at all current on the wiki page? I'm thinking of replacing it. But maybe it works for Windows people; I'm only testing on MacOS.
17:20tayssirhttp://en.wikibooks.org/wiki/Clojure_Programming#Emacs_.2F_Slime_Integration
17:21danlarkintayssir: what didn't work for you?
17:22tayssirWell, I suspect you need to require 'clojure-auto and 'swank-clojure-autoload. And maybe needing to create the file clojure.cmd is outdated, since 'swank-clojure-autoload seems to handle that for me.
17:24tayssirIt didn't work when I tried translating it to unix; I found the READMEs in jochu's stuff more accurate.
17:24tayssir(At least for my setup.)
17:50solkistayssir: I just created a tutorial today at: http://riddell.us/clojure
17:50solkisand linked to it on the wiki
17:51solkistayssir: it's for Ubuntu, and it's pretty basic but it works for me
17:55tayssirsolkis: Cool, nice walkthrough!
17:56solkistayssir: thanks... I hope it will help some others get started out there, especially those new to *nix
17:57solkistayssir: I'm not new to linux but I am to clojure ;-)
17:59scottjsolkis: just checking, emacs-snapshot-gtk is in the stock ubuntu repositories?
17:59scottj(I just remember having to add a repository for it once upon a time)
18:00solkisscottj: yes, it should be, I tested these steps in a clean vm to be sure
18:00scottjok
18:04danlarkinsolkis: this is a very nicely formatted walkthrough, good job
18:06solkisdanlarkin: thanks
18:06karmazillaam I suppose to get a ClassCastException on (take 10 (fnseq 1 #(2))) ?
18:07danlarkin2 is not a function
18:09rhickey(take 10 (cons 1 (repeat 2)))
18:10karmazillathe thing is I want to use fnseq to create a lazy seq from the output of a function
18:10karmazillas/want/am trying to/
18:11rhickeywhat function?
18:12rhickeyusing fnseq is pretty rare vs lazy-cons
18:12karmazillathis is where I'm at: http://pastebin.com/df75b6f5
18:14rhickeyhttp://en.wikibooks.org/wiki/Clojure_Programming#Lazy_Fibonacci
18:17karmazillaoh... lazy-cons looks much more powerful when recursion enters the picture
18:18rhickeyyes, and note the seq produced by lazy-cons is already thread-safe
18:18rhickeyno need for that atomic stuff
19:29karmazillacan I tell the clojure version/revision from the repl?
19:31retepanoyone still there? playing around with clojure I'm puzzeld by partial's behaiviour
19:31retep(defn add12 (partial + 12))
19:32retepthrows Don't know how to create ISeq from: Symbol
19:32retepjava.lang.RuntimeException: java.lang.IllegalArgumentException
19:32albinoIs Stuart Halloway here?
19:33karmazillaretep: def instead of defn
19:33retepOh.
19:33retepYes.
19:33retepOf course.
19:34retepIt's late in germany. Need some sleep. ;-)
19:35retepthanks.