2011-07-07
| 00:36 | amalloy | technomancy: rebuilding my .emacs, and i can't figure out where to put the (setq slime-protocol-version 'ignore) |
| 00:37 | amalloy | whether before or after my (require 'package) (package-initialize), i still get warnings about the version |
| 00:38 | hiredman | maybe in a hook on clojure-mode or slime-mode or whatever |
| 00:42 | ihodes | totally OT, but is there a config for irssi that allows you to monitor mentions; e.g. i'm awya for 5 hours, come back and a few people have messaged me and i see a highlighted 5 or something on my status bar? |
| 00:46 | pcavs | what's the proper way to union two dictionaries? |
| 00:46 | ihodes | merge |
| 00:47 | pcavs | $findfn {:key1 "val1"} {:key2 "val2"} {:key1 "val1 :key2 "val2"} |
| 00:47 | sexpbot | [] |
| 00:47 | pcavs | thanks ihodes! |
| 00:47 | ihodes | pcavs: no problem :) |
| 00:52 | pcavs | I'm using leiningen and the swank leiningen plugin, I'm trying to read from standard in from the repl, is this possible? If so, what's the escape char to send EOF? |
| 01:07 | Tcepsa | pcavs: I believe this was established as being a bug in Ant. I think someone was going to tackle a workaround/fix/thing in Leiningen working with technomancy, but I am not sure whether anything has yet come of that. |
| 01:07 | Tcepsa | pcavs: Short answer: I don't think that's possible. |
| 01:07 | pcavs | tcepsa: thanks for the info |
| 01:07 | pcavs | tcepsa: (read-line) seems to work just fine from the repl through swank |
| 01:08 | Tcepsa | pcavs: But if you just want to send EOF, that should be Ctrl-d or Ctrl-f depending on whether you're using Linux or Windows (can't remember which is for which) |
| 01:08 | pcavs | sorry not through swank, but through the repl |
| 01:08 | Tcepsa | Oh! Maybe they got it fixed! |
| 01:10 | Tcepsa | Ahh, okay, yeah, I got the impression that Leiningen used Ant for something related to the Swank REPL and so (read-line) doesn't work if you do lein repl or lein swank and then connect. (This is totally hearsay and I have not experienced or explored it) |
| 01:10 | ihodes | ant is a build-tool |
| 01:11 | ihodes | (should't have anything to do with the repl) |
| 01:11 | ihodes | and from memory working on the part that reads from the repl, it's not at all involved with that part |
| 01:12 | Tcepsa | ihodes: See the last question of the Leiningen FAQ, here: https://github.com/technomancy/leiningen |
| 01:13 | ihodes | Tcepsa: damn, i wonder what that's from. i'm going to look now haha. thanks for linking |
| 01:14 | Tcepsa | ihodes: No problem; I agree that it's totally non-intuitive. If you see a way around it, that'd be great! ^_^ |
| 01:15 | Tcepsa | And I'm off |
| 01:24 | landy | jjj |
| 01:24 | amalloy | pcavs: fwiw they're only called dictionaries in python. here they're maps or (sometimes) hashes |
| 01:25 | pcavs | amalloy: I'll keep that in mind, I've always used them interchangeably, probably angering the comp sci gods |
| 01:42 | Scriptor | it's funny how a hashmap isn't really like (map f coll)...except it is |
| 01:51 | replaca | dnolen: are you around this late? |
| 01:51 | replaca | ~seen dnolen |
| 01:51 | clojurebot | dnolen was last seen in #clojure, 481 minutes ago saying: ejackson: sounds like that's the plan. |
| 02:21 | replaca | are george jahad or technomancy around? |
| 02:21 | replaca | or am I all alone tonight? |
| 02:21 | replaca | :) |
| 03:43 | ^^ | when im running lein swank, where would the current working directory be? |
| 03:44 | bsteuber | ^^: your project root |
| 03:53 | bsteuber | I wonder that's allowed as a nickname oO |
| 04:10 | clgv | In leiningen 1.5.2 I explicitely used :warn-on-reflection false and >none< of my files contains any (set! *warn-on-reflection* true) but I get a lot of reflection warnings - most of them are in third party libraries like incanter which I dont want to edit. does someone know a fix for this? |
| 04:14 | clgv | now I did set "(set! *warn-on-reflection* false)" at the first line of my Main.clj which is used as ":main" in project.clj and I still get all these warnings |
| 04:20 | bsteuber | clgv: because the dependencies are compiled before the first line of your namespace gets eval'ed |
| 04:20 | bsteuber | so no idea what to do |
| 04:21 | clgv | bsteuber: but the thing is that my dependencies didnt change and suddenly after doing a "lein clean" and "lein compile" this behavior emerged |
| 04:21 | bsteuber | probably ask the library maintainer to not set it to true in release code |
| 04:22 | bsteuber | guess it's done every time the library gets compiled |
| 04:22 | clgv | there was no call to "lein deps" and the files didnt change in binary as well since I added them to my git repository. |
| 04:22 | bsteuber | but when compiling a namespace, clojure will also compile all required ones |
| 04:23 | bsteuber | so the libraries will get compiled once, too |
| 04:23 | bsteuber | if they've been distrubuted as code |
| 04:23 | clgv | I had this stupid mass-warning about two months ago. then I somehow got rid of them without actively doing anything (no lein deps, nothing). now they show up again |
| 04:24 | clgv | bsteuber: yeah but they are always compiled. so the above observation does not make any sense :( |
| 04:24 | bsteuber | if you aot-compile a file requiring the lib |
| 04:24 | bsteuber | the lib will get compiled and the classes written out |
| 04:25 | bsteuber | and then not be compiled again until clean |
| 04:25 | bsteuber | but if you just call compile from swank, I guess the class files are not written |
| 04:25 | bsteuber | so it happens again and again |
| 04:26 | bsteuber | does that make any sense? |
| 04:27 | clgv | hm yes. so it seems to be some oddity with CCW. since CCW always showed these warnings. |
| 04:27 | bsteuber | "call compile" means slime-compile here |
| 04:27 | clgv | now I ran "lein compile" |
| 04:27 | clgv | the second time I ran "line compile" it had no warnings |
| 04:27 | clgv | and now CCW doesnt show any warnings as well |
| 04:28 | clgv | ok. I have to remember that ^^ |
| 04:28 | bsteuber | so probably now ccw won't show the warnings anymore, either |
| 04:28 | clgv | yes. as written above ;) |
| 04:28 | bsteuber | but you probably still wanna ask the lib maintainer to remove the line when pushing to clojars |
| 04:28 | clgv | bsteuber: thx for the help :) |
| 04:28 | bsteuber | ah too slow :) |
| 04:32 | clgv | yeah but I'd have to figure out which dependency actually sets the warnings. there are quite a lot in my lib folder already ;) |
| 04:35 | bsteuber | if I didn't suck that bad at shell, I'd now give you a one-liner that greps all the jar contents ^^ |
| 04:36 | amalloy | clgv: java.classpath currently sets that |
| 04:37 | clgv | amalloy: args! I am using that one. bad Stuart ;) |
| 04:37 | amalloy | indeed. it bit us a day or two ago as well |
| 04:38 | amalloy | there's a patch in the works to remove the one offending line. should be released in the next few months :P |
| 04:38 | bsteuber | just for the sake of completeness - googling around gave me |
| 04:38 | bsteuber | for file in *.zip ; do if unzip -p $file | strings | grep searchstring > /dev/null ; then echo $file ; fi ; done |
| 04:39 | bsteuber | well replace zip by jar and searchstring by "*warn-on-reflection*" |
| 04:39 | amalloy | bsteuber: or just use zgrep :P |
| 04:39 | clgv | bsteuber: good find ;) |
| 04:39 | clgv | zgrep sounds even better^^ |
| 04:40 | amalloy | hm. zgrep may not recognize jar files, absurd as that sounds |
| 04:41 | clgv | amalloy: hm yes it does not :/ |
| 04:42 | bsteuber | and zgrep doesn't recognize -r on my machine, though it'S supposed to forward this to grep |
| 04:42 | amalloy | bsteuber: uh. -r on an archive file is unlikely to work out well |
| 04:43 | bsteuber | ic |
| 04:43 | amalloy | since zgrep is unzipping the file and passing them to grep via a pipe, there's no directories to recurse into |
| 04:43 | bsteuber | amalloy: by the way, I wanted to ask you about this flatland thing |
| 04:44 | bsteuber | is this some sort of startup, or just some hackers sharing code? |
| 04:44 | amalloy | bsteuber: ninjudd started it a week or two ago as a shared place for the devs at our company to put code that's not proprietary |
| 04:44 | amalloy | since having it all under his name was kinda silly |
| 04:45 | bsteuber | i see |
| 04:45 | bsteuber | so you're also one of the lucky guys who can use clojure at their company |
| 04:45 | bsteuber | well me too :) |
| 04:47 | clgv | which companies do you two work for? |
| 04:48 | amalloy | geni |
| 04:49 | bsteuber | pandanet, some japanese server for playing go |
| 04:50 | amalloy | also: lucky? i moved to LA for the privilege |
| 04:50 | clgv | uh there are more hits to geni then I though. have to add LA ;) |
| 04:52 | amalloy | if you can't get foo.com as your website, your company probably shouldn't pick the name foo :P |
| 04:52 | clgv | hehe. got it ;) you are "the LA transplant from the Big Apple"? ;) |
| 04:53 | ejackson | amalloy: i think its to the point where all three letter domains are registered. Guess i'll have to be IBM2.com :) |
| 04:55 | amalloy | clgv: eh? what about the big apple? |
| 04:55 | ibdknox | amalloy: I think he was looking for you in this list: http://www.geni.com/corp/the-geni-team/ |
| 04:55 | clgv | clgv: that was written on the staff page for one of the guys. so I guessed ;) |
| 04:55 | ibdknox | which you don't appear to be in |
| 04:56 | clgv | seems to be a wrong guess then |
| 04:56 | amalloy | ah. yes |
| 04:56 | amalloy | clgv: i started a month ago |
| 04:57 | clgv | ok, so we need to wait a bit |
| 04:57 | clgv | ;) |
| 04:57 | ibdknox | amalloy: where were you before? |
| 04:57 | amalloy | san francisco |
| 04:58 | ibdknox | I meant more of who were you working for |
| 04:58 | amalloy | heh |
| 04:58 | amalloy | www.hubpages.com |
| 04:59 | ibdknox | I see :) |
| 05:02 | ibdknox | amalloy: did you have any luck with the aichallenge stuff? |
| 05:02 | amalloy | ibdknox: i got your starter kit running. haven't tried changing anything yet |
| 05:02 | amalloy | probably won't have time for a few days |
| 05:03 | juturna | How should you handle async access to resources like files in clojure? |
| 05:03 | ibdknox | cool, well if you do mess around with it some, I'd love to hear what you come up with |
| 05:04 | amalloy | juturna: reminds me of college, when i implemented an AI for CodeRuler, one of IBM's similar things |
| 05:06 | amalloy | er |
| 05:06 | amalloy | ibdknox: ^ |
| 05:06 | juturna | I was really wondering how your AI reminded you of async file io in clojure |
| 05:07 | amalloy | juturna: depends what you want to do. async is pretty vague |
| 05:07 | amalloy | not my fault some idiot put the I and J keys so close on this keyboard |
| 05:07 | juturna | well I want to access files from within transactions on N threads |
| 05:08 | Fossi | amalloy: your choice to use such an insane layout ;) |
| 05:08 | juturna | is there some way to treat a file the same way as a ref? If the file has been changed, retry the transaction? |
| 05:08 | juturna | would wrapping the file object in a ref do this? |
| 05:08 | Fossi | although i have to admit the distance between i and j wasnt the biggest factor in switching to dvorak |
| 05:08 | juturna | but I guess that doesn't really make sense |
| 05:08 | Fossi | :D |
| 05:10 | ibdknox | juturna: you can use futures to generically do something asynchronously |
| 05:11 | ibdknox | that won't have any retry semantics though |
| 05:13 | amalloy | you probably want an agent |
| 05:16 | ibdknox | amalloy: how does that work though, since the thing changing is a file? |
| 05:17 | amalloy | ibdknox: it works great in what i'm pretending his use case is, which is appending to log files. he still hasn't said what he wants to do besides "access" the file |
| 05:18 | ibdknox | amalloy: ah, yes. changes work nicely, I was assuming he was trying to read the latest version of a file that is constantly changing |
| 05:18 | ibdknox | lol |
| 05:18 | clgv | what is the easiest way to remove the last "/" of a file path like "/home/bla/blubb/"? |
| 05:18 | ibdknox | juturna: better problem statement please :D |
| 05:19 | amalloy | if you have a file that's changing all the time and you need to read and write it deterministically across threads, you should be using a database, not a file |
| 05:19 | juturna | I have a serversocket accepting clients and spawning a fresh thread for each. The users are then prompted to log in, and each account is stored in a separate file |
| 05:19 | amalloy | (disclaimer: the above is an overstatement) |
| 05:19 | ibdknox | amalloy: lol |
| 05:19 | ibdknox | I agree |
| 05:20 | juturna | I know I COULD use a database, but I'm just trying to keep stuff simple and mess around with the language |
| 05:20 | juturna | and I know I COULD put them all in one file |
| 05:20 | ibdknox | juturna: what's the value in having them be separate? |
| 05:20 | amalloy | ibdknox: putting them together wouldn't really help his issue, would it? |
| 05:21 | ibdknox | I guess not |
| 05:21 | juturna | it's really just a matter of taste... I want to be able to quickly edit an account through a text editor |
| 05:22 | amalloy | juturna: and each user has the ability to affect any other user? |
| 05:22 | clojurebot | chouser: I really did wonder why you had all those photobombers on slide 2.... audio is so useful :) |
| 05:22 | amalloy | clojurebot: way to go on the phantom ping |
| 05:22 | clojurebot | llahna: anyway the answer is no. you can use #(some-fn %1 default-arg %2), for example |
| 05:22 | juturna | well if two users try to log in to the same account at the same time |
| 05:22 | juturna | then each thread would be trying to get to the same file |
| 05:24 | ibdknox | clgv: this will do it: (if (= \/ (last my-path)) (subs my-path 0 (dec (count my-path))) my-path) |
| 05:25 | ibdknox | clgv: though I'm pretty sure the java Path class has something for it too |
| 05:25 | clgv | ibdknox: I am doing it reverse now. I check whether it's not there and add it in that case, since I'll need it later anyway |
| 05:27 | ibdknox | I see |
| 05:29 | clgv | hmm I cant attach metadata to a string :/ |
| 05:31 | ibdknox | alright guys, it's late. G'nite! |
| 07:47 | lnostdal-laptop | technomancy, https://github.com/technomancy/leiningen/issues/228 .. lein repl seems to work ok, but it still fails in lein swank here (last update to swank-clojure repo is from 24 june also i see) |
| 07:49 | lnostdal-laptop | bsteuber, does futures work for you now? |
| 07:51 | bsteuber | lnostdal-laptop: yes it does |
| 07:51 | lnostdal-laptop | hm |
| 07:52 | bsteuber | I installed swank-clojure as a plugin, so not sure if it updated the version |
| 07:57 | pyr | is it expected that when using lein repl, resources can't be accessed ? |
| 07:57 | bsteuber | lnostdal-laptop: oh you'e right, it still doesn't work |
| 07:57 | bsteuber | had some github lein version |
| 08:00 | lnostdal-laptop | "Leiningen 1.6.1 on Java 1.7.0 Java HotSpot(TM) 64-Bit Server VM" here .. from git .. it only works in the repl, yeah |
| 08:02 | bsteuber | ok so better downgrade to 1.5.2 until swank is fixed |
| 08:04 | matthias_ | i'm using "Leiningen 1.5.0 on Java 1.6.0_22 OpenJDK 64-Bit Server VM |
| 08:04 | matthias_ | " is that bad? |
| 08:13 | lnostdal-laptop | matthias_, i think 1.6.0 is what broke calls to future, so 1.5 should be ok in that regard .. if that's what you mean |
| 08:22 | matthias_ | i mean generally. i haven't been keeping up with it all... could be that everyone thinks my version is crap and are all really happy that they dont have to use it anymore and im still using it ;) |
| 08:23 | lnostdal-laptop | ok, well i guess doing `lein upgrade' would be a bad idea right now :) |
| 08:23 | lnostdal-laptop | since it'll upgrade to the very latest; not something in-between your 1.5.0 and 1.6.1 |
| 08:23 | lnostdal-laptop | (or <=1.6.0) |
| 08:24 | matthias_ | is it normal that my "uberjar" contains 8.7mb of clojure stuff? seems a little much :p |
| 08:25 | talios | thats uber! |
| 08:25 | lnostdal-laptop | yes, you should add some more java stuff to it; to balance things out .. heh :) |
| 08:56 | clgv | how can I read a resource file within a jar? |
| 08:57 | fliebel | clgv: I think there is some weird jar:/path/file syntax for that, or... some getResource call on the classpath thing. I can;t remember. |
| 08:58 | clgv | I tried FileReader and failed |
| 08:59 | fliebel | hm http://stackoverflow.com/questions/941754/how-to-get-a-path-to-a-resource-in-a-java-jar-file |
| 09:00 | cemerick | clgv: if you're trying to load from your current classpath, use the resource methods on Class, e.g. (.getResource clojure.lang.RT "/clojure/lang/PersistentVector.class") |
| 09:03 | clgv | fliebel: I already have the path. it's just the reading. I need some Reader that I can put into a PushbackReader |
| 09:03 | fliebel | cemerick: What has happened to the Clojure survey? Just busy, busy, busy? I don;t want to hurry you, but I *am* curious :) |
| 09:04 | cemerick | It's coming, I promise. |
| 09:04 | cemerick | Yes, it's been a crushing, difficult past couple of weeks. |
| 09:05 | fliebel | clgv: Maybe getResourceAsStream combined with InputStreamReader? |
| 09:06 | clgv | fliebel: that could work |
| 09:06 | cemerick | clojure.java.io/reader will return a Reader from the URL |
| 09:06 | clgv | but it's a pity that it is not transparent between jar and non-jar |
| 09:07 | clgv | cemerick: oh ok. with clojure.java.io/reader I only need an URL and it wil be transparent between jar and non-jar? |
| 09:07 | cemerick | exactly |
| 09:07 | clgv | :) |
| 09:10 | clgv | great. just tested in-place with debug-repl |
| 09:15 | pyr | so, yeah, apparently resources are not accessible from a repl inside a project |
| 09:22 | clgv | pyr: what exactly do you mean? I access clj-resource files from repl with two different modes: (1) via use (2) via reader |
| 09:24 | pyr | I have files in resources/ |
| 09:25 | clgv | yeah thats where I have them as well |
| 09:25 | pyr | Via reader I have to specify an absolute path |
| 09:25 | pyr | i.e, I can't do (reader "somefile") |
| 09:26 | clgv | you can use clojure.java.io to get an URL with only specifying the relative path within "resources" |
| 09:26 | pyr | 'k |
| 09:26 | clgv | oh the function is called "resource" |
| 09:27 | pyr | you're right |
| 09:28 | lpetit | hello |
| 09:28 | pyr | clgv: resource it is! |
| 09:28 | lpetit | Just to let you know that CCW 0.3.0 is out. Only one change since 0.2.0, but an important one : perf. improvement of the source code editor for medium to large files |
| 09:28 | clgv | pyr: and 'reader when you actually want to read it |
| 09:29 | peteriserins | Is there a limitation of 1000 related to something around pmap, doseq or the like? |
| 09:29 | clgv | lpetit: great^^ |
| 09:29 | pyr | clgv: yes that part I got :) |
| 09:30 | peteriserins | My program after refactoring with pmap updates exactly 1000 entries of a database. |
| 09:30 | dnolen_ | lpetit: nice |
| 09:32 | lpetit | And I've also some interesting stats: ccw version 0.2.1 (just prior to this one) has generated 1718 downloads. |
| 09:32 | clgv | lpetit: count me 4 times ;) |
| 09:32 | lpetit | clgv: yes, probably to be cut by 2 or 3 at least |
| 09:33 | clgv | lpetit: I have it on 2 working pcs on is dual boot and my laptop ;) |
| 09:33 | cemerick | lpetit: the revenge of parsley is here?! :-D |
| 09:33 | lpetit | cemerick: yep :) |
| 09:35 | lpetit | Next step: remove antlr which is still used for syntax coloration :-D |
| 09:36 | lpetit | Correction: for lexical coloration. Removing antlr will also result in having syntax coloration (eg correct coloration of #(comments) for example ) |
| 09:45 | clgv | lpetit: also correct coloration of local names that are equal to clojure.core names? |
| 09:46 | lpetit | clgv: this would not be just syntax coloration, but rather semantic coloration. Definitely a must have, but probably not at the same time of the antlr removal. |
| 09:47 | lpetit | clgv: and to be honest, there's something into having local names coloration equal to clojure.core names. Like a gentle way to warn you that you're shadowing things :) |
| 09:47 | clgv | I have a bash script that wraps my call to a jar with rlwrap. I forward parameter with "$*" the problem is that filenames with spaces become separate argument through that. any idea how I can fix this? |
| 09:49 | clgv | lpetit: but there are some quite common names that are already taken by core. e.g. "name" ;) |
| 09:49 | lpetit | clgv: quite true. |
| 09:50 | clgv | lpetit: I wont shadow it, if I needed the core function ;) |
| 09:50 | peteriserins | I pull 2k entries from a database, pmap parse them, then doseq put the results in the database. It only updates 1000 entries. Where could the problem arise? |
| 10:01 | StrangeLoopy | Hi everyone. I'm kind of new to clojure, but I've been really enjoying the libraries. One thing I found very useful is to wrap a lazy-xml/parse-trim output in a zipper. My question is, once all the modifications and filters have occured, is there an idiomatic way to print back to xml? xml/emit or prxml don't work with the lazy version. |
| 10:06 | chouser | lazy-xml has an emit that ought to work |
| 10:07 | StrangeLoopy | Hmm. I'll give that a look. |
| 10:08 | StrangeLoopy | By the way, I love your book "The Joy of Clojure." |
| 10:09 | chouser | Thanks, that's very kind of you! |
| 10:10 | Fossi | ah, another thing to finally put on my amazon list |
| 10:13 | StrangeLoopy | The clojure aphorisms tie everything together. The whole thing is very zen. e.g. "Awkwardness is good. It is a sign that the developer is straying from the path of clojure enlightenment." |
| 10:14 | chouser | Well, you should thank Fogus not me for any such nice turns of phrasing. |
| 10:15 | chouser | Also, anything to do with vocabulary, organiztion, philosophy, or literary references. :-) |
| 10:17 | StrangeLoopy | I'll be sure to do that. I know I've been using a ton of code that you authored though, so I'll thank you for that. |
| 10:18 | StrangeLoopy | I guess a ton of code in clojure is not very many lines, but that's one of the plus sides. Lots of functionality with little bulk. |
| 10:19 | StrangeLoopy | :) |
| 10:19 | chouser | :-) |
| 10:19 | chouser | I'm in the process of reorganizing lazy-xml and getting it ready for Clojure 1.3 |
| 10:20 | StrangeLoopy | What is going to change? |
| 10:21 | StrangeLoopy | And is 1.3 going to be the release that sees the par branch hit main once open-jdk 7 is released? |
| 10:21 | chouser | The underlying concepts will be the same. The function names may change a bit, the api cleaned up, the deps will be managed better, the algorithms will be lazier. |
| 10:21 | chouser | prxml may be better integrated |
| 10:22 | chouser | I think 1.3 is in beta with no par work that I'm aware of, so I'd have to guess no. |
| 10:27 | StrangeLoopy | Thanks for the info. Back to reading your book for a while. |
| 10:51 | pyr | so if I get things correctly |
| 10:52 | pyr | in clojure 1.3, clojure.contrib.logging is clojure.tools.logging and clojure.contrib.json is clojure.data.json, right ? |
| 10:53 | fliebel | pyr: sounds reasonable. |
| 10:54 | fliebel | I also heard you can substitute contrib with amalloy-utils, but I've never tried that. :P |
| 11:18 | dnolen | StrangeLoopy: there's nothing stopping an enthusiastic contributor from releasing a parallel collection library for contrib :) |
| 11:23 | StrangeLoopy | Rich Hickey's github has a good start with his par branch. I might poke around there. |
| 11:24 | chouser | dnolen, StrangeLoopy: hasn't there been some work on par (for example as discussed at the 2010 Conj) that isn't realeased anywhere? |
| 11:25 | fliebel | What is par about? |
| 11:28 | StrangeLoopy | chouser, dnolen: The only place I've seen par is on rich's github. Do you have a video link for the 2010 conj? fliebel: In my limited viewing, par is an abstraction library for running parallel computation for list comprehension. For instance, pmap, pfilter, and preduce use a queing algorithm to distribute the work to different threads automatically. pvmap pvfilter and pvreduce use a divide |
| 11:28 | StrangeLoopy | and conquer distribution thats better for larger collections. |
| 11:29 | fliebel | ah, the forkjoin stuff. want! want! |
| 11:31 | StrangeLoopy | My impression is that the convenience something like dosync offers for concurrency over locks is much like what the par collection functions would offer over making your own threads, using a java ThreadBufferQueue or whatever their optimized work queue is, etc. |
| 11:32 | jcromartie | Is there any support in ClojureQL for "like"? |
| 11:41 | StrangeLoopy | What is the point of like other than pattern matching fields? |
| 11:42 | StrangeLoopy | You can use clojure lang predicates to pattern match fields directly in select. |
| 11:47 | StrangeLoopy | This is just a cursory glance, but something like (select (table :yourtable) where (empty? (re-matches #"pattern" :yourfield))) |
| 11:48 | StrangeLoopy | parentheses should have gone around the entire where ^^ |
| 11:52 | replaca | dnolen: you still here? |
| 11:53 | dnolen | replaca: yup |
| 11:54 | replaca | dnolen: I've been setting up autodoc for the new clojure contrib libs & I wanted to see what you want to do about core.logic |
| 11:54 | replaca | I see that you're already building out gh-pages |
| 11:54 | replaca | which is where autodoc usually goes |
| 11:55 | replaca | (though I'm sure we can figure out how to have both your stuff and the autodoc stuff in there if you want) |
| 11:55 | replaca | I just wanted to get your read on how you'd like to proceed there |
| 11:56 | replaca | no hurry, either, I just noticed it over the weekend |
| 11:58 | dnolen | replaca: ah, hmm ... yeah need to think about that. I might just remove the current gh-pages since I don't really have time to build that out at the moment. But gh-pages for docs will also be said since core.logic has no inline docs at all. |
| 11:58 | replaca | hah! :) |
| 11:59 | replaca | dnolen: the idea is to have a autodoc repository for each lib and then a global index for clojure and all the contrib libraries |
| 11:59 | replaca | but, of course, we need docstrings |
| 12:00 | replaca | in any case, give it some thought |
| 12:01 | replaca | hugod: it's coming. I haven't had much time for it, but I'm trying to make some now |
| 12:02 | dnolen | replaca: yeah, probably won't add docstrings until I get this optimization stuff sorted out, but it will happen eventually. |
| 12:02 | replaca | there's a long backlog of autodoc stuff that I need to get to |
| 12:02 | replaca | dnolen: cool. just keep me posted and I can turn it on when you're ready |
| 12:03 | technomancy | autodoc is an eval-in-leiningen project anyway, so it shouldn't be declaring *any* dependencies |
| 12:03 | replaca | technomancy: yes, but it's also a standalone project, so it needs to have the clojure dependency |
| 12:03 | hugod | technomancy: not even for use outside lein? |
| 12:04 | replaca | I need to separate the lein plug-in from the regular autodoc |
| 12:04 | replaca | technomancy: in the latest standalone autodoc I started using the leiningen maven jar collection stuff as a library |
| 12:05 | replaca | but lein isn't on clojars or central in a recent version, so that's a little problematic |
| 12:06 | replaca | do you want to make tht type of use available or is it ok if I copy the deps code over to autodoc (or some other option)? |
| 12:07 | technomancy | replaca: leiningen is an application rather than a library, so making it available as a dependency opens up a whole new can of worms I'm not sure I'm ready to do |
| 12:08 | technomancy | what do you mean by "jar collection"? |
| 12:08 | replaca | technomancy: but it's got so much useful stuff! :) |
| 12:09 | replaca | When autodoc is run standalone, I now allow you to set dependencies in a similar way to what lein allows in the defproject |
| 12:09 | replaca | (autodoc has its own parameter file format) |
| 12:10 | replaca | I don't copy the libs, but reference them straight from ~/.m2 |
| 12:10 | replaca | dince you already had code to figure all that out, do dependency update, etc., I just call that and it's super-simple |
| 12:11 | technomancy | I'm not sure I understand. you want to run autodoc on a project that doesn't use leiningen, but still uses leiningen's dependency notation? |
| 12:11 | replaca | more or less, yes |
| 12:12 | technomancy | sounds really ... hypothetical. |
| 12:12 | replaca | excpet that I'm doing it now and it's great |
| 12:12 | hiredman | sounds like the kind of thing cemerick may want to do |
| 12:12 | replaca | problem is that I have to build a version of lein locally and install it |
| 12:12 | technomancy | so you have to repeat your dependencies in two places? |
| 12:12 | hiredman | since he prefers to use build systems with an ecosystem |
| 12:13 | cemerick | hiredman: well played :-) |
| 12:13 | replaca | well, for programs like the contrib libraries, this makes things easier for me cause I don't have to parse every way that deps could be referenced |
| 12:13 | replaca | I just have my own |
| 12:14 | technomancy | shouldn't it read the pom? that's the canonical dependency list. |
| 12:14 | hiredman | cemerick: huzzah |
| 12:14 | cemerick | "I don't always use build systems. But when I do, I prefer to use one with an ecosystem." |
| 12:14 | replaca | yeah, but I'd still need to act on that info |
| 12:15 | replaca | so it doesn't matter too much how I spcify it, I need to be able to do something with it |
| 12:15 | replaca | (i.e. get the deps, figure out the jar paths and add them to my classpath) |
| 12:15 | replaca | so it's not the syntax, it's the semantics |
| 12:16 | technomancy | oh... and since clojure-maven-plugin is mostly written in java you would rather avoid going that route? |
| 12:16 | cemerick | The application/library divide is tricky. I understand where replaca is coming from, but thanks to different circumstances. |
| 12:16 | hugod | replaca sounds like you need a maven plugin… |
| 12:16 | replaca | hugod: not for what I'm doing here |
| 12:16 | replaca | I'm actually outsde the project looking at it, not inside the project building it |
| 12:17 | replaca | hugod: although in general, a maven plugin would be good for autodoc |
| 12:17 | hugod | iiuc you want the project dependencies, which maven can pass to a plugin |
| 12:17 | replaca | I *know* the dependencies, I just want maven to get them for me |
| 12:17 | hugod | clojure-maven-plugin has a goal for autodoc |
| 12:18 | hugod | it can pass the resolved dependencies |
| 12:18 | replaca | technomancy has already written a bunch of great code to do this so it's a one line call to get the jars fetched and expanded |
| 12:18 | technomancy | replaca: probably best to copy it now; I'll consider factoring out library vs application in the next version. |
| 12:19 | replaca | hugod: right, but I'm not running maven here |
| 12:19 | replaca | technomancy: cool, thanks. So long as that's OK with you. |
| 12:20 | replaca | technomancy: I think that's a useful set of stuff for lots of different tools that might want to think about using maven to manage jars that they may be using in different ways |
| 12:21 | replaca | technomancy: 2nd question: Have you and George though about integrating swank-cdt into lein jack-in in a way that doesn't require modding the project.clj? |
| 12:22 | technomancy | replaca: well in the next version it'll all be done using aether rather than maven, which is all about separating the library from the application |
| 12:22 | replaca | technomancy: oh, that sounds nine |
| 12:22 | replaca | *nice |
| 12:22 | technomancy | replaca: I definitely want to make it easier to piggy-back elisp code from swank and other jars into the Emacs process. |
| 12:23 | technomancy | right now it only works with slime and slime-repl, but it should be easy to make it pluggable for other things like slamhound and cdt |
| 12:24 | replaca | technomancy: yeah, mostly you just want an option to clojure-jack-in that tells lein jack-in to set the right jvm args (and probably do the classpath stuff for tools.jar since that looks broken in 1.3 beta1) |
| 12:25 | technomancy | replaca: oh, stuff for the lein launch, not elisp. yeah you could setenv JVM_OPTS I suppose |
| 12:25 | technomancy | open to suggestions on that front |
| 12:26 | replaca | technomancy: well, it depends how "native" you want CDT to be in this. |
| 12:26 | replaca | technomancy: a solution where lein just "knew" what args to set for debug would be easy for folks |
| 12:27 | replaca | then lein jack-in debug |
| 12:27 | replaca | or something |
| 12:27 | technomancy | maybe the prefix arg or something; not a bad idea |
| 12:27 | replaca | yeah, or another entry point: clojure-jack-in-debug |
| 12:27 | replaca | doesn't matter too much |
| 12:28 | replaca | (at least to me) |
| 12:28 | technomancy | good call. open a clojure-mode issue? |
| 12:28 | replaca | will do |
| 12:28 | replaca | I think I'll see George tonight too, so I'll talk to him about it |
| 12:29 | replaca | technomancy: thx |
| 13:16 | sritchie | does anyone here use midje? |
| 13:19 | mids | sritchie: gave it a try but fell back on clojure.test |
| 13:20 | amalloy | fliebel: amalloy-utils is a drop-in replacement for contrib, provided you don't mind that all your code stops working |
| 13:21 | fliebel | amalloy: Doesn't it contain all the answers to "does clojure have a function that does X"? |
| 13:21 | fliebel | amalloy: I swear someone told me he replaced contrib with amalloy-utils and claimed it works. |
| 13:21 | amalloy | *chuckle* |
| 13:22 | clgv | how do I do something like (assoc-in data [:a last :b] value)? |
| 13:22 | fliebel | But as I said, I did not try it myself. I don;t want to spoil the magic. |
| 13:22 | clgv | is there such a shortcut for vectors? |
| 13:22 | fliebel | clgv: So you have a map in a vector in a map? |
| 13:23 | clgv | yes sir |
| 13:23 | mids | (-> x :a last :b) |
| 13:24 | clgv | but I need assoc-in^^ |
| 13:24 | fliebel | (assoc-in data [:a (count (:a data)) :b] value) |
| 13:24 | clgv | fliebel: thats ugly ;) |
| 13:24 | clgv | it's even more ugly since the "data" is an atom ;) |
| 13:25 | fliebel | clgv: well, yea. |
| 13:25 | pauldoo | how do I know which version of (the same) function to use when it's available from two different contrib places? (e.g read-lines from c.c.duck-streams or c.c.io) |
| 13:25 | amalloy | (update-in x [:a] #(assoc-in % [(count %) :b] value)) is the best you can do, i think |
| 13:25 | pauldoo | in this case read-lines has exactly the same implementation, so I suspect one is deprecated, but I can't tell which |
| 13:26 | clgv | amalloy: I'll write a helper defn then... ;) |
| 13:26 | joegallo | pauldoo: http://clojure.github.com/clojure-contrib/#duck-streams |
| 13:26 | joegallo | says it's deprecated since clojure-contrib 1.2 |
| 13:26 | amalloy | they're both deprecated, use ##(doc line-seq) |
| 13:26 | sexpbot | ⟹ "([rdr]); Returns the lines of text from rdr as a lazy sequence of strings. rdr must implement java.io.BufferedReader." |
| 13:26 | joegallo | not on the function individually, but on the namespace |
| 13:27 | pauldoo | amalloy: so this answer is incorrect? http://stackoverflow.com/questions/6613470/using-line-seq-with-reader-when-is-the-file-closed/6613685#6613685 |
| 13:27 | fliebel | ctrl+r has ceased to show the command history for cake. What provides that? Am I silently switched to JLine? |
| 13:28 | amalloy | fliebel: ruby readline. cake's terminal i/o is mostly in ruby, so i doubt it's jline |
| 13:30 | fliebel | amalloy: Hm, okay, so any gem command I need to run? |
| 13:31 | amalloy | beats me, i'm afraid |
| 13:34 | fliebel | I installed rb-readline but it doesn't work. My cake experience has been troubled recently. |
| 13:36 | bsod1 | what should I add to my project.clj to be able to use clojure.contrib? |
| 13:37 | StrangeLoopy | Hey joegallo |
| 13:37 | StrangeLoopy | Keithwyss here. |
| 13:37 | joegallo | Seriously? |
| 13:37 | StrangeLoopy | Yessir. |
| 13:37 | joegallo | WOW. |
| 13:37 | joegallo | What brings you to clojure? |
| 13:37 | joegallo | Also, let's move this over into a private chat. |
| 13:37 | StrangeLoopy | It's the best language to handle changes to multicore in hardware imho. |
| 13:39 | amalloy | pauldoo: read-lines is necessarily side-effecty and unpredictable. what if someone decides to (take 20) on the line seq? the file never gets closed |
| 13:39 | amalloy | instead, you're encouraged to structure your code so that with-open will work, rather than just passing around an open file handle everywhere |
| 13:40 | amalloy | eg, by moving all the work inside of a constrained scope, or calling (doall) on the sequence if you don't mind having it all in memory at once |
| 13:41 | bsod1 | what should I add to my project.clj to be able to use clojure.contrib? |
| 13:41 | amalloy | :dependencies [[clojure-contrib "1.2.0"]] |
| 13:54 | dnolen | cemerick: that chart looks a lot better now :) |
| 13:54 | amalloy | cemerick: charts! that reminds me: did i miss the results of the survey? |
| 13:54 | dnolen | I meant flowchat |
| 13:54 | cemerick | dnolen: yeah, once I pulled my head out of the interop chapter I was building it for, it improved significantly. It's now the basis for an appendix. |
| 13:55 | pauldoo | amalloy, joegallo: it's a shame clojuredocs.org doesn't show them as deprecated |
| 13:55 | cemerick | amalloy: No, I've been flailing. :-( Coming, honest, really, for serious. |
| 13:56 | dnolen | cemerick: make that type fit in those diamonds. |
| 13:56 | cemerick | dnolen: It's fine for the blog. O'Reilly's illustrators will make it print-worthy. |
| 13:57 | dnolen | cemerick: I think it's really useful for people book aside - make that type fit in those diamonds. That should be on the dev.clojure. |
| 13:58 | pauldoo | hm - interesting that clojure.contrib.io isn't marked as deprecated, only duck-streams |
| 14:01 | pauldoo | grr - more deprecated fun.. join, where the docs don't say what to use instead... http://clojuredocs.org/clojure_contrib/clojure.contrib.string/join |
| 14:02 | mids | pauldoo: clojure.string/join |
| 14:03 | dnolen | pauldoo: any contrib not visible on http://github.com/clojure is deprecated. |
| 14:05 | cemerick | dnolen: fair enough, text fixed |
| 14:09 | dnolen | cemerick+ |
| 14:10 | dnolen | oops, cemerick: cool! that's a great resource. |
| 14:10 | cemerick | dnolen: Thanks for the early feedback. :-) |
| 14:13 | pauldoo | hm - is there a util to take two sequences [1 2 3] [4 5 6] and produce [[1 4] [2 5] [3 6]] ? |
| 14:14 | edw | Whoa! My copy of the Dylan reference manual is worth $200, if the CLojure Bookshelf page on Amazon.com is any indication. |
| 14:16 | pauldoo | aha - (map vector .. ) |
| 14:23 | bsteuber | ,(assoc {}) |
| 14:23 | clojurebot | java.lang.IllegalArgumentException: Wrong number of args (1) passed to: core$assoc |
| 14:23 | bsteuber | ,(apply assoc {} []) |
| 14:23 | clojurebot | java.lang.IllegalArgumentException: Wrong number of args (1) passed to: core$assoc |
| 14:23 | edw | ,(assoc {:a 42} :b 13) |
| 14:23 | clojurebot | {:b 13, :a 42} |
| 14:24 | bsteuber | this violates the principle of least surprise, doesn't it? |
| 14:24 | edw | How so? |
| 14:25 | bsteuber | because I might want to write something like (apply assoc {:foo 1} args) |
| 14:25 | bsteuber | of course I can still do |
| 14:25 | bsteuber | (into {:foo 1} (partition 2 args)) |
| 14:26 | bsteuber | but in a language where (+) works, I don't think (assoc {}) should break |
| 14:26 | bsteuber | so I wonder if I should file an issue |
| 14:26 | edw | ,(let [foo []] (and (seq foo) (apply assoc {:a 42} foo))) |
| 14:26 | clojurebot | nil |
| 14:27 | edw | Yeah, I can see how (assoc {...}) might be handy. |
| 14:28 | fliebel | I agree. I remember some other function got this functionality as well recently. Like comp, I think. |
| 14:28 | fliebel | &(comp) |
| 14:28 | sexpbot | java.lang.IllegalArgumentException: Wrong number of args (0) passed to: core$comp |
| 14:29 | bsteuber | ,(clojure-version) |
| 14:29 | clojurebot | "1.2.0" |
| 14:29 | edw | Huh, ASSOC works with vectors too... |
| 14:29 | bsteuber | yes |
| 14:29 | dnolen | http://outputstream.io/dear-scalasphere-why-arent-we-talking-more-ab |
| 14:30 | dnolen | ^ STM vs. Actors from Scala perspective |
| 14:30 | edw | Where's the URL shortener bot when you need it? |
| 14:30 | bsteuber | fliebel: indeed, (comp) works in 1.3 |
| 14:30 | bsteuber | then I'll report it and write a patch |
| 14:30 | edw | Congrats, nathanmarz, btw. |
| 14:32 | fliebel | edw: What is he to be congratulated for that I'm unaware of? |
| 14:32 | edw | Backtype was acquired by Twitter. |
| 14:32 | nathanmarz | edw: thanks |
| 14:33 | edw | Hope your experience goes way better than eBay's acquisition of Half.com. |
| 14:33 | fliebel | Oh, dunno if that's a good thing, but, congratulations. |
| 14:35 | fliebel | nathanmarz: I hope Twitter is not going to make you rewrite your stuff in Scala, like those classic acquisitions with Clisp and such. |
| 14:35 | ejackson | fliebel: a liquidity event is *always* a good thing :) |
| 14:35 | ejackson | you were the one wanting to fly in private jets not so long ago :D |
| 14:36 | fliebel | ejackson: Care to explain? I know to little about these things. What do private jets have to do with it? |
| 14:36 | edw | ejackson: Remember that Twitter's still privately held, and we have no idea what how the deal was structured, and that nathanmarz quite possibly is not eager to discuss these things. |
| 14:36 | ejackson | edw: of course, I'm not suggesting he does. I surely wouldn't. |
| 14:37 | ejackson | fliebel: aquisition :: [ramen noodles] -> $$$ |
| 14:38 | ejackson | in the general case |
| 14:38 | edw | ejackson: I hope you didn't think I was suggesting that you were suggesting that. ;) |
| 14:38 | ejackson | edw: oh NO !!! its turtles all the way down again. I hate it when that happens : |
| 14:40 | fliebel | ejackson: Turtles? I don't understand you... If some sources wouldn;t have told me otherwise, I;d have said you where american. |
| 14:40 | edw | fliebel: You seriously don't know what he's talking about? |
| 14:40 | ejackson | fliebel: its worse, I'm Zimbabwean by way of South Africa. However, I did *marry* an American. |
| 14:41 | fliebel | edw: I get the noodles -> $$$ now, but not the turtles. |
| 14:41 | ejackson | fliebel: oh its a reference: http://en.wikipedia.org/wiki/Turtles_all_the_way_down |
| 14:42 | edw | (That's my Fb religion, btw: "Turtles all the way down") |
| 14:43 | ejackson | lol |
| 14:43 | fliebel | btw, if $$$ would stop me from writing NoSQL databases in Clojure, I'd prefer noodles ;) |
| 14:44 | ejackson | yummm.... noodles. |
| 14:45 | technomancy | oh man I am totally having shin ramun for lunch now |
| 14:49 | hugod | how do you call a protected static method of a base class from a gen-class method implementation function? |
| 14:50 | ejackson | hugod: i don't think you can |
| 14:50 | ejackson | i've had to got through and make those suckers public in the past |
| 14:50 | hugod | mm, so reflection it is… |
| 14:50 | hugod | I have no control over the base class |
| 14:51 | ejackson | bummer |
| 14:57 | edw | technomancy: Shin ramun? |
| 14:58 | technomancy | ramyun I guess: http://en.wikipedia.org/wiki/Shin_Ramyun |
| 14:59 | technomancy | hell of spicy |
| 15:00 | edw | Ah. |
| 15:01 | edw | With two eggs (egg drop style), I could eat those indefinitely. |
| 15:01 | technomancy | my mouth is already begging for mercy |
| 15:02 | zerokarmaleft | with kimchi is the only way to eat it |
| 15:03 | technomancy | oh! I think I have some kimchi in the back of my fridge |
| 15:04 | hiredman | pretty sure you would know that for a fact |
| 15:04 | dnolen | zerokarmaleft: I agree. |
| 15:05 | dnolen | even better than shin ramyun w/ kimchee is some properly extra spicy kimchee chigae. |
| 15:06 | ejackson | hiredman: i dunno, the best kimchi can just decide to leave on its own accord. Ain't nothing in the fridge gonna stand up to it. |
| 15:06 | Mosterd | What is wrong with my arities? The look completely different. http://pastebin.com/dFJXRLnc |
| 15:06 | zerokarmaleft | dnolen: touche |
| 15:07 | bsteuber | Mosterd: two of your cases define one-argument functions |
| 15:07 | hiredman | Mosterd: the last two are both arity 1 |
| 15:08 | bsteuber | with different destructuring |
| 15:08 | bsteuber | but that doesn't count :) |
| 15:08 | zerokarmaleft | though you might as well go for a home-cooked korean meal at that point |
| 15:09 | Mosterd | I just noticed my first one doesn't pattern match a list. |
| 15:10 | Mosterd | It seems to work when I change it to [[]]. |
| 15:10 | dnolen | Mosterd: destructuring is not pattern matching. |
| 15:10 | Mosterd | Or it just prints a different error. |
| 15:13 | ejackson | welcome, man of the moment ! |
| 15:13 | Mosterd | Should I use the length function instead of trying to destructure a list? |
| 15:19 | Mosterd | I could abuse the apply function. |
| 15:22 | lnostdal-laptop | on vacation .. still reading clojure; http://goo.gl/VJTRg ... :) |
| 15:22 | timvisher | lnostdal-laptop: my kind of vacation! :) |
| 15:27 | dnolen | Mosterd: Clojure doesn't have pattern matching, you'll probably want to use cond. |
| 15:30 | lnostdal-laptop | timvisher, ^^ |
| 15:30 | Mosterd | dnolen: I got it to work using if. Somehow I thought clojure would support pattern matching. |
| 15:30 | Mosterd | But it's still a great language. |
| 15:40 | dnolen | Mosterd: rhickey is not a fan of current pattern matching implementations. I've done some work towards fixing that but it's a long term project. |
| 15:41 | fliebel | dnolen: What doe he have against them? |
| 15:41 | dnolen | fliebel: clause order limitation. |
| 15:42 | fliebel | dnolen: Ah, hi predicate dispatch. |
| 15:42 | dnolen | fliebel: yup |
| 15:49 | Mosterd | dnolen: I don't understand what you mean by clause order limitation means, but I think that pattern matching would be a great addition. |
| 16:00 | dnolen | Mosterd: clause order matters in pattern matching. |
| 16:01 | dnolen | Mosterd: pattern matching is also often implemented to only allow a closed set. |
| 16:02 | dnolen | Mosterd: Pure Prolog is a more interesting model to strive for. |
| 16:03 | jsnikeris | I've just setup a hello-world webapp w/ leiningen/ring/compojure/enlive. The Content-Type response headers are indicating a charset of iso-8859-1, but I'd rather have them be UTF-8. What would be the preferred way to fix this? I'm not sure where on the stack, the default charset is being decided. |
| 16:06 | Mosterd | But when using cond clause order matters as well? |
| 16:06 | dnolen | Mosterd: of course, cond is precisely what you don't want - it's a fixed order and closed. |
| 16:10 | Mosterd | I think I don't really understand the disadvantages. |
| 16:12 | Mosterd | prolog would require returning multiple values |
| 16:12 | amalloy | jsnikeris: someone was asking this in here just a few days ago. i'll see if i can find the log |
| 16:13 | jsnikeris | amalloy:Thanks. I've been reading lots of threads about it, but I'm not really seeing a definitive answer |
| 16:14 | amalloy | jsnikeris: discussion starts at roughly http://clojure-log.n01se.net/date/2011-07-05.html#00:09 |
| 16:15 | jsnikeris | amalloy: thanks as always :) |
| 16:18 | jsnikeris | amalloy: amalloy: too many pronouns. none of those "it"s are clearly bound |
| 16:18 | jsnikeris | :) |
| 16:22 | dnolen | Mosterd: you can't extend pattern matching after the fact. disadvantage. You have to be very careful about order. disadvantage. |
| 16:25 | dnolen | Mosterd: yes Prolog would return multiple values, but that's not necessary. |
| 16:26 | dnolen | what I'm talking about would have an implied once. |
| 16:28 | nathanmarz | fliebel: we're going to continue using clojure |
| 16:29 | fliebel | nathanmarz: Wee :) |
| 16:31 | Mosterd | dnolen: thanks |
| 16:33 | dnolen | Mosterd: some thoughts/examples on the matter here, https://github.com/swannodette/match/wiki/Crazy-Ideas |
| 16:34 | dnolen | Mosterd: I'd like to support local matching as well as matching across fns. |
| 16:35 | dnolen | Mosterd: I'd like the generality of multimethods but the perf from OCaml/SML/Haskell pattern matching compilation |
| 16:41 | ibdknox | anyone in here messed with Noir? |
| 16:47 | Mosterd | dnolen: Okay, so pattern matching won't be there for a while because you are working on a better idea. |
| 16:48 | dnolen | Mosterd: there's already pattern matching libs for Clojure. I'm working on a better idea that I plan on submitting as a contrib lib. Even so I don't think it'll make core anytime soon. |
| 18:16 | chuck | Hi all! I've got a question about Clojure web development |
| 18:16 | chuck | With the hacker news code, there's some sort of REPL that can be used to modify the server's running code to change how the site functions while the server is still running |
| 18:16 | chuck | Is this possible somehow with clojure/compojure? |
| 18:19 | sritchie | hey all -- I see the following in the midje code: (defmacro facts [& forms] (with-meta `(fact ~@forms) (meta &form))) |
| 18:19 | sritchie | can anyone explain what &form means, here? |
| 18:20 | sritchie | ah, got it: http://blog.jayfields.com/2011/02/clojure-and.html |
| 18:23 | technomancy | chuck: definitely possible; usually done by running the server out of swank or embedding a swank server in your application. but a raw socket-repl can be used if you don't like slime. |
| 19:00 | amalloy | technomancy: if i (setq slime-net-coding-system 'utf-8-unix), should slime/swank be able to handle any unicode character? |
| 19:00 | amalloy | i'm fiddling around with stuff like using ∘ as a shortcut to comp |
| 19:00 | hiredman | amalloy: you also need to set the jvm to use utf8 as a file encoding |
| 19:01 | hiredman | or as the default |
| 19:01 | technomancy | I think M-x clojure-jack-in with the latest slime should get you unicode across the board |
| 19:01 | technomancy | with raw slime that setq should do the trick though |
| 19:03 | amalloy | hiredman: as a file encoding? i'm not even asking clojure to compile a file (yet); i'm just sending it a character over the slime tunnel |
| 19:03 | amalloy | technomancy: doesn't seem to. slime-eval-region with just ∘ highlighted sends slime into a black hole until i slime-disconnect |
| 19:04 | hiredman | amalloy: file.encoding is used as the default for all streams I believe |
| 19:04 | technomancy | hm; I may have been mislead |
| 19:04 | technomancy | misled? |
| 19:05 | technomancy | works here |
| 19:05 | amalloy | hiredman: i see. (System/getProperty "file.encoding") is already "UTF-8" |
| 19:05 | hiredman | hmmm |
| 19:06 | hiredman | https://gist.github.com/1070768 is what I have for emacs |
| 19:07 | amalloy | technomancy: what's the magic words to install the swank plugin for lein these days? |
| 19:07 | technomancy | lein plugin install swank-clojure 1.4.0-SNAPSHOT |
| 19:09 | amalloy | technomancy: thanks. looks like a cake bug (ninjudd!) |
| 19:09 | amalloy | works fine in lein |
| 19:33 | jonabbey | /? |
| 19:33 | clojurebot | :negative/num-1 + :positive/num-1 = :zero/zero |
| 19:36 | keithwyss | Hello everyone. Quick question. If I open a java.io.File(".") in a leiningen project, say in src/myproject/myproject.core, where does the . point to? |
| 19:38 | technomancy | keithwyss: should be the project root |
| 19:38 | amalloy | ,(.getAbsolutePath (java.io.File. ".")) |
| 19:38 | clojurebot | java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read) |
| 19:39 | amalloy | keithwyss: try the above yourself and see |
| 19:39 | keithwyss | Thanks. |
| 19:48 | keithwyss | Great. The root it was. Once I wrap everything in an uberjar, I don't see prints though. Do those get redirected to some other stream? Do I have to use the test folder for stuff like this? |
| 21:00 | tauntaun | set beep_msg_level hilight msgs dccmsgs |
| 21:11 | gmtreacy | hello all, does anyone know why a println would be suppressed when it is called indirectly? |
| 21:12 | gmtreacy | (defn improve [guess x] |
| 21:12 | gmtreacy | (println "guess: " guess " x: " x) |
| 21:12 | gmtreacy | (average (square guess) (/ x guess)) |
| 21:12 | gmtreacy | that works but if i try to run a function that calls improve, the print does not show up in the repl output. I am using clojurebox |
| 21:50 | technomancy | http://clojure.org/getting_started -> (. javax.swing.JOptionPane (showMessageDialog nil "Hello World")) ; what is this I don't even |
| 21:54 | technomancy | that whole page is a facepalm really |
| 21:57 | danlarkin | dnolen and abedra and like the only two voices of reason on the ML |
| 21:57 | danlarkin | it must be difficult |
| 21:57 | technomancy | jswat and yourkit are not "getting started" topics |
| 21:58 | technomancy | why is asm mentioned at the top? |
| 21:59 | dnolen_ | technomancy: because some Java folks want to know what's in the jar. nothing weird about that. |
| 22:00 | technomancy | I posit that less than 1% of developers in the history of clojure have cared about asm on their first day of using Clojure. |
| 22:00 | danlarkin | position seconded! |
| 22:01 | dnolen_ | when I first used Clojure near 3 years ago, I was like HELLS YES, I download a jar and it works! time to start < 30s. |
| 22:02 | dnolen_ | no effin make file, no global install, no C deps, no ... etc |
| 22:02 | technomancy | when I started the readme didn't even have working build instructions. |
| 22:03 | scgilardi | dnolen_: yeah, that was pretty darn cool. and then delving into clojure.clj and reading and learning the bootstrap. very sweet. |
| 22:06 | cemerick | Wow, I hadn't looked at the ML in a number of days. Seems swampy. |
| 22:06 | technomancy | cemerick: yeah......skip it |
| 22:07 | scgilardi | getting-started could definitely use some updating. one can, however, download the zip file from the "downloads" like at the upper right and then read the readme in it to get into a repl. |
| 22:07 | technomancy | a repl without readline is hardly a repl |
| 22:07 | scgilardi | not true |
| 22:07 | cemerick | technomancy: Yeah. I should definitely do that. Maybe just one message… |
| 22:09 | dnolen_ | I mean if you look at Ruby / Python Getting Started they're hardly any better. It's just that some unbelievably selfless person(s) has created a pre-package binary for their platform so you don't have to read Getting Started for those langs. Where are those people for Clojure I ask? Where?! |
| 22:10 | dnolen_ | Hey somebody forgot to add "brew install node" to the Node.js getting started page?! |
| 22:12 | technomancy | dnolen_: the second code sample on getting started on clojure.org has deprecated dot notation |
| 22:14 | dnolen_ | technomancy: since when was that deprecated? (I missed this if so) |
| 22:17 | scgilardi | I had recalled deprecated as well, but this is all I can find currently: java interop mentions this: "The member access forms given at the top of this section are preferred [over a form beginning with .] for use in all cases other than in macros." |
| 22:17 | technomancy | it's only kept around for use from within macros |
| 22:17 | scgilardi | so it's at leas showing a non-preferred form (that's harder to read than the preferred alternative) |
| 22:19 | dnolen_ | technomancy: well the better update this then too http://clojure.org/java_interop |
| 22:19 | dnolen_ | doesn't seem deprecated to me. |
| 22:25 | technomancy | I know it's been mentioned in here by either rich or stu H |
| 22:29 | duck1123 | What's the best way to read in some config information for my app? Previously, I had a namespaced file that contained some settings, but I want to get this out of my src tree |
| 22:30 | duck1123 | I could read a pushbackreader from the file, but is there a better option? |
| 22:30 | duck1123 | alternately, I could look into something like yaml, but clojure is the superior syntax IMO |
| 22:31 | technomancy | duck1123: (comp read-string slurp) maybe |
| 22:33 | duck1123 | oh nice, that is a bit shorter than what I had |
| 22:33 | duck1123 | but is that my best bet for the equivalent of a config/database.yml ? |
| 22:45 | cemerick | duck1123: stick a map literal in a file, use what technomancy provided, and you're done :-) |
| 22:45 | cemerick | assuming the values are literals and you're not looking to eval things |
| 22:47 | duck1123 | Thanks. That's what I'm doing. I just wanted to make sure I wasn't missing anything cool |
| 22:48 | cemerick | duck1123: dude, that's not cool enough for you? ;-) |
| 22:49 | duck1123 | well, at the time I didn't know about read-string |
| 22:49 | duck1123 | and the alternative felt dirty |
| 23:02 | sritchie | hey all - does any function like this exist? https://gist.github.com/1071033 |
| 23:03 | sritchie | I was looking for a way to compose predicates, to see if any match |
| 23:16 | cemerick | sritchie: every-pred |
| 23:17 | cemerick | ,((every-pred number? odd?) 3 9 11) |
| 23:17 | clojurebot | java.lang.Exception: Unable to resolve symbol: every-pred in this context |
| 23:17 | cemerick | hah, 1.3-only |
| 23:17 | cemerick | clojurebot: you're a luddite |
| 23:17 | clojurebot | Excuse me? |
| 23:17 | sritchie | ah, got it |
| 23:18 | sritchie | time to upgrade! |
| 23:18 | duck1123 | get with the picture, clojurebot |
| 23:18 | sritchie | and some-pred, or some-fn? |
| 23:18 | cemerick | sritchie: or just copy/paste into a private ns until you do |
| 23:19 | cemerick | sritchie: some-fn, yes |
| 23:38 | Yamazaki-kun | Are clojure.test deftests supposed to just work with Enclojure? |
| 23:39 | Yamazaki-kun | The test options in the GUI claim no tests run. Works fine with lein test. |
| 23:42 | technomancy | heeeeeeeeroku: http://deep-snow-641.herokuapp.com/ |
| 23:47 | Yamazaki-kun | hm. have to show up to a Seajure meeting one of these days. Problem is I'm never in Seattle on a Thursday night. |
| 23:51 | hugod | technomancy: :) is that up on the seajure github yet? |
| 23:56 | hugod | does it suffer GAE like startup latency? |