2010-01-23
| 00:17 | DeusExPikachu | anyone know any libraries to communicate with web servers for the purpose of automating logging in and filling out forms? |
| 00:25 | hiredman | DeusExPikachu: htmlunit |
| 00:26 | DeusExPikachu | hiredman, thanks, checking it out |
| 00:39 | tomoj | DeusExPikachu: there's also webdriver |
| 00:39 | tomoj | which can use htmlunit or real browsers, if that matters |
| 00:40 | DeusExPikachu | tomoj, interesting, thanks |
| 05:46 | esbena | I'm writing a plugin for Eclipse, but the plugin functionality could also be used in VisualStudio. Would it be an option to write the plugin backend in language neutral clojure, which is then capable of reading the plugin data-structures seamlessly as the backend could be either .NET or Java? |
| 08:27 | LauJensen | How many data visualization libs do we have yet? I need something quick and pretty for a chart rendering - dejartes perhaps? |
| 08:35 | chouser | LauJensen: have you looked at Incanter? |
| 08:35 | LauJensen | Yes - Need something else |
| 08:35 | chouser | oh |
| 08:58 | angerman | Hmm. Is there a lib that serializes/deserialized clojure data-structures? I know clojure can create a string-representation of an object (sans Java classes) that can be recreated by parsing it. But is there a libe that combines that with spit and slurp? E.g. given a structure and a file? |
| 08:58 | odrzut | I have problems with emacs 23 + swank-clojure-project - it doesn't add jars from project/lib to classpath |
| 08:59 | odrzut | when I've changed elisp code in this function swank-clojure-project it prints classpath properly |
| 09:00 | odrzut | but when I try from slime-repl (-> "java.class.path" System/getProperty (.split ,,, ":") seq) it return only standard jars |
| 09:01 | angerman | odrzut: even though what I'm about to suggest is not perfect, what I do is to use "lein swank" + slime-connect |
| 09:01 | the-kenny | odrzut: wait.. let me try your snippet |
| 09:02 | the-kenny | odrzut: hm.. can't reproduce. Are the jars in lib/? Where have you got swank-clojure? elpa? |
| 09:03 | odrzut | yes - I've installed from elpa |
| 09:03 | odrzut | and when I try lein swank + slime-connect I have the same problem |
| 09:03 | the-kenny | that's really strange |
| 09:04 | odrzut | I've probabyl broken emacs configuration somehow |
| 09:04 | odrzut | so it changes classpath after loading it by swank-clojure-project |
| 09:08 | odrzut | here is my .emacs - I've fiddled with it a little trying to add native libs by hand |
| 09:08 | odrzut | http://www.nopaste.pl/l9c |
| 09:08 | odrzut | but I'm noob with elisp |
| 09:11 | the-kenny | odrzut: I'd try commenting out the swank-clojure-*-path stuff |
| 09:11 | the-kenny | You don't need this if you use leiningen and swank-clojure-project |
| 09:13 | the-kenny | If this doesn't work, you should double-check (or show us) the project you're using |
| 09:17 | jlb | angerman: You can do something like (with-in-str (slurp filename) (read)) or you could use with-in-reader from duck-streams |
| 09:17 | angerman | jlb: exactly. I was just wonderig if there was a library already that provided that functionallity out of the box |
| 09:21 | jlb | angerman: that is out of the box, IMO. :) If you want to process data structures as they come in, use with-in-reader. If you're just reading the whole file into a var, use the first form. |
| 09:23 | angerman | jlb: I do get your point. I guess I'll write my own wrappers. It's just like having (let [struct (read "file")]) (write "file" struct) were nice conviniences. |
| 09:30 | LauJensen | Can someone please explain this phenomena to me. When I start heavy computations single threadedly, core#1 goes to about 100% while core#2 idles at 20% presumable keeping the OS running. After about 120 seconds they switch, so c#2 goes to 100% while c#1 idles at 20% - They keep doing this at random intervals between 15 - 120 seconds throughout the computation |
| 09:32 | odrzut | maybe it's to keep temperatures more equal ? |
| 09:34 | LauJensen | So you suspect the OS is moving it ? |
| 09:34 | angerman | LauJensen: sure. It must be the os scheduler. I hadly think java's internal reach so far as to selec the cpu. |
| 09:34 | odrzut | I don't know how to move thread from one core to the other programmaticaly |
| 09:35 | the-kenny | I'd also blame the os. |
| 09:35 | LauJensen | Makes sense |
| 09:35 | the-kenny | You should try it with a similiar program in python or so |
| 09:38 | odrzut | thanks to all, my emacs saw the Classpath :) |
| 09:38 | odrzut | I've removed everything except elpa stuff from .emacs, and tried with slime-connect |
| 09:49 | somejan | ,(. Short TYPE) |
| 09:49 | clojurebot | short |
| 09:49 | somejan | ,(let [t Short] (. Short TYPE)) |
| 09:49 | clojurebot | short |
| 09:49 | somejan | ,(let [t Short] (. t TYPE)) |
| 09:49 | clojurebot | java.lang.IllegalArgumentException: No matching field found: TYPE for class java.lang.Class |
| 09:50 | somejan | any way to make such a construction work? with the type passed in as an argument? |
| 10:07 | LauJensen | somejan: You're calling TYPE as if it were a method of Short, which its not, its a public static final field |
| 10:07 | LauJensen | I'm not sure if there's a way to alias that |
| 10:08 | krumholt | you could do (let [t Short] (Class/forName (.getName t))) |
| 10:08 | krumholt | ,(let [t Short] (Class/forName (.getName t))) |
| 10:08 | clojurebot | java.lang.Short |
| 10:09 | somejan | ,(let [t Short] (. (Class/forName (.getName t)) TYPE)) |
| 10:09 | clojurebot | java.lang.IllegalArgumentException: No matching field found: TYPE for class java.lang.Class |
| 10:09 | somejan | hmm |
| 10:09 | somejan | not yet |
| 10:10 | somejan | ,(Class/forName (.getName Short)) |
| 10:10 | clojurebot | java.lang.Short |
| 10:10 | somejan | ,(Class/forName (.getName Short/TYPE)) |
| 10:10 | clojurebot | java.lang.ClassNotFoundException: short |
| 10:10 | somejan | It doesnt seem to work with primitives |
| 10:11 | somejan | Any way to pass (some representation of) primitive types around in parameters? |
| 10:14 | the-kenny | I don't think so. As far as I know, parameters are always boxed |
| 10:16 | somejan | What I want is some kind of representation of the primitive type, so I can pass that to (make-array type [stuff]) |
| 10:17 | the-kenny | Oh, you mean the class? |
| 10:17 | the-kenny | Try something like (make-array Integer/TYPE) |
| 10:17 | the-kenny | ,(class Integer/TYPE) |
| 10:17 | clojurebot | java.lang.Class |
| 10:18 | slava | ,(class (fn ())) |
| 10:18 | clojurebot | java.lang.NullPointerException |
| 10:18 | slava | ,(class (fn [])) |
| 10:18 | clojurebot | sandbox$eval__5151$fn__5153 |
| 10:18 | somejan | That's what I was trying, but can the class be passed in by a parameter? |
| 10:18 | the-kenny | somejan: Yes |
| 10:20 | the-kenny | hm.. wait |
| 10:20 | somejan | how? this doesn't work: |
| 10:20 | somejan | ,(let [t Integer/TYPE] (make-array t [1 2 3])) |
| 10:20 | clojurebot | java.lang.ClassCastException: clojure.lang.PersistentVector cannot be cast to java.lang.Character |
| 10:21 | somejan | ,(let [t Integer] (make-array (. t TYPE) [1 2 3])) |
| 10:21 | clojurebot | java.lang.IllegalArgumentException: No matching field found: TYPE for class java.lang.Class |
| 10:23 | krumholt | ,(let [t java.lang.Integer] (make-array t 10)) |
| 10:23 | clojurebot | #<Integer[] [Ljava.lang.Integer;@1774e9> |
| 10:24 | krumholt | or also |
| 10:24 | krumholt | ,(let [t Integer/TYPE] (make-array t 10)) |
| 10:24 | clojurebot | #<int[] [I@c71b37> |
| 10:24 | the-kenny | somejan: there you are :) |
| 10:24 | somejan | thx |
| 10:25 | somejan | so |
| 10:25 | somejan | ,(let [t Integer/TYPE] (make-array t 10)) |
| 10:25 | clojurebot | #<int[] [I@150c82> |
| 10:25 | somejan | works, but |
| 10:25 | somejan | ,(let [t Integer/TYPE] (make-array t [10 11 12])) |
| 10:25 | clojurebot | java.lang.ClassCastException: clojure.lang.PersistentVector cannot be cast to java.lang.Character |
| 10:25 | somejan | doesn't |
| 10:25 | somejan | ??? |
| 10:25 | krumholt | because if you need more dimesnsion you need to do |
| 10:26 | somejan | no, i meant |
| 10:26 | krumholt | ,(let [t Integer/TYPE] (make-array t 10 11 12)) |
| 10:26 | clojurebot | #<int[][][] [[[I@f1369f> |
| 10:26 | krumholt | make-array is not filling the array |
| 10:26 | krumholt | it is just creating it |
| 10:26 | somejan | ah, wait |
| 10:26 | krumholt | ,(doc make-array) |
| 10:26 | clojurebot | "([type len] [type dim & more-dims]); Creates and returns an array of instances of the specified class of the specified dimension(s). Note that a class object is required. Class objects can be obtained by using their imported or fully-qualified name. Class objects for the primitive types can be obtained using, e.g., Integer/TYPE." |
| 10:26 | somejan | im confusing make-array and into-array |
| 10:27 | somejan | ,(let [t Integer/TYPE] (into-array t [1 2 3])) |
| 10:27 | clojurebot | #<int[] [I@b053b> |
| 10:37 | tmountain | is there a way to alias a function to another name within the current namespace? |
| 10:38 | the-kenny | tmountain: There's def-alias in contrib? |
| 10:38 | Chousuke | (doc alias) |
| 10:38 | clojurebot | "([alias namespace-sym]); Add an alias in the current namespace to another namespace. Arguments are two symbols: the alias to be used, and the symbolic name of the target namespace. Use :as in the ns macro in preference to calling this directly." |
| 10:38 | Chousuke | hmm |
| 10:38 | tmountain | I'm familiar with the alias function, which aliases a namespace |
| 10:38 | the-kenny | ,(use 'clojure.contrib.def) |
| 10:38 | clojurebot | nil |
| 10:38 | the-kenny | ,(doc defalias) |
| 10:38 | clojurebot | "([name orig] [name orig doc]); Defines an alias for a var: a new var with the same root binding (if any) and similar metadata. The metadata of the alias is its initial metadata (as provided by def) merged into the metadata of the original." |
| 10:39 | tmountain | so defalias is the solution? |
| 10:39 | Chousuke | or just (def foo bar) |
| 10:40 | Chousuke | if you don't mind losing the metadata |
| 10:40 | tmountain | cool, thanks guys ;-) |
| 10:41 | tmountain | should've thought of using def |
| 10:41 | Chousuke | it's not a true alias though. it creates a new var |
| 10:41 | tmountain | this is mainly for DSL purposes |
| 10:41 | Chousuke | should be fine then |
| 10:41 | tmountain | I want to duplicate a function with a couple of names that make sense for the context they're called in |
| 10:42 | tmountain | have a nice weekend |
| 10:45 | datka | Does anyone know what this error means? java.lang.VerifyError: class clojure.contrib.duck_streams$loading__4757__auto____1893 overrides final method meta.()Lclojure/lang/IPersistentMap; (http.clj:1) |
| 10:45 | datka | I'm trying to build a pom file for a library that doesn't have one |
| 10:48 | duck1123 | my pom file is at http://gist.github.com/284653 if it helps |
| 10:49 | the-kenny | duck1123: ugh... why not use leiningen? |
| 10:51 | duck1123 | I haven't really messed much with leiningen yet. This was someone elses project I wanted to play with, and I'm used to maven |
| 10:53 | duck1123 | does leiningen do swank servers yet? |
| 10:54 | the-kenny | "lein swank"? |
| 10:54 | the-kenny | Yes |
| 10:54 | the-kenny | You can also do M-x swank-clojure-project |
| 13:22 | tolstoy | If you have a raw form in your ns, like, say, (init), that'll get evaluated and run at compile time AND load time (in an AOT context), right? |
| 13:23 | tolstoy | Can you do something like (if-not *compile-files* (init)) so that it doesn't run during compilation, but have it still work when run after AOT compilation? |
| 13:23 | Chousuke | hmm |
| 13:23 | Chousuke | ,*compiling* |
| 13:23 | clojurebot | java.lang.Exception: Unable to resolve symbol: *compiling* in this context |
| 13:24 | Chousuke | some var like that exists but I don't remember what it was called |
| 13:24 | tolstoy | *compile-files* |
| 13:24 | tolstoy | *compile-files* |
| 13:24 | tolstoy | var |
| 13:24 | tolstoy | Set to true when compiling files, false otherwise. |
| 13:24 | Chousuke | ah, duh |
| 13:25 | tolstoy | I was just wondering if "loading" the code (when it's compiled into a jar) would actually do the init. |
| 13:25 | Chousuke | why don't you test? :/ |
| 13:25 | tolstoy | I guess I can crank up this app and see. ;) |
| 13:25 | AndiXng | hi |
| 13:26 | AndiXng | sorry for this newbie question, but I could not find enough information: I am looking for a vector or list where it is possible to insert/remove elements in the middle |
| 13:26 | AndiXng | what is the best way to do that? zippers? |
| 13:27 | Chousuke | no efficient collection supporting that exists right now. :/ |
| 13:27 | Chousuke | you might want to try using maps |
| 13:27 | AndiXng | hm |
| 13:28 | AndiXng | but with trees, this should be easy (O(log n) is ok for me) |
| 13:29 | AndiXng | do you know any clojure lib that provides structures with insert/remove? |
| 13:29 | Chousuke | well, maps are your best bet. |
| 13:29 | Chousuke | vectors are trees but they don't support efficient insertion in the middle |
| 13:30 | Chousuke | chouser is working on finger trees but I don't think it's ready yet :/ |
| 13:30 | AndiXng | I don't understand yet, how to use maps. should I select indices "with gaps" and fill them over time, any, if necessary, recompute all keys? |
| 13:31 | AndiXng | -any +and |
| 13:31 | Chousuke | don't understand maps? |
| 13:31 | AndiXng | I understand maps |
| 13:31 | Chousuke | they're just, well, maps. |
| 13:31 | Chousuke | :P |
| 13:32 | AndiXng | but give me an example, please. let's say we have a list 1,2,4,5 and want to insert 3 |
| 13:32 | Chousuke | you could emulate a vector with one by using integer keys |
| 13:32 | AndiXng | how to represent 1,2,4,5 as a map? |
| 13:32 | Chousuke | well, the map would be indexed of course |
| 13:32 | Chousuke | hmm |
| 13:32 | AndiXng | {0 1, 1 2, 2 4, 3 5}? |
| 13:33 | Chousuke | I suppose that wouldn't help /: |
| 13:33 | AndiXng | yeah |
| 13:34 | Chousuke | hm. I guess you're out of luck |
| 13:34 | AndiXng | i thought about using sorted-set with pair items: [position-information, content] |
| 13:34 | AndiXng | absolutely. |
| 13:34 | AndiXng | :-D |
| 13:34 | Chousuke | clojurebot: finger trees |
| 13:34 | clojurebot | Titim gan éirí ort. |
| 13:34 | Chousuke | psh |
| 13:36 | Chousuke | http://github.com/Chouser/finger-tree apparently finger trees could be of use for you, but I don't know if chouser's implementation is at all ready for use yet (or even how to use it) |
| 13:37 | AndiXng | as already said, my idea would be to use a sorted-set with pair items [position-information, content]. i would use gaps inbetween and fill them over time, and when necessary, recompute all keys. |
| 13:37 | AndiXng | example: #{[0 1] [100 2] [200 4] [300 5]} . when 3 is added at position 2, then #{[0 1] [100 2] [150 3] [200 4] [300 5]} |
| 13:37 | AndiXng | I think this could be "ok" |
| 13:37 | AndiXng | but still O(n) |
| 13:37 | AndiXng | :-/ |
| 13:37 | AndiXng | ok I'll have a look at finger trees, thanks |
| 13:38 | AndiXng | but I wonder why nobody else had this problem before... o_O |
| 13:38 | AndiXng | it's very common to insert and remove elements I think... |
| 13:38 | AndiXng | at least if you come from an imperative language |
| 13:38 | Chousuke | well, you're not the first one to have this problem, but it's apparently not common enough |
| 13:39 | Chousuke | otherwise Clojure would have some data structure for efficient insertion and removal from the middle I guess. :) |
| 13:40 | Chousuke | are you sure you can't come up with another algorithm that doesn't require insertions or removals? :/ |
| 13:42 | AndiXng | well, that's part of the application domain |
| 13:42 | AndiXng | if I have a list where elements can be inserted and removed, I should implement this with a list where elments can be inserted and removed |
| 13:43 | AndiXng | I just found out how pcollections (Java persistent data structures lib) does it |
| 13:43 | AndiXng | logarithmic time, like in "Glasgow Haskell Compiler" |
| 13:43 | AndiXng | hm |
| 13:43 | AndiXng | probably I'll use that |
| 13:44 | AndiXng | I could also write a clojure lib with that algorithm |
| 13:44 | AndiXng | hmmmm |
| 13:44 | AndiXng | what do you think, would that be useful for anybody but me? |
| 14:23 | tolstoy | chouser: Yes, you can use *compile-files* to NOT evaluate forms when AOT compiling, but the forms DO get evaluated when the code is loaded. |
| 14:24 | LauJensen | Is that 'Practical Clojure' by Luke Vanderhart any good? |
| 14:24 | tolstoy | Now, if I can just figure out how to close a buffer in text-mode emacs.... |
| 14:25 | LauJensen | M-x kill-buffer |
| 14:25 | tolstoy | Ah "kill" was the word. |
| 14:25 | tolstoy | C-x k seems to work, too. |
| 14:49 | tolstoy | When you access @atom, is that a synchronized read? |
| 15:34 | somejan | ,(def x 1) |
| 15:34 | clojurebot | DENIED |
| 15:45 | somejan | `{ ~@'(:a 1) } |
| 15:45 | somejan | ,`{ ~@'(:a 1) } |
| 15:45 | clojurebot | 1 |
| 15:46 | somejan | ,`{ ~b } |
| 15:46 | clojurebot | 1 |
| 15:46 | somejan | On my console that says "java.lang.ArrayIndexOutOfBoundsException: 1" |
| 15:48 | chouser | somejan: yeah, that's not really supported |
| 15:49 | somejan | ,{1} |
| 15:49 | clojurebot | java.lang.ArrayIndexOutOfBoundsException: 1 |
| 15:50 | somejan | ,`{~b} |
| 15:50 | clojurebot | 1 |
| 15:54 | dnolen | somejan: if you wan to splice into a hashmap in a macro use hash-map and not the literal syntax |
| 15:54 | somejan | Is the literal syntax supposed to not work in macros? |
| 15:55 | dnolen | somejan: I haven't been able to get it to work, but only when trying to splice in values, but perhaps someone else knows different |
| 15:58 | chouser | I think the problem is that we're forgetting this code is actually data |
| 15:59 | chouser | it doesn't quite work like this today, but `{~@b} could be read as (syntax-quote {(unquote-splice b)}) |
| 16:08 | chouser | which means an outer list with two elements, the first the symbol syntax-quote, the second a map |
| 16:08 | chouser | but that map only has a single item in it, a list. That's not legal |
| 16:09 | Chousuke | I tried to implement syntax-quote like that. |
| 16:09 | Chousuke | I wasn't very succesfull :P |
| 16:10 | chouser | oh, yeah? I think rhickey wants it, or at least wanted to know if anyone knew if it was possible. |
| 16:10 | chouser | hm... |
| 16:10 | Chousuke | it's possible, but nesting and autogensyms complicate it a fair bit |
| 16:11 | chouser | ah, interesting. |
| 16:11 | Chousuke | and implementing the symbol resolution wasn't exactly pleasant either (I think I have working code for that, at least, but it's very ugly) |
| 16:12 | chouser | did you still try to do the autogensym at read time? |
| 16:13 | Chousuke | my current reader just runs the syntax-quote function at read-time |
| 16:14 | Chousuke | it works, as far as I can tell, but if I turn it into a macro I run into problems :/ |
| 16:15 | Chousuke | as far as I can tell it works because running the function at read time expands the inner syntax quotes first, |
| 16:16 | chouser | I can certainly beilieve that it all gets very hairy very quickly. |
| 16:16 | chouser | how did you handle autogensym? b# reads as (autogensym b) or as b_123 ? |
| 16:16 | chouser | or just as b# ? |
| 16:16 | chouser | ,b# |
| 16:16 | clojurebot | java.lang.Exception: Unable to resolve symbol: b# in this context |
| 16:17 | chouser | ,'b# |
| 16:17 | clojurebot | b# |
| 16:17 | Chousuke | it expands to b_234, but only within ` |
| 16:17 | Chousuke | ,'`f# |
| 16:17 | clojurebot | (quote f__5223__auto__) |
| 16:17 | Chousuke | I guess I should find some time to work on the reader again |
| 16:17 | chouser | ok, so you do it at read time like Clojure does now. |
| 16:18 | Chousuke | yeah |
| 16:20 | Chousuke | http://github.com/Chousuke/clojure/blob/new/clojure-reader/src/clj/clojure/lang/reader/internal.clj this is how it is at the moment |
| 16:21 | Chousuke | still uses the ^ reader macro, too :P |
| 16:33 | somejan | ,{:a} |
| 16:33 | clojurebot | java.lang.ArrayIndexOutOfBoundsException: 1 |
| 16:34 | somejan | Is this supposed to be an IOBE instead of an IllegalArgumentException? |
| 16:34 | somejan | ,(hash-map :a) |
| 16:34 | clojurebot | java.lang.IllegalArgumentException: No value supplied for key: :a |
| 16:36 | somejan | The exception comes from PersistentArrayMap.java:217, where the code is actually trying to index an array |
| 16:36 | somejan | It looks like a bug to me, but maybe someone knows if it's a feature before I make an issue? |
| 16:43 | tolstoy | does defmacro actually pay attention to its attr-map? |
| 16:43 | tolstoy | As in, (defmacro name "doc" #{:private true}....)? |
| 16:46 | tolstoy | Ah, the arglist documentation for defmacro is wrong. |
| 16:46 | Chousuke | somejan: it's a "feature" |
| 16:47 | Chousuke | somejan: {:a} is not a valid literal in any case. |
| 16:47 | Chousuke | somejan: and it doesn't really matter what exception it generates :) |
| 16:48 | somejan | hmm, I'd say clojure also needs to give the right error messages |
| 16:48 | Chousuke | well, yeah |
| 16:49 | somejan | at the very least a descriptive message, instead of just "1" |
| 16:49 | Chousuke | I guess it's the "no-one wants to work on the compiler" excuse again :P |
| 16:50 | Chousuke | though this one is actually generated within the reader |
| 16:50 | somejan | ah, but then it is in fact a bug :) |
| 16:50 | somejan | and not a feature |
| 16:51 | somejan | So, is this the kind of thing that should go in the bugtracker? |
| 16:59 | hiredman | somejan: it's undefined behaviour |
| 17:00 | somejan | I didn't know Clojure had a language specification, even one which allows undefined behaviour :P |
| 17:01 | hiredman | ,{:a} |
| 17:01 | clojurebot | java.lang.ArrayIndexOutOfBoundsException: 1 |
| 17:01 | somejan | But I still think undefined behaviour should produce a descriptive error message |
| 17:01 | hiredman | *shrug* |
| 17:02 | somejan | {:a} isn't a real problem, but when it is in a macro it can be hard to find |
| 17:02 | somejan | (which is where I first ran into this) |
| 17:04 | hiredman | sure, but how big of an issue? |
| 17:04 | hiredman | clojurebot: ticket search ArrayIndexOutOfBoundsException |
| 17:04 | clojurebot | () |
| 17:04 | hiredman | :| |
| 17:05 | hiredman | clojurebot: ticket search map literal |
| 17:05 | clojurebot | ("#87: GC Issue 83: \t PersistentArrayMap trust the reader (map literals) too much") |
| 17:05 | hiredman | clojurebot: ticket #87 |
| 17:05 | clojurebot | {:url http://tinyurl.com/y92lmv8, :summary "GC Issue 83: PersistentArrayMap trust the reader (map literals) too much", :status :new, :priority :low, :created-on "2009-06-17T20:36:09+00:00"} |
| 17:33 | alexyk | is there a method to get the number of day, whether in the year or Julian/Gregorian, from the old silly java.util.Date? |
| 17:33 | chouser | day of the year, or something else? |
| 17:33 | alexyk | and can somenody with the sysop please do -R on this channel? |
| 17:33 | alexyk | chouser: day of year is a good start |
| 17:34 | alexyk | Joda Time has dayOfYear, and with juDate I'm at a loss, some stupid calendar and <whatnot> |
| 17:38 | chouser | ,(.get (java.util.Calendar/getInstance) java.util.Calendar/DAY_OF_YEAR) |
| 17:38 | clojurebot | 23 |
| 17:38 | alexyk | ok |
| 17:42 | hiredman | I have a patch for #87 and the {:a} issue: http://www.thelastcitadel.com/lab/map-literals-error.diff |
| 17:43 | hiredman | chouser: maybe you could take a look at put it in assembla :) |
| 17:44 | chouser | hiredman: if it's a fix to an accepted bug, you should go ahead and attach it. |
| 17:45 | hiredman | I guess this is as good a time as any to send and email to ask to be allowed to do that sort of thing |
| 17:47 | hiredman | I send an email to dev right? |
| 17:50 | alexyk | no car and cdr in core?? |
| 17:50 | chouser | first rest |
| 17:50 | alexyk | chouser: yeah, but no car and cdr?! :) |
| 17:51 | chouser | nope |
| 17:51 | the-kenny | car and cdr is to old-school for a modern lisp |
| 17:51 | alexyk | well just as an homage to lisp they'd better be there |
| 17:52 | alexyk | sounds like a bow to the general dumbing0down of the universe |
| 17:52 | alexyk | to help Britney Spears learn a lisp |
| 17:53 | hiredman | car and cdr are the names of registers on machines no one uses anymore |
| 17:53 | krumholt_ | it seems that with 1.1 "apply" has changed and i can no longer do (apply foo) but i have to do (apply foo nil) why is that? |
| 17:54 | hiredman | are you sure? |
| 17:54 | hiredman | I don't think (apply foo) ever worked |
| 17:54 | krumholt_ | it did |
| 17:54 | krumholt_ | i used it a lot and now i have to change a lot :) |
| 17:56 | alexyk | never mind... |
| 17:56 | hiredman | well I'll be damned |
| 17:57 | hiredman | there is a commit that mentions apply back in august |
| 17:58 | krumholt_ | well i haven't upated in a while :) i just see no reason to change the behaviour |
| 17:58 | hiredman | ok |
| 17:58 | alexyk | chouser: so you get day of year for a calendar, not an existing java.util.Date. Is one supposed to create a Calendar of juDate? Or get the Calendar from juDate? |
| 17:58 | chouser | actually, 'cdr' would be pretty misleading. Clojure's 'rest' is not the same thing |
| 17:58 | hiredman | apply got arity overloads, and has no arity for the zero arg case |
| 17:59 | krumholt_ | could that be redone? |
| 17:59 | krumholt_ | (apply foo) also seems even prettier then ((foo)) |
| 18:00 | the-kenny | Isn't (apply foo) different to ((foo))? |
| 18:00 | alexyk | chouser: I just think that car and cdr may co-exist with first and rest, to claim the lisp's inheritance |
| 18:00 | the-kenny | Should be (apply (foo)) |
| 18:01 | chouser | ,(.get (doto (java.util.Calendar/getInstance) (.setTime (java.util.Date.))) java.util.Calendar/DAY_OF_YEAR) |
| 18:01 | clojurebot | 23 |
| 18:01 | hiredman | the-kenny: right (apply foo) would just be (foo) |
| 18:02 | hiredman | http://github.com/richhickey/clojure/commit/5ca86e045bd5742566c647dcc46b8e546a6a7c06 is the commit |
| 18:03 | hiredman | your best shot would be taking it to the mailing list since rhickey doesn't appear to be in |
| 18:03 | alexyk | chouser: right... Do you think that crating one instance and then setTime/get day of year for each of a gazillion juDate's is faster than converting each to a DateTime and calling getDayOfYear on each? I guess I'll have to benchmark. |
| 18:03 | chouser | beats me |
| 18:04 | alexyk | can't wait when they induct DateTime into core Java so we can forget the nightmarish juDate/Calendar crap |
| 18:15 | the-kenny | Which contrib should I use with clojure 1.1.0 (leiningen) |
| 18:15 | the-kenny | +? :) |
| 18:53 | somejan | Is there a way to make compiled clojure code be in a specific package, so it can access protected methods on java classes in the package? |
| 18:54 | somejan | The :gen-class thing apparently just puts the stub class in the package, but not the real code |
| 18:54 | the-kenny | somejan: There's a hack in contrib: wall-hack-method |
| 18:55 | the-kenny | It uses reflection to call protected (or private) methods |
| 18:55 | somejan | ah, I'll have a look |
| 18:55 | the-kenny | I think it's in java-utils |
| 19:07 | somejan | It works, but only to read fields, not to write them. I don't see anything in that namespace that will write fields, so guess I'll have to hack it myself |
| 19:14 | tomoj | say you've got a big tsv file and you want to treat it as a lazy seq of structmaps |
| 19:15 | somnium | so, is there a standard way to load somefile.txt off the classpath? Ive only been able to get duckstreams to work with absolute paths/paths relative to pwd |
| 19:15 | tomoj | does writing a macro with-tsv which with-opens the file, binds the lazy seq of structmaps, then checks what the body returns and wraps a doall if it's a seq sound like a reasonable approach? |
| 19:16 | tomoj | it seems kind of strange.. this macro must be used at the top level of whatever processing you're doing, to ensure the file doesn't close before you're done |
| 19:16 | tomoj | read-lines is cool but what if we don't consume the entire seq? :/ |
| 19:17 | tomoj | somnium: you can make it a "resource" |
| 19:18 | somnium | tomoj: how to do that? (I only seem to find some java idiom (-> this .getClass .getClassLoader ...) on google) |
| 19:18 | tomoj | yep, that's what I meant |
| 19:18 | tomoj | except |
| 19:18 | tomoj | (.getResource (clojure.lang.RT/baseLoader) "foo.txt") |
| 19:18 | tomoj | gives you a URL |
| 19:19 | somnium | ah, nice |
| 19:19 | somnium | thx! |
| 19:19 | tomoj | might be good to stuff everything into a resources/ subdir and add that to the classpath |
| 19:19 | tomoj | if the paths are coming from users |
| 19:20 | tomoj | I think lein adds resources/ to the classpath by default |
| 19:20 | krumholt_ | anyone know where i can find some information on protocols? preferably a screencast |
| 19:21 | tomoj | if you find a screencast let me know! |
| 19:21 | tomoj | I still don't understand them |
| 19:25 | AWizzArd | Currently Clojure has the EP License. Could Rich in principle change the license if he wanted without the agreement of other contributors? |
| 19:26 | hiredman | yes |
| 19:26 | hiredman | the CA assigns joint copyright |
| 19:26 | AWizzArd | Is this because he is the initial contributor? |
| 19:27 | AWizzArd | ah ok |
| 19:27 | AWizzArd | Otherwise I would understand the EPL in such a way that as soon some other author publishes any code and the initial contributor includes this in his code base it would not be possible anymore to get rid of the EPL |
| 19:30 | AWizzArd | hiredman: do you know if Rich used an existing license as his CA, or did he wrote it himself? |
| 19:31 | AWizzArd | nevermind |
| 19:31 | AWizzArd | just saw it at the bottom, that he used something that Suns lawyers wrote |
| 19:40 | hiredman | the ability to change licenses if needed is the whole point of the CA |
| 19:54 | alexyk | ,(let [{:keys [a b]} {:a 1}] (println a)) |
| 19:54 | clojurebot | 1 |
| 19:54 | alexyk | ,(let [{:keys ["a" b]} {"a" 1}] (println a)) |
| 19:54 | clojurebot | java.lang.Exception: Unsupported binding form: a |
| 19:54 | alexyk | ,(let [{:keys [a b]} {"a" 1}] (println a)) |
| 19:54 | clojurebot | nil |
| 19:54 | alexyk | so, does :keys only support keywords? |
| 19:55 | the-kenny | alexyk: I think so |
| 19:57 | alexyk | is there a fascinating tour of data massage you can type into a repl before a group of noobs to bedazzle them? |
| 20:00 | the-kenny | Something with a lazy-seq would be cool |
| 20:00 | the-kenny | like (take 100 (small-function-for-calculating-fibonaccis) |
| 20:00 | the-kenny | +) |
| 20:18 | krumholt_ | hi i created a simple protocol for a list. could someone take a look if thats how one would use a protocol? especially my use of new seems strange. |
| 20:18 | krumholt_ | http://paste.lisp.org/display/93815 |
| 21:29 | AWizzArd | when I have a sorted set of 1000 elements, can i then get a subset or subseq of the elements 450 to 500? |
| 21:34 | chouser | AWizzArd: put them in a sorted set (or map) and use 'subseq' |
| 21:35 | AWizzArd | they already are in a sorted set |
| 21:35 | chouser | there you go. subseq. |
| 21:35 | chouser | oh |
| 21:35 | chouser | subseq is based on the value, not the position |
| 21:35 | AWizzArd | yes |
| 21:36 | chouser | if you want position, I guess I'd put them in a vector and use subvec. |
| 21:36 | AWizzArd | probably |
| 21:36 | AWizzArd | oki |
| 21:45 | blbrown_win | ' |
| 21:45 | blbrown_win | ,(/ 5 9) |
| 21:45 | clojurebot | 5/9 |
| 21:46 | blbrown_win | ,(/ 5.0 9.0) |
| 21:46 | clojurebot | 0.5555555555555556 |
| 23:05 | datka | If I invoke "lein swank" shouldn't my source code (or the jar) be on the classpath somewhere? |
| 23:06 | datka | I'm printing out the urls in my classpath, and I'm seeing the root of the project, but not the src/ directory |
| 23:09 | tomoj | hmm, I wonder if we can deal with the no threads restriction on app engine :( |
| 23:26 | alexyk | chouser: check it out: http://paste.pocoo.org/show/169141/ |
| 23:28 | datka | so does anyone uses leiningen with swank that knows what I might be doing wrong? |
| 23:36 | chouser | alexyk: oh, my. DateTime is from JodaTime? |
| 23:56 | quotemstr | Why does clojure use type hints instead of CL-style DECLARE? |