2013-01-24
| 00:01 | Rich_Morin | no, that didn't solve the problem. |
| 00:02 | Rich_Morin | somehow, I'm not getting a REPL |
| 00:03 | Rich_Morin | I can type "lein repl" into the shell and it all works. Perhaps I need to tell IDEA something ?!?!? |
| 00:06 | muhoo | if you get frustrated, just try lighttable instead |
| 00:07 | ibdknox | I need more hours in the day so I can get this next version out sooner :) |
| 00:08 | Rich_Morin | ibdknox: I'm really hoping that LT will save me from emacs and all the other envs - please keep slogging! |
| 00:08 | ibdknox | the next version is a huge step forward in just about every way |
| 00:09 | akhudek | Rich_Morin: ok, maybe it is that platform SDK thing. It's been so long ago since I set it up that I now forget. :-( |
| 00:09 | warz | im new to clojure and ive been using LT. its pretty good. lots of little quirks/bugs and things i wish it could do, but i like it so far. :) |
| 00:10 | tomoj | curious, what data structure are you using for the edited code, if that's not a secret? |
| 00:10 | ibdknox | warz: do you have a list of these quirks/bugs? 0.3.0 is focused entirely on experience (and a surprise) |
| 00:10 | akhudek | Rich_Morin: ah, I think that is just selecting the jvm you want to use |
| 00:11 | tomoj | (in light table) |
| 00:11 | akhudek | my system has 1.6 and 1.7, and I'm pretty sure I added 1.7 myself |
| 00:11 | ibdknox | tomoj: as it is stored in memory for display? |
| 00:11 | warz | ibdknox, i havent been keeping a list. i submitted a github issue or two, i think. theres something that i always come across but i cant think of it at the moment. |
| 00:12 | ibdknox | tomoj: I use the codemirror editor, which under the covers houses the lines in a nice B-Tree |
| 00:12 | warz | you responded to the issues i opened though |
| 00:12 | tomoj | oh |
| 00:12 | Rich_Morin | From http://pupeno.com/2011/07/30/getting-started-with-la-clojure-on-mac-os-x-a-visual-guide/, it appears that I need to assign an SDK in File < Project Structure, but it doesn't offer JSDK... |
| 00:12 | ibdknox | warz: well let me know as you run into more :) |
| 00:12 | tomoj | I didn't know js was involved |
| 00:12 | ibdknox | tomoj: the whole thing is CLJS |
| 00:13 | warz | ibdknox, i recall not being able to get rid of error popups, in the top right corner of the editor. also sometimes the syntax errors on the bottom left clip the left side of the editor window. |
| 00:13 | warz | so i cant see the whole message. |
| 00:13 | tomoj | wow, nice |
| 00:13 | Rich_Morin | It offers JDK, IntelliJ IDEA Plugin SDK, and Android SDK. |
| 00:14 | warz | i was thinking, maybe an X circle on the errors in top left ot remove them |
| 00:14 | warz | or something |
| 00:14 | ibdknox | warz: yeah the entire result/error thing as it exists has been completely redone to actually be inline so that won't happen anymore |
| 00:14 | warz | ah ok cool |
| 00:14 | Rich_Morin | akhudek: I think it wants me to specify a JDK ?!?! |
| 00:15 | Rich_Morin | and it isn't offering a default. |
| 00:15 | akhudek | Rich_Morin: yes, looks like you need to create an entry |
| 00:15 | warz | ibdknox, oh i was also thinking maybe somehow the ability to specify files to ignore in the open command popups |
| 00:15 | Rich_Morin | any clue about what should go in ti? |
| 00:16 | ibdknox | warz: also done in the new one :) |
| 00:16 | akhudek | Rich_Morin: you certainly have a jdk installed if you have lein, so just point it to the JDK directory |
| 00:16 | warz | leet |
| 00:16 | warz | :D |
| 00:16 | rationalrevolt | does LT use a constant port number? |
| 00:16 | akhudek | on mac it's something like /Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home |
| 00:16 | akhudek | or /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home |
| 00:16 | ibdknox | rationalrevolt: yeah, 8833 and 8834 |
| 00:16 | akhudek | confusing that it doesn't come preconfigured with a default though |
| 00:18 | michaelr525 | hello |
| 00:18 | warz | ibdknox, is it just you working on LT? |
| 00:19 | ibdknox | warz: on the code-side it is |
| 00:19 | warz | well gj man. well done. :) |
| 00:19 | warz | and YC and all that, nice. |
| 00:20 | Rich_Morin | akhudek: well, that didn't solve it... |
| 00:20 | ibdknox | haha thanks. Long way to go, but this next one is a big step in the right direction |
| 00:20 | akhudek | Rich_Morin: did you also assign the platform in the project? |
| 00:21 | akhudek | it might now be missing since there was no default |
| 00:21 | akhudek | under project settings, select the project, then project sdk |
| 00:21 | Rich_Morin | not sure - do I have to pick a particular jar file in the Home directory? |
| 00:23 | Rich_Morin | that did it; thanks! |
| 00:23 | akhudek | glad you got it working :-) |
| 00:24 | Rich_Morin | (+ 1 2) => 3 +1! |
| 00:24 | clojurebot | #<RuntimeException java.lang.RuntimeException: java.lang.NumberFormatException: For input string: "+1"> |
| 00:37 | rationalrevolt | (case 'yes 'yes "yes" 'no "no") |
| 00:40 | amalloy | the test clauses in case are not evaluated |
| 00:42 | muhoo | been bitten by that before. iirc java blows up if case tests arent constants, and clj silently does something else |
| 00:43 | amalloy | muhoo: not exactly |
| 00:43 | amalloy | clojure just has a richer set of constants: foo is a perfectly valid constant, the symbol foo |
| 00:43 | amalloy | so anything is a constant, if you choose not to eval it |
| 00:45 | muhoo | aye |
| 01:21 | tomoj | since truth_ is only used in emit :if, why not just emit inlined checks? |
| 01:22 | tomoj | or is it the checks and not the function call that make truth_ a concern |
| 01:26 | amalloy | tomoj: well, using truth_ instead of inlining probably reduces code size too |
| 01:27 | tomoj | didn't think about that |
| 01:28 | tomoj | but I wonder about the relative importance of the function call, the checks, and code size, in the motivation for safe-check? |
| 01:28 | tomoj | er, safe-test? |
| 02:28 | michaelr525 | ohpauleez: hi |
| 02:28 | ohpauleez | michaelr525: Hello |
| 02:29 | michaelr525 | ohpauleez: is the pubsub in shoreleave a parallel to backbone events? |
| 02:31 | michaelr525 | in the sense that it is used to wire the application components.. |
| 02:31 | ohpauleez | I'm not sure how backbone events work, but in Shoreleave it is a declarative, generic event system. Functions can subscribe to DOM listeners, atoms can subscribe to functions, local storage can subscribe to functions |
| 02:32 | ohpauleez | it's a protocol, so really - anything can subscribe to anything. And anything can publish |
| 02:32 | ohpauleez | along the way, functions can send stuff to the server |
| 02:32 | ohpauleez | yes, exactly, it's used to wire an app up. You essentially create the dataflows in your app |
| 02:33 | michaelr525 | sounds good, but i need to try it in order to get a feeling.. I found a few examples using google. Is there something you consider a good example? |
| 02:34 | ohpauleez | haha, everyone sort of uses pubsub in a way I don't, but sadly, I haven't finished up the examples. That will change with the new shoreleave-baseline |
| 02:36 | michaelr525 | ok |
| 02:36 | ohpauleez | this is what I point most people to: https://github.com/robert-stuttaford/demo-enfocus-pubsub-remote/blob/master/src-cljs/depr/app.cljs |
| 02:37 | ohpauleez | Robert wraps up some stuff to make the interface a little easier |
| 02:37 | ohpauleez | and you should feel free to ping me on here or email me |
| 02:37 | ohpauleez | I'm more than happy to help |
| 02:37 | michaelr525 | ohpauleez: thanks :) |
| 02:38 | ohpauleez | np - good luck and have fun! |
| 03:42 | ucb | does the latest leiningen release work with drip? |
| 04:12 | minikomi | this may seem like a crazy question.. can someone tell me why ((apply comp '(inc inc inc)) 2) doesn't give the same result as ((comp inc inc inc) 2) ? |
| 04:13 | amalloy | 'inc is not inc |
| 04:14 | amalloy | (apply comp (list inc inc inc)) would be fine |
| 04:19 | minikomi | sorry, do you mind pointing me in the right direction on the difference? |
| 04:20 | Chousuke | minikomi: you're quoting the list. including its contents |
| 04:21 | Chousuke | '(a b c) is a list of three symbols |
| 04:21 | minikomi | ah |
| 04:21 | minikomi | thanks :) |
| 04:21 | Chousuke | in general, if you want a literal list, you should use a vector instead :P |
| 04:22 | Chousuke | that is, you example would work just fine if you did ((apply comp [inc inc inc]) 2) |
| 04:22 | minikomi | that's nicer, thanks |
| 04:26 | michaelr525 | what is a good file browser in emacs? |
| 04:27 | michaelr525 | a side pane like in sublimetext2 could be cool :) |
| 04:27 | michaelr525 | (i've decided to give emacs another stab) |
| 04:27 | Iceland_jack | Dired |
| 04:28 | Iceland_jack | you're probably asking the wrong question, check out ido-mode |
| 04:28 | xumingmingv | and projectile also worthing trying |
| 04:29 | michaelr525 | ido mode is cool but i would like to have a tree view of my project open.. |
| 04:29 | arcatan | i've been using ido-mode for ages, but i only just learned, that if you type a file-name and wait for a sec, ido-mode will search the directory for the name |
| 04:29 | michaelr525 | directory/file tree |
| 04:29 | arcatan | *the directory tree |
| 04:30 | Iceland_jack | michaelr525: Then look at dired |
| 04:30 | daimrod | michaelr525: there is dired and you could look at ECB. |
| 04:30 | lpetit | Hello, anyone here having the "New leiningen project" issue with Counterclockwise, and willing to help test the patch (should take no more than 5 mins) |
| 04:31 | michaelr525 | ok, then dired, ecb, projectile i'll try these |
| 04:32 | lpetit | not everybody at the same time :) |
| 04:32 | michaelr525 | hehe |
| 04:35 | michaelr525 | how to exit M-x ido mode? (esc doesn't work) |
| 04:35 | ro_st | C-g |
| 04:35 | vijaykiran | michaelr525: or three-times esc :) |
| 04:36 | ro_st | C-g is get-me-the-hell-out-here |
| 04:36 | michaelr525 | cool |
| 04:40 | michaelr525 | dired doesn't seem to have directory structure mode.. |
| 04:45 | clgv | lpetit: whats the issue? (link?) |
| 04:46 | lpetit | clgv: the issue is that when people start with 0.11.0 and an empty maven local cache, they have a problem: the leiningen-core version I've recently updated ccw to does not anymore add clojars repository to the list of default repositories, and the "New leiningen project" wizard fails miserably |
| 04:47 | lpetit | clgv: so I've created a small patch , and would like someone to test it. The idea is simple. You first try to reproduce the problem. Quite easy = rename temporarily your ~/.m2/repository so that maven/lein thinks it's empty, then try to create a new leiningen project from eclipse |
| 04:48 | clgv | lpetit: until when do you need feedback. my experimental machine is at home ;) |
| 04:49 | lpetit | clgv: I want to release a 0.11.1 today |
| 04:49 | clgv | lpetit: damn. that's a too short time frame for me... |
| 04:50 | clgv | lpetit: I am pretty busy for an upcomming deadline |
| 04:50 | lpetit | clgv: no problem, I understand that you don't want to risk breaking your work machine :) |
| 04:50 | lpetit | I'll just create a fresh environment here, np |
| 04:52 | clgv | lpetit: will the repl history settings be included in 0.11.1? |
| 04:57 | lpetit | clgv: no, just a quick patch, not including anything but the fix |
| 04:58 | clgv | lpetit: ah right you include new features in the beta releases first... |
| 04:58 | lpetit | right |
| 06:26 | michaelr525 | ooh |
| 06:26 | michaelr525 | crazy shit |
| 06:27 | ejackson | michaelr525: emacs ? |
| 06:27 | augustl | what do I do when I get "Exception in thread "main" java.lang.ClassNotFoundException:" for "lein run" when the entry in :main clearly exists and has a :gen-class? :) |
| 06:28 | michaelr525 | ejackson: no, i gave up emacs after 5 minutes again ;) |
| 06:30 | michaelr525 | ejackson: i mistakenly put remotes.clj with the namespace modern-cljs.remotes beside server.clj with the namespace my-project.server and 'require'd it from server.clj |
| 06:30 | michaelr525 | got Exception in thread "main" java.lang.ClassNotFoundException: my-project.server |
| 06:31 | michaelr525 | after 'lein run' |
| 06:31 | michaelr525 | looks like it failed to compile but did it silently |
| 06:31 | augustl | doh, used main- not -main |
| 06:49 | ChongLi | is there any benefit to putting a mutable javascript array inside an atom and updating it with swap!? |
| 06:58 | luxbock | does a doc-string always come before the arg-list, or can I put it underneath one as well? |
| 07:02 | anars | luxbock: according to the source code (https://github.com/clojure/clojure/blob/master/src/clj/clojure/core.clj#L272), the doc-string always comes before. |
| 07:03 | luxbock | alright |
| 07:10 | ejackson | luxbock: yes, otherwise it is just evaluated as a string literal as part of the body of the function |
| 07:23 | augustl | bleh, using rabbitmq I have to manually manage connections if the rabbitmq server goes down, boring |
| 08:22 | augustl | just took the business logic process down and up again without any of the clients noticing. Queues for RPC = <3 |
| 08:31 | michaelr525 | augustl: the clients are web requests? |
| 09:48 | augustl | michaelr525: late reply.. The client is a HTTP API that translates the incoming HTTP to stuff I RPC over a queue |
| 09:48 | augustl | and responds with http when the queue responds |
| 09:52 | michaelr525 | augustl: and that HTTP API is waiting for an answer? |
| 10:03 | augustl | michaelr525: yeah, the rpc is done in a future, and I dereference it to make it synchronous so I can respond with HTTP |
| 10:04 | augustl | the alternative would be a nodejs stype event driven approach where the HTTP handling is also asynchronous |
| 10:04 | augustl | but a blocking call via deref works just fine |
| 10:04 | augustl | michaelr525: will probably blog about it soon :) |
| 10:05 | augustl | and perhaps release the rabbitmq-amqp wrapper as open source, if that's useful |
| 10:05 | michaelr525 | augustl: yeah, i though that it sounds like a good use case for 'aleph' async response |
| 10:05 | augustl | it's just 88 lines of java interop though |
| 10:06 | augustl | michaelr525: hmm, what's aleph? |
| 10:06 | michaelr525 | augustl: you didn't like longhr? |
| 10:06 | michaelr525 | augustl: https://github.com/ztellman/aleph |
| 10:07 | augustl | michaelr525: longhr is the clojurewerkz one, right? |
| 10:07 | michaelr525 | augustl: yup |
| 10:07 | augustl | to be honest I rarely feel that the clojure wrappers over java interopp adds any value, quite the contrary |
| 10:07 | augustl | I prefer to just do the interop myself |
| 10:07 | augustl | ..unless there's some useful feature it implements on top of the interop of course |
| 10:08 | michaelr525 | ok |
| 10:08 | augustl | good :) |
| 10:08 | michaelr525 | i can't really compare, i've just used longhr but never user the java api |
| 10:46 | djwonk | why is (#({1 2})) not ok but (#(hash-map 1 2)) is? |
| 10:46 | djwonk | (I'm building up small pieces to see what is going haywire) |
| 10:47 | djwonk | ,(#(hash-map 1 2)) |
| 10:47 | clojurebot | {1 2} |
| 10:47 | djwonk | ,(#({1 2})) |
| 10:47 | clojurebot | #<ArityException clojure.lang.ArityException: Wrong number of args (0) passed to: PersistentArrayMap> |
| 10:49 | ejackson | djwonk: true (#{1 2} 2) |
| 10:49 | ejackson | ,(#{1 2} 2) |
| 10:49 | clojurebot | 2 |
| 10:50 | djwonk | ejackson: ok, so the {} is being treated as a function since it is in function position |
| 10:50 | TimMc | ,'#({1 2}) ;; djwonk |
| 10:50 | clojurebot | (fn* [] ({1 2})) |
| 10:50 | ejackson | #{} is being treated as function, yes |
| 10:51 | TimMc | #{}? |
| 10:51 | rasmusto | ,(#({1 2}) 2) |
| 10:51 | clojurebot | #<ArityException clojure.lang.ArityException: Wrong number of args (1) passed to: sandbox$eval135$fn> |
| 10:51 | TimMc | ejackson: You're using sets there. |
| 10:52 | djwonk | rasmusto: yes, that illustrates what is hanging me up |
| 10:52 | ejackson | i was intending to... were we talking about maps... sorry |
| 10:52 | ejackson | both can be used as functions |
| 10:52 | rasmusto | djwonk: iirc you can't use map literals in anonymous functions, I might be wrong |
| 10:52 | hyPiRion | ,(#(hash-map 1 2)) |
| 10:52 | clojurebot | {1 2} |
| 10:52 | TimMc | rasmusto: No, that's not true. |
| 10:53 | rasmusto | TimMc: ah, T stand corrected |
| 10:53 | rasmusto | I* |
| 10:53 | djwonk | hyPiRion: yes, hash-map works for me, I was trying to understand what was going wrong |
| 10:53 | hyPiRion | ,((constantly {1 2})) |
| 10:53 | clojurebot | {1 2} |
| 10:53 | TimMc | rasmusto: The only thing you can't write in a function literal is another function literal. :-) |
| 10:53 | rasmusto | TimMc: understood |
| 10:53 | hyPiRion | ,(#(`[~@{1 2}] 0)) |
| 10:53 | clojurebot | [1 2] |
| 10:53 | hyPiRion | gurr. |
| 10:54 | hyPiRion | ,(#(`[{~1 ~2}] 0)) |
| 10:54 | clojurebot | {1 2} |
| 10:54 | TimMc | Look what you've done, you've got hyPiRion started on swearjure again! |
| 10:54 | hyPiRion | :D |
| 10:54 | ejackson | its a perlpocalypse |
| 10:54 | ivaraasen | :D |
| 10:54 | rasmusto | ,(#({2 3})) |
| 10:54 | clojurebot | #<ArityException clojure.lang.ArityException: Wrong number of args (0) passed to: PersistentArrayMap> |
| 10:54 | djwonk | hyPiRion: my eyes! |
| 10:54 | boodle | ,(class (#({1 2}))) |
| 10:54 | clojurebot | #<ArityException clojure.lang.ArityException: Wrong number of args (0) passed to: PersistentArrayMap> |
| 10:55 | rasmusto | I think I'm confused now too |
| 10:55 | ivaraasen | swearjure is quite relaxing actually. a bit like white noise |
| 10:55 | ejackson | rasmusto: what are you trying to do ? |
| 10:56 | djwonk | "Do not look into hash syntax inside function literal with remaining eye" http://ledmuseum.candlepower.us/sixth/bsl.gif |
| 10:56 | augustl | rasmusto: #(foo 1) expands to (fn [] (foo 1)) |
| 10:57 | djwonk | ,((fn [] {1 2})) |
| 10:57 | clojurebot | {1 2} |
| 10:57 | djwonk | ,(#({1 2})) |
| 10:57 | clojurebot | #<ArityException clojure.lang.ArityException: Wrong number of args (0) passed to: PersistentArrayMap> |
| 10:57 | djwonk | eek |
| 10:57 | djwonk | something isn't adding up |
| 10:57 | ivaraasen | hyPiRion: considering incorporating swearjure into the next issue of Spitposten |
| 10:58 | djwonk | my conclusion: my mental understanding of #() is not correct |
| 10:58 | hyPiRion | ivaraasen: hahah, sweet |
| 11:02 | rasmusto | yeah, that's been what I'm confused about :p |
| 11:03 | hyPiRion | oh, I love this |
| 11:03 | hyPiRion | ,(#(`%%%) :ten) |
| 11:03 | clojurebot | :ten |
| 11:03 | augustl | djwonk: it expands to (fn [] ({1 2})) |
| 11:03 | hyPiRion | ,(macroexpand '#(`%%%)) |
| 11:03 | clojurebot | (fn* [p1__57#] ((quote p1__57__58__auto__) p1__57# p1__57#)) |
| 11:03 | hyPiRion | This one's mind boggling. |
| 11:03 | augustl | that's why I said #(foo 1) expands to (fn [] (foo 1)) :) |
| 11:03 | TimMc | djwonk: Evaluate this, then stare at it carefully: '#({1 2}) |
| 11:03 | rasmusto | ,(#(identity {1 2})) |
| 11:04 | clojurebot | {1 2} |
| 11:04 | djwonk | augustl: thanks, I missed the outer parens! |
| 11:04 | augustl | ^^ |
| 11:04 | rasmusto | Okay, I'm back on track, thanks augustl |
| 11:04 | djwonk | TimMc: thanks |
| 11:06 | augustl | the owls are not what they seem |
| 11:06 | TimMc | djwonk: Now you should be able to figure out why this does what it does: ##(#()) |
| 11:06 | lazybot | ⇒ () |
| 11:07 | augustl | you can add hashtags and code clojure on twitter at the same time! |
| 11:08 | djwonk | hyPiRion: #(`%%%) is messed up |
| 11:09 | hyPiRion | djwonk: I think it's a bug that `% resolves into that |
| 11:09 | hyPiRion | and yeah |
| 11:09 | hyPiRion | ~hyPiRion |
| 11:09 | hyPiRion | Hurm. |
| 11:09 | djwonk | ,##(#()) |
| 11:09 | lazybot | ⇒ () |
| 11:09 | clojurebot | #<ExecutionException java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Nested #()s are not allowed> |
| 11:10 | djwonk | TimMc: Clojure 1.5 (on my machine) does not like, it complains just like clojurebot |
| 11:10 | djwonk | anyhow, I'm content now |
| 11:10 | djwonk | I will be swearing like hyPiRion |
| 11:11 | hyPiRion | Nothing's like trying to understand swearjure |
| 11:12 | hyPiRion | ,(#([`{~% ~@%&}] (+)) 1 2 3 4) ; swear all the things |
| 11:12 | clojurebot | {1 2, 3 4} |
| 11:12 | ejackson | yuck |
| 11:14 | gfredericks | hyPiRion: ermahgerd |
| 11:15 | gfredericks | so #([`{~% ~@%&}] (+)) == c.c/hashmap |
| 11:15 | hyPiRion | gfredericks: almost, doesn't work for zero input |
| 11:16 | hyPiRion | ,((#([`{~% ~@%&}](+))) |
| 11:16 | clojurebot | #<ExecutionException java.util.concurrent.ExecutionException: java.lang.RuntimeException: EOF while reading> |
| 11:16 | hyPiRion | ,(#([`{~% ~@%&}](+))) |
| 11:16 | clojurebot | #<ArityException clojure.lang.ArityException: Wrong number of args (0) passed to: sandbox$eval85$fn> |
| 11:16 | hyPiRion | there. |
| 11:17 | TimMc | djwonk: ## is the lazybot eval prefix. |
| 11:18 | TimMc | *inline eval |
| 11:20 | djwonk | ,"##trick" |
| 11:20 | clojurebot | "##trick" |
| 11:20 | hyPiRion | oh humm |
| 11:21 | djwonk | TimMc: thanks |
| 11:21 | hyPiRion | ,(println "foo ##(+ 1 2)") |
| 11:21 | lazybot | ⇒ 3 |
| 11:21 | clojurebot | foo ##(+ 1 2)\n |
| 11:21 | djwonk | hyPiRion: that's what I was going for |
| 11:23 | gfredericks | hyPiRion: is there a github repo for this stuff yet? |
| 11:23 | hyPiRion | ,(println "&|(str 1 2 " " 3 4)|&") |
| 11:23 | lazybot | ⇒ "12 34" |
| 11:23 | clojurebot | &|(str 1 2 3 4)|&\n |
| 11:24 | hyPiRion | gfredericks: Hmm, TimMc has done something |
| 11:24 | TimMc | gfredericks: Here's my start: https://github.com/timmc/swearjure |
| 11:25 | TimMc | I'm currently pondering how to handle function calls, since calls to top-level fns have to be handled specially. (An additional first arg, the vector of top level fns, needs to be passed in.) |
| 11:26 | gfredericks | TimMc: are you going to submit a conj talk for this? |
| 11:26 | gfredericks | what is this code supposed to do? translate clojure to swearjure? |
| 11:26 | TimMc | Haha, no -- I want my nice suit to remain tomato-free. |
| 11:27 | TimMc | Yeah, a limited subset of Clojure -> swearjure. |
| 11:27 | gfredericks | it'd have to emit a string, right? |
| 11:27 | TimMc | Unfortunately, yes. |
| 11:28 | TimMc | I'm not looking forward to the pretty-printing code. |
| 11:28 | hyPiRion | TimMc: Pretty-printing swearjure? |
| 11:28 | TimMc | Sure, all that nice indentation. |
| 11:28 | hyPiRion | You're missing the point, sir. |
| 11:28 | TimMc | haha |
| 11:28 | hyPiRion | Well, actually, it would kind of be nice |
| 11:29 | hyPiRion | At least for debugging purposes, I suppose |
| 11:30 | hyPiRion | I have issues with vararg mapv though. |
| 11:30 | hyPiRion | TimMc: No breakthroughs for apply? |
| 11:30 | TimMc | No sir. |
| 11:30 | hyPiRion | Then my master invention still lays at rest. For now. |
| 11:31 | TimMc | I think higher-order functions may be feasible, though. |
| 11:32 | TimMc | I want the input to the swearjure compiler to be runnable, stand-alone, but I suspect that some fancier features will require the use of a shim API. |
| 11:32 | hyPiRion | Returning fns? I'd like to get partial |
| 11:32 | TimMc | The API would contain normal fns, but the compiler would treat references to them as compiler specials. |
| 11:33 | TimMc | hyPiRion: Yes, and I think it may be possible for a swearjure letfn form to return a fn, but I'm not clear on that yet. |
| 11:34 | hyPiRion | oh sweet. If I get partial I can simulate apply. |
| 11:35 | ChongLi | RoboVM |
| 11:35 | ChongLi | this seems really interesting |
| 11:35 | TimMc | hyPiRion: True! |
| 11:36 | ChongLi | anyone looked at it? |
| 11:37 | ChongLi | translate java bytecode to native ARM |
| 11:38 | ChongLi | deploy clojure apps to iphones! |
| 11:50 | vojd | ohoy, i'm looking for resources on how to use noir with lighttable |
| 11:50 | vojd | any tips? |
| 11:53 | hyPiRion | Asking ibdknox would probably be a nice start. Even though he's not maintainer of noir anymore, he should have some tips. |
| 11:53 | hyPiRion | (If he's here, that is) |
| 11:54 | ciphergoth | So I have a variable which is properly global in the live app, but which I shadow with a binding in tests. As part of our test system, I need to call alter-var-root on it, but where it's shadowed I need to call set! |
| 11:55 | ciphergoth | How do I test whether a var is shadowed by a binding, ie whether set! will throw an exception? |
| 11:56 | vojd | hyPiRion: true, i'll do that :) |
| 11:57 | hyPiRion | vojd: But to really answer your question, I think noir has some github examples up |
| 11:57 | hyPiRion | I know ibdknox has an example regarding a Noir blog for instance |
| 12:02 | augustl | are there any existing middlewares for doing plain http auth? |
| 12:03 | yogthos | vojd: just be aware that noir is mostly deprecated nowadays |
| 12:03 | vojd | yogthos: aha! what do you recommend instead of noir? |
| 12:03 | hyPiRion | augustl: "plain" is probably not the word I'd do, but friend is good |
| 12:03 | hyPiRion | /s/do/use |
| 12:03 | gfredericks | what's a top-level fn? |
| 12:03 | yogthos | vojd: compojure+ring is the current recommended approach, I setup a template for getting started here http://www.luminusweb.net/ |
| 12:03 | gfredericks | oh whoops |
| 12:04 | augustl | hyPiRion: cool, thanks |
| 12:04 | hyPiRion | vojd: +1 on what yogthos said, plus hiccup as rendering engine |
| 12:04 | vojd | yogthos: many thanks! |
| 12:04 | arcatan | how do i test if a value is an element of a sequence? |
| 12:04 | gfredericks | arcatan: (some #{val} sequence) |
| 12:05 | yogthos | vojd: all the useful stuff from noir has been moved to lib-noir and that's actively maintained |
| 12:05 | vojd | yes i'm all in for hiccup. i did some stuff in noir about a year ago and thought i should go back to it |
| 12:05 | yogthos | vojd: no problem :) |
| 12:05 | vojd | but i had no idea it was deprecated. so thanks :) |
| 12:05 | arcatan | gfredericks: right, thanks |
| 12:05 | stain_ | anyone know of a way to use a EBNF-based grammar? I looked at fnparse, but as far as I understand I would have to reformulate the EBNF rules using Clojure code |
| 12:06 | hyPiRion | stain_: I've looked and looked, but it currently seems like Antlr is your best bet. |
| 12:07 | stain_ | uhrgh |
| 12:08 | stain_ | well, thanks anyway :) |
| 12:08 | stain_ | antlr is not quite EBNF either, is it |
| 12:08 | hyPiRion | stain_: I'm really bothered by it :( |
| 12:08 | hyPiRion | I think it is, but not sure. |
| 12:08 | stain_ | but a bit easier to searc/replace your way into |
| 12:08 | stain_ | well. EBNF itself does not have a proper grammar, so they can't agree on what is the definition symbol.. ::= or = or :: or what |
| 12:08 | hyPiRion | It's better than Bison at least |
| 12:09 | stain_ | hee, yeah |
| 12:10 | craigbro | ragel |
| 12:10 | craigbro | ragel = lexer/parser engine |
| 12:12 | stain_ | but it does not to EBNF..? |
| 12:14 | craigbro | no, you would have to translate |
| 12:19 | michaelr525 | hello |
| 12:25 | michaelr525 | hmm.. looks like enfocus doesn't have the parallel of jQuery's 'on' |
| 12:25 | Anderkent | is there something like 'boolean?' ? |
| 12:27 | hyPiRion | Anderkent: boolean? |
| 12:27 | hyPiRion | ,(boolean 12) |
| 12:27 | clojurebot | true |
| 12:28 | Anderkent | i want to check whether x is a boolean |
| 12:28 | Anderkent | not cast to boolean |
| 12:28 | hyPiRion | ,(boolean? 12) |
| 12:28 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: boolean? in this context, compiling:(NO_SOURCE_PATH:0)> |
| 12:28 | hyPiRion | oh, hum |
| 12:29 | hyPiRion | ,(instance? true Boolean) |
| 12:29 | clojurebot | #<ClassCastException java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.Class> |
| 12:29 | S11001001 | ,(doc true?) |
| 12:29 | hyPiRion | ,(instance? Boolean true) |
| 12:29 | clojurebot | "([x]); Returns true if x is the value true, false otherwise." |
| 12:29 | clojurebot | true |
| 12:29 | S11001001 | ,(doc false?) |
| 12:29 | clojurebot | "([x]); Returns true if x is the value false, false otherwise." |
| 12:30 | hyPiRion | You could use (instance? Boolean x). |
| 12:31 | S11001001 | ,(supers (class (fn [^Boolean x] (not x)))) |
| 12:31 | clojurebot | #{clojure.lang.IMeta java.lang.Object java.util.Comparator java.lang.Runnable clojure.lang.Fn ...} |
| 12:31 | S11001001 | ,(drop 5 (supers (class (fn [^Boolean x] (not x))))) |
| 12:31 | clojurebot | (java.io.Serializable clojure.lang.IFn clojure.lang.AFunction clojure.lang.IObj clojure.lang.AFn ...) |
| 12:32 | S11001001 | ,(supers (class (fn [^Integer x] (not x)))) |
| 12:32 | clojurebot | #{clojure.lang.IMeta java.lang.Object java.util.Comparator java.lang.Runnable clojure.lang.Fn ...} |
| 12:35 | tiled | How can I convert a string "hello" to hello ? I mean without the quotation marks |
| 12:35 | craigbro | symbol |
| 12:36 | craigbro | (symbol "hello") |
| 12:36 | craigbro | maybe that's not what you meant tho 8^) |
| 12:36 | tiled | it is, works, thank you |
| 12:49 | tiled | I want a function to return a different random int on each call; is there an easy way to do that? |
| 12:49 | jeremyheiler | tiled, does it always have to be different? |
| 12:50 | jeremyheiler | ,(rand-int 100) |
| 12:50 | clojurebot | 77 |
| 12:50 | tiled | but that always return the same value |
| 12:50 | jeremyheiler | ,(rand-int 100) |
| 12:50 | clojurebot | 75 |
| 12:51 | tiled | hmm |
| 12:51 | seangrove | tiled: What do you mean it always returns the same value? |
| 12:51 | tiled | my fault, it doesn't |
| 12:52 | hyPiRion | Beware of the ##(repeat (rand-int 10)) trap. |
| 12:52 | lazybot | java.lang.OutOfMemoryError: Java heap space |
| 12:52 | hyPiRion | &(repeat 10 (rand-int 10)) |
| 12:52 | lazybot | ⇒ (1 1 1 1 1 1 1 1 1 1) |
| 12:52 | hyPiRion | Dangit lazybot, you shouldn't run out of space for that. |
| 12:54 | seangrove | hyPiRion: Raynes doesn't feed lazybot bot much, it's anemic |
| 12:54 | AimHere | &(repeatedly 10 #(rand-int 10)) |
| 12:54 | lazybot | ⇒ (2 2 8 4 4 9 1 5 2 2) |
| 12:54 | hyPiRion | seangrove: Yeah. You hear that, Raynes? Go patch this thing. |
| 12:55 | tiled | (str "/sgf/" (+ 1 (rand-int 700)) ".sgf"))) always return a different value but (io/slurp-resource (str "/sgf/" (+ 1 (rand-int 700)) ".sgf")) always opens the same file |
| 12:59 | jeremyheiler | what is io/slurp-resource? maybe it's caching it somehow |
| 13:00 | jeremyheiler | if i replace it with just slurp in my repl, then it works as expected. |
| 13:01 | tiled | http://www.luminusweb.net/noir-api/noir.io.html |
| 13:01 | seangrove | Can't tell if it's firefox or cljs, but the ff web console blows up with errors using cljs |
| 13:01 | meowcake | I'm new to Clojure and I'm using map across a list of lists. In return, I get one list that contains multiple lists of maps. I've been trying to figure out how to get all those lists of maps into a single list of all the maps. Would somebody be able to point me in the right direction? |
| 13:02 | technomancy | meowcake: maybe mapcat instead of map? |
| 13:03 | meowcake | holy crap |
| 13:03 | meowcake | I feel like an idiot |
| 13:03 | meowcake | THANK YOU TECHNOMANCY |
| 13:03 | technomancy | haha; np |
| 13:03 | seangrove | meowcake: We all go through it, I had the same question awhile ago |
| 13:04 | meowcake | Oh man, I spent about an hour trying to figure this out in all sorts of dumb ways... I love this language and really appreciate the quick (and simple) answer. :) |
| 13:04 | babilen | meowcake: or (apply concat ...) - I would recommend to use mapcat in most places where it makes it the intend clearer. |
| 13:09 | jkkramer_ | tiled: sounds like you might be generating the response at compile time? |
| 13:11 | dnolen | seangrove: is this a new issue for you? |
| 13:11 | seangrove | dnolen: No, just an observation about firefox's webconsole + cljs code |
| 13:11 | dnolen | seangrove: so not an issue in general w/ FF? |
| 13:12 | seangrove | Doesn't affect the running of the program, just a ton of warnings from FF |
| 13:12 | seangrove | Nah, just an annoyance |
| 13:12 | dnolen | seangrove: weird |
| 13:12 | seangrove | Which I've found is pretty standard for ff so far |
| 13:12 | tiled | oh you're right it works now thank you, I always make such stupid mistakes |
| 13:12 | Frozenlock | If I have two vector that I want to reorder in function of one of those two, is there a trivial function to do it? For example, sort this with the second vector: [[:A :B :C :D] [4 3 2 1]] -----> [[:D :C :B :A] [1 2 3 4]] |
| 13:15 | Frozenlock | (sort-by last (partition 2 (apply interleave [[:A :B :C :D] [4 3 2 1]]))) go towards it, but I'm not sure if there's a more elegant way to do it. |
| 13:24 | jkkramer_ | tiled: sgf files -- making a go app? |
| 13:26 | tiled | jkkramer_ nothing complicated, just for replaying a random pro game |
| 13:26 | jkkramer_ | tiled: cool :) |
| 13:48 | S11001001 | Frozenlock: use pop instead of last, unless they changed last (I really doubt it) |
| 13:48 | S11001001 | Frozenlock: also assuming your vecs are vecs and not arbitrary seqs |
| 13:49 | Frozenlock | ,(pop [:a 1]) |
| 13:49 | clojurebot | [:a] |
| 13:50 | S11001001 | what |
| 13:50 | S11001001 | oh, right, the thing that goes with pop |
| 13:50 | S11001001 | ,(doc pop) |
| 13:50 | clojurebot | "([coll]); For a list or queue, returns a new list/queue without the first item, for a vector, returns a new vector without the last item. If the collection is empty, throws an exception. Note - not the same as next/butlast." |
| 13:50 | dnolen | peek |
| 13:50 | ChongLi | hmmm |
| 13:50 | dnolen | ,(peek [:a 1]) |
| 13:50 | clojurebot | 1 |
| 13:50 | S11001001 | yeah what dnolen said |
| 13:50 | seangrove | ,(doc peek) |
| 13:50 | clojurebot | "([coll]); For a list or queue, same as first, for a vector, same as, but much more efficient than, last. If the collection is empty, returns nil." |
| 13:50 | ChongLi | GPU Process CPU usage goes from 20% to 100% when going from 55FPS to 60FPS |
| 13:50 | dnolen | ,((jux peek pop) [1 2 3]) |
| 13:50 | ChongLi | does that seem right? |
| 13:50 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: jux in this context, compiling:(NO_SOURCE_PATH:0)> |
| 13:51 | dnolen | ,((juxt peek pop) [1 2 3]) |
| 13:51 | clojurebot | [3 [1 2]] |
| 13:51 | Frozenlock | "much more efficient than last" Sold :P |
| 13:51 | seangrove | Confused why it's first for lists and last for vectors |
| 13:52 | S11001001 | seangrove: I think because it's reversing the order of conjing |
| 13:52 | Frozenlock | ,(let [r (sort-by peek (partition 2 (apply interleave [[:A :B :C :D] [4 3 2 1]])))] [(map first r)(map last r)]) |
| 13:52 | clojurebot | #<ClassCastException java.lang.ClassCastException: clojure.lang.LazySeq cannot be cast to clojure.lang.IPersistentStack> |
| 13:52 | S11001001 | seangrove: which is push to end for vecs, to start for lists/lazyseqs/etc |
| 13:52 | seangrove | Ah, I assumed it was a unified concept at a higher abstract level |
| 13:52 | S11001001 | If your next question is "why doesn't last special-case" then there is a ~100 post thread on clojure google group arguing about this you can read :) |
| 13:53 | AimHere | It's likely to just be the most efficient place to put or take the new element |
| 13:53 | seangrove | Nah, the "contributing to cljs is deliberately difficult" thread was enough to sap my will to real the ml for a bit |
| 13:54 | craigbro | hah |
| 13:55 | S11001001 | ,(pop {:a 1 :b 2}) |
| 13:55 | clojurebot | #<ClassCastException java.lang.ClassCastException: clojure.lang.PersistentArrayMap cannot be cast to clojure.lang.IPersistentStack> |
| 13:55 | S11001001 | eh |
| 13:56 | dnolen | seangrove: peek and pop are fns based on IPersistentStack, so it's whatever operations are most efficient for the particular data type that implements that. |
| 13:56 | Frozenlock | Would `first' be faster than `last' for an arbitrary seqs? |
| 13:57 | seangrove | dnolen: Yeah, shouldn't have thought about the interface it was operating on rather than the underlying structure |
| 13:57 | Frozenlock | For a list yes, but any seqs? |
| 14:00 | S11001001 | Frozenlock: yes first is faster than last for anything built-in |
| 14:00 | Frozenlock | Nice, I'll just swap the order of my vectors then. |
| 14:06 | Frozenlock | Nice... my car won't start. I hate cold weather. |
| 14:16 | ejackson | perhaps its lock is frozen ? |
| 14:23 | warz | hmm, how would i build leiningen from the git repo? |
| 14:24 | Frozenlock | ejackson: Ouch |
| 14:24 | bbloom | warz: i think you just use lein normally, but throw in a trampoline |
| 14:24 | bbloom | warz: lein trampoline compile |
| 14:25 | bbloom | but there is a #leiningen where it might be better to ask |
| 14:26 | Frozenlock | Cold... cars stop working, but the Internet carries on. I'm ok with that. |
| 14:27 | jsabeaudry | Am I correct to think that there are no syntax changes in 1.5? It's all bugfix and enhancements behind the covers? |
| 14:27 | technomancy | warz: see "bootstrapping" in the CONTRIBUTING file |
| 14:39 | amalloy | well, i was about to say there are never syntax changes in a new release of a lisp |
| 14:40 | amalloy | but 1.3 introduced record literals, 1.4 introduced tagged literals... |
| 14:41 | amalloy | jsabeaudry: afaik there are no changes to the reader in 1.5. but your question is quite a false dichotomy: it's perfectly possible for there to be no syntax changes, and yet many things which are neither bugfixes nor behind-the-scenes/performance enhancements |
| 14:41 | Bronsa | amalloy: 1.5 fixed reading +1/3 |
| 14:42 | amalloy | reading that was a goal? |
| 14:42 | Bronsa | ,-1/3 |
| 14:42 | clojurebot | -1/3 |
| 14:42 | Bronsa | ,+1/3 |
| 14:42 | clojurebot | #<ExecutionException java.util.concurrent.ExecutionException: java.lang.NumberFormatException: For input string: "+1"> |
| 14:49 | cemerick | zby: ping |
| 14:50 | cemerick | zby: anyway, whenever you see this: you're applying the middleware in the wrong order: should be wrap-keyword-params wrap-nested-params wrap-params |
| 14:51 | amalloy | cemerick: i think a left-to-right ordering may not be very helpful, because a lot of people will be applying them in reverse order with -> |
| 14:52 | amalloy | (wrap-keyword-params (wrap-nested-params (wrap-params handler))) is more clear |
| 14:52 | gfredericks | so comp would work well |
| 14:53 | cemerick | amalloy: the left-to-right ordering is meant for -> (which is what zby is using, anyway) |
| 14:54 | cemerick | (wrap-keyword-params (wrap-nested-params (wrap-params handler))) is wrong ;-) |
| 14:58 | gfredericks | is there any perf penalty for using an Integer instead of a Long? |
| 14:59 | Raynes | (type (+ (int 3) (int 3))) |
| 14:59 | Raynes | &(type (+ (int 3) (int 3))) |
| 14:59 | lazybot | ⇒ java.lang.Long |
| 15:02 | SegFaultAX | &(type (+' 3 3)) |
| 15:03 | lazybot | ⇒ java.lang.Long |
| 15:03 | gfredericks | &(type (+' 1 (Long/MAX_VALUE))) |
| 15:03 | lazybot | ⇒ clojure.lang.BigInt |
| 15:03 | gfredericks | &(type (+ 1 (Long/MAX_VALUE))) |
| 15:03 | lazybot | java.lang.ArithmeticException: integer overflow |
| 15:05 | 16WAABC47 | cemerick - I am at home now :) I'll check the fix in a minute :) |
| 15:12 | anars | can I have lein-ring 0.8.2 use clojure 1.4 instead of clojure 1.2.1, which it pulls in automatically when I run 'lein deps'? |
| 15:17 | muhoo | umm, &&(BigInteger. 1) |
| 15:17 | muhoo | umm, &(BigInteger. 1) |
| 15:17 | muhoo | &(BigInteger. 1) |
| 15:17 | lazybot | java.lang.IllegalArgumentException: No matching ctor found for class java.math.BigInteger |
| 15:17 | muhoo | yeah, that. why? |
| 15:17 | hyPiRion | muhoo: ##(bigint 1) |
| 15:17 | lazybot | ⇒ 1N |
| 15:18 | muhoo | hthanks |
| 15:18 | muhoo | &(type (bigint 1)) |
| 15:18 | lazybot | ⇒ clojure.lang.BigInt |
| 15:19 | muhoo | no |
| 15:19 | Bronsa | ,(type (biginteger 1)) |
| 15:19 | clojurebot | java.math.BigInteger |
| 15:19 | muhoo | better, thanks |
| 15:19 | patrkris | hi folks. how do I use Clojure 1.5 when running `lein repl'? i have already included clojure 1.5.0-RC2 in project.clj |
| 15:20 | seangrove | ,(doc get) |
| 15:20 | clojurebot | "([map key] [map key not-found]); Returns the value mapped to key, not-found or nil if key not present." |
| 15:20 | hyPiRion | patrkris: It should work out of the box then. |
| 15:20 | amalloy | then you're using it |
| 15:20 | muhoo | why there is a bigint vs biginteger in the first place, is a question i won't wory about atm. |
| 15:20 | patrkris | but *clojure-version* says 1.4.0 |
| 15:20 | patrkris | hyPiRion: ^ |
| 15:20 | hyPiRion | patrkris: refheap the project map |
| 15:20 | hyPiRion | or are you using `lein repl` outside of the project? |
| 15:21 | patrkris | hyPiRion: ok, I must have done something wrong before... now it works, sorry :) |
| 15:22 | patrkris | by the way, since lein-ring has clojure 1.2 as a dependency, will it use that or clojure 1.5 specified in my projects project.clj? |
| 15:22 | hyPiRion | patrkris: It will use the highest one |
| 15:23 | patrkris | cool, thanks |
| 15:43 | Slotkenov | hi there |
| 15:43 | AtKaaZ | L.O. |
| 15:49 | Slotkenov | Is this the right place for clojure chat? |
| 15:50 | ChongLi | Slotkenov: yep |
| 15:50 | hyPiRion | ,(println true) |
| 15:50 | clojurebot | true\n |
| 15:51 | Slotkenov | cool, i'm new her, new to irc and new to clojure |
| 15:51 | ChongLi | that's great! |
| 15:51 | ChongLi | we always want new people trying clojure |
| 15:52 | S11001001 | ,(if (Boolean. false) true false) |
| 15:52 | clojurebot | true |
| 15:52 | S11001001 | Delete all files? |
| 15:53 | Slotkenov | i've been reading clojure for almost a year now, so I know quite a lot about it, but never got my hands dirty |
| 15:53 | ChongLi | now is as good a time as any! |
| 15:54 | Slotkenov | trying to change that now yeah |
| 15:54 | Slotkenov | running into a problem I havn't before though |
| 15:54 | augustl | weavejester isn't online, has the world ended? |
| 15:55 | Slotkenov | when running lein repl I get the following excepion: Exception in thread "main" java.lang.ExceptionInInitializerError at clojure.main.<clinit>(main.java:20) Caused by: java.lang.RuntimeException: Unable to resolve symbol: defn in this context, compiling:(clojure/core.clj:3) |
| 15:56 | ChongLi | hmm |
| 15:56 | Slotkenov | looks like a problem in clojure itself, but thats probably not it... |
| 15:56 | Slotkenov | or is it? |
| 15:56 | ChongLi | have you tried blowing away your ~/.m2 |
| 15:56 | Raynes | Chances are those words have no meaning to him at this point. |
| 15:57 | ChongLi | lein will re-download everything in there |
| 15:57 | Slotkenov | yes, tried that already |
| 15:57 | Raynes | Oh, neat. |
| 15:57 | Raynes | You're way on top of things Slotkenov. |
| 15:57 | technomancy | Slotkenov: what's the context here? in a specific project or everywhere? |
| 15:58 | Slotkenov | well, this is in a project, but that has just been created with lein new |
| 15:58 | Slotkenov | can try it outside a project though |
| 15:58 | zeussphinx | Slotkenov: try outside a project and see if you get same error |
| 15:58 | technomancy | also: how did you install leiningen? |
| 15:59 | Slotkenov | ok, outside it works fine |
| 15:59 | ChongLi | and do you have any version of clojure installed by your OS package manager? |
| 15:59 | Slotkenov | so has to do something with the project |
| 15:59 | Slotkenov | I installed it a while back, with the sef installing batch i believe |
| 15:59 | hyPiRion | I feel like everyone's storming Slotkenov, trying to help him. |
| 15:59 | ChongLi | hahaha |
| 16:00 | Slotkenov | :) a warm welcome |
| 16:00 | hyPiRion | looks like people are fighting for the right to help him |
| 16:00 | AtKaaZ | ,'true |
| 16:01 | clojurebot | true |
| 16:01 | ChongLi | I'll yield to technomancy, seeing as he's the author of leiningen |
| 16:01 | technomancy | ChongLi: I suspected OS-level package manager issues too, heh |
| 16:01 | Slotkenov | I removed the project, just to be sure. Now when I do lein new clojure, cd clojure, lein repl |
| 16:01 | Slotkenov | get the same exception again |
| 16:02 | AtKaaZ | what was the name of the previous project? |
| 16:02 | Slotkenov | the same; clojure |
| 16:02 | hyPiRion | Slotkenov: Oh right. Try to name it something else than clojure, and check. |
| 16:02 | technomancy | oh dear... we should probably blacklist that =\ |
| 16:02 | AtKaaZ | awesome |
| 16:02 | Slotkenov | oh.. would that be conflicting |
| 16:02 | hyPiRion | Slotkenov: Perhaps? :p |
| 16:03 | technomancy | hate to break it to you, but that name is taken =) |
| 16:03 | AtKaaZ | technomancy: maybe it should check if projectname is the same as any included dependencies? |
| 16:04 | Slotkenov | yes, that was the problem |
| 16:04 | Slotkenov | thanks a bunch |
| 16:04 | ChongLi | also |
| 16:04 | ChongLi | what version are you running? |
| 16:04 | ChongLi | leiningen 2 just came out recently |
| 16:04 | ChongLi | and it's very nifty |
| 16:04 | technomancy | AtKaaZ: the problem is looking at :dependencies doesn't tell you anything about the namespaces inside those jars |
| 16:04 | Slotkenov | is it? already did an upgrade |
| 16:05 | technomancy | but ... hm. you could inspect the search indices and see if there's a conflict there. |
| 16:05 | ChongLi | lein --version |
| 16:05 | technomancy | wouldn't have caught this particular one though since it's org.clojure |
| 16:14 | AtKaaZ | ,(map println '(1)) |
| 16:14 | clojurebot | (1\nnil) |
| 16:14 | gfredericks | is (.println System/err ...) the normal way to print to stderr? (binding [*out* *err*] ...) seems silly |
| 16:15 | gfredericks | (silly in the case of a single call at least) |
| 16:16 | AtKaaZ | (makes sense to me) |
| 16:20 | Raynes | gfredericks: I've always just used binding. |
| 16:24 | hyPiRion | ,(binding [*out* *err*] (println :foo)) |
| 16:24 | clojurebot | :foo\nnil |
| 16:24 | hyPiRion | what's up with clojurebot's newlines nowadays? |
| 16:24 | AtKaaZ | flood protection maybe |
| 16:25 | hyPiRion | maybe |
| 16:28 | hiredman | how does partial-map work? |
| 16:28 | hiredman | https://github.com/clojure/core.logic/blob/master/src/main/clojure/clojure/core/logic.clj#L2818 |
| 16:28 | hiredman | PMap has no fields |
| 16:29 | rodnaph | in core.logic how do i express not equal? something like (=/= x y) ? |
| 16:29 | hiredman | (map->PMap m) is called with an arg |
| 16:29 | hiredman | != is disequality |
| 16:29 | rodnaph | hiredman: thanks a lot! do you know of any api docs for core.logic, my google fu fails me... |
| 16:35 | weavejester | Hi folks |
| 16:35 | weavejester | Is Programming Clojure still one of the best beginning Clojure books? |
| 16:36 | warz | the 2nd edition, with the white bird on the front? |
| 16:37 | biff_tannen | weavejester this page has some good recommendations https://groups.google.com/d/topic/clojure/lKLQ-bgetTU/discussion |
| 16:37 | weavejester | Yep |
| 16:37 | warz | i bought it and it's still above my head, i think. thats just because i think clojure is difficult for me, coming from C-like languages. |
| 16:37 | ChongLi | I like clojure programming |
| 16:37 | ChongLi | Clojure Programming |
| 16:37 | ChongLi | rather |
| 16:38 | warz | i read the whole thing once through, and clojure still looks like some alien language to me. haha. |
| 16:38 | ChongLi | the o'reilly one |
| 16:38 | ChongLi | warz: are you a lisp programmer? |
| 16:38 | warz | i think i need something like a clojure by example book or something |
| 16:38 | warz | no this is my first lisp |
| 16:38 | ChongLi | you might do well with SICP |
| 16:39 | ChongLi | it starts right from the ground up with no knowledge of programming at all required |
| 16:39 | ChongLi | it's pretty amazing how quikly you'll learn lisp from it |
| 16:42 | cemerick | warz: Perhaps try the first chapter of http://clojurebook.com (available free there) |
| 16:44 | rodnaph | in core.logic - if i know (likes x y) - how would i express a goal that (not (likes x y)) - ie. hates |
| 16:46 | hiredman | the non-recursive nature of featurec is a drag |
| 16:46 | andres-v | warz: Just to add another one to your list that I think is great and helps to ignite the right state of mind: "The Little Schemer" |
| 16:47 | dnolen | hiredman: partial-map is an implementation detail of featurec |
| 16:47 | weavejester | biff_tannen: Thanks for the link |
| 16:48 | rodnaph | in core.logic - if i know (likes x y) - how would i express a goal that (not (likes x y)) - ie. hates. beginner question i know, but any tips dnolen? thanks |
| 16:49 | dnolen | rodnaph: there's no support for negation at this time. negation is pretty tricky. |
| 16:49 | AtKaaZ | does not likes mean hates? or is just somewhere in between? |
| 16:49 | rodnaph | dnolen: bummer... ok thanks for the info. |
| 16:50 | dnolen | rodnaph: if it's any consolation - negation is still a tricky/difficult problem for Prolog-like languages to this day. |
| 16:50 | hiredman | dnolen: right, I figured that out |
| 16:51 | rodnaph | dnolen: a little consolation, though it does make my problem of working out teams of people who get on with eachother a little trickier ;) |
| 16:52 | hiredman | dnolen: I want featurec to be recursive, the values acan be maps I want to partially unify with them |
| 16:53 | dnolen | hiredman: it's unsound to allow partial maps to leak into the system. |
| 16:54 | hiredman | sure, but is there someway to make featurec recursive like that? so submaps can be partially specificed? |
| 16:54 | zby_home | cemerick: I tried all kinds of ordering : |
| 16:54 | zby_home | https://gist.github.com/4628280 |
| 16:54 | dnolen | hiredman: oh, right - hmm that's useful and not hard to implement |
| 16:55 | dnolen | hiredman: feel free to open an enhancement ticket and I will look into it. |
| 16:55 | zby_home | ah - sorry |
| 16:55 | zby_home | now it is OK |
| 16:55 | zby_home | I am just too tired |
| 16:57 | hiredman | http://dev.clojure.org/jira/browse/LOGIC-108 |
| 16:57 | dnolen | hiredman: sweet, thanks |
| 16:57 | hiredman | I'll update it there if I figure out how to do it, which seems unlikely |
| 16:59 | dnolen | hiredman: heh, it's ok, I'll probably take a look tomorrow or Saturday. |
| 16:59 | dnolen | hiredman: you can do it now w/ multiple featurec calls of course, but that's a bit tedious |
| 17:04 | hiredman | dnolen: yeah, I noticed how tedious the multiple featurec calls is :) |
| 17:04 | pandeiro | is lein deploy working differently now for clojars? |
| 17:07 | technomancy | pandeiro: different from what? |
| 17:07 | pandeiro | technomancy: my bad, forgot the command |
| 17:07 | pandeiro | ut works fine |
| 17:09 | rodnaph | core.logic: i'm trying to write a goal that asserts there's a man in a list - https://www.refheap.com/paste/8933 - but the results are pairs of results and fresh vars - seems i've really misunderstood something... |
| 17:21 | dnolen | rodnaph: I think you need a base case for when you hit the end of the list. |
| 17:21 | dnolen | rodnaph: you should look at membero |
| 17:21 | amalloy | dnolen: he also needs (meno xs), not (meno y) |
| 17:22 | rodnaph | amalloy: won't that just infinitely recurse? |
| 17:22 | amalloy | oh, i misread it. sorry |
| 17:22 | rodnaph | dnolen: i had that, but it meant an empty list would be a success... but i'll keep working on it. |
| 17:25 | dnolen | rodnaph: I would help more but a bit tied up at the moment. It's a little bit trickier to do than membero but only a little bit. |
| 17:26 | rodnaph | no problem, thanks for answering anyway! my questions probably don't quite make sense yet, heh. |
| 18:41 | nbessi | Hello |
| 18:44 | nbessi | Sorry to bother you but I'm little stuck with probably a basic problem. So if somebody has five minutes to help a noob... |
| 18:45 | nbessi | I'm looking to the best way to have a custom get behavior on hashmap |
| 18:45 | nbessi | like __getitem__ in Python |
| 18:46 | brehaut | nbessi: back up a step. why are you wanting that? |
| 18:47 | nbessi | I want to define a record in a abstaction library to interface an business object framework |
| 18:48 | brehaut | i seems like you might be trying to model your system like an OO system is all. |
| 18:48 | nbessi | I want to use be able to do lazy loading of relation |
| 18:48 | nDuff | nbessi: ...so, the direct answer is probably a suggestion to look an the implementation of bean in the standard library. |
| 18:48 | weavejester | nbessi: So kinda like an ORM? |
| 18:49 | nDuff | nbessi: ...the less-direct answer is that what you're doing smells likely to have a more idiomatic approach available. |
| 18:49 | S11001001 | except to use something other than proxy |
| 18:49 | S11001001 | like a function |
| 18:49 | weavejester | If you have lazy loading of data, the common Clojure solution is to use a ref |
| 18:49 | weavejester | Or something deref-able, rather |
| 18:50 | weavejester | Or a lazy seq, if there is more than one thing you want to retrieve. |
| 18:50 | nDuff | nbessi: anyhow, bean is at https://github.com/clojure/clojure/blob/master/src/clj/clojure/core_proxy.clj#L372 |
| 18:50 | nbessi | I'm new to clojure and I have writen this https://github.com/nbessi/carcajou |
| 18:50 | nDuff | nbessi: ...and shows you a custom implementation of APersistentMap |
| 18:50 | augustl | this is a dull stack trace to debug.. https://www.refheap.com/paste/8940 Getting it when I set :session in a ring response (using ring.middleware.session) |
| 18:50 | augustl | absolutely nothing relevant in it :) |
| 18:51 | weavejester | augustl: Try adding an explicit dependency for clj-stacktrace 0.2.5 |
| 18:51 | augustl | weavejester: will do |
| 18:51 | weavejester | Or use Ring 1.1.8, which I believe has that dependency |
| 18:51 | weavejester | augustl: It looks like you're running across a bug in clj-stacktrace 0.2.4 |
| 18:51 | augustl | weavejester: I'm using [lein-ring "0.8.0"] |
| 18:52 | nbessi | nDuff: Thanks |
| 18:52 | weavejester | augustl: Try 0.8.2 :) |
| 18:52 | augustl | seems 0.8.2 is the latest |
| 18:52 | augustl | weavejester: ^^ |
| 18:52 | augustl | weavejester: btw, regarding the CSRF/XHR issue, I haven't been able to find any good sources there. |
| 18:52 | weavejester | augustl: I'll look it over tomorrow |
| 18:52 | xeqi | csrf/xhr issue? |
| 18:53 | augustl | xeqi: it's difficult to do POSTs with XHR where the body only is JSON when using weavejester's ring-anti-forgery |
| 18:53 | augustl | xeqi: https://github.com/weavejester/ring-anti-forgery/pull/11 |
| 18:53 | augustl | it's just an enhancement for convenience, no security flaws :) |
| 18:54 | xeqi | ah |
| 18:54 | augustl | currently I would have a form encoded body where the JSON was in one of the parameters, instead of just having the json directly in the body |
| 18:54 | augustl | weavejester: awesome, got a proper stack trace now :) |
| 18:54 | augustl | "java.security.InvalidKeyException: Invalid AES key length: 8 bytes" |
| 18:55 | augustl | where's the type of keys you can give the cookie store documented? |
| 18:55 | weavejester | augustl: Oh, they need to be AES keys |
| 18:55 | weavejester | Which means 8, 12 or 16 bytes, I believe |
| 18:56 | augustl | I see |
| 18:56 | weavejester | Best option is to randomly generate them with crypto-random or something. |
| 18:56 | augustl | so a string with 16 single byte characters should do? :) |
| 18:57 | weavejester | augustl: I think it needs to be a byte array, but yes... |
| 18:57 | augustl | ah |
| 18:57 | weavejester | Although keys should be randomly generated when possible. |
| 18:57 | augustl | pwgen -s to the rescue |
| 18:58 | augustl | not sure what its entropy source is though, will use a proper generator for the production key :) |
| 18:58 | augustl | this is just for dev |
| 18:59 | nbessi | I think your right my approachy is fishy I should probably use a multi args function that takes keyword suite |
| 19:01 | augustl | weavejester: regarding the csrf/xhr thing, it would seem that using the random token for XHR to is safest, since for all we know in HTML6 you can set arbitrary headers from a <form> |
| 19:02 | nbessi | It is sometime hard to switch paradigm, thanks for the time, regards |
| 19:20 | francis | Does anyone know of a tool that finds public functions/defs and makes them private? Or some suggestions as to the libaries one would use to make such a thing? |
| 19:21 | TimMc | francis: You want to find all defn statements in a file and makes them defn- statements? |
| 19:22 | francis | TimMc: Yes, but with the condition that they are only referenced within that file. (by grepping the project most likely) |
| 19:23 | francis | Obviously this wouldn't catch all cases, but if you had a codebase where noone used private fns it could really help |
| 19:24 | technomancy | francis: not exactly, but I have some code that can scan clojuresphere and tell you which projects depend on yours and will run their tests so you can see if changes you are going to make will break them |
| 19:24 | technomancy | https://github.com/Seajure/melange |
| 19:27 | TimMc | brb, adding a project that depends on everything and has malicious code in its tests |
| 19:30 | francis | technomancy: not really what I was asking, but very cool. If I have some time this weekend I'll see about getting it working. |
| 19:31 | technomancy | francis: you might also find slamhound relevant; it has logic for making changes to a namespace and seeing if the project will still compile |
| 19:31 | technomancy | though that's rather brute-force; you could probably come up with something smarter =) |
| 19:32 | francis | technomancy: RE: slamhound - I'm still not sure how to fix the macro/quoting issue other than to prompt the user and ask them to check what deps should be there. |
| 19:33 | technomancy | francis: yeah, I think some manual annotation is required |
| 19:33 | technomancy | I wish there were a fully-automated solution, but I'm just not seeing it |
| 19:33 | technomancy | francis: do you work with alex baranosky? |
| 19:34 | francis | technomancy: yes |
| 19:34 | technomancy | cool |
| 19:43 | wei_ | what does this error mean? Can't change/establish root binding of: *cljs-ns* with set |
| 19:43 | wei_ | I think it's nrepl-related. here's the context: https://gist.github.com/4630437 |
| 19:43 | wei_ | I'm trying to start a repl programmatically and upgrade it to a browser-repl |
| 20:00 | devn | Anyone have an nrepl config with syntax highlighting, proper indentation, arg hints, and paredit? |
| 20:01 | technomancy | devn: arg hints are just eldoc |
| 20:02 | technomancy | oh, but you have to turn it on after nrepl connects. hang on. |
| 20:02 | technomancy | (add-hook 'nrepl-connected-hook (defun add-clojure-mode-eldoc-hook () (add-hook 'clojure-mode-hook 'turn-on-eldoc-mode))) |
| 20:02 | technomancy | not sure what you're looking for; the rest of it should just work |
| 20:03 | tomoj | I wondered why I no longer had arg hints |
| 20:03 | tomoj | I was just M-.'ing all the time |
| 20:07 | ninjudd | technomancy: i just tried calling 'turn-on-eldoc-mode manually in a buffer that has nrepl running, and no luck |
| 20:11 | technomancy | hm; not sure then |
| 20:11 | aphyr | What's the best way to test code which invokes a function I have no control over? |
| 20:11 | technomancy | wait, in the nrepl buffer or in clojure-mode? |
| 20:11 | aphyr | e.g. I've got a function that calls postal.core/send-message, but since it's not a dynamic var I can't re-bind it in my tests |
| 20:12 | ninjudd | technomancy: in the clojure file |
| 20:12 | cbp` | I just use emacs live, on windows at least, since I couldn't get anything to run properly on windows, it wouldn't even connect to nrepl |
| 20:14 | technomancy | aphyr: with-redefs? |
| 20:15 | aphyr | What the WHAT? |
| 20:16 | aphyr | technomancy: wow, yeah, that's exactly what I needed. Thanks. |
| 20:16 | aphyr | Yeah, wow. Still discovering clojure.core I guess. |
| 20:17 | technomancy | it's not used much (at all, hopefully) outside tests |
| 20:35 | devn | technomancy: one thing i seem to consistently run into with nrepl is that im not sure how the heck to restart it |
| 20:35 | devn | like if i update project.clj and nrepl-jack-in, it seems to allow me to start a new nrepl session, but if i go to eval a form i get something like: "No such namespace" |
| 20:35 | devn | ive tried nrepl-restart and stuff to no avail |
| 20:37 | nDuff | devn: are you require'ing your namespaces? |
| 21:21 | brainproxy | running into an interesting issue with ring |
| 21:22 | brainproxy | so apparently Microsoft's xhr is super picky about whether there is a Last Modified header in a response |
| 21:22 | brainproxy | if not, it just assumes it can use a cached response |
| 21:23 | brainproxy | I've not seen any other clients behave in this way -- various browsers, programmatic things, curl, wget |
| 21:23 | brainproxy | but essentially, i can make a request to my ring-based web server, and it will go through the first time |
| 21:24 | brainproxy | but subsequent requests are never getting through, as the WinJS.xhr assumes it can reuse the last response |
| 21:24 | akhudek | brainproxy: eww. I guess a custom middleware that always sets the last modified to "now" would work. Ugly though. |
| 21:25 | brainproxy | akhudek: yeah, pretty ugly |
| 21:25 | amalloy | that's not even a correct treatment of last-modified |
| 21:25 | tomoj | you mean because the first response doesn't have a Last-Modified? |
| 21:25 | brainproxy | tomoj: from what I gather, yes |
| 21:25 | tomoj | if it does, it fixes it? |
| 21:26 | brainproxy | well i'm not sure "fixes" it is the right way to put it |
| 21:28 | tomoj | I mean, if the first response has a Last-Modified, the second goes through? |
| 21:28 | tomoj | second request |
| 21:28 | brainproxy | i haven't modified ring yet |
| 21:28 | brainproxy | my app i mean |
| 21:28 | brainproxy | but after supper I will try a middleware approach per akhudek |
| 21:28 | tomoj | oh, I vaguely remember some stuff about XHR caches and adding nonce query params to urls |
| 21:29 | tomoj | (doubtful that Last-Modified will help you) |
| 21:29 | brainproxy | yeah, but that's ... awful |
| 21:29 | brainproxy | setting last modified in the request definitely did not help |
| 21:29 | brainproxy | i mean if modified since |
| 22:43 | milos_cohagen | stupid q.. if i have expr which evaluates to a string with newlines in it, and the repl displays value, how can i have the repl print the string value with actual newlines instead of '\n' chars |
| 22:44 | TimMc | milos_cohagen: println |
| 22:45 | milos_cohagen | doh thx was using prn |
| 22:45 | milos_cohagen | tyvm |
| 23:01 | fbru02 | hey guys ... I was a user of slime and now nrepl and having some issues |
| 23:08 | nDuff | fbru02: You're more likely to get a response if you ask a question. :) |
| 23:09 | fbru02 | nDuff: fair enough , for example M-x eval buffer is not working anymore ... anybody seen that ? |
| 23:10 | nDuff | fbru02: Is that what's bound to C-c C-k? Because that still works fine for me. |
| 23:11 | fbru02 | nDuff: nice... didn't know the keys , wonder why doing it from the minibuffer doesn't work |
| 23:12 | nDuff | Ahh -- C-c C-k is nrepl-load-current-buffer |
| 23:12 | nDuff | so it's not the same call as eval-buffer |
| 23:17 | fbru02 | nDuff: thanks man , will look more into methods nampesaced with nrepl... before in slime you could use eval-buffer I guess not the case anymore |
| 23:17 | fbru02 | in slime-swank I mean |
| 23:17 | nDuff | *nod*. |
| 23:30 | tomoj | I can't use eval-buffer in slime-swank |
| 23:30 | tomoj | there is a slime-eval-buffer though |
| 23:38 | fbru02 | tomoj: yes, maybe I was think wrong |
| 23:51 | nDuff | Hrm.. |
| 23:58 | rationalrevolt | With ring, can some one help me understand why passing a var to run-jetty allows me to reload code and have it reflect immediately? (run-jetty #'handler {:port 8080 :join? false}) |
| 23:59 | nDuff | rationalrevolt: passing the var object means it's involved in the lookup, and can be substituted/replaced. |