2014-09-14
| 00:20 | john2x | cider doesn't automatically load all namespaces defined in a project? Unlike in `lein repl`, where all the project's namespaces are immediately available? |
| 01:08 | amalloy | john2x: uh, lein repl doesn't autoload all your namespaces either. it autoloads the namespace you mark as :main in project.clj, if you set a :main at all. that namespace often transitively loads other namespaces, but that's up to you |
| 01:13 | john2x | amalloy: ah I think I mean 'evals' the namespaces.. it seems in cider, I have to eval a file before I can require it? |
| 01:13 | amalloy | no you don't. you can require files whenever you want |
| 01:15 | john2x | ah right. silly me. I was relying on company-mode to list all available namespaces.. |
| 05:57 | SagiCZ1 | is there a paredit command that swaps first expressions in sexps like this? |
| 05:57 | SagiCZ1 | (foo1 (foo2 x)) --> (foo2 (foo1 x)) |
| 05:58 | SagiCZ1 | no amount of slurping or barfing does this |
| 06:12 | amalloy | SagiCZ1: paredit-convolute-sexp |
| 06:13 | amalloy | if you put point between foo2 and x |
| 06:57 | cfleming | amalloy: What does convolute-sexp actually do? Just swap the two head symbols? |
| 06:58 | cfleming | amalloy: I've never found a good explanation of what it does. |
| 07:03 | cfleming | Actually, I see - the smartparens doc has a better explanation: Move the expressions before point in the current list before the enclosing list. |
| 08:30 | SagiCZ1 | cfleming: we dont have that paredit command in Cursive do we? |
| 08:31 | cfleming | SagiCZ1: No, but now I know how it should work I can implement it. |
| 08:33 | SagiCZ1 | cfleming: alright, great.. not a major feature but it would be nice to have |
| 08:37 | cfleming | SagiCZ1: No doubt, I've wanted it from time to time (now that I know what it actually does) |
| 08:42 | gaverhae | Hi all! Has anyone got any experience with ClojureScript/React on Android? |
| 09:56 | favetelinguis | Why am not my pre condition firering if i call (straights 1) http://lpaste.net/111034 |
| 09:59 | gaverhae | favetelinguis: What's the definition of "deck" ? |
| 09:59 | favetelinguis | [A 2 3 4 5 6 7 8 9 T J Q K] |
| 10:00 | favetelinguis | i want to only be able to call this function with values 2-5 |
| 10:01 | gaverhae | favetelinguis: I get: (straights 1) AssertionError Assert failed: (and (> num-cards 2) (< num-cards 6)) stra.core/straights (form-init7754222051149817257.clj:1) |
| 10:01 | gaverhae | favetelinguis: What's your Clojure version? Any idea what JVM options you've passed? Did you disable assertions in your project.clj? |
| 10:02 | favetelinguis | running in lighttable insta repl |
| 10:02 | gaverhae | favetelinguis: If clojure.core/*assert* is false when the defn form is compiled, pre/post condition code will not be generated |
| 10:02 | favetelinguis | hmm how can i check that value? |
| 10:04 | favetelinguis | looks like it us true |
| 10:12 | gaverhae | favetelinguis: You need to check its value at compile time, so something like putting (println *assert*) at the top level |
| 10:14 | favetelinguis | does the function overall make sense for you? im a clj nood and found cycle to be perfect to represent straights in poker |
| 10:14 | favetelinguis | the let statement is just placeholder and does nothing |
| 10:19 | gaverhae | favetelinguis: I don't know anything about poker; other than that it looks fine. I'd only note that < and > in Clojure cna take multiple arguments, so you could replace (and (> num-cards 2) (< num-cards 6)) with (< 2 num-cards 6) |
| 10:19 | gaverhae | favetelinguis: Oh, and the local binding "cards" is unused, so you could remove it. |
| 10:26 | favetelinguis | ok ty |
| 11:22 | perplexa | hey |
| 11:23 | perplexa | i'm trying to use midje with leiningen in only one specific project. i don't want to add it to my global profiles.clj but rather project.clj and i don't see the midje task in leiningenm. |
| 11:24 | perplexa | i added the following to my project.clj: :dev {:dependencies [[lein-midje "3.1.3"] |
| 11:24 | perplexa | [cascalog/midje-cascalog "2.1.1"]]}} |
| 11:24 | perplexa | anything else i'm missing? |
| 11:25 | clojer | Can anyone explain how eval-ing forms in a core.cljs file works when using a Weasel browser repl? Nothing I eval in this file makes any difference to the connected browser (Chrome). |
| 11:25 | perplexa | regarding my question, i found out, it has to be in :plugins :P |
| 11:25 | clojer | I'm using Emacs (Live) 24/Cider 0.7 |
| 11:31 | perplexa | /wg 24 |
| 11:41 | guest889 | اي عرب مهتمين بكلوجر؟ |
| 11:55 | ethan_ | /msg NickServ IDENTIFY cjs-emacs |
| 12:50 | johnwalker | anyone doing clojurecup? i am looking for a team |
| 12:55 | ro_st | is using future and future-cancel the correct way to start and stop threads in Clojure? |
| 12:56 | justin_smith | ro_st: future is good when the thread should run until it calculates some result, and you want to easily access that result |
| 12:56 | ro_st | i want to have a sleep loop run in its own thread but be able to kill that thread |
| 12:56 | ro_st | so that i can wrap it up in a reloaded Component |
| 12:56 | justin_smith | ro_st: future-cancel only works if the future hasn't started yet, or it checks if its thread is interrupted and acts on that |
| 12:56 | ro_st | i thought maybe to use agents but there's no way to stop one |
| 12:57 | ro_st | should i just interop with java? |
| 12:57 | justin_smith | no |
| 12:57 | ro_st | what should i use? |
| 12:57 | justin_smith | if you don't need a derefable result, you can pass an fn of no args to (Thread. f) |
| 12:57 | dbasch | ro_st: have a shared flag, and have the thread check the flag and exit if set |
| 12:57 | justin_smith | if you want it to be cancellable, you need to make it check for cancellation |
| 12:58 | ro_st | ahhh |
| 12:58 | ro_st | i'll try this. thank you |
| 13:12 | ro_st | what do i use to exit the thread? |
| 13:12 | ro_st | just return? |
| 13:13 | justin_smith | ro_st: put an if or when around your recur |
| 13:13 | justin_smith | if you are looping via recur (as you should) |
| 13:13 | justin_smith | or, do (while (not (.isInterrupted (Thread/currentThread))) ...) |
| 13:13 | justin_smith | there should really be a shortcut for that |
| 13:17 | ro_st | got it. thanks guys |
| 13:23 | irctc | hi, do you know how to filter all true results form a list such as (a b true c true d e f true) -> (a b c d e f)? |
| 13:23 | justin_smith | irctc: filter |
| 13:23 | irctc | yes but I don't know what function to filter with |
| 13:23 | justin_smith | ,(filter #(= true %) '(a b true c true d e f true)) |
| 13:23 | clojurebot | (true true true) |
| 13:23 | justin_smith | ,(remove #(= true %) '(a b true c true d e f true)) |
| 13:23 | clojurebot | (a b c d e ...) |
| 13:24 | irctc | ooh i see |
| 13:24 | justin_smith | sorry, first version was a serious thinko :) |
| 13:24 | justin_smith | short for thinkographical error, of course |
| 13:25 | irctc | can you link me to a reference for the % symbol? I come from clisp and it's something foreign for me |
| 13:25 | justin_smith | ,(macroexpand '#(= true %)) |
| 13:25 | clojurebot | (fn* [p1__79#] (= true p1__79#)) |
| 13:25 | justin_smith | it's a shorthand for "first argument" inside the #() convenience macro |
| 13:26 | justin_smith | (fn [x] (= true x)) would be the same, it's just less friendly to read and write |
| 13:27 | irctc | thanks |
| 13:27 | justin_smith | the one gotcha with #(frob % %2 %3 %&) is that you can't nest more #() forms inside |
| 13:27 | justin_smith | because % would be ambiguous at that point |
| 13:27 | justin_smith | ,(#(reverse %&) 1 2 3 4 5) |
| 13:27 | clojurebot | (5 4 3 2 1) |
| 13:28 | justin_smith | just for completeness' sake :) |
| 13:30 | irctc | oh I see |
| 13:34 | justin_smith | ,(remove #{true} '(a b true c true d e f true)) |
| 13:34 | clojurebot | (a b c d e ...) |
| 13:34 | justin_smith | sets can be used as predicates, this can be useful if you have some set of values to check |
| 13:35 | justin_smith | this fails of course if false and nil are values that should be matched |
| 14:10 | catern | are there any decent videos of Meta-Ex? |
| 14:13 | justin_smith | catern: have you seen what's linked from the official site? http://meta-ex.com/ |
| 14:14 | catern | those are either sound-only recordings or just interviews |
| 14:14 | catern | i want to see them livecoding |
| 14:14 | catern | in fact, they should do a livestream |
| 14:15 | justin_smith | catern: first video, skip to the 15 minute mark |
| 14:15 | catern | (or the equivalent ofc) |
| 14:16 | catern | should I email them and request/suggest that they do a livestream? they've surely already thought of it... |
| 14:19 | catern | or perhaps not... little actually happens in the buffer, it seems |
| 14:20 | catern | or i guess the horrible cameraperson might just not be capturing it |
| 14:22 | catern | would be nice if instead of dirctly linking the hardware and supercollider or whatever, they linked hardware -> emacs buffer (-> overtone -> supercollider) |
| 14:22 | justin_smith | catern: that would be terrible |
| 14:23 | justin_smith | emacs does not to multithreading at all |
| 14:23 | justin_smith | adjusting two knobs at the same time would suck |
| 14:23 | catern | justin_smith: well, then it would be nice if they could do that |
| 14:24 | justin_smith | yes, I guess it would be nice if emacs was threaded. Don't hold your breath. |
| 14:24 | catern | well, even for the pretty-much-single-threaded things |
| 14:24 | justin_smith | sorry, I only get this grumpy because I wish emacs was usable for such things. |
| 14:24 | catern | instead of directly linking hardware -> supercollider, have the hardware modify the code |
| 14:24 | justin_smith | and I tried it extensively, and it only led to pain |
| 14:25 | justin_smith | a clojure process in the jvm can easily be connected to MIDI though |
| 14:25 | justin_smith | and you could use something like cider to update midi state in an emacs view I guess |
| 14:26 | justin_smith | or, better, update the state of the things MIDI is controlling in an emacs view |
| 14:56 | irctc | hi |
| 14:56 | irctc | I have this (incomplete) function |
| 14:56 | irctc | http://pastecode.org/index.php/view/64873765 |
| 14:57 | irctc | and I want to keep doing the same, but calling ciclo once more in each extra line |
| 14:57 | irctc | however, the number of times I want to do that can't be known beforehand |
| 14:58 | irctc | how can I automate it? |
| 14:59 | justin_smith | what is the logic for when (ciclo x) becomes (ciclo (ciclo x)) |
| 15:00 | irctc | (1 2 3 4) -> (4 1 2 3) -> (3 4 1 2) |
| 15:00 | irctc | I want to call it n-1 times |
| 15:00 | irctc | where n is the size of x |
| 15:00 | justin_smith | OK, but the first two elements call just ciclo |
| 15:04 | irctc | oh well I soul've added (take-nth 2 (emparejar equipos (ciclo(ciclo equipos))) |
| 15:05 | irctc | Ibut the issue still remains |
| 15:05 | justin_smith | oh, so you alternate calling with n+1 ciclo calls, and then take the rest |
| 15:06 | irctc | yes, (take-nth 2 (rest ... is just a way to take even-placed elements in the list |
| 15:06 | irctc | without the rest it takes odd ones |
| 15:07 | justin_smith | ,((fn [els] (take (count els) (iterate (fn [l] (cons (last l) (butlast l))) els))) [0 1 2 3 4]) |
| 15:07 | clojurebot | ([0 1 2 3 4] (4 0 1 2 3) (3 4 0 1 2) (2 3 4 0 1) (1 2 3 4 0)) |
| 15:07 | justin_smith | is that the result you expect? |
| 15:08 | corecode_ | hi |
| 15:09 | corecode_ | does the reader somehow retain location information, where a (sub)sexpr was read from? (file/line) |
| 15:10 | justin_smith | corecode_: it adds the file / line data to the metadata of vars |
| 15:10 | justin_smith | ((juxt :file :line) (meta #'map)) |
| 15:10 | justin_smith | ,((juxt :file :line) (meta #'map)) |
| 15:10 | clojurebot | ["clojure/core.clj" 2586] |
| 15:11 | justin_smith | cd |
| 15:11 | justin_smith | silly mouse to focus |
| 15:18 | corecode_ | justin_smith: thanks! |
| 16:58 | Solokeh | what is this room? |
| 17:02 | gfredericks | ~clojure |
| 17:02 | clojurebot | clojure is the bestest programming language available. |
| 17:02 | gfredericks | $google clojure |
| 17:02 | andyf | ~gfredericks |
| 17:02 | clojurebot | gfredericks is a DSL for seeding clojurebot with high-concept talk ideas |
| 17:03 | andyf | That last one is a joke. gfredericks appears fully human in person. |
| 18:27 | ggarciajr | hi all. I'm starting with clojure and I was wondering if anyone can help me with an issue I'm having. |
| 18:28 | danielcompton | ggarciajr: fire away. For future reference you don't need to ask to ask |
| 18:31 | augustl | hyPiRion: random slightly off topic question: how difficult would it be to have a custom memory allocator for c-rrb? I.e. my own GC, a ref counter, whatever. |
| 18:34 | hyPiRion | augustl: I started out with that, but it was too much overhead for the time period of my thesis. It's possible, but you'll have to locate all positions where the refcount increases and decreases (obviously). |
| 18:35 | augustl | hyPiRion: I see, tnx :) |
| 18:35 | hyPiRion | augustl: If it makes the library more suitable for whatever you need it for, file an issue and I'll have a look at it this week |
| 18:36 | augustl | hyPiRion: trying to find an AOT compiled environment with persistent data structures ;) Rust + c-rrb seems like a good option. |
| 18:36 | ggarciajr | Why this works -> (println (str "Tweets downloaded: " (count (map #(extract-tweet-data %) (:statuses (:body downloaded-data)))))) |
| 18:36 | ggarciajr | And this doesn't? -> (let [downloaded-data (search-twitter query count since) tweets (map #(extract-tweet-data %) (:statuses (:body downloaded-data))) tweets-downloaded (count tweets)] (println tweets-downloaded)) |
| 18:36 | augustl | apparently, the clojure community is the only one that can't live without persistent data structures? |
| 18:36 | hyPiRion | ah :) |
| 18:36 | hyPiRion | yeah, I'm pretty frustrated by the limited amount of persistent data structures in other languages |
| 18:37 | augustl | Go seems to say NOPE use message passing |
| 18:37 | ggarciajr | I get this error when trying to execute the second version -> actual: java.lang.ClassCastException: java.lang.Long cannot be cast to clojure.lang.IFn |
| 18:38 | augustl | apparently 4-16 core machines with shared RAM are going away very soon? ;) |
| 18:38 | hyPiRion | Go says no to generics :p |
| 18:38 | hyPiRion | Otherwise it'd be doable |
| 18:39 | augustl | ggarciajr: where does downloaded-data come from in the example that works? |
| 18:39 | augustl | ggarciajr: perhaps the values are different for downloaded-data in your two snippets |
| 18:39 | ggarciajr | it is downloaded from twitter using twitter-api |
| 18:40 | augustl | hyPiRion: if I can get c+rrb working in Rust, there's also https://github.com/michaelwoerister/rs-persistent-datastructures, and then I have everything i need :) |
| 18:40 | augustl | c-rrb* |
| 18:40 | ggarciajr | august1, they are comming from the same function. the data it just a map |
| 18:42 | ggarciajr | btw, tweets type is clojure.lang.LazySeq |
| 18:46 | raspasov | ggarciajr: how does extract-tweet-data look? |
| 18:47 | raspasov | can you put all your code in a github gist or something like that? |
| 18:49 | augustl | oh hey, https://github.com/BartoszMilewski/Okasaki |
| 18:49 | augustl | is there anything C++ doesn't have |
| 18:49 | brehaut | reason? clarity? determinism? |
| 18:49 | ggarciajr | (defn extract-tweet-data [tweet] {:id (:id tweet) :text (:text tweet) :user (extrat-screen-name (:user tweet))}) |
| 18:49 | ggarciajr | (defn extrat-screen-name [user] (:screen_name user)) |
| 18:50 | augustl | seems like C++ has no underlying concepts, just All The Features |
| 18:52 | raspasov | almost everything is possible in any language, it's really what the language makes idiomatic that counts |
| 18:53 | augustl | well, custom memory allocation is not possible in Clojure :) |
| 18:54 | raspasov | yes, almost :D |
| 19:00 | ggarciajr | found the problem. variable shadowing. count was being shadowed :( |
| 19:00 | raspasov | haha ok :) it happens |
| 19:01 | ggarciajr | thanks guys |
| 19:01 | raspasov | anytime you have a question you should post your whole namespace at least, someone with more experience would have spotted that right away |
| 19:02 | ggarciajr | thanks for the tip |
| 19:02 | raspasov | np :) |
| 19:13 | edipofederle | JOIN rubyonrails |
| 19:16 | locks | oops |
| 19:16 | edipofederle | hi |
| 19:23 | edipofederle | exit |
| 19:23 | edipofederle | \EXIT |
| 19:23 | edipofederle | QUIT |
| 19:23 | edipofederle | \QUIT |
| 20:36 | fUD | Helloo |
| 21:29 | johnwalker | campeterson: ping |
| 22:08 | normanrichards | hey |
| 22:09 | gfredericks | ,'hi |
| 22:09 | clojurebot | hi |
| 23:00 | dee5 | Is there any way to namespace qualify a symbol that was created/input to a macro? |
| 23:26 | clojurenoobie | hello!! |
| 23:27 | clojurenoobie | how goes the chat channel? |
| 23:29 | clojurenoobie | I am trying to write a function that given a string, will detect the indexes of a substring of vectors... Having some issues. |
| 23:30 | clojurenoobie | (map (detect-insubstring-function string-to-check-inside %)["item1" "item2" "item"] |
| 23:30 | clojurenoobie | I mean this seems like it would be really straightforward, but I keep keep getting errors... |
| 23:31 | clojurenoobie | I think python has made me a bit overreliant on string parsing magic... |
| 23:31 | clojurenoobie | any ideas? |
| 23:31 | falafel | clojurenoobie: I don't get your example, do you have some real world example of input *and* output |
| 23:37 | xeqi | ,(map #(re-find #"\d" %) ["item1" "item2" "item3"]) |
| 23:37 | clojurebot | ("1" "2" "3") |
| 23:37 | xeqi | clojurenoobie: ^ ? |
| 23:38 | clojurenoobie | Yay, thanks |
| 23:38 | clojurenoobie | one other question, is there an elegant clojurish way to splite a string given a vector of indices? |
| 23:39 | clojurenoobie | I've got a function that works ok right now, but it's kind of ugly |
| 23:44 | justin_smith | clojurenoobie: what is a vector of indexes? |
| 23:58 | justin_smith | ,((fn [s indexes] (map #(apply subs s %) (partition 2 1 (concat indexes [(.length s)])))) "chasefourdiamonds" [0 5 9]) |
| 23:58 | clojurebot | ("chase" "four" "diamonds") |
| 23:58 | justin_smith | that is at least a start |