2010-11-27
| 00:00 | clojurebot | Cool story bro. |
| 00:00 | _mst | beauty :) |
| 01:23 | notsonerdysunny | is there a way to get the name of the struct which was used to create it from the instance |
| 01:23 | notsonerdysunny | using the class function just says it is a struct-map |
| 01:24 | leifw | just a guess, but what does the meta-map have? |
| 01:25 | leifw | or, if it doesn't help, can you change the way you create the struct, to add the name to the metadata for your struct? |
| 01:25 | leifw | I am picturing you want to print out the name for debugging, or something like that |
| 01:41 | hippiehunter | does anyone have any blog posts/tutorials that discuss how named parameters work(I don't think they're called that in clojure but I hope you get the idea). |
| 01:42 | Raynes | hippiehunter: Do you want a detailed explanation about how they're implemented, or do you just want to know how to use them? |
| 01:42 | hippiehunter | If by implemented you mean how i would go about making functions that take named parameters, then i mean implemented |
| 01:43 | Raynes | The latter, then. http://stackoverflow.com/questions/3337888/clojure-named-arguments/3337967#3337967 I wrote this answer to a similar question. It should be helpful. |
| 01:44 | Raynes | There is a blog post 'round here somewhere. |
| 01:44 | hippiehunter | awsome, thanks |
| 01:45 | Raynes | &(let [{:keys [a b]} {:a 1 :b 1}] (+ a b)) ; It's just map destructuring. |
| 01:45 | sexpbot | ⟹ 2 |
| 01:46 | Raynes | &(let [{n :a n2 :b} {:a 1 :b 2}] (+ n n2)) ; This is another, longer form of the above. It's useful if you need to destructure deeply nested structures. |
| 01:46 | sexpbot | ⟹ 3 |
| 01:47 | Raynes | &(let [{{a :a b :b} :numbers} {:numbers {:a 1 :b 1}}] (+ a b)) ; like so |
| 01:47 | sexpbot | ⟹ 2 |
| 01:47 | hippiehunter | whats the deal with :or |
| 01:48 | Raynes | It's a way to provide defaults for keys that aren't provided. |
| 01:48 | Raynes | &(let [{:keys [a b] :or {a 1}} {:b 1}] (+ a b)) |
| 01:48 | sexpbot | ⟹ 2 |
| 01:49 | hippiehunter | did you mean {a 1} or {:a 1} ? |
| 01:49 | Raynes | {a 1} |
| 01:50 | Raynes | It's saying "... or, if a is not present, it should be bound to the number 1" |
| 01:50 | hippiehunter | I think the simplicity of it all is blowing my mind |
| 01:51 | Raynes | :) |
| 01:53 | hippiehunter | whats the & doing in front of the (let ? |
| 01:53 | Raynes | That just tells sexpbot to evaluate the code. |
| 01:53 | Raynes | & (println "blah") |
| 01:53 | sexpbot | ⟹ blah nil |
| 02:11 | mroessler | I'm trying to call a nested joda class: DateTime lastDayOfMonth = dt.dayOfMonth().withMaximumValue(); I'm using (.dayofMonth$withMaximumValue mydatetime) and getting "no matching field found". Direct calls such as .getMaximumValue do work. |
| 02:13 | replaca | mroessler: you're just calling a method on a result. Do this (.withMaximumValue (.dayOfMonth dt)). |
| 02:14 | mroessler | replaca: Many thanks! |
| 02:15 | replaca | mroessler: Or you can get fancy and say (-> dt .dayOfMonth .withMaxumumValue) |
| 02:15 | replaca | mroessler: np |
| 04:34 | trybeingarun | 2/c |
| 10:50 | kaiser | hi, guys |
| 10:50 | kaiser | is there any way to get the returning value of the time function? |
| 10:51 | Guest43529 | i mean, the time elapsed...it's returning nil |
| 10:51 | Guest43529 | when i try to get the returning value |
| 10:52 | LauJensen | &(with-out-str (time (Thread/sleep 200))) |
| 10:52 | sexpbot | ⟹ "\"Elapsed time: 203.868 msecs\"\n" |
| 10:54 | LauJensen | Guest43529: |
| 10:54 | Guest43529 | well, this way i'll have to parse the string...isn't there any nicier way? |
| 10:54 | LauJensen | &(first (re-find #"(\d+\.\d+)" (with-out-str (time (Thread/sleep 200))))) |
| 10:54 | sexpbot | ⟹ "202.716" |
| 10:54 | LauJensen | ~source time |
| 10:54 | LauJensen | Guest43529: its quite easy to implement yourself |
| 10:56 | Guest43529 | thanks, LauJensen, anyway |
| 10:56 | Guest43529 | http://tinyurl.com/2dywtf7 |
| 10:56 | Guest43529 | sorry, wrong pasting.. |
| 13:02 | Guest28709 | ,(pr "huh") |
| 13:02 | clojurebot | "huh" |
| 13:05 | serp__ | ,(do (pr "hurr") (pr "durr")) |
| 13:05 | clojurebot | "hurr""durr" |
| 13:06 | serp__ | ,(do (pr "hurr") (pr "durr") :herp) |
| 13:06 | clojurebot | "hurr""durr" |
| 13:06 | clojurebot | :herp |
| 13:17 | Guest28709 | has anybody used aleph? |
| 13:43 | Raynes | $seen LauJensen |
| 13:43 | sexpbot | LauJensen was last seen quitting 4 minutes and 28 seconds ago. |
| 14:57 | Guest28709 | anybody know why using content-type of "application/json" fails in aleph? |
| 14:57 | Guest28709 | I'm confused as to why it's even processing the headers |
| 15:08 | headlessClown | Is there a central source for any recorded presentations from the con? |
| 15:10 | stuartsierra | eventually there will be |
| 15:10 | stuartsierra | At http://clojure.blip.tv/ |
| 15:10 | replaca | headlessClown: last I heard, those were still being prepared. I'm sure there will be an announcement in the group when they're ready |
| 15:10 | Raynes | s_s |
| 15:11 | Raynes | I'm going to be on one of those. |
| 15:11 | Raynes | Damn you, Aaron Bedra. |
| 15:11 | stuartsierra | don't sweat it |
| 15:11 | replaca | Raynes: time for your 15seconds of fame! |
| 15:11 | Raynes | :p |
| 15:27 | danlarkin | clojurebot!!!111111 |
| 15:32 | replaca | danlarkin: it's checkins that are making it do that. Rich just checked something into clojure master |
| 15:32 | danlarkin | where's hiredman when you need him |
| 15:32 | replaca | he hasn't been around this weekend |
| 15:33 | replaca | the nerve! :) |
| 15:33 | danlarkin | inconceivable!!! |
| 15:51 | danlarkin | superburn |
| 15:54 | Raynes | Github's post-receive hooks are lovely. |
| 16:13 | replaca | Raynes: where did it report? |
| 16:14 | Raynes | replaca: sexpbot? It doesn't report Clojure commits. It uses the post-receive hooks from Github, so if somebody wanted sexpbot commit reporting, they'd have to add my URL to their hooks in the admin section of their repository's page. |
| 16:14 | Raynes | Never bothered offering since clojurebot already seems to have that covered. Or, will, in any case. |
| 16:16 | Raynes | $max |
| 16:16 | sexpbot | The most users ever in #clojure is 317 |
| 16:18 | kumarshantanu | why can't I write something like this? (is it reader associated?) -- (let [x ['a 10]] (let x (println a))) |
| 16:18 | replaca | Raynes: ah, ok |
| 16:19 | replaca | Raynes: clojurebot does it by polling, so it lags |
| 16:21 | Raynes | replaca: https://gist.github.com/718283 Is an example. |
| 16:21 | Raynes | ninjudd and friends uses it in #cake.clj |
| 16:24 | neotyk | kumarshantanu: what are you trying to do? |
| 16:24 | Raynes | It looks better when pieces of it are in bold, but bold from IRC doesn't copy to gist. :p |
| 16:24 | kumarshantanu | neotyk: trying to bind multiple vars to some values |
| 16:25 | kumarshantanu | neotyk: but the number can be variable, depending on the call |
| 16:26 | neotyk | kumarshantanu: I don't get second let, why? |
| 16:26 | kumarshantanu | neotyk: I want the inner let to be expanded like this -- (let [a 10] (println a)) |
| 16:26 | Raynes | You can't do that without a macro. |
| 16:27 | kumarshantanu | Raynes: how can I do this inside a macro? |
| 16:27 | Raynes | Actually, I'm not sure you can even do that in a macro. Why do you want to do this? |
| 16:28 | kumarshantanu | Raynes: I am trying to bind either or both of *out* and *err* to some values depending on the call |
| 16:31 | Raynes | https://gist.github.com/718293 Here is an example. |
| 16:32 | Raynes | That'll only work if you pass a vector literal. |
| 16:32 | Raynes | I highly doubt this is really what you want to do. It seems odd. |
| 16:36 | kumarshantanu | Raynes: got it...in fact I am trying to refactor this function -- http://pastebin.com/N6GZjnUJ |
| 16:37 | kumarshantanu | s/function/macro/ |
| 16:37 | sexpbot | <kumarshantanu> Raynes: got it...in fact I am trying to refactor this macro -- http://pastebin.com/N6GZjnUJ |
| 16:43 | Raynes | kumarshantanu: You can use str rather than .toString, and the (do ..) around ~@body shouldn't be necessary. |
| 16:44 | kumarshantanu | Raynes: right |
| 17:18 | jjido | how do I (use) a Java class that was not compiled part of a package? |
| 17:20 | replaca | Raynes: looks nice |
| 17:23 | replaca | jjido: I don't understand your question. In general for a class, you use (ns (:import classname)) and make sure that it's on your classpath |
| 17:24 | technomancy | jjido: in some circumtances, java classes that are not part of any package simply can't be used. |
| 17:24 | technomancy | not sure of the details, but it's probably a sign you're trying to do something you shouldn't. |
| 17:25 | jjido | ,(doc ns) |
| 17:25 | clojurebot | "([name docstring? attr-map? references*]); Sets *ns* to the namespace named by name (unevaluated), creating it if needed. references can be zero or more of: (:refer-clojure ...) (:require ...) (:use... |
| 17:26 | replaca | jjido: http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/ns |
| 17:26 | dnolen | hmm how do you get deftype/record to convert properly when str is called on them ? |
| 17:27 | replaca | dnolen: define toString? |
| 17:35 | kumarshantanu | bye all |
| 17:35 | LauJensen | dnolen: I actually showed that in one my recent tumblr posts, so thats what you get for not keeping up :) |
| 17:35 | dnolen | heh |
| 17:37 | dnolen | LauJensen: link? |
| 17:37 | LauJensen | dnolen: http://offtopic.bestinclass.dk |
| 17:37 | dnolen | LauJensen: thx |
| 17:37 | LauJensen | np |
| 17:38 | Raynes | LauJensen: Did you consider posterous? |
| 17:38 | LauJensen | Raynes: no |
| 17:43 | jjido | So, I recompiled with a package name. |
| 17:43 | mheld | hey y'all |
| 17:44 | LauJensen | mheld: hey all ya'll |
| 17:45 | mheld | does the .net version of clojure use TCO? |
| 17:46 | jjido | do I need some prefix if the package is not 'java....'? |
| 17:48 | wooby | mheld: no |
| 17:48 | mheld | bummer |
| 17:48 | bsteuber | mheld: so use recur |
| 17:48 | mheld | I'll check it out |
| 17:49 | mheld | are there any cloqure web frameworks? |
| 17:49 | clojurebot | webjure is http://code.google.com/p/webjure/ |
| 17:49 | mheld | oh neat |
| 17:52 | Raynes | mheld: Compojure, Moustache, Webjure, Conjure, and probably others I'm not thinking of. |
| 17:52 | Raynes | The first too are the most popular. |
| 17:52 | Raynes | two* |
| 17:52 | KirinDave | For those who are into REST apis, Clothesline is in clojars now http://clojars.org/clothesline |
| 17:53 | mheld | Raynes: gracias |
| 17:53 | mheld | emacs or eclipse? |
| 17:54 | jjido | still can't import it |
| 17:55 | Raynes | Most people use Emacs, but I've heard some exciting things about Eclipse lately. counterclockwise is under heavy development. |
| 17:55 | Raynes | If you're already familiar with Eclipse, but not Emacs, it's worth giving it ago. |
| 17:55 | Raynes | a go* |
| 17:56 | jjido | (ns foo (:import (java.util Vector))) works fine |
| 17:57 | jjido | (ns foo (:import (mypackage MyClass))) gives class not found |
| 17:58 | jjido | the directory named after mypackage is in the class path |
| 17:58 | jjido | and it contains the .class file |
| 18:00 | wjlroe | When you run `lein swank` - how can you configure the classpath? It's not finding a .clj file in the same dir as the file I'm compiling - if that makes any sense |
| 18:01 | wjlroe | FYI, this is an appengine project |
| 18:03 | technomancy | wjlroe: you can see the classpath using "lein classpath" |
| 18:04 | jjido | Thought I already tried this... (ns foo (:import MyClass)) did work. Good. |
| 18:07 | wjlroe | hmmm, so I guess this classpath is from the build.xml file? |
| 18:09 | jjido | how do I pass a int[] to a Java class? Do I need a Java wrapper? |
| 18:10 | technomancy | wjlroe: no, lein swank only looks at project.clj. I don't know how the app engine stuff works into it though. where's the file that it can't find? |
| 18:10 | wjlroe | actually no. how is the classpath put together? I guess you can configure that in the project.clj |
| 18:10 | wjlroe | technomancy: yeah - so it's got src/ in the CP, but not the package - so I think I need to add stuff to the classpath |
| 18:11 | technomancy | what's "the package"? |
| 18:11 | wjlroe | I mean src/packagename/ |
| 18:11 | jjido | nice there is (ints) |
| 18:11 | wjlroe | like src/woot/blah.clj |
| 18:12 | technomancy | wjlroe: so you're saying (require 'woot.blah) fails? |
| 18:12 | wjlroe | yeah so in blah.clj I say (:use something.clj) <- in the same dir... it doesn't find it |
| 18:13 | wjlroe | so |
| 18:13 | wjlroe | I need the full NS |
| 18:13 | technomancy | yeah, without the .clj |
| 18:13 | wjlroe | mmm, ok |
| 18:14 | technomancy | it might help to read through some more examples if you're running into problems with the ns form |
| 18:14 | jjido | ,(ints [3 2 5]) |
| 18:14 | clojurebot | java.lang.ClassCastException: clojure.lang.PersistentVector cannot be cast to [I |
| 18:14 | wjlroe | yeah, the PragProg book doesn't go into details |
| 18:14 | technomancy | wjlroe: I mean projects on github, etc. |
| 18:15 | wjlroe | anyway, I'm getting a completely different error now so that's wonderful |
| 18:15 | jjido | ,(ints (to-array [3 2 5])) |
| 18:15 | clojurebot | java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [I |
| 18:15 | wjlroe | technomancy: yeah sure, I was looking through Composure, Ring, clj-gae-datastore mainly |
| 18:16 | wjlroe | Does anyone know what happened to compojure.control ? |
| 18:17 | jjido | ,(into-array Integer/TYPE [3 2 5]) |
| 18:17 | clojurebot | #<int[] [I@ed09f6> |
| 18:17 | jjido | aaahh |
| 18:20 | Raynes | The majority of compojure ended up as ring middleware and other, related projects like hiccup. |
| 18:20 | wjlroe | yeah, can't find it in ring or compojure |
| 18:21 | wjlroe | but then again I don't know what it does - this is error driven development |
| 18:22 | raek | wjlroe: you can use the older version of compojure, if you just want to follow a tutorial |
| 18:22 | wjlroe | I like the challenge |
| 18:22 | wjlroe | and new stuff |
| 18:23 | Raynes | Error driven development. :> |
| 18:23 | raek | Moustache and Enlive are worth to check out too |
| 18:23 | Raynes | $learn edd Error Driven Development |
| 18:23 | sexpbot | My memory is more powerful than M-x butterfly. I wont forget it. |
| 18:23 | wjlroe | At work we have a really good system - it's called Complaint Driven Development |
| 18:24 | wjlroe | it's really relaxing |
| 18:24 | raek | (Moustache does routing and Enlive does html templating and scraping) |
| 18:25 | Raynes | I think I'm the only person who still uses Hiccup rather than enlive these days for html templating. |
| 18:26 | wjlroe | I like hiccup |
| 18:26 | wjlroe | the smartrevolution peeps are using it also it appears |
| 18:47 | replaca | wjlroe: what's smartrevolution? |
| 18:48 | wjlroe | replaca: https://github.com/smartrevolution/clj-gae-datastore <- actually I think they're caled something else - it's Steven Richter's company |
| 18:48 | replaca | wjlroe: oh, yeah, I see now. I read about that before. Cool stuff. |
| 18:48 | wjlroe | people who wrote TheDeadline |
| 18:49 | bsteuber | freiheit |
| 19:07 | dnolen | has anyone tried doing a REPL w/in the REPL ? |
| 20:36 | samx | What does '&' mean in when attached to a formal parameter in 'fn' arglist, e.g... (fn [&foo bar] ...) |
| 20:37 | jjido | samx: isn't that (fn [& foo bar] ...)? |
| 20:38 | samx | no |
| 20:39 | samx | for example, from the definition of 'defn' in core.clj: (fn defn [&form &env name & fdecl] ... |
| 20:40 | jjido | just a var name |
| 20:42 | jjido | ,(letfn [(foo [&blue &red] &blue)] (foo 3 4)) |
| 20:42 | jjido | &(letfn [(foo [&blue &red] &blue)] (foo 3 4)) |
| 20:42 | sexpbot | ⟹ 3 |
| 20:44 | wjlroe | there used to be a function compojure.http/static-file and I can't find where it's gone to... anyone know? |
| 20:44 | samx | i guess.. just seemed weird to use & as part of a parameter name, so figured it might have some kind of a side effect |
| 21:26 | Raynes | samx: Those are implicit parameters. I imagine that's Riches own little convention. It's nothing special. |
| 21:28 | Raynes | https://gist.github.com/718515 |
| 23:22 | Intertricity_ | Woo, I just saw clojure-clr binaries, does that mean it's now in beta? |
| 23:22 | Intertricity_ | Or at least relatively useable? |
| 23:33 | tensorpudding | is there a way to convert a String[] to a list of strings? |
| 23:34 | tensorpudding | or maybe, in general, converting java arrays to clojure lists |
| 23:37 | tensorpudding | eh, nevermind, clojure-contrib has what i want |
| 23:41 | Raynes | tensorpudding: You should just be able to call seq on it. |
| 23:43 | Raynes | &(type (seq (into-array String ["one" "two" "three"]))) |
| 23:43 | sexpbot | ⟹ clojure.lang.ArraySeq |