2012-06-02
| 01:10 | muhoo | well i learned something new today. {:session nil} in ring means delete the session. but (:session response) nil means, do not write the session, don't touch it, leave it alone |
| 02:19 | ben_h | hi all |
| 02:19 | PeregrinePDX | Hello |
| 02:19 | ben_h | trying to learn a bit about clojure by writing some code to query a postgres db. |
| 02:20 | ben_h | there's one part of clojure design i don't get -- i'm wondering why there's a distinction between def, defn, defmacro, deftest, etc. |
| 02:20 | ben_h | i thought the idea of homoiconicity was that they're all just lists, and so equivalent in that sense. |
| 02:20 | ben_h | is the distinction just semantic? |
| 02:21 | amalloy | uhhh, it's "just" semantic in that they "just" mean/do different things, yes |
| 02:21 | ben_h | well, take def/defn for example |
| 02:22 | ben_h | i don't understand why there's a distinction between a single value, or a function that evaluates to one |
| 02:22 | amalloy | indeed. defn defines a function, to be executed later at your convenience; def defines a value, which is computed at the time of definition |
| 02:22 | ben_h | oh, so (def a <arbitrary expression>) is just a way to eager-evaluate? |
| 02:22 | amalloy | not really |
| 02:23 | ben_h | (corollary: is it valid to say (defn b 3), so b just returns 3?) |
| 02:23 | amalloy | ben_h: living in a world where values are indistinguishable from functions would be torture. is 1 the same as (fn [] 1)? the same as (fn [] (fn [] 1))? if so, what's the point? |
| 02:24 | ben_h | to me, that's the point of immutability |
| 02:24 | ben_h | if the values are equal, it doesn't matter how you got there |
| 02:24 | amalloy | that's a gross misunderstanding of the point. what about (fn [x] x)? how do you express that "as a value" |
| 02:25 | ben_h | well, i have no idea. |
| 02:25 | amalloy | obviously it is usable as a value, because functions are first class. but it is qualitatively very different from just a number |
| 02:26 | ben_h | good point, the "value" of a function is the function itself |
| 02:26 | amalloy | haskell comes closer to that idea than lisp does |
| 02:27 | amalloy | in that basically everything is a function of one argument |
| 02:27 | ben_h | right |
| 02:27 | archaic | what would the ''' value ''' of a relation then be? |
| 02:28 | amalloy | (i heard somewhere that constants are actually functions of no arguments, but i don't understand whether that's (a) nonsense, (b) true, or (c) a philosophical argument) |
| 02:28 | ben_h | maybe another example is better -- def / defmacro |
| 02:28 | ben_h | the usages of defmacro i've seen look like normal functions |
| 02:28 | ben_h | i'm missing something about the discinction |
| 02:29 | amalloy | ben_h: in some ways they are, and that *is* the point of homoiconicity |
| 02:29 | ben_h | the example i'm looking at is the (testing) macro here http://richhickey.github.com/clojure/clojure.test-api.html |
| 02:29 | lazybot | Nooooo, that's so out of date! Please see instead http://clojure.github.com/clojure/clojure.test-api.html and try to stop linking to rich's repo. |
| 02:29 | ben_h | ha |
| 02:29 | amalloy | a macro definition is just a function from one list (more generally, source-code form) to another list (source-code form), which the compiler applies at compile time instead of at runtime |
| 02:30 | ben_h | ahh, right |
| 02:30 | amalloy | (and on the code representing your program, rather than on the values that your program will manipulate) |
| 02:30 | ben_h | is that second bit just convention though? |
| 02:30 | amalloy | no |
| 02:30 | ben_h | oh |
| 02:31 | ben_h | as an example, (testing "with positive integers" (is (= 4 (+ 2 2))) |
| 02:31 | ben_h | presumably (testing) receives the is-form as an arg |
| 02:31 | amalloy | indeed |
| 02:32 | ben_h | if (testing) were a function, would it just receive the resulting value instead (true) ? |
| 02:32 | amalloy | yes |
| 02:32 | amalloy | and at runtime, not at compile-time |
| 02:32 | ben_h | right. that explains a lot |
| 02:32 | amalloy | for example: (defmacro ignore-first [& args] (rest args)) (ignore-first (/ foo 0) + 1 2) |
| 02:32 | amalloy | this compiles into (+ 1 2), even though foo is not defined and you can't divide it by zero |
| 02:33 | amalloy | it simply receives the list '((/ foo 0) + 1 2), throws away the first element, and tells the compiler that's the list you meant to type |
| 02:34 | ben_h | right. i thought that laziness would mean that if ignore-first were a function, then (/ foo 0) would be discarded before it were eval'ed |
| 02:34 | ben_h | so list eval isn't lazy by default. |
| 02:34 | amalloy | clojure does not have pervasive lazy evaluation semantics; only lazy sequences, and macros to fake the rest if you want |
| 02:35 | amalloy | &(let [f (fn [x y] y)] (f (/ 1 0) 10) |
| 02:35 | lazybot | java.lang.RuntimeException: EOF while reading, starting at line 1 |
| 02:35 | amalloy | &(let [f (fn [x y] y)] (f (/ 1 0) 10)) |
| 02:35 | lazybot | java.lang.ArithmeticException: Divide by zero |
| 02:36 | ben_h | right. |
| 02:36 | ben_h | so that's one of the main things macros are for then :) |
| 02:40 | ben_h | amalloy: thanks, that's a big help |
| 02:52 | Rich_Morin | Is there a tool that will slurp in Clojure code and emit a constrained English description of what it's doing? |
| 02:52 | Raynes | We call those humans. |
| 02:53 | PeregrinePDX | Raynes, how do I install one of those? |
| 02:53 | Rich_Morin | I don't always have one of them handy and wouldn't want to bother them any more than I could help. |
| 02:54 | Rich_Morin | http://www.stathis.co.uk/self-explanatory-software/ is vaguely along the lines of what I'm thinking of, but not exactly. |
| 02:55 | Rich_Morin | I've written code to explain the reasoning of inferencing code, etc. Explaining Clojure syntax (etc) should actually be simpler. |
| 03:01 | ibdknox | huh |
| 03:01 | ibdknox | that's a neat idea |
| 03:02 | ibdknox | unfortunately it's very hard for me to imagine being able to generalize it |
| 03:04 | Rich_Morin | I'm not sure what kind of generalization you have in mind. I should clarify that I'm only thinking about explaining low-level syntax, as opposed to algorithms or intent. |
| 03:05 | muhoo | heh, oooh kay https://www.refheap.com/paste/2973 |
| 03:38 | PKHG | Hi, good morning: is it possible to use a *.jar with 'Java applets' code needing parameter to choose out of several possibilities from clojure (REPL mode e.g.) see here for what I want http://webcompmath.sourceforge.net/wcm/config_applets/index.html |
| 03:46 | PKHG | DerGuteMoritz: bist du wach? und hast Ahnung ueber *.jars benutzen? |
| 03:50 | muhoo | PKHG: http://en.wikibooks.org/wiki/Clojure_Programming/Examples/Creating_an_Applet |
| 03:50 | muhoo | PKHG: also http://dynamic-thinking.blogspot.com/2009/06/minimal-java-applet-in-clojure.html |
| 03:50 | PKHG | Thanks ... will look at it ... |
| 03:51 | PKHG | oh, the first one I already saw and got it running ;-) |
| 03:52 | PKHG | the second ink is new to me ... reading |
| 03:54 | PKHG | uiui .. not so easy have to play with import and trying to see WHAT is in a jar ... |
| 04:46 | ro_st | i have a map like this {1 A, 2 B, 3 A, 4 A, 5 B, 6 C} and i want a map like this {A [1 2 4], B [3 5], C [6]} |
| 04:46 | ro_st | how would i express that? |
| 04:52 | amalloy | &(apply merge-with into {} (for [[k v] '{1 A, 2 B, 3 A, 4 A, 5 B, 6 C}] {v k})) |
| 04:52 | lazybot | java.lang.IllegalArgumentException: Don't know how to create ISeq from: java.lang.Long |
| 04:52 | amalloy | &(apply merge-with into {} (for [[k v] '{1 A, 2 B, 3 A, 4 A, 5 B, 6 C}] {v [k]})) |
| 04:52 | lazybot | ⇒ {C [6], B [2 5], A [1 3 4]} |
| 04:53 | ro_st | wow, ok |
| 04:53 | ro_st | thank you amalloy |
| 04:53 | ro_st | i certainly would not have gotten there on my own |
| 04:54 | ro_st | i haven't learned to use the (for) spell yet |
| 04:54 | amalloy | ~for |
| 04:54 | PeregrinePDX | So I know this is basic and I am missing something but I have a set and I have in this case vector and I want to see if any of the things in my set are in my vector. |
| 04:54 | clojurebot | for is not a loop |
| 04:55 | amalloy | ah, dangit clojurebot, couldn't you have some cool snippet? |
| 04:55 | ro_st | PeregrinePDX: isn't that an intersection? |
| 04:55 | amalloy | ro_st: for is great, but you could write this yourself as a loop/recur or a reduce |
| 04:55 | amalloy | if you don't have mastery of the whole stdlib |
| 04:55 | ro_st | set the vector and intersect; if the result is not empty, you have a positive |
| 04:55 | ro_st | amalloy: no, it's good for me to learn for |
| 04:56 | amalloy | really merge-with is the cool part of that trick |
| 04:56 | PeregrinePDX | Yeah, intersection should work just fine. I hadn't thought of changing my vector to a set. |
| 04:56 | ro_st | yes, that's probably what i wouldn't have found very quickl |
| 04:56 | tomoj | ,(some #{1 2 3} [:foo 2 :bar]) |
| 04:56 | clojurebot | 2 |
| 04:57 | tomoj | ,(filter #{1 2 3} [:foo 2 :bar 3]) |
| 04:57 | clojurebot | (2 3) |
| 04:57 | ro_st | completely different question. using emacs-live. i have nice drop-down autocompletion in clojure buffers, but not in paredit. how do i get paredit to use it as well? |
| 04:57 | tomoj | you don't have paredit in your clojure buffers? |
| 04:58 | ro_st | argh |
| 04:58 | ro_st | not paredit; the slime repl -doh- |
| 04:58 | ro_st | i want the nice autocompletion in my slime repl |
| 04:58 | ro_st | i guess i should wade through the .el configs |
| 04:58 | ro_st | AC minor mode |
| 04:59 | ro_st | PeregrinePDX: what tomoj said: use (some) |
| 04:59 | amalloy | curiously, i knew you meant the slime repl |
| 04:59 | amalloy | i actually thought you'd said that |
| 04:59 | ro_st | spooky :) |
| 05:00 | amalloy | to be fair, it's the only way of finishing the sentence that makes sense, so i didn't really finish reading the sentence |
| 05:00 | tomoj | ro_st: https://github.com/purcell/ac-slime hmm |
| 05:01 | tomoj | do you have paredit in your slime repl? |
| 05:01 | ro_st | yes |
| 05:01 | ro_st | REPL Undo-Tree VHl Paredit are the enabled minor modes |
| 05:01 | ro_st | i see ac-slime in the clojure-pack |
| 05:02 | tomoj | then maybe you just need to add the slime-repl-mode-hook |
| 05:02 | tomoj | and the eval-after-load I suppose |
| 05:03 | ro_st | ah, it might be because i'm using clojure-jack-in and not slime-connect |
| 05:04 | ro_st | verifying |
| 05:05 | ro_st | nope. also no AC there. the ac-slime hook is in the loaded config |
| 05:05 | ro_st | (add-hook 'slime-repl-mode-hook 'set-up-slime-ac) |
| 05:08 | PeregrinePDX | Perfect thanks ro_st and tomoj |
| 05:13 | ro_st | holy crap coding with a repl is so much better than compile breakpoint step debugger |
| 05:13 | ro_st | i've lost weeks of my life to the adobe flex compiler :-( |
| 05:17 | PeregrinePDX | Yeah the repl certainly helps save a lot of time. |
| 05:19 | ro_st | and paredit, too. knowing how to slurp left and right, barf left and right, and change depth is immensely useful |
| 05:22 | ro_st | it does make using the mongo 'repl' a bloody pain, though. |
| 05:37 | ro_st | is there a way to default i-search and query replace to wrap? |
| 05:40 | amalloy | why would you bother, for isearch? just hit C-s again |
| 05:41 | ro_st | true. but for replace, i hate that i have to remember to go to the beginning of the file to be able to use ! to replace-all |
| 06:21 | ro_st | yikes. the mac dock is taking more memory up than mongoDB is!! |
| 06:25 | ro_st | how do i increase the amount of memory used by the jvm behind the slime repl? |
| 06:30 | antares_ | ro_st: via :jvm-opts. Do you use lein1 or lein2? |
| 06:30 | ro_st | lein2 |
| 06:30 | ro_st | would the slime-repl respect those settings? |
| 06:31 | antares_ | ro_st: :jvm-opts ["-Xmx" "1g"] |
| 06:31 | ro_st | thank you! |
| 06:31 | antares_ | ro_st: SLIME will use the JVM process without knowing what configuration it is running with |
| 06:31 | ro_st | gotcha. is this true for clojure-jack-in too |
| 06:31 | ro_st | ? |
| 06:33 | antares_ | ro_st: clojure-jack-in just starts a network REPL process. That in turn should obey to :jvm-opts |
| 06:33 | ro_st | ok wicked |
| 06:46 | ro_st | if-let: if i want to test the first binding, and then bind extra values out of that first binding, can i do this inside in-let's binding vector, or should i do the rest of the bindings inside an inner let form? |
| 06:50 | scottj | latter. I think there are some 3rd party more advanced if-let's that do what you want though |
| 06:50 | scottj | ro_st: ^ |
| 06:51 | ro_st | ok cool. happy to go with latter for simplicity |
| 06:52 | scottj | ro_st: I think there is a variable or arg or keybinding inside C-s (not sure which) that has something to do with automatically restarting at beginning of buffer |
| 06:54 | scottj | ro_st: did you figure out your AC in slime thing? |
| 06:54 | ro_st | no, ac-slime isn't running even though there's a hook for it in my emacs-live config |
| 06:54 | scottj | ro_st: btw you asked yesterday about way to use slime compilation errors window in another frame and not open another. there's a variable for that, not sure name. |
| 06:55 | scottj | is AC not ac-slime active in slime-repl? is AC active in other buffers, say .emacs? |
| 06:55 | ro_st | ah that'd rock. i'd love to be able to put all the 'meta' buffers off to one side in a separate frame, and have all the code buffers be in the main frame |
| 06:55 | ro_st | AC is active in clojure-mode and in Emacs-Lisp |
| 06:56 | ro_st | just checked init.el |
| 06:57 | tomoj | ro_st: did you add both the slime-repl-mode-hook and the eval-after-load? |
| 06:57 | ro_st | i'm not sure about the eval-after-load bit. how would that look? |
| 06:57 | ro_st | lemme show you the config from emacs-live... |
| 06:58 | ro_st | lines 33-37 on here: https://github.com/overtone/emacs-live/blob/master/packs/live/clojure-pack/config/auto-complete-conf.el |
| 07:00 | scottj | ro_st: perhaps remove the (add-hook 'slime-repl-mode-hook 'auto-complete-mode). maybe auto-complete-mode is already on globally and that is turning it off (just guessing here) |
| 07:01 | tomoj | https://github.com/purcell/ac-slime |
| 07:01 | scottj | lien 37 |
| 07:01 | scottj | line rather |
| 07:01 | ro_st | ah that makes sense |
| 07:01 | tomoj | hmm |
| 07:02 | scottj | ro_st: though tomoj might be onto something, slime-repl-mode isn't in the list around like 25 |
| 07:02 | tomoj | (eval-after-load "auto-complete" '(add-to-list 'ac-modes 'slime-repl-mode)) dunno |
| 07:07 | ro_st | weird. i must have removed that line 37 from mine, because it wasn't in there like it is on github |
| 07:07 | ro_st | now that it's in, i have AC |
| 07:07 | ro_st | sorry for the hassle, guys |
| 07:07 | ro_st | i noobed out |
| 07:10 | ro_st | is there a fancy-schmancy emacs spell for swapping the position of two elements in a list? |
| 07:10 | scottj | C-M-t |
| 07:11 | ro_st | :o |
| 07:11 | ro_st | that rocks |
| 07:11 | ro_st | how does anyone get any clojure work done outside of emacs?! |
| 07:11 | scottj | well, they're not spending all this time setting it up/fiddling with it like you are :) |
| 07:12 | ro_st | -grin- |
| 07:12 | ro_st | they should. once they get done, they'd move twice or thrice as fast |
| 07:13 | scottj | or you've got the case of rhickey who uses emacs but doesn't even use slime. (afaict from all his demos/talks) |
| 07:13 | ro_st | the benefits of code-as-data can't be more apparent than with paredit |
| 07:13 | scottj | that only matters if moving is a large percent of your programming time. it isn't. |
| 07:21 | ro_st | amazing. i've just converted 1.15 million sql rows to mongo documents in 3 minutes in the repl |
| 07:21 | ro_st | single 3.2ghz core, 1.2gb ram |
| 07:21 | ro_st | used by the jvm |
| 07:30 | antares_ | robink: what MongoDB clojure driver do you use? |
| 07:30 | antares_ | oops |
| 07:30 | antares_ | missed ro_st |
| 09:19 | cshell | antares_: I use congomongo |
| 09:20 | antares_ | cshell: ok. I am collecting feedback on http://clojuremongodb.info doc guides we have so far |
| 09:20 | antares_ | but it covers something other than congomongo :) |
| 09:34 | cshell | antares_: sounds good :) |
| 10:03 | kmicu | antares_: nice docs, last time I was searching how to connect to MongoLab it takes some time, now is clear, good work |
| 10:03 | antares_ | kmicu: with monger? |
| 10:05 | wink | I've only ever used congomongo, it was easy and worked. |
| 10:05 | kmicu | antares_: yes, after I made comparision between congomongo and monger I could not resist to use monger, it is more clojure style :) |
| 10:05 | wink | but I don't have a good feeling with mongo :P |
| 10:05 | antares_ | kmicu: oh, nice :) I will release an RC of Monger on Monday or so |
| 10:07 | kmicu | antares_: good to know, I will use it in my clojurescriptone based webapp and heroku (mongolab), if I find some problems with MongoLab co-op I'll give you a feedback |
| 10:08 | antares_ | kmicu: ok. We have a mailing list, too: http://groups.google.com/forum/?hl=en_US&fromgroups#!forum/clojure-mongodb |
| 10:23 | cshell | cemerick: Is friend usable for a production app? |
| 10:25 | cemerick | cshell: It is in production in at least a half-dozen sites that I'm aware of. |
| 10:26 | kmicu | cshell: and practically there is no alternative :) |
| 10:27 | cshell | cemerick: Thanks, I'm debating between friend and spring security but friend seems more idiomatic and maybe once I understand it I can get it to use spring security |
| 10:28 | cemerick | kmicu: a bizarre situation, to be sure. |
| 10:28 | cshell | kmicu: True, I've noticed the same as well |
| 10:28 | cshell | cemerick: Do I plug friend into noir using the middleware functions? |
| 10:29 | cemerick | cshell: Yeah, I used spring-security exclusively for years prior to writing friend. Sadly, I think it'll be impractical (if not impossible) to bridge the two. |
| 10:29 | cemerick | spring-security is servlet filter based, and really needs to be at the bottom of your entire app. |
| 10:29 | cshell | cemerick: Is that because of all the hooks and filters required? |
| 10:29 | cshell | cemerick: ah :) |
| 10:29 | cemerick | cshell: Yup, authenticate is just another ring middleware. |
| 10:30 | cshell | cemerick: Cool, I'm going to spend today getting friend to work with my app - by the way I keep going back to your book all the time, it covers so many questions I have - again, great job |
| 10:31 | cemerick | cshell: Thanks, I'm glad it's proving useful. :-) |
| 10:32 | cshell | cemerick: was friend too new to put in the book? |
| 10:33 | cemerick | Yup; I hadn't written it by the time we stopped work on the book. |
| 10:33 | cemerick | Even so, if we were stopping work on the book tomorrow, it might only warrant a footnote. It's not yet as comprehensive as it needs to be (i.e. no oauth support, which is being addressed shortly). |
| 10:34 | cshell | cemerick: Guess that's just more for the next edition :) |
| 10:34 | cemerick | heh, or something! |
| 10:34 | cshell | cemerick: Hopefully once I get better at Clojure I can start helping with some of these libraries that are so useful, I'm just now understanding macros |
| 10:35 | antares_ | oh, I did not submit a PR for friend to be tested against multiple JDKs on travis-ci.org |
| 10:40 | cemerick | antares_: is this just you being paranoid about jdk revs now, or does friend fail on one of them? |
| 10:45 | antares_ | cemerick: I am just trying to move all Clojure projects that are relevant to test against multiple JDKs |
| 10:45 | antares_ | Leiningen did have a failure on Oracle JDK 7 a few days ago |
| 10:45 | antares_ | it was ignored :/ |
| 10:46 | antares_ | only to discover the whole HTTPS story after preview5 was released |
| 10:46 | cemerick | antares_: you can only do what you can do :-) |
| 10:46 | antares_ | and it is not a code compatibility issue but for end users, it is a complete blocker |
| 10:46 | antares_ | so I think testing against oracle jdk 7 for leiningen is a must, after preview6 is deployed |
| 10:47 | antares_ | cemerick: another reason for that is, travis uses openjdk6 by default today |
| 10:47 | antares_ | and we really want to move to openjdk7 |
| 10:47 | antares_ | jdk 6 is EOL in November anyway |
| 10:47 | antares_ | but we cannot just change the default and say "ok, deal with it" |
| 10:47 | antares_ | we need to give people a week or so to run with multiple JDKs |
| 10:47 | cemerick | I am skeptical of that EOL, in practical terms. |
| 10:48 | antares_ | I never had any code compatibility issues with JDK 7 but who knows |
| 10:48 | cemerick | I have customers that were irritated when I stopped supporting 1.4 three? years ago. |
| 10:48 | antares_ | cemerick: next Ubuntu and Fedora releases will use JDK 7 by default |
| 10:48 | antares_ | well, 1.4 vs 1.5 was a big change |
| 10:49 | antares_ | 6 vs 7 is not |
| 10:49 | antares_ | there are people who ask us to provide python 2.3 and 2.4 |
| 10:49 | antares_ | even google by now moved on past 2.4, from what I hear |
| 10:50 | antares_ | we cannot do that, it's fun enough to support unsupported php 5.2 |
| 10:50 | antares_ | so at least for travis, OpenJDK 7 as the new default is a good idea |
| 10:51 | antares_ | heroku moves to 7 as well |
| 10:52 | bosie | when i am in the repl and say ">", it shows me what? |
| 10:52 | bosie | package$name.space.core$something ? |
| 10:54 | antares_ | bosie: current namespace |
| 10:54 | antares_ | user> means the current namespace is 'user |
| 10:56 | bosie | #<core$_GT_ clojure.core$_GT_@726343c4> |
| 10:57 | gfrederi` | bosie: that's the munged class name for the > function; you shouldn't consider it too meaningful |
| 10:57 | gfrederi` | functions aren't generally the sort of thing you print out |
| 10:57 | bosie | gfrederi`: right |
| 10:58 | antares_ | bosie: ah, then > is replaced with GT to make it a valid class name. GT for "greater than". Clojure functions are compiled to Java classes that have names like that. |
| 10:59 | gfrederi` | ,* |
| 10:59 | clojurebot | #<core$_STAR_ clojure.core$_STAR_@229388> |
| 10:59 | gfrederi` | '*' => '_STAR_' |
| 11:00 | bosie | antares_: gotcha |
| 11:12 | bosie | picking up on my previous question, https://gist.github.com/e22c54656e8088d1376a |
| 11:12 | bosie | i don't quite understand what i get here |
| 11:13 | ro_st | bosie: (<- ? |
| 11:13 | ro_st | ain't it (-> ? |
| 11:14 | bosie | ro_st: i think <- is actually from cascalog |
| 11:14 | ro_st | oh, right, sorry :) newbie here |
| 11:14 | bosie | it "defines" a query but doesn't execute it |
| 11:14 | bosie | ro_st: i started 2 hours ago ;) |
| 11:15 | bosie | it is defined with "(defmacro <-" |
| 11:18 | bosie | ok |
| 11:19 | bosie | so i am probably getting some kind of definition of the macro |
| 11:20 | ro_st | what does <- do? |
| 11:21 | bosie | https://github.com/nathanmarz/cascalog/blob/develop/src/clj/cascalog/api.clj |
| 11:21 | bosie | line 235 |
| 11:22 | ro_st | that's a definition for ?<- |
| 11:25 | bosie | ro_st: 163 |
| 11:25 | ro_st | well there you go then |
| 11:25 | ro_st | that one returns a query |
| 11:25 | ro_st | prepend with ? and see what your code does? |
| 11:27 | bosie | CompilerException java.lang.RuntimeException: Unable to resolve symbol: ? in this context, compiling:(NO_SOURCE_PATH:0) |
| 11:27 | ro_st | um, so instead of calling (<-, call (?<- |
| 11:28 | ro_st | because it looks like the ? variant both creates and executes a query |
| 11:29 | bosie | ro_st: exactly but i wanted to know what the macro returns, i know how to execute it |
| 11:30 | tskabi | I can't see the location of errors when compiling with swank/clojure. Can someone please help? |
| 11:30 | tskabi | I'm using lein-swank 1.4.4 |
| 11:31 | tskabi | I can't see the location of errors when compiling with lein-swank 1.4.4. Can someone please help? |
| 11:33 | ro_st | tskabi: may i suggest moving your .emacs.d off to one side, grabbing github/overtone/emacs-live and trying that? |
| 11:33 | tskabi | ok |
| 11:34 | ro_st | here's my working project.clj. using lein2 |
| 11:34 | ro_st | https://www.refheap.com/paste/4fca314fe4b079c36aab3db1 |
| 11:34 | tmciver | tskabi: what do you mean 'compiling'? Are you running 'lein plugin install lein-swank "1.4.4"'? |
| 11:34 | tskabi | i mean i ran c-c c-k |
| 11:34 | ro_st | tskabi: when i use clojure-jack-in, and then C-c C-k |
| 11:34 | ro_st | and then run something in repl that causes an exception |
| 11:35 | ro_st | i get colourised stack trace with line numbers |
| 11:35 | tskabi | ro_st: I get that when I run c-c c-l but not c-c c-k |
| 11:35 | tskabi | but no line numbers |
| 11:35 | ro_st | try emacs-live |
| 11:36 | ro_st | i'm using vanilla emacs-live, with a font and color-scheme change, and maxframe and linum switched on |
| 11:37 | tskabi | i will try lein2 first |
| 11:37 | ro_st | good luck |
| 11:37 | tskabi | ty |
| 11:45 | irc2samus | technomancy: hi, remember yesterday when I was asking about shutdown hooks? turns out it's leiningen who blocks it: http://stackoverflow.com/questions/10855559/shutdown-hook-doesnt-fire-when-running-with-lein-run |
| 12:49 | clifton | most the way through land of lisp (really fun book), and i've done a little clojure hacking here-and-there. i have a strong background in web development and a CS education. can anyone recommend a path for grokking clojure? should i start with a book? |
| 12:50 | ejackson | clifton: yup, I this Chas Emerick's book is a good bet, or Fogus's |
| 12:50 | wink | clifton: I've started with noir. just because I'm also doing webdev |
| 12:50 | clifton | right on, i like noir syntax a lot... haven't built anything just yet |
| 12:51 | liftdeadtrees | I like 4clojure.com for working through some examples, seeing other peoples code, and getting the Clojure way |
| 12:52 | wink | I'm reading Fogus' book right now, but I usually prefer hands on learning :P (but I like the book) |
| 12:55 | clifton | Emerick's book also looks fantastic |
| 12:55 | clifton | thanks for the input guys |
| 13:45 | Bronsa | [coll {:foo 1, :bar 2}], (get coll :foo), 1000000 runs, 449 msecs |
| 13:45 | Bronsa | [coll {:foo 1, :bar 2}], (-lookup coll :foo nil), 1000000 runs, 321 msecs |
| 13:45 | Bronsa | [coll {:foo 1, :bar 2}], (:foo coll), 1000000 runs, 411 msecs |
| 13:45 | Bronsa | ops |
| 13:50 | aphyr | Anyone know where dissoc-in went in 1.3? |
| 13:53 | tmciver | aphyr: looks like it may have gone to clojure.core.incubator |
| 13:56 | aphyr | Lovely, thanks. :) |
| 13:57 | gfrederi` | in the lein-cljsbuild rhino-repl, how do I load my cljs code? |
| 13:58 | gfrederi` | (ns foo.bar (:require ...)) didn't seem to work (though it pretended to) |
| 14:02 | gfrederi` | okay think I got it |
| 15:15 | xuser | 13:53 -!- carllerche [~carllerch@208.87.61.246] has joined #clojure |
| 15:32 | sdevijver | I'm getting this error after configuring the leiningen plugin in eclipse: Leiningen Managed Dependencies issue: unknown problem |
| 15:33 | sdevijver | I'm on ubuntu, the same setup (counterclockwise + leiningen plugs) works on windows |
| 15:42 | borkdude | sdevijver did you use the new ccw plugin? |
| 15:42 | borkdude | sdevijver which was released a few days ago |
| 15:43 | sdevijver | borkdude, not sure, let me check |
| 15:44 | borkdude | sdevijver with the new plugin, you don't need the additional leiningen plugin |
| 15:44 | borkdude | sdevijver it's an all in one now |
| 15:44 | sdevijver | borkdude, I have 0.8.0STABLE001 |
| 15:46 | sdevijver | borkdude, I've removed the leiningen nature from the project, still getting the same error |
| 15:46 | borkdude | sdevijver maybe try the newer one https://groups.google.com/forum/?fromgroups#!topic/clojuredev-users/UhfnjBvIips |
| 15:47 | borkdude | sdevijver uninstall the previous leiningen and ccw plugin though |
| 15:53 | sdevijver | borkdude, it's alive! thx for your help |
| 15:54 | borkdude | sdevijver cool |
| 15:56 | sdevijver | ccw key bindings have changed :) |
| 15:57 | sdevijver | borkdude, strange that the old ccw doesn't work anymore, on the website it still refers to that update site: http://code.google.com/p/counterclockwise/ |
| 15:57 | borkdude | sdevijver on the website they don't point to the beta I think |
| 15:58 | sdevijver | borkdude, indeed, but apparently that older version of ccw is now faulty (although the version of about one week ago works perfectly) |
| 15:59 | borkdude | sdevijver with the ccw + leiningen plugin (two separates) there were some issues, you had to follow an exact order to get things working |
| 15:59 | Omer | &"a" |
| 15:59 | lazybot | ⇒ "a" |
| 16:00 | borkdude | sdevijver for example, if you turned on the clojure nature before converting to a leiningen project, it failed |
| 16:00 | sdevijver | borkdude, it failed indeed :) |
| 16:01 | borkdude | sdevijver I hope it also works on windows for you, I see now on the mailing list that someone has problems with creating a new project |
| 16:03 | sdevijver | borkdude, I'm actually migrating from windows to ubuntu (running in vmware), I'm starting to add mongodb to the mix now |
| 16:03 | borkdude | sdevijver what has mongodb to do with it? |
| 16:04 | muhoo | cemerick: i've been integrating friend with noir. so far so good, though some changes to noir were required. |
| 16:05 | sdevijver | borkdude, as far as I know mongodb doens't run on windows? |
| 16:05 | borkdude | sdevijver it sure does |
| 16:05 | borkdude | sdevijver https://groups.google.com/forum/?fromgroups#!topic/clojuredev-users/UhfnjBvIips |
| 16:06 | borkdude | sdevijver eeks, sorry: http://www.mongodb.org/display/DOCS/Quickstart+Windows |
| 16:07 | sdevijver | borkdude, thx for that :) |
| 16:32 | Raynes | I'm going to vmware Ubuntu on my mac tonight, because I'm cool like that. |
| 16:34 | ejackson | Raynes: big pimpin ! |
| 16:35 | sdevijver | Raynes, just did the same thing tonight :) |
| 16:35 | sdevijver | Raynes, used xubuntu though |
| 16:35 | Raynes | We can be cool together. |
| 16:36 | borkdude | I have ubuntu in parallels, am I cool ? |
| 16:36 | Bronsa | i am typing from ubuntu, what do i win? |
| 16:38 | ejackson | i think its carpal tunnel and monitor tans for us all :) |
| 16:39 | ejackson | still, I love it ! |
| 16:50 | sdevijver | I'm working with eclipse and windows and ubuntu *at the same time*, what do I win? |
| 16:51 | sdevijver | I have to use /s/eclipse and/eclipse in/, what do I win? |
| 17:15 | cemerick | muhoo: like? |
| 17:20 | muhoo | cemerick: https://github.com/kenrestivo/noir/commit/cfbb62e27cf08ff1b3229661a9cdf6738982de5e |
| 17:21 | KirinDave | muhoo: Not a big deal, but curious why you used get-in? Faster? |
| 17:22 | muhoo | KirinDave: (comp habit readability ignorance), probably |
| 17:22 | KirinDave | Maybe I am just weird for preferring -> for nested retrieval when keywords are the keys. |
| 17:23 | muhoo | or -?>, in case some of them are empty |
| 17:23 | technomancy | with keywords you don't need -?> |
| 17:23 | muhoo | ah, cool, thanks |
| 17:25 | cemerick | muhoo: oh, right, noir uses a dynamic var for session :-/ |
| 17:25 | technomancy | =( |
| 17:26 | muhoo | yeah, i feel bad about adding all that complexity, but i need to Make It Work (tm) |
| 17:26 | KirinDave | technomancy: So I have a handful of people over here who want to bless you and rain beverages upon you. |
| 17:26 | KirinDave | technomancy: In the best possible way, mind you. |
| 17:26 | technomancy | KirinDave: heh; wonderful |
| 17:26 | technomancy | what's the scope of "here"? |
| 17:27 | KirinDave | technomancy: CrowdFlower |
| 17:27 | KirinDave | we've almost totally phased out scala |
| 17:27 | technomancy | cool; how's the transition been? |
| 17:27 | KirinDave | And everyone is so happy about leiningen |
| 17:27 | technomancy | =D |
| 17:27 | KirinDave | Becuase we were so abused by sbt/ivy or raw maven |
| 17:28 | cemerick | muhoo: Don't feel bad, it's a necessary evil given the use of the var. |
| 17:28 | KirinDave | "Oh good.I want to use a Yammer library and a Twitter library." |
| 17:28 | technomancy | KirinDave: http://wondermark.com/c/2010-09-14-657stop.gif <- ? |
| 17:28 | KirinDave | technomancy: Our standard practice was to just re-cut jars into S3 with 0 dependencies when that happened. We don't have to do that now. |
| 17:34 | muhoo | cemerick: next i have to figure out how to get openid to work with google apps via step2. pray for me. |
| 17:34 | cemerick | step2? |
| 17:38 | muhoo | http://code.google.com/p/step2/ |
| 17:39 | muhoo | it's based on openid4java. i'll at least try to adapt it as a friend workflow. that's my goal anyway. |
| 17:39 | cemerick | muhoo: friend already uses openid4java to provide openid. Why use step2? |
| 17:40 | muhoo | because google apps uses a different discovery protocol than regular openid |
| 17:40 | cemerick | ah |
| 17:40 | muhoo | https://sites.google.com/site/oauthgoog/fedlogininterp/openiddiscovery |
| 17:40 | cemerick | no, no, don't link me to the madness! |
| 17:40 | muhoo | oh, you've answered dozenss of mine. i owe you :-) |
| 17:41 | cemerick | yeah, nope, I'm not gonna read that. :-D |
| 17:41 | muhoo | i wouldn't expect any sane person to. |
| 17:42 | cemerick | muhoo: a friend workflow that makes all that work will be most welcome by the other guy that needs it. ;-) |
| 17:42 | muhoo | i'm thinking that may be one way i can contribute, yes. |
| 17:43 | cemerick | I need to break out the openid workflow pronto, so people don't expect to have everything included in one big hairball. |
| 17:43 | muhoo | how would you do it? like ring with sub-projects in lein? |
| 18:51 | gfrederi` | this confluence editor appears to be dysfunctional? |
| 19:33 | technomancy | gfrederi`: yes |
| 19:34 | aperiodic | does anyone have a spec of how native deps in jars should be organized? |
| 19:34 | aperiodic | my googling is proving fruitless |
| 19:36 | aperiodic | ah, found the README of dnolen's native-deps plugin |
| 20:29 | technomancy | aperiodic: unfortunately right now the source is the only documentation |
| 20:29 | technomancy | aperiodic: leiningen supports a subset of the native-deps plugin; in particular you can't put a jar inside a jar |
| 20:51 | cshell | cemerick_away: Wow, integrating friend into noir was super simple |
| 21:36 | rafb3 | hey |
| 21:36 | rafb3 | care to review my newbie clojure code and give feedback on what could be more interesting? |
| 21:36 | rafb3 | https://gist.github.com/2843589#file_subs_sum.clj |
| 21:37 | spjt | rafb3: I only know enough clojure to say it's not C, parentheses are not braces and you don't have to put lines for them |
| 21:38 | tmciver | rafb3: yes, not parens on their own lines. |
| 21:38 | tmciver | no* |
| 21:38 | TimMc | Except in some special cases. |
| 21:38 | spjt | I only learned what ->> means yesterday so I'll just shut my mouth |
| 21:39 | spjt | but otherwise it looks good, and it gives me courage to ask my question.. wtf is proxy? |
| 21:39 | TimMc | As in, only have dangling parens when the conventional format becomes absolutely annoying. You'll know when. |
| 21:39 | spjt | I was trying to write a program, I gave up and I feel that proxy somehow is key to making it work, but I don't know why or what it does |
| 21:40 | TimMc | spjt: proxy is a lie, and an inefficient one at that. |
| 21:40 | spjt | TimMc: http://pastebin.com/ERNzwdgU |
| 21:41 | spjt | TimMc: The code is to the point where I have it producing a vector of vectors that represent the points for a java.awt.Polygon, but I can't figure out how to actually draw them |
| 21:42 | tmciver | rafb3: I believe you can put your program args directly into your -main fun rather than parse them manually as you are doing. |
| 21:43 | locojay | hi i simplified a code i m having to https://gist.github.com/2860869 i don't have any print... but when i do lein run it print to stdout (2 2) very strange. i have a very large sequence so to much output... |
| 21:44 | eckroth | locojay: you are turning your map into a sequence |
| 21:44 | eckroth | locojay: it would look like this: [[:1 2] [:2 3]] |
| 21:45 | eckroth | locojay: I figure you don't intend that since the first arg to your extra function is called "dict" |
| 21:46 | locojay | yes i need to apply a function to a sequence of dicts |
| 21:47 | TimMc | spjt: Ah, right. That's one of the few good places for proxy. Let me dig up some code... |
| 21:47 | locojay | let me gist the complete code |
| 21:48 | locojay | https://gist.github.com/2860895 |
| 21:48 | spjt | These are the days when I feel fortunate that I'm enough of a novice at programming to be comfortable with a language that makes me feel like a complete idiot. |
| 21:49 | TimMc | spjt: By the way, (let [a (init-stuff)] (doto a (...))) can be written (doto (init-stuff) (...)) |
| 21:49 | locojay | eckroth but why do i get output to stdout? |
| 21:49 | eckroth | locojay: ok so I assume csvmapseq is actually a sequence of maps, like [{:1 2 :2 3} {:4 5 :6 7}] etc. |
| 21:49 | eckroth | locojay: which is different than your first gist |
| 21:49 | locojay | exactly |
| 21:50 | locojay | yeah sry should have been that |
| 21:50 | spjt | TimMc: hehe, I was waiting until I actually got it to work before I actually asked everyone to point out what was wrong with it, but I'll write that down. :) |
| 21:50 | eckroth | locojay: I don't know why you get output; maybe lein run does that? |
| 21:51 | eckroth | locojay: so what was your question? why you get stdout or why you get (2 2) as the output? |
| 21:51 | locojay | with the first gist it output (2 2) . |
| 21:51 | locojay | yes thats my question |
| 21:51 | TimMc | spjt: Oops, have to go, but here's a GUI app I wrote that does drawing. I was still learning at the time, but mostly it is solid: https://github.com/timmc/CS4300-HW3/tree/master/src/timmcHW3 |
| 21:51 | locojay | since im not printing |
| 21:51 | eckroth | locojay: which one is your question? :) |
| 21:51 | eckroth | locojay: ah; I don't know why it prints, sorry |
| 21:51 | locojay | why i do get output to stdout if i don't do a print |
| 21:52 | locojay | k i will try to do a lein install and run the jar then |
| 21:52 | xeqi | what is you :main in you're project.clj? |
| 21:52 | spjt | TimMc: I'll look at it and just be jealous that you could use clojure for an assignment. |
| 21:52 | locojay | :main projectname.core |
| 21:53 | TimMc | spjt: https://github.com/timmc/CS4300-HW3/blob/master/src/timmcHW3/gui.clj#L179 |
| 21:53 | TimMc | proxy a JComponent, override paint |
| 21:54 | locojay | and i have a main function in core https://gist.github.com/2860932 |
| 21:54 | rafb3 | thanks for the feedback folks! |
| 21:54 | spjt | it's a use of proxy but I still don't understand what it actually does |
| 21:54 | spjt | Expands to code which creates a instance of a proxy class that |
| 21:54 | spjt | implements the named class/interface(s) by calling the supplied |
| 21:54 | spjt | fns. |
| 21:54 | TimMc | Ignore all my naming conventions. And only use :use with :only. :-/ |
| 21:54 | spjt | at least it's a recursive definition. |
| 22:05 | muhoo | cshell: i'm curious how you handled logout? this is roughly what i ended up with : https://www.refheap.com/paste/2973 |
| 22:17 | locojay | eckroth: must be a leiningen error since i don't have any probs with the jar |
| 22:18 | eckroth | locojay: interesting; maybe it's not an error, maybe that's just how lein run works |
| 22:20 | locojay | thanks will send to mailing list and see... |
| 22:54 | cemerick_away | cshell: that's the way it's supposed to be :-) |
| 23:31 | KirinDave | Is there a good alternative to capistrano/fabic with clojure as the host language? |
| 23:34 | xeqi | pallet ? |
| 23:34 | KirinDave | pallet is more like a flexible chef alternative |
| 23:34 | KirinDave | I have all this code which enumerates our host structure in zookeeper in clojure. I'd hate to rewrite it in ruby just for capistrano. |
| 23:37 | antares_ | KirinDave: pallet has a couple of dependencies that may be helpful. You probably can get away with just a good SSH client |
| 23:37 | KirinDave | Aha |
| 23:37 | KirinDave | github search strikes closer than google |
| 23:38 | KirinDave | https://github.com/drsnyder/gantry |
| 23:38 | KirinDave | Gantry |
| 23:44 | mthvedt | anyone know a good parser lib for clojure? |
| 23:50 | michaelr525 | hello |
| 23:50 | michaelr525 | and good morning! |
| 23:59 | antares_ | mthvedt: parseley. But it depends on what kind of parser you need. I just use ANTLR or ragel and use Java parsers from Clojure) |