2012-01-12
| 00:00 | jyaan | maybe a quote missing or something, idk |
| 00:00 | bbhoss | that's the whole file |
| 00:00 | jyaan | just teh add-to-list?? |
| 00:00 | lazybot | jyaan: What are you, crazy? Of course not! |
| 00:03 | jyaan | on github you just posted the error |
| 00:04 | bbhoss | jyaan: on github format: https://gist.github.com/6c67774920f6c1367d58 |
| 00:10 | bbhoss | any idea jyaan? |
| 00:18 | jyaan | ok let's see |
| 00:18 | jyaan | sorry i'm trying to help my brother install his wifi too haha |
| 00:18 | bbhoss | haha np jyaan |
| 00:19 | jyaan | i don't understand it |
| 00:20 | jyaan | well basically what Emacs is saying is that package-archives is unbound |
| 00:20 | jyaan | but you're using emacs 24 which has package.el included right |
| 00:20 | tmciver | bbhoss: do you have the package initialization stuff before the 'add-to-list' line? |
| 00:20 | jyaan | my only guess is to add (require 'package) |
| 00:20 | bbhoss | yeah this is emacs 24, package stuff should be included already I think |
| 00:20 | jyaan | but i thought it was already part of it |
| 00:21 | jyaan | yea exactly |
| 00:21 | bbhoss | so no tmciver, I don't have anything other than that in there |
| 00:21 | jyaan | are you sure you have emacs 24?? |
| 00:21 | lazybot | jyaan: What are you, crazy? Of course not! |
| 00:21 | jyaan | ugh i hate that bot, always does that to me |
| 00:21 | bbhoss | that fixed it |
| 00:21 | tmciver | bbhoss: the begining of my .emacs looks like this: https://gist.github.com/1598928 |
| 00:21 | tmciver | bbhoss: that's before the marmalade stuff |
| 00:21 | bbhoss | This is GNU Emacs 24.0.91.1 (x86_64-apple-darwin, NS apple-appkit-1038.36) of 2011-11-20 on bob.porkrind.org |
| 00:22 | jyaan | that's probably what you need |
| 00:22 | jyaan | i don't use package.el so i wouldn't know |
| 00:22 | tmciver | that would explain the void package-archives var. |
| 00:23 | jyaan | makes sens, package.el probably depends on something else in emacs so they amke you call an init function explicitly to avoid problems |
| 00:57 | scottj | clojurescript libs and messages on ml have really picked up in the last month |
| 00:59 | y3di | whats ml? |
| 01:00 | scottj | mailing list |
| 01:00 | jyaan | ?? |
| 01:00 | lazybot | jyaan: What are you, crazy? Of course not! |
| 01:00 | jyaan | yea thought it would do that |
| 01:00 | jyaan | night |
| 01:45 | tadr | i was expecting 10, 11 tops, people in here |
| 01:45 | tadr | was i wrong |
| 01:46 | bartj | tadr, the Clojure IRC is very active |
| 01:46 | Raynes | Heh. |
| 01:46 | Raynes | I'm not sure why you'd assume such low popularity. |
| 01:46 | tadr | i must be clojist |
| 01:46 | tadr | so, i'm trying to fill in the gaping holes of my java/jvm knowledge as related to clojure |
| 01:46 | bartj | Raynes, Try hanging out at machine-learning, nlp etc |
| 01:47 | Raynes | But this is neither of those things. |
| 01:47 | Raynes | :p |
| 01:47 | tadr | any one have a book title for me? |
| 01:47 | Raynes | Practical Clojure is one. The Joy of Clojure is a more in-depth and less beginnerish book. |
| 01:48 | Raynes | Clojure Programming is coming out soon. |
| 01:48 | Raynes | I'm writing a book, but that one is going to take a while. |
| 01:48 | tadr | so those books cover some java api as well as clojure? |
| 01:50 | Raynes | Well, they tend to focus on what matters in Clojure. There are, of course, some fundamental Java APIs mixed in there, but it wont really teach you Java/Java APIs. |
| 01:52 | tadr | i think i'm going with the manning MEAP on well-grounded java, and then... dunno |
| 02:26 | technomancy_ | brehaut: did I see that you are dispensing Emacs advice now? what happened? |
| 02:27 | Raynes | technomancy_: You! |
| 02:28 | technomancy_ | Raynes: impossible; I only tell people not to use emacs. |
| 02:28 | Raynes | technomancy_: Did you ever get to try out the refheap elisp? I might force it down your throat. |
| 02:29 | technomancy_ | I've been partying basically all day; give me a break |
| 02:29 | Raynes | Hah, for three days? |
| 02:29 | Raynes | I think it was like three days ago that you said you were going to look at it. :p |
| 02:29 | bbhoss | I am back, I finally got emacs rigged up with Clojurescript One, but it's throwing an odd error on something that works fine when running from a "real" shell: https://gist.github.com/d74ea1e5473041abb6f4 |
| 02:30 | technomancy_ | well yesterday was traveling and adding Leiningen to the nix package manager |
| 02:30 | Raynes | technomancy_: Dude! I'm totally installing nix like right now. |
| 02:30 | Raynes | :D |
| 02:30 | technomancy_ | it's basically super mega bonusrad. |
| 02:30 | brainproxy | recommendations for an academic paper, or something write-up, which explores relationship between RESTful concepts and functional programming? |
| 02:31 | brainproxy | s/something/some kind of/ |
| 02:32 | technomancy_ | I'm working on adapting emacs 24 to nix, but makefiles. =( |
| 02:33 | Raynes | technomancy_: wut |
| 02:33 | Raynes | technomancy_: No Emacs on nix? :'( |
| 02:33 | technomancy_ | no 24 yet |
| 02:33 | Raynes | Work harder. |
| 02:34 | Raynes | I was playing with Vim earlier because I wanted to write a refheap plugin for it. Then I looked at gist.vim. And then I stopped. |
| 02:34 | technomancy_ | http://article.gmane.org/gmane.linux.distributions.nixos/7363 |
| 02:34 | Raynes | https://github.com/mattn/gist-vim/blob/master/autoload/gist.vim#L188 |
| 02:34 | Raynes | I thought Emacs's URL package was primitive. This thing is over 1000 lines. |
| 02:34 | technomancy_ | what is this i don't even |
| 02:36 | technomancy_ | I remember reading about a bug in vimscript where the if and else branches in conditionals got swapped. |
| 02:36 | technomancy_ | or something equally outrageous; I wish I could find the link |
| 02:37 | Raynes | I think I'll write a plugin for Sublime Text 2 instead. At least Python knows the order of if and else branches. |
| 02:38 | technomancy_ | is that new in python 3? |
| 02:38 | Raynes | ~rimshot |
| 02:38 | clojurebot | Badum, *tish* |
| 02:39 | Raynes | technomancy_: Gonna run nix in virtualbox with xmonad and pretend OS X isn't installed. |
| 02:40 | technomancy_ | taste demands no less. |
| 02:43 | technomancy_ | Raynes: nixos or nix on another OS? |
| 02:44 | Raynes | technomancy_: nixos |
| 02:44 | technomancy_ | hardcore |
| 03:06 | devn | hmph |
| 03:08 | devn | people (this community included) needs to focus less on building a list of people who approve of using clojure or clojurescript, and focus more on building things other people should be jealous of. |
| 03:08 | devn | s/needs/need/ |
| 03:36 | lpetit | morning |
| 03:42 | angerman | g'morning :) |
| 03:45 | brehaut | technomancy_: sort of! |
| 03:46 | brehaut | technomancy_: although only of the simplest kind |
| 04:16 | kral | devn: I agree with you |
| 05:27 | fhd | Where can I find clojure.contrib.string in the new modularised clojure-contrib? |
| 05:31 | raek | fhd: it's included in clojure itself since 1.2: clojure.string |
| 05:33 | fhd | raek: Ah, thanks :) |
| 05:34 | fhd | raek: Have been using it from clojure-contrib all this time although I was on 1.2 |
| 05:40 | adiabatic | I'm familar enough with list comprehensions from Python like [f(x) for x in xs if p(x)]. What's the difference between :when and :while, though? |
| 05:52 | lpetit | adiabatic: :when skips, :while stops |
| 05:52 | adiabatic | ah, thanks! |
| 05:52 | lpetit | ,(for [x [1 2 3] :when (even? x)] x) |
| 05:52 | clojurebot | (2) |
| 05:52 | lpetit | ,(for [x [1 2 3 4] :when (even? x)] x) |
| 05:52 | clojurebot | (2 4) |
| 05:53 | lpetit | ,(for [x [1 2 3 4] :while (odd? x)] x) |
| 05:53 | clojurebot | (1) |
| 05:53 | lpetit | ,(for [x [1 2 3 4] :when (odd? x)] x) |
| 05:53 | clojurebot | (1 3) |
| 05:53 | adiabatic | What sort of background would you need for this to be obvious? |
| 05:54 | lpetit | ,(for [x [1 2 3 4] :when (odd? x) y [2 3 4 5] :when (even? y) ] (x y)) |
| 05:54 | clojurebot | #<ExecutionException java.util.concurrent.ExecutionException: java.lang.ClassCastException: java.lang.Long cannot be cast to clojure.lang.IFn> |
| 05:54 | lpetit | ,(for [x [1 2 3 4] :when (odd? x) y [2 3 4 5] :when (even? y) ] [x y]) |
| 05:54 | clojurebot | ([1 2] [1 4] [3 2] [3 4]) |
| 05:54 | adiabatic | Be familiar with a language that has dropwhile in it? |
| 05:54 | lpetit | ,(doc for) |
| 05:54 | clojurebot | "([seq-exprs body-expr]); List comprehension. Takes a vector of one or more binding-form/collection-expr pairs, each followed by zero or more modifiers, and yields a lazy sequence of evaluations of expr. Collections are iterated in a nested fashion, rightmost fastest, and nested coll-exprs can refer to bindings created in prior binding-forms. Supported modifiers are: :let [binding-form expr ...], ... |
| 05:55 | adiabatic | yeah, (doc for) just has ":while test, :when test" |
| 05:56 | lpetit | adiabatic: dunno. It's right that the doc is not explicit about it. |
| 05:56 | lpetit | ,(for [x [1 2 3 4] :when (odd? x) y [2 3 4 5] :while (even? y) ] [x y]) |
| 05:56 | clojurebot | ([1 2] [3 2]) |
| 05:57 | lpetit | adiabatic: I should have written :when keeps, not :when skips |
| 05:58 | adiabatic | er, right |
| 06:02 | adiabatic | bedtime here. thanks! |
| 09:22 | tsdh | raek: Do you remember our discussion from yesterday? |
| 09:23 | tsdh | raek: It turned out that calling java methods using Reflector + try/catch is twice as fast as searching the matching method using reflection from clojure. |
| 09:26 | raek | ok |
| 09:27 | tsdh | raek: And its twice as fast in both cases: calling existing methods and calling non-existing methods catching the exceptions. |
| 09:50 | babilen | Hi all -- I am fairly new to Clojure and unsure if a function I've just written is idiomatic or not. You can find it on http://paste.debian.net/152018/ -- The main problem is that "token-stream" is not actually a sequence and that extracting an item of the sequence involves calling (.incrementToken token-stream) first before one is able to get the actual token with (.term term) |
| 09:52 | babilen | I somehow have the feeling that there is a more beautiful way to solve this - I would love to be able to actually turn token-stream into a real sequence, by defining a "step" function that will be called to get the next item in the sequence. Would that be possible or is that function actually fine? |
| 09:52 | joegallo | i think you want lazy-seq, brother |
| 09:56 | joegallo | here's how i did the same thing (roughly) once: https://gist.github.com/44c5f71da6aa3b5383c8 |
| 09:58 | tsdh | joegallo: fn is still not concise enough. :-) |
| 09:59 | joegallo | oh, i'm sure it can be made smaller, but at this point it was working well enough for me, so i moved on to other things ;) |
| 10:00 | babilen | joegallo: Thank you -- I'll look into it. I take it that you've worked with Lucene before if you've written that function before. Mind sharing the complete library or would that be problematic due to its license? |
| 10:00 | joegallo | I can't -- it's just some support code for some stuff I happened to do once, not really a library. |
| 10:00 | babilen | joegallo: I know that feeling -- It was just that I didn't quite like my solution and had the feeling that there has to be a better way. |
| 10:00 | joegallo | But, you should totally check out drewr's esperanto. https://github.com/drewr/esperanto/blob/master/src/esperanto/lucene.clj |
| 10:01 | joegallo | his token-seq uses lazy-seq, too |
| 10:01 | joegallo | so that's a good example as well |
| 10:02 | babilen | joegallo: Ah, wonderful -- That looks as if it might come in handy. I am working with/on clucy right now, but esperantly/lucene comes with some handy functions. |
| 10:03 | wastrel | esperanto what now? |
| 10:04 | babilen | joegallo: Thanks for the pointers and may you have a nice day |
| 10:05 | joegallo | you're quite welcome, best of luck with your stuff |
| 10:51 | nerdfunk | hi there |
| 10:54 | nerdfunk | I'm working through 4clojure and I'm a bit stuck on problem 30... Here's what I came up with but unfortunately I'm stuck :/ http://pastebin.com/FCwN3uUr |
| 10:58 | jamiltron | The first thing that sticks out is that first recur to compr "(compr (rest i))" should be (recur (rest i)). |
| 10:59 | TimMc | nerdfunk: You're gonna kick yourself when you see other people's solutions. |
| 10:59 | jamiltron | TimMc: I kick myself everytime I see anyone elses solution to any problem :P |
| 11:00 | nerdfunk | haha |
| 11:00 | nerdfunk | indeed, self kicking is part of the game |
| 11:02 | Fossi | i feel like those are sometimes more about library knowledge than "real" programming |
| 11:03 | Fossi | which is fine, but doesn't make me wanna start doing them |
| 11:03 | nerdfunk | It's only an early problem |
| 11:03 | jamiltron | Library usage is real programming, though. |
| 11:04 | nerdfunk | and I wanted to solve it in a more basic way . . than simply finding the "remove duplicates" method |
| 11:04 | Fossi | same goes for "mathy" problems |
| 11:04 | jamiltron | I think that's something to 4clojure's credit - I've learned more about the core Clojure library by getting stuck and looking things up than I would have working any other kind of "fizz buzz" type koan site. |
| 11:05 | Fossi | yeah, it's nice to get to know all the tools in the toolbox |
| 11:05 | Fossi | and they will *really* help you as well |
| 11:05 | Fossi | but to me it feels kinda tedious |
| 11:05 | Fossi | and sometimes overly clever |
| 11:06 | Fossi | as i didn't do them yet, i don't know the question, but on one of them the "best" answer is (into []) |
| 11:06 | Fossi | from what i got here |
| 11:07 | nerdfunk | hmm.. recursion just isnt clicking tonight haha |
| 11:07 | nerdfunk | I guess I need to add more scaffolding to keep the already looked at letters . . |
| 11:07 | jamiltron | nerdfunk: You can do this without recursion using sequencing functions. |
| 11:10 | nerdfunk | OK.. I'll look into it.. |
| 11:15 | jamiltron | So lets say you had a collection filled with a single kind of duplicate, say "eeeeeee". You'd know how to remove all the duplicates there right? |
| 11:18 | nerdfunk | well.. get first char, while subsequent equal first move to the next until next doesnt exist |
| 11:19 | jamiltron | Given that you know they're all the same, you don't even need to move through the rest (at least, not yourself), you can just take the first. |
| 11:20 | jodaro | which problem is this? |
| 11:20 | jamiltron | So say you had a collection of sequences filled with duplicates - [[1 1 1] [2 2] [3 3 3 3 3]], you know each element strictly contains duplicates - do you know how you'd transform it into a sequence with duplicates removed? |
| 11:21 | jamiltron | jodaro: Compress a Sequence (http://www.4clojure.com/problem/30) |
| 11:21 | jodaro | ok |
| 11:21 | nerdfunk | map first ? |
| 11:22 | jamiltron | nerdfunk: Exactly. And the beautiful thing about map first is that it will work on sequences with only 1 value, as well. |
| 11:22 | nerdfunk | hmm. |
| 11:23 | nerdfunk | I guess I need to learn how to break apart sequences into duplicates then. |
| 11:24 | jamiltron | Right. Now if you want I can point you half of the way there and show you a higher-order function I used to do that, or you can write it yourself, or you can look though clojure docs until you find it. I don't want to point you towards it if you'd feel that's cheating somehow. |
| 11:24 | kral | nerdfunk: can't you use a set? |
| 11:24 | nerdfunk | That's OK, I'll try first and then come back when I'm stuck |
| 11:25 | jamiltron | kral: A set wouldn't work for this problem. You're only removing consecutive duplicates, not all of them. |
| 11:26 | kral | jamiltron: oh, i see |
| 11:28 | jamiltron | So what's the defacto pattern-matching library for Clojure these days? |
| 11:30 | jamiltron | core.match? I'm starting to work through Pierce's TAPL and would prefer to use Clojure over Ocaml, just because I don't know Ocaml :P |
| 11:33 | jodaro | heh |
| 11:33 | jodaro | the first case is easy with frequencies |
| 11:33 | jodaro | breaks down for the rest, though |
| 11:34 | lnostdal | ,(doseq [i (range 2)] (future (defonce -jarra- (println "blah")))) |
| 11:34 | clojurebot | #<Exception java.lang.Exception: SANBOX DENIED> |
| 11:35 | lnostdal | ok, well .. anyway .. defonce seems racy |
| 11:35 | lnostdal | in some cases i see "blah" outputted twice here |
| 11:35 | jodaro | java.lang.SpellingException: SANBOX or SANDBOX? |
| 11:35 | lnostdal | ( this is a recent 1.4.x from git ) |
| 11:42 | nerdfunk | well.. looks like I was kind of on the right track.. http://pastebin.com/nkfQTMbM I'll try to work out how to do it with map first too |
| 11:50 | Vinzent | Hi, I have 'ClassNotFoundException com.google.common.collect.ImmutableList java.net.URLClassLoader$1.run' after running 'script/run' from ClojurescriptOne. Although REPL still starts, there is nothing on localhost:8080 |
| 11:50 | adamspgh | Vinzent: did you do "script/deps" first? |
| 11:50 | Vinzent | Ok, this is already on the issue list: https://github.com/brentonashworth/one/issues/58 |
| 11:50 | Vinzent | adamspgh, yes |
| 11:53 | Vinzent | looks like the problem is that I haven't curl installed |
| 12:08 | timvisher | anyone interested in helping me debug my leiningen proxy settings? |
| 12:21 | jfields | If I have (ns a-a) (defrecord Foo [x]) and I want to extend a protocol in (ns b), is it still correct to (:import [a_a Foo]) or can I reference Foo in some other way? |
| 12:22 | jfields | I need Foo so I can (extend-protocol APro Foo (a-meth [])) |
| 12:22 | Vinzent | jfields, why import a_a? you can require it as a normal clojure ns |
| 12:22 | jfields | Vinzent, I tried that and I get Unable to resolve symbol: Foo in this context |
| 12:23 | dnolen | jfields: I think that's the only way |
| 12:23 | Vinzent | jfields, you still need to import Foo |
| 12:23 | jfields | if you require you get access ->Foo and the other fns, but you can't reference the class... at least it looks that way to me. |
| 12:24 | Vinzent | jfields, you need require the namespace and import the record class in order to reference it as a Foo |
| 12:25 | jfields | right, that's what I'm doing, but when I reload those files during dev I end up getting errors because the versions of a_a Foo and a-a Foo get out of sync and my protocol ends up not having the right def. :\ |
| 12:25 | jamiltron | How comparable is core.match's pattern matching to that of Ocaml or SML? |
| 12:27 | Vinzent | jfields, hm, this happens even after recompiling (e.g. C-c C-k) both files? |
| 12:28 | jfields | Vinzent, I'm doing a ton of java interop so I'm stuck in IntelliJ. :\ that's probably the root of my problem. :) |
| 12:29 | jfields | Vinzent, I am doing a load-file on both files, and that seems to get things out of sync |
| 12:30 | jfields | Vinzent, if I load-file the ns with the protocol everything is fine, but if I load-file the file with the record def it all goes downhill. |
| 12:37 | dnolen | jamiltron: it's pretty similar tho more flexible - you can extend it and there are no constraints about what types appear. |
| 12:38 | jamiltron | dnolen: Can you place type constraints using core.match? |
| 12:39 | Vinzent | jfields, hm, I think emacs' C-c C-k is the same as load-file, maybe I just didn't noticed the problem becuase I not change records and protocols frequently... Sorry I couldn't help |
| 12:39 | dnolen | jamiltron: like matching on a class / interface / deftype / protocol ? |
| 12:39 | jamiltron | dnolen: Yes :) |
| 12:40 | dnolen | jamiltron: not yet, it's on the todo list |
| 12:43 | jamiltron | dnolen: Awesome, thank you. I'm currently enrolled in a class using TAPL and am trying to decide between biting the bullet and learning Ocaml, or having fun and trying to use Clojure for it. |
| 12:44 | dnolen | jamiltron: Types And Programming Languages? |
| 12:44 | jamiltron | dnolen: Yes, the Orange Book. |
| 12:45 | dnolen | jamiltron: Ocaml seems worthy of study. I've only played with Standard ML which is pretty cool. |
| 12:46 | jamiltron | dnolen: Yeah, it's something I wouldn't mind doing, its just a lot of extra work in combination with a job and school work. I'm sure it would be really beneficial to learn Ocaml, though. |
| 12:48 | jfields | Vinzent, no problem, thanks for the help anyway |
| 13:06 | wiseen | is there a way to do (if-let [x (...)] x y) without the if-let ie. eval expression and if the result is nil return alternative ? |
| 13:08 | ben_m | wiseen, yes, there is, I'm trying to find what it's called |
| 13:08 | joegallo | (or (some-expression...) the-default) |
| 13:08 | ben_m | It's a function that takes another function and a default value, and returns a function :S |
| 13:09 | joegallo | works nicely |
| 13:09 | wiseen | joegallo, or returns a value and not True/False ?* |
| 13:09 | joegallo | or is the way and the truth and the light |
| 13:09 | ben_m | ,(or false 'default) |
| 13:09 | clojurebot | default |
| 13:10 | ben_m | ,(or 'not-default 'default) |
| 13:10 | clojurebot | not-default |
| 13:10 | wiseen | joegallo, the path is clear now that I've seen the light |
| 13:10 | joegallo | go forth and sin no more |
| 13:10 | ben_m | I still want to find that function I had in mind. |
| 13:11 | TimMc | ben_m: fnil ? |
| 13:11 | lpetit | ben_m: it's fnil |
| 13:11 | TimMc | It takes a default input, actually. |
| 13:11 | ben_m | Exactly, thanks. |
| 13:12 | jodaro | seems like fnil is trending higher than juxt these days on the coolest clojure function charts |
| 13:12 | amalloy | BLASHPEMY |
| 13:13 | amalloy | makes me so incensed i can't even spell anymore |
| 13:13 | jodaro | is that like SANBOX? |
| 13:13 | TimMc | (juxt (fnil (comp (partial (apply ...) ...) ...) ...) ...) |
| 13:13 | TimMc | fill in the blanks, kids |
| 13:13 | amalloy | yeah, except sanbox is an age-old tradition |
| 13:14 | ben_m | ,(doc juxt) |
| 13:14 | clojurebot | "([f] [f g] [f g h] [f g h & fs]); Takes a set of functions and returns a fn that is the juxtaposition of those fns. The returned fn takes a variable number of args, and returns a vector containing the result of applying each fn to the args (left-to-right). ((juxt a b c) x) => [(a x) (b x) (c x)]" |
| 13:14 | ben_m | Nice, reminds me of Factor combinators. |
| 13:14 | yoklov | oh thats cool. |
| 13:14 | TimMc | ben_m: amalloy is nuts for juxt. |
| 13:15 | amalloy | i was into fnil before it was cool |
| 13:15 | ben_m | Me too! high-five! |
| 13:18 | lpetit | amalloy: you should start a "I was into fnil before raynes" blog post :-p |
| 13:18 | lpetit | just kidding |
| 13:19 | amalloy | lpetit: well, chouser and technomancy are the ones telling the world how exciting fnil is |
| 13:19 | amalloy | and Raynes so treasures his superior coolness; i couldn't do that to him |
| 13:19 | lpetit | amalloy: oh you refer to some of the previous tweets earlier this day ? |
| 13:20 | lpetit | :) |
| 13:20 | amalloy | lpetit: yeah, within the past week or so. i assume that's what jodaro was referring to |
| 13:21 | lpetit | amalloy: ok :) |
| 13:21 | amalloy | (if anyone is interested though, http://amalloy.hubpages.com/hub/The-evolution-of-an-idea is a blog post of mine where i praise fnil a bit. even if you don't care about fnil, i'll toot my own horn by saying it's an interesting read) |
| 13:21 | sritchie | technomancy, do you have a guide on how to deploy jars to s3-wagon-private? |
| 13:22 | lpetit | amalloy: fnil saved my life a couple times in the past especially when used with nested update-in calls |
| 13:22 | amalloy | yeah, fnil is great friends with update-in |
| 13:24 | technomancy | sritchie: no, once s3-wagon-private is installed, s3p:// repository URLs should function just like any other. |
| 13:25 | technomancy | if it doesn't work out of the box then it's a bug |
| 13:25 | sritchie | I just don't know how to deploy to a maven repo other than clojars using lein |
| 13:26 | technomancy | oh, gotcha. "lein help deploying" |
| 13:27 | technomancy | man... lein 2 is so close to being usable for the basics... nom. |
| 13:27 | technomancy | amalloy: any chance you'd want to port the pom stuff from depot to lein 2? |
| 13:28 | sritchie | ah, cool |
| 13:29 | amalloy | technomancy: what is there to port? depot doesn't depend on cake at all |
| 13:29 | technomancy | amalloy: I guess it's more about making leiningen.pom use depot rather than the other way around? |
| 13:30 | technomancy | amalloy: and also figuring out with cemerick if that functionality belongs in pomegranate? |
| 13:30 | sritchie | technomancy: it doesn't look like the deploy task does anything: https://github.com/technomancy/leiningen/blob/master/src/leiningen/deploy.clj |
| 13:30 | sritchie | I'm trying to figure out how to push a separate jar up to this bandwagon |
| 13:30 | technomancy | sritchie: not on the master branch, no. |
| 13:30 | technomancy | try the stable branch. |
| 13:31 | amalloy | technomancy: where would i look in the lein source to see where that change belongs? |
| 13:31 | technomancy | amalloy: should just be src/leiningen/pom.clj |
| 13:33 | jodaro | aha! |
| 13:34 | amalloy | ugh, depot still depends on prxml. my attempt to release a working version of data.xml to maven was a failure AFAICT, and halloway wants someone to simplify the POMs before another release attempt is made |
| 13:35 | technomancy | grumblecakes |
| 13:35 | technomancy | well tomorrow is open source friday, so cross your fingers? |
| 13:36 | hiredman | I had to figure out how to get clojure-maven-plugin working yesterday |
| 13:36 | hiredman | that was bracing |
| 13:37 | bitpimp | grumblecakes. mmmmm. |
| 13:59 | zmaril | Hey in a little bit may I bring some high schoolers and show them #clojure? |
| 14:01 | amalloy | quick, hide the <various illegal/immoral activities> |
| 14:01 | ben_m | Why would you ask for permission? I could be a high schooler for all you know. |
| 14:01 | zmaril | Cause there are 32 of them |
| 14:01 | TimMc | haha |
| 14:01 | zmaril | And they can be unruly |
| 14:02 | ben_m | The horrors |
| 14:02 | emezeske | I think I might have been in high school once |
| 14:03 | emezeske | Flash-mobbing #clojure might have been good fun :) |
| 14:14 | Azumarill | ALL THE IMSA STUDENTS |
| 14:14 | akim1 | hello |
| 14:14 | mlee1 | hello |
| 14:14 | ssomasun | hello |
| 14:14 | tvadakumchery | Hello |
| 14:14 | aschell | HI everyone!!! |
| 14:14 | aschell | hello |
| 14:14 | tvadakumchery | All these new guys are from the same class |
| 14:14 | jhu | hi drew |
| 14:14 | ssavya | hollo |
| 14:14 | aschell | hi jon |
| 14:15 | ssomasun | hollo sajishnu |
| 14:15 | aschell | is zack getting on? |
| 14:15 | uagrawa | hiiiii |
| 14:15 | aschell | oh yeah |
| 14:15 | sjain1 | hey |
| 14:15 | aschell | oooh cool |
| 14:15 | aschell | who is jigglypuff? |
| 14:15 | aschell | that one of us? |
| 14:15 | ssomasun | idk |
| 14:16 | jigglypuff_ | JIGGLY |
| 14:16 | rhelm | woa! |
| 14:16 | rhelm | are you sure? |
| 14:16 | akim1 | no he's not sure |
| 14:16 | tvadakumchery | Sure about what? |
| 14:16 | ben_m | jigglypuff_ has the best nickname |
| 14:16 | ben_m | Just saying. |
| 14:17 | Azumarill | I have the best nickname |
| 14:17 | Bromosome | i disagree |
| 14:17 | ssomasun | no |
| 14:17 | jmo1 | ikr |
| 14:17 | aschell | i wanna be sheldor... |
| 14:17 | tvadakumchery | Azumarill> jiggly |
| 14:17 | zmaril | I am confused about lazy sequences. How can I understand them? |
| 14:17 | ben_m | Is this the class of 16 year olds now? |
| 14:17 | tvadakumchery | Azumarill huge power aqua jet OP |
| 14:17 | aschell | yeah |
| 14:17 | Bromosome | Yep. |
| 14:17 | pjstadig | zmaril: come to my talk at Clojure/West |
| 14:17 | Azumarill | ^You, I like you. |
| 14:17 | zmaril | Yes this is the class of 16 olds. |
| 14:17 | rhelm | zmaril is very close to azumarill |
| 14:17 | amalloy | zmaril: step 1 is probably to ask a more specific question |
| 14:17 | ben_m | Well, jigglypuff_ is the coolest kid. |
| 14:17 | jhu | ^ |
| 14:18 | aschell | my death strike crits 20k damage |
| 14:18 | jmo1 | Yay, IRC. |
| 14:18 | vravi | lol drew |
| 14:18 | jhu | drew |
| 14:18 | jhu | lol |
| 14:18 | ssomasun | gg |
| 14:18 | tvadakumchery | But the max health you can have in pokemon is 718 |
| 14:18 | nfilipac | ^amen |
| 14:18 | zmaril | amalloy: Why shouldn't I call doseq on an infinite list? |
| 14:18 | aschell | hello iwillig |
| 14:19 | emezeske | ,(take 32 (repeat "jiggly")) |
| 14:19 | clojurebot | ("jiggly" "jiggly" "jiggly" "jiggly" "jiggly" ...) |
| 14:19 | jigglypuff_ | yehehehessssss |
| 14:19 | aschell | HI CLOJUREBOT!!! |
| 14:19 | amalloy | zmaril: feel free to call doseq on an infinite list, as long as you don't mind that it will never return |
| 14:19 | tvadakumchery | the max health you can actually have in pokemon is 714 |
| 14:19 | tvadakumchery | I got it wrong |
| 14:20 | ssomasun | this is for clojure not pokemon |
| 14:20 | aschell | death knights beat mages any day |
| 14:20 | cata | you guys are on the internet |
| 14:20 | tvadakumchery | Can we program pokemon with clojure? |
| 14:20 | ben_m | Well that was successful. |
| 14:21 | zmaril | That was about as successful as I hoped it would be |
| 14:21 | zmaril | Nobody swore which was a major win |
| 14:21 | Azumarill | You have no faith in us. |
| 14:22 | ben_m | zmaril, what was the point of that? :D Are you their teacher? |
| 14:22 | amalloy | he was probably worried about the regulars swearing, not his precious, innocent students |
| 14:22 | Bromosome | he's our teacher |
| 14:22 | zmaril | Both sides actually |
| 14:22 | zmaril | I came back to my old high schoiol and am teaching them clojure |
| 14:22 | zmaril | *them being a bunch of 16 year olds |
| 14:22 | technomancy | maybe start out in an empty channel to have them get over the "woooooo check it out I'm on the INTERNET" stage? |
| 14:22 | zmaril | They are chewing through 4clojure and clojure koans |
| 14:23 | amalloy | technomancy: eh, what was the harm of putting them in here, though? |
| 14:23 | zmaril | technomancy: that would have been a better idea |
| 14:23 | technomancy | amalloy: I'm thinking primarily to help them avoid embarrassing themselves =) |
| 14:23 | Bromosome | we have no shame |
| 14:23 | zmaril | They have no shame |
| 14:23 | jamiltron | Well I'm still embarrassing myself several years later. |
| 14:24 | WorldOfWarcraft | hello |
| 14:25 | franks | technomancy: about that "cljsh", that lightweight lein repl-server client... |
| 14:26 | WorldOfWarcraft | i luv clojure |
| 14:26 | Skyrim | who doesn't <3 clojure |
| 14:27 | Raynes | chouser_: FYI, they're setting up for a spamfest. |
| 14:28 | franks | technomancy: right now, i need some custom clojure code that ideally would be part of this lein repl server, like turning repl-prompt on/off, printing of eval results on/off - you think that you could provide that funcionality in lein? |
| 14:28 | Skyrim | lol |
| 14:29 | technomancy | franks: actually the code in leiningen.repl is probably going to be replaced in lein 2 with nrepl |
| 14:30 | irp | C is better |
| 14:30 | technomancy | it should be doable to use nrepl with a lein1 plugin too |
| 14:30 | jlr | does Sam Aaron frequent this channel? |
| 14:30 | WorldOfWarcraft | hey guys i need help |
| 14:31 | BLASTOISE | ok |
| 14:31 | Bromosome | what do you guys think of this guide to clojure |
| 14:31 | WorldOfWarcraft | (= __ (conj '(2 3 4) 1)) |
| 14:31 | technomancy | jlr: IIRC he's known here as naeu |
| 14:31 | Bromosome | http://blackstag.com/blog.posting?id=5 |
| 14:31 | WorldOfWarcraft | any help? |
| 14:31 | franks | technomancy: the nrepl that i looked at had a real protocol... would prefer the simple socket extension of the interactive repl interface - or did i misunderstand? |
| 14:31 | WorldOfWarcraft | i think the answer is (1 2 3 4) but its wrong |
| 14:31 | jlr | thanks Mr. Hagelberg :) |
| 14:31 | Raynes | technomancy: No. He is known as samaaron. |
| 14:31 | WorldOfWarcraft | any help? |
| 14:32 | technomancy | Raynes: oh, the olde switcheroo |
| 14:32 | WorldOfWarcraft | (= __ (conj '(2 3 4) 1)) |
| 14:32 | WorldOfWarcraft | (1 2 3 4) right? |
| 14:32 | Bronsa | ,(conj '(2 3 4) 1) |
| 14:32 | clojurebot | (1 2 3 4) |
| 14:32 | technomancy | franks: I'm not sure; I haven't looked at nrepl much yet. I just don't want to continue maintaining my own repl server if I can outsource it |
| 14:32 | jlr | *shrug* if I see either, I'll message. Thanks! |
| 14:32 | WorldOfWarcraft | it says its wrong |
| 14:32 | amalloy | WorldOfWarcraft: to express a list literal you need to put a ' in front of it, like they did in the example: '(2 3 4) |
| 14:33 | WorldOfWarcraft | ok great :) |
| 14:33 | franks | technomancy: is anyone actually using your repl server right now? |
| 14:33 | technomancy | franks: yeah, basically all lein users who don't use slime. |
| 14:33 | BLASTOISE | (= __ (conj '(2 3 4) 1)) Any ideas? |
| 14:34 | Bromosome | what is a repl server exactly. when i start up clojurebox, it says "setting up server" or something of that ilk |
| 14:34 | technomancy | clojurebot: can you do my homework for me? |
| 14:34 | clojurebot | Excuse me? |
| 14:34 | amalloy | i never thought i would type this, but... BLASTOISE: ask WorldOfWarcraft |
| 14:34 | WorldOfWarcraft | oh yeah blastoise |
| 14:34 | WorldOfWarcraft | he said its '(1 2 3 4) |
| 14:34 | BLASTOISE | You're sitting right next to me and have the same question as me, WorldofWarcraft lolol |
| 14:35 | franks | Bromosome: "lein repl" strts up both an interactive repl session and a network listener |
| 14:35 | WorldOfWarcraft | oh lol |
| 14:35 | BLASTOISE | trolol? |
| 14:35 | Bromosome | thanks |
| 14:35 | BLASTOISE | Ok final conclusion: 4 Clojure is wrong. |
| 14:42 | franks | technomancy: is the current lein repl written as a plugin? |
| 14:44 | technomancy | franks: no, it's a built-in task |
| 14:44 | technomancy | it could be spun out if you want it to be usable in 2.x though I guess |
| 14:45 | WorldOfWarcraft | hello guys any suggestions: Write a function which returns a personalized greeting. (= (__ "Dave") "Hello, Dave!") |
| 14:46 | franks | technomancy: that's what i thought... that would be one way for you to get of of the repl-business... while still having some backwards compatibility |
| 14:46 | TimMc | WorldOfWarcraft: What have you tried? |
| 14:46 | technomancy | nobody tell him about findfn, ok? |
| 14:47 | TimMc | heh |
| 14:47 | yoklov | is there a way to get a pair in clojure? cons requires the 2nd item to be a seq |
| 14:47 | WorldOfWarcraft | TimMc: I tried to just add in "Hello" but it needs a "!" at the end |
| 14:47 | yoklov | or do people usually use 2 element vectors for that |
| 14:47 | amalloy | yoklov: we usually just use vectors |
| 14:47 | yoklov | okay |
| 14:47 | yoklov | thanks |
| 14:47 | TimMc | yoklov: There are no pairs in Clojure -- sequences and lists are always proper. |
| 14:47 | ben_m | Somebody tell me about findfn though |
| 14:47 | amalloy | yoklov: if you want to be super-efficient you can use (clojure.lang.MapEntry. a b) |
| 14:47 | franks | technomancy: it would allow others (like me) to easily modify the repl code and publish it as a new plugin without adding to your support |
| 14:50 | technomancy | franks: yeah, if that's what you need you should probably go ahead and spin it off. |
| 14:50 | TimMc | WorldOfWarcraft: How did you succeed in adding "Hello"? |
| 14:50 | technomancy | I have never been fully comfortable maintaining the repl task since I never use it myself |
| 14:50 | amalloy | $findfn 1 2 3 6 ;; ben_m |
| 14:50 | lazybot | [clojure.core/+ clojure.core/* clojure.core/+' clojure.core/*'] |
| 14:50 | TimMc | technomancy: Because you use swank instead? |
| 14:50 | WorldOfWarcraft | my idea was simply to use apply str but that did not work so im gonna keep working on it |
| 14:51 | ben_m | That's pretty cool. |
| 14:51 | TimMc | ben_m: Even better, it works in /query lazybot (hint hint :-P) |
| 14:51 | ben_m | TimMc, heh, I know better than to spam channels with bot commands |
| 14:52 | TimMc | THe hint wasn't for you. |
| 14:52 | Raynes | technomancy: Man, you and I are like complete opposites. |
| 14:52 | technomancy | TimMc: aye |
| 14:52 | Raynes | technomancy: You use swank and rarely lein repl, I just lein repl and rarely swank, I've looked at my refheap elisp, you're still bloody procrastinating. Completely different people, we are. |
| 14:53 | rhelm | how does a multimethod work? |
| 14:55 | franks | technomancy: what i need is just a 2-3 functions added to the current lein repl features... spinning off the repl code into a plugin would be more work than i anticipated... not sure if that's worthwhile if nobody seems to be using it... |
| 14:55 | TimMc | rhelm: For implementation details, read the source. Or are you asking how to use one? |
| 14:56 | technomancy | franks: maybe people would use it more if it didn't boot slowly? I don't know |
| 14:56 | rhelm | i'm looking for the basics, it seems like you declare a function for a set of keywords linked to a map, right? |
| 14:58 | TimMc | rhelm: You have a dispatch function that takes the arguments and produces a key of some sort. |
| 14:59 | TimMc | Then you have a bunch of implementation functions for different keys. The keys are compared using isa?, which allows you to do all sorts of cool hierarchical stuff. |
| 14:59 | TimMc | Go read the docs for isa?, it's not entirely trivial. |
| 15:00 | rhelm | timmc: where do i find said docs? |
| 15:01 | TimMc | rhelm: this site is great: http://clojuredocs.org/clojure_core/clojure.core/isa_q |
| 15:01 | TimMc | rhelm: Or you can open a REPL and type (doc isa?) |
| 15:01 | Bromosome | does anybody know the solution to http://www.4clojure.com/problem/5 |
| 15:01 | clojurebot | It's greek to me. |
| 15:01 | Bromosome | ? |
| 15:02 | Raynes | $examples isa? |
| 15:02 | lazybot | You must pass a name like clojure.core/foo or, as two arguments, clojure.core foo. |
| 15:02 | Raynes | $examples clojure.core/isa? |
| 15:02 | lazybot | No results found. |
| 15:02 | amalloy | huh, i never realized problem 5 was such a stumbling block |
| 15:02 | Raynes | Huh |
| 15:02 | Bromosome | hey now |
| 15:02 | yoklov | Bromosome: conj chooses the best way to add to a seq, so since that seq is a list it adds to the front |
| 15:03 | yoklov | are you familiar with how lists work? |
| 15:03 | yoklov | e.g. why the front is the best |
| 15:04 | Raynes | Teenagers. Impossible to work with. |
| 15:05 | ibdknox | srsly. |
| 15:05 | TimMc | Oh, and he's gone... |
| 15:05 | Raynes | Oh, wait... |
| 15:05 | yoklov | weird. |
| 15:05 | Raynes | ibdknox: Noir has exactly 404 watchers. Quick, screenshot! |
| 15:06 | pjstadig | Raynes: not found |
| 15:06 | jodaro | heh |
| 15:07 | franks | technomancy: just noticed that in the 1.7.0-SNAPSHOT, you're not using rlwrap at all... any reason for the removal? |
| 15:08 | technomancy | franks: whoa, that's a mistake |
| 15:08 | technomancy | must have come from that trampolining change I made |
| 15:08 | technomancy | thanks |
| 15:08 | ibdknox | I have to look up those screenshot commands everytime |
| 15:10 | TimMc | ibdknox: ...PrtScn? |
| 15:11 | ibdknox | TimMc: you mean command+shift+4, right ;) |
| 15:11 | TimMc | Oh, if you're on a mac I guess it's shift-squigglything-3. |
| 15:11 | TimMc | yeah |
| 15:12 | franks | technomancy: that may be related to the fact that the repl-server keeps running as a background task after quitting out of lein's interactive repl with ctrl-d (?) |
| 15:14 | solussd | has anyone here used JNA (via chouser's jna-invoke) to retrieve a struct? I did using (jna-invoke int c/stat "/path/to/file" (:pointer mymembuffer)) and the struct doesn't have things where I'd expect them to be |
| 15:17 | hiredman | endianess? |
| 15:23 | nuclearsandwich | If I have a leiningen project and want to read from stdin, what's the best way to launch it since lein run doesn't work? |
| 15:24 | ibdknox | lein trampoline |
| 15:25 | lpetit | technomancy: Hello, in the upcoming 2.0 version, will the standard folders layout be changed (for example to be less clojure centric, like src/clojure, src/java, src/clojurescript, etc.) ? Or will it remain the same ? I'm asking because I'm changing the structure of CCW's source folders right now, and I'd like to move in the right direction (CCW will not be built by lein in the near future, so my intent is more to be lein-2.0-ready than |
| 15:25 | lpetit | lein-1.0 compliant. |
| 15:26 | nuclearsandwich | ibdknox: thanks! Don't know how I missed that. |
| 15:26 | ibdknox | technomancy: when I do lein deps in 1.6.2 it occasionally eats 100% cpu for a long time |
| 15:27 | ibdknox | nuclearsandwich: it's one of those relatively secret features :) Few people know about it |
| 15:27 | ibdknox | technomancy: I've never let it sit long enough to finish, so I'm not sure how long, but I suspect indefinitely ;) |
| 15:36 | Raynes | lpetit: It is generally going to be the same. We're thinking of changing the default project skeleton a bit, but mostly just to stop encouraging the 'foo.core' phenomenon. |
| 15:36 | lpetit | Raynes: ok. What is the expected folder for holding clojurescript files? What is expected to replace the 'foo.core' phenomenon ? |
| 15:37 | amalloy | lpetit: well, i don't think cljs has any need for foo.core, right? |
| 15:37 | yoklov | what's wrong with foo.core? |
| 15:38 | lpetit | amalloy: there were really 2 separate questions ^^ |
| 15:38 | Raynes | lpetit: I'm not entirely certain yet. It's still cooking. |
| 15:38 | amalloy | yeah, i realized after answering that they don't look related at all |
| 15:38 | Raynes | technomancy proposes we split names with a dot or dash and use that to avoid single segment namespaces. |
| 15:39 | lpetit | Raynes: there is one beenfit to 'foo.core', which is that this creates projects artifacts which can play well with OSGi |
| 15:39 | Raynes | But nothing is set in stone yet. |
| 15:39 | Raynes | I don't know what that is. |
| 15:39 | duck1123 | no one wants 'foo' |
| 15:40 | hiredman | lpetit: namespace names and artifactids and groupids are different things |
| 15:40 | lpetit | Raynes: OSGi is the current defacto standard for modularized things |
| 15:40 | lpetit | hiredman: you're right, but you're wrong in assuming I was thinking about that |
| 15:42 | lpetit | Raynes, hired man: in OSGi, the 'bundles' can be loosely wired by having them declare, at the package level, which packages bundle X 'imports' (requires), and also which packages bundle X 'exports' (makes visible to be 'imported' by other bundles) |
| 15:42 | Raynes | technomancy: We need some sort of group discussion about project skeletons, I think. |
| 15:42 | Raynes | That way everybody can whine in a proper venue when we choose the least popular thing. |
| 15:43 | yoklov | err, why are you unhappy with 'foo.core'? |
| 15:44 | lpetit | Raynes, hired man: When you have developer john smith creating 2 libraries, say smith.lib1, and smith.lib2, if each library has a namespace named respectively smith.lib1 and smith.lib2, then each library has something to say about the contents of the package "smith". |
| 15:44 | Raynes | It isn't very useful. |
| 15:45 | anntzer | hi, is there a way to use `apply` on methods defined in a protocol? |
| 15:45 | Raynes | yoklov: I don't really care about namespaces as much as other people. As such, I'm not the one that instigated this radical change. Yell at cemerick|away. |
| 15:45 | amalloy | anntzer: yes, you just use apply |
| 15:45 | anntzer | afaict calling such methods also involves using the dot form |
| 15:45 | lpetit | Raynes, hiredman: then you cannot have a consumer library say "I want smith.lib1" version V1, and "smith.lib2" version V2 |
| 15:45 | amalloy | i think your question is probably "is there a way to accept varargs in a protocol function", and the answer to that is no |
| 15:45 | anntzer | so I would have to do (apply .method object) |
| 15:45 | anntzer | ah |
| 15:46 | anntzer | ok |
| 15:46 | yoklov | oh, i don't want to yell at anybody, i just want to know the reasoning behind it. i believe its probably for the best i'm just curious why |
| 15:46 | Raynes | Haha |
| 15:46 | amalloy | no, use no .s - there's no reason to use interop syntax for protocols |
| 15:47 | lpetit | Raynes, hired man: so the advantage oI see to "foo.core", is that my example becomes namespaces "smith.lib1.core" and "smith.lib2.core", reps. packages "smith.lib1" and "smith.lib2". Now you can have your dependencies right again |
| 15:47 | Raynes | yoklov: I think the primary reason is that 'foo.core' doesn't tell you a lot. It isn't a very useful namespace. The reason we have the foo.core idiom in the first place is because it is hard to programmatically generate skeletons with a smart alternative. |
| 15:47 | yoklov | yeah, alright that makes sense |
| 15:47 | anntzer | amalloy, but if the protocol has been defined in some other ns then I have to use the dot form don't I? |
| 15:48 | amalloy | no, just require/use its functions like any other |
| 15:48 | lpetit | Raynes, hired man: I'm having the problem right now with all the contrib libraries contributing files to the same "clojure.contrib" package. |
| 15:48 | amalloy | if you use the dot form your code will be much slower in the best case, and break in other case |
| 15:49 | anntzer | ok |
| 15:49 | anntzer | thx |
| 15:50 | lpetit | Raynes, hiredman: was I clear in my explanations? |
| 15:50 | amalloy | Raynes: that isn't quite the reason foo.core exists. it exists because namespaces named just "foo" cause all kinds of problems |
| 15:51 | hiredman | lpetit: I think you are thinking about problems so far into the solution domain that I've stopped caring |
| 15:51 | TimMc | amalloy: Do you have an example of one of those problems? |
| 15:52 | Raynes | amalloy: I'm not sure you're disagreeing with me. |
| 15:53 | amalloy | Raynes: i don't think i am, but i'm expanding/clarifying for you |
| 15:53 | TimMc | yoklov: You can also do things like org.yoklov.foo |
| 15:53 | Raynes | amalloy: That is just an extension of my point. We don't generate single segment namespaces because they are the devil, so something else had to be generated. foo.core exists because we don't want single segment namespaces and we suck at generating smart alternatives (for now anyway). |
| 15:54 | yoklov | TimMc: yeah, i could but… |
| 15:54 | yoklov | hm. |
| 15:54 | Raynes | TimMc: I know of at least one bizarre thing with classloaders and single segment namespaces. |
| 15:54 | Raynes | TimMc: But disregarding actual limitations of Java, they are pollution. |
| 15:54 | amalloy | Raynes: foo.core pollutes exactly as badly as foo, doesn't it? |
| 15:55 | Raynes | amalloy: Kind of. Which is probably why people are deeming these namespaces non-useful. |
| 16:00 | Raynes | I'm going to use Sublime Text 2 until I get to a point where I need to reindent a whole large block of code, at which point I'll run screaming to Emacs and never again look back. But I'll be able to say "you know, I've been there." |
| 16:01 | Raynes | I will have grown from the experience. |
| 16:02 | Raynes | I do totally understand why I see Vim people and such committing code that is indented terribly. The great thing about Emacs is how hard it makes it to screw up. It is the king of contextual indentation. |
| 16:02 | technomancy | Raynes: the "split namespaces with a dot or dash to avoid *.core" is exactly what I'd like to see in lein new |
| 16:02 | Raynes | You can hit tab until the sun rises but it wont ever let you down. |
| 16:02 | Raynes | technomancy: Can you show me an example? |
| 16:03 | Raynes | I think I get the idea, but I'm not entirely sure how people are meant to use it. Like, if that were implemented right now, I wouldn't know what to do to create a new project with proper names. |
| 16:05 | technomancy | Raynes: like when I ran "lein new robert-hooke" the first thing I did was rm -rf src/*; mkdir src/robert; touch src/robert/hooke.clj |
| 16:05 | technomancy | and the second thing should have been to adapt "lein new" to do that for me, but I was too lazy. |
| 16:06 | Raynes | What if I have a project called "sandwich"? `lein new sandwich.chicken` -> src/sandwich/chicken.clj? |
| 16:07 | technomancy | yeah, I think we may still have to fall back on core in that case |
| 16:07 | technomancy | or we could go the elasticsearch route and have a big list of superheroes/villains included in the "new" task and pick a new one each time |
| 16:08 | technomancy | src/sandwich/cyclops.clj |
| 16:08 | Raynes | technomancy: What about people who still insist on naming shit clj-foo? I don't care about them, not sure about you. |
| 16:08 | technomancy | waaaaaaaaaaait a minute |
| 16:09 | technomancy | you sneaky bastard. |
| 16:09 | technomancy | $ lein new buggerjure => Generating a project called buggerjure based on the 'default' template. |
| 16:09 | technomancy | how did I let that slip by me‽ |
| 16:09 | Raynes | Hahahahaha |
| 16:09 | Raynes | I swear I would have added the blocker had I remembered it. |
| 16:10 | technomancy | ok, I'll open an issue to help aid your memory |
| 16:10 | lpetit | hiredman: if any, your answer has the merit to be clear. Not sure how I should feel after having read it, though. |
| 16:13 | hiredman | lpetit: :) |
| 16:13 | Raynes | technomancy: If there is a dash in a project name, the whole project is that name and it is split on the dash to create the file structure. If it has dots, the first segment becomes the project name but it is split and the file tree is created in the same way. With no dots or hyphens, one could just generate src/projectname. The problem with all of this is that it would complicate the hell out of things. I'm not |
| 16:13 | Raynes | certain, but it'd probably take away any chance of lein newnew being flexible enough to generate things other than project scaffolding, but I'd be okay with that, I think. |
| 16:14 | Raynes | It seems like it'd be difficult for this to work well for all templates. |
| 16:14 | technomancy | just skip creating a .clj file altogether with a single-segment name? yeah, that's not a bad solution. |
| 16:14 | Raynes | I'll have to look into it more. |
| 16:14 | technomancy | not sure why you want to treat dashes and dots differently |
| 16:14 | technomancy | I guess having a dot in the project name is a bit weird? |
| 16:14 | Raynes | I'm not sure why you want to split on dashes. |
| 16:14 | Raynes | *shrug* |
| 16:15 | lpetit | Raynes, hired man, technomancy: anyway to summarize. I exposed a real-world problem to you. It's not musing, I've faced it already in the near past, and will for sure be facing it in the (near) future: any conventions that facilitates independent libraries to pollute the same package will cause modularity problems with OSGi. I haven't investigated java modularization process, so I don't know if there will be problems with this also. |
| 16:15 | Raynes | I think we should just split on dots, which gives the user the ability to generate the initial project file layout himself when he creates the project, or just skip creating a .clj file altogether and do whatever he wants by himself. |
| 16:15 | lpetit | going to bed, *shrug* |
| 16:15 | Raynes | Splitting on dashes seems weird and error prone. |
| 16:16 | Raynes | Man, I didn't mean to upset him. It's just that I can't really understand anything he has said. :\ |
| 16:16 | duck1123 | what if it prompts? |
| 16:16 | Raynes | duck1123: technomancy is allergic to prompts. |
| 16:17 | technomancy | I can't tell if lpetit is complaining about more than just single-segment namespaces? |
| 16:17 | Raynes | technomancy: Something about OSGi, but I didn't respond because I don't even know what that is/is for. |
| 16:17 | Raynes | :\ |
| 16:19 | mgnm | how can I avoid stackoverflow errors when dealing with large numbers? |
| 16:20 | franks | technomancy: managed to essentially copy the leiningen/repl.clj file and create my own task - a few renames of repl, and it just worked - 20min - lot easier than I thought - nice plugin architecture |
| 16:20 | technomancy | yeah, in my mind OSGi is in a shadowy place next to dependency injection and CL's asdf reserved for solutions to which the descriptions of the problems they attempt to solve are left as an exercise to the reader. |
| 16:20 | technomancy | franks: excellent |
| 16:22 | duck1123 | The only times I hear about OSGi, it's in the context of "... doesn't work with OSGi" |
| 16:22 | Raynes | I really didn't mean to ignore him though. |
| 16:22 | Raynes | I get nervous when I talk to him in person. |
| 16:22 | Raynes | I'm a southern guy -- I can't understand a word he says. :\ |
| 16:23 | TimMc | mgnm: Not *stack* overflow, surely... |
| 16:23 | franks | only one caveat with the kill-switch definition of "::exit" in the code - for the leiningen/repl, I had to name it ":leiningen.repl/exit", but now I have to use my namespace identifier... maybe better to use fully qualified identifier for kill-switch |
| 16:23 | TimMc | &(+ Long/MAX_VALUE 1) |
| 16:23 | lazybot | java.lang.ArithmeticException: integer overflow |
| 16:23 | Raynes | TimMc: Maybe he has a really big stack of numbers. |
| 16:23 | TimMc | &(+' Long/MAX_VALUE 1) |
| 16:23 | lazybot | ⇒ 9223372036854775808N |
| 16:24 | ben_m | ,(doc +') |
| 16:24 | clojurebot | "([] [x] [x y] [x y & more]); Returns the sum of nums. (+) returns 0. Supports arbitrary precision. See also: +" |
| 16:24 | yoklov | +"? |
| 16:24 | yoklov | oh |
| 16:24 | Bronsa | oh |
| 16:24 | yoklov | nevermind. |
| 16:24 | ben_m | Hah. |
| 16:24 | Raynes | &(+' 5 5) |
| 16:24 | lazybot | ⇒ 10 |
| 16:24 | Raynes | &(+' Long/MAX_VALUE 1) |
| 16:24 | lazybot | ⇒ 9223372036854775808N |
| 16:24 | technomancy | franks: if it's meant to be used programmatically it's probably not a big deal what it's called as long as it's unique |
| 16:24 | Raynes | Omgwtf |
| 16:25 | ben_m | What's the difference between lazybot and clojurebot? :D |
| 16:25 | duck1123 | run |
| 16:25 | Raynes | ben_m: One is awesome and the other is less awesome. |
| 16:25 | ben_m | Cool. |
| 16:25 | Raynes | ben_m: Seriously, they are completely different bots with entirely different codebases. One is by amalloy and I and the other is from hiredman. |
| 16:25 | Raynes | lazybot is ours. |
| 16:25 | TimMc | and the awesome one |
| 16:25 | franks | technomancy: but now i have to send a different kill-switch to your repl and mine... |
| 16:26 | Annoying | Hello. |
| 16:26 | technomancy | franks: if you don't need the kill-switch in mine I may just revert it back out |
| 16:26 | technomancy | yoklov: the #emacs bots are hilarious |
| 16:26 | Raynes | amalloy and I are building robots for our world domination scheme. |
| 16:26 | Bronsa | hm |
| 16:26 | yoklov | rudybot is one of my favorites |
| 16:26 | yoklov | i think he's on #emacs |
| 16:26 | technomancy | yoklov: have you tried ,botstack? |
| 16:26 | yoklov | and also on #racket |
| 16:27 | yoklov | no? |
| 16:27 | clojurebot | #<ClassCastException java.lang.ClassCastException: clojure.lang.Cons cannot be cast to clojure.lang.IPersistentStack> |
| 16:27 | amalloy | yeah, rudybot is a blast |
| 16:27 | technomancy | yoklov: go on, we'll wait. =) |
| 16:27 | franks | technomancy: that would take care of the issue ;-) (not sure anyone realized they needed such a beast...) |
| 16:28 | yoklov | err, i'm not sure if i know what you mean |
| 16:28 | yoklov | ,botstack |
| 16:28 | clojurebot | #<CompilerException java.lang.RuntimeException: Unable to resolve symbol: botstack in this context, compiling:(NO_SOURCE_PATH:0)> |
| 16:28 | clj_newb | I am buiding mh own typed vecto class -- it's a vector of objects, wheter all objects satisfies a given protocol/interface. Question: what interfaces does my typed-vector need to impelment to ensure that it plays nice with clojure builtins? |
| 16:28 | TimMc | technomancy: You mean with rudybot, right? |
| 16:28 | technomancy | TimMc: fsbot in this case, but yeah over in #emacs |
| 16:28 | amalloy | clojurebot: shut up |is| <reply>My new year's resolution is to remember that not every message with "is" in it is addressed to me. |
| 16:28 | clojurebot | Ok. |
| 16:29 | technomancy | heh |
| 16:29 | amalloy | i think he's going to parse that wrong, though, sadly |
| 16:29 | TimMc | of course |
| 16:32 | WorldOfWarcraft | something |
| 16:32 | n00b__ | I have a question. |
| 16:32 | Bronsa | who doesn't |
| 16:32 | WorldOfWarcraft | geniuses... |
| 16:33 | WorldOfWarcraft | Evan Li doesn't |
| 16:33 | n00b__ | He took an arrow to the knee |
| 16:33 | WorldOfWarcraft | Was he an adventurer? |
| 16:33 | n00b__ | Yeah, just like me. |
| 16:34 | Raynes | ibdknox: Welcome home. |
| 16:34 | WorldOfWarcraft | hello everyone xoxoxoxoxoxoxoxoxoxoxox |
| 16:34 | TimMc | >_> |
| 16:34 | ibdknox | Raynes: why thank you :p |
| 16:34 | n00b__ | >.< |
| 16:35 | WorldOfWarcraft | EVAN GET OFF RUNESCAPE!!!! |
| 16:35 | Nerd | lolololololol |
| 16:35 | TimMc | clj_newb: Still working on your Typed Clojure? Here's a hint: ##(ancestors (class [])) |
| 16:35 | lazybot | ⇒ #{clojure.lang.ILookup clojure.lang.APersistentVector clojure.lang.IMeta clojure.lang.Reversible clojure.lang.IObj clojure.lang.IFn java.util.List java.util.concurrent.Callable clojure.lang.IEditableCollection clojure.lang.IPersistentVector clojure.lang.AFn clojure.l... https://refheap.com/paste/243 |
| 16:35 | ibdknox | does someone have chanops? |
| 16:35 | ibdknox | lol |
| 16:36 | Raynes | ibdknox: Yes, but nobody is actually here. |
| 16:36 | yoklov | lol, typed clojure |
| 16:36 | WorldOfWarcraft | how do i create a macro? |
| 16:36 | TimMc | WorldOfWarcraft: You know you can /join #whatever and it will create the channel for you? |
| 16:36 | hiredman | everyone has /ignore |
| 16:36 | Raynes | Ignore is a bandaid |
| 16:36 | Raynes | But you didn't hear that because you've got me ignored. :\ |
| 16:36 | TimMc | hiredman is covered in bandaids |
| 16:36 | WorldOfWarcraft | no a macro not a channel |
| 16:37 | TimMc | WorldOfWarcraft: defmacro |
| 16:37 | WorldOfWarcraft | lol nice tim |
| 16:38 | TimMc | WorldOfWarcraft: http://clojure.org/macros <-- lots of good stuff there |
| 16:38 | WorldOfWarcraft | hehe u troll :) |
| 16:38 | TimMc | ... |
| 16:39 | WorldOfWarcraft | alright im gonna go find out how to get shadowmourne from the lich king |
| 16:39 | Raynes | /join #clojureforpublicschool |
| 16:39 | technomancy | clojurebot: homework is<reply>You can do your own homework; you're a big kid. |
| 16:39 | clojurebot | Titim gan éirí ort. |
| 16:39 | Raynes | To any teachers in the audience: please don't tell your class to go to #clojure. |
| 16:40 | ibdknox | aww but... |
| 16:40 | Raynes | Unless, of course, your class is made up of sane human beings. |
| 16:42 | adiabatic | People teach clojure in at least one university? |
| 16:42 | Raynes | adiabatic: Not a university. |
| 16:42 | Raynes | Those are 16 year olds. |
| 16:42 | TimMc | high school |
| 16:42 | Raynes | High schoolers. |
| 16:42 | TimMc | donny |
| 16:43 | TimMc | Illinois Mathematics and Science Academy, if I can trust the host lookup |
| 16:43 | adiabatic | I can't imagine why they'd come in here, of all places, and goof around |
| 16:44 | technomancy | musta got booted off OFTC |
| 16:44 | Raynes | TimMc: I figured it was somewhere near the throne of the Lich king. |
| 16:44 | TimMc | adiabatic: Their teacher pointed them here. |
| 16:45 | ibdknox | why do all school websites suck? |
| 16:45 | Raynes | ibdknox: Because we didn't write them. |
| 16:45 | Raynes | o/ |
| 16:45 | ibdknox | lol |
| 16:47 | adiabatic | Oh, these people are *regulars*? |
| 16:47 | adiabatic | s/people/kids/ |
| 16:47 | TimMc | NOt sure what that means. |
| 16:47 | Raynes | No. Their teacher sent them here. That's all. |
| 16:48 | yoklov | why would you tell your students to go on the irc channel |
| 16:48 | adiabatic | Oh. I ask because it's not clear that their teacher sent them here as of WorldOfWarcraft's back-and-forth as of 13:34 today (it's 13:50 here now) |
| 17:17 | yoklov | hrm, so i have this hash of keywords to sets, and i'm trying to find which set an item is in |
| 17:18 | yoklov | like this: https://gist.github.com/1603487 . can anybody think of a way for me to do that without having to know all the sets ahead of time |
| 17:18 | yoklov | e.g. allow that categorize function to take sets as a parameter |
| 17:19 | amalloy | use filter? |
| 17:20 | amalloy | (first (for [[name items] sets :when (thing items)] name)) |
| 17:21 | yoklov | oh |
| 17:21 | yoklov | yeah that totally works thanks so much |
| 17:27 | semperos | neophyte clojurescript/emacs problem |
| 17:28 | semperos | I've followed these instructions to make my inferior-lisp-program start up a browser REPL |
| 17:28 | semperos | https://github.com/clojure/clojurescript/wiki/Emacs-&-inferior-lisp-mode |
| 17:29 | semperos | I can open a .cljs file and eval things like (+ 1 1), but when I try to eval the namespace form, it can't find the necessary file |
| 17:29 | semperos | does anyone have more detailed notes on doing cljs development with Emacs, or know what simple thing I might be missing? |
| 17:33 | dnolen | semperos: yes that script is very simple, needs to be changed to set the classpath to your project directory. |
| 17:34 | semperos | dnolen: great, that's what I was just editing in |
| 17:35 | semperos | glad I was at least in the right direction |
| 17:35 | brehaut | todays think relevance podcast interview about clojurescript one is great |
| 17:35 | semperos | agreed |
| 17:38 | JohnnyL | How mature is clojure script? |
| 17:38 | dnolen | JohnnyL: rough edges, but it's works pretty darn well |
| 17:39 | amalloy | PG13 |
| 17:39 | ibdknox | lol |
| 17:39 | JohnnyL | dnolen: ok thanks. I was hoping to do some ajax/canvas work in it. |
| 17:39 | JohnnyL | amalloy: :) |
| 17:40 | technomancy | JohnnyL: depends on if you're comparing it to clojure or javascript |
| 17:41 | JohnnyL | technomancy: nope, just functionality-wise and bug free related maturity. |
| 17:44 | dnolen | JohnnyL: lots of functionality - Relevance actually used ClojureScript One for a client project, so likely few show stopping bugs |
| 17:45 | ibdknox | hm |
| 17:45 | ibdknox | I think cljs one is positioned in a very weird way |
| 17:47 | dnolen | ibdknox: how so? |
| 17:47 | ibdknox | dnolen: it's shortsighted to assume it's not a library |
| 17:47 | ibdknox | the way in which it is presented, it will absolutely become a library |
| 17:48 | ibdknox | whether intentional or not |
| 17:49 | JohnnyL | dnolen: kj |
| 17:49 | JohnnyL | dnolen: k |
| 17:51 | dnolen | ibdknox: true, but I think the point is to show how to compose a Clojure <-> ClojureScript solution via a full fledged example w/ thorough documentation. |
| 17:51 | brandel | dnolen: talking about cljs one? as a clojure newbie I have found that super helpful |
| 17:52 | dnolen | ibdknox: there are a couple things in there that are really neat but not fully baked - the dispatch thing. |
| 17:52 | ibdknox | dnolen: which is awesome, but it's now cljs is in an awkward state |
| 17:52 | dnolen | brandel: yes it's meant to be helpful, especially for people new to Clojure |
| 17:52 | ibdknox | -it's |
| 17:52 | Raynes | That sentence is in an awkward state. |
| 17:52 | dnolen | ibdknox: ? |
| 17:52 | brandel | honestly I found getting started with clojurescript a bit daunting when it was released initially |
| 17:52 | ibdknox | brandel: definitely |
| 17:52 | Raynes | Well, it was never really 'released'. |
| 17:52 | dnolen | brandel: yup |
| 17:53 | Raynes | Which is the source of all the problems in the universe. |
| 17:53 | ibdknox | a simple release + a lein plugin would've addressed that |
| 17:53 | brandel | well, when I first came across it months ago I should say then |
| 17:53 | Raynes | Hunger, poverty -- it's all caused by lack of a release. |
| 17:53 | emezeske | I'm trying to make up for things with lein-cljsbuild :) |
| 17:53 | Raynes | Even a superalphalphabetaomega-0.0.0.0001 |
| 17:54 | technomancy | oops; pronoun fail. |
| 17:54 | brandel | I love how easy it is to test serverside and clientside code and to develop using the repl - it's so different from the way I've worked with js/java etc in the past |
| 17:54 | technomancy | (ZUM) |
| 17:55 | Raynes | technomancy: How are we doing on existing lein tasks in 2.0? Maintaining lein-newnew is daunting. |
| 17:55 | TimMc | weeEEEOOOoooo |
| 17:55 | TimMc | lazybot: Can you describe the culprit?? |
| 17:55 | lazybot | TimMc: Uh, no. Why would you even ask? |
| 17:55 | Raynes | Sublime Text 2's multi-select only goes so far! |
| 17:56 | ibdknox | dnolen: cljs one just told people how they should do CLJS, and how we're supposed to do it is download a sample app the has the underpinning of a new library in it that isn't fully baked |
| 17:56 | ibdknox | dnolen: it sets convention |
| 17:56 | technomancy | Raynes: what about making lein 2 just depend on lein-newnew? |
| 17:57 | technomancy | single canonical source |
| 17:57 | Raynes | Man. You're so fickle about dependencies that I never know anymore. |
| 17:57 | Vinzent | Hello, I need to connect logic programmning engine with a database. I'm a complete noob in logic programming and all that stuff. Where should I start? How can I use core.logic with relational database? Or I don't need relational database at all? |
| 17:57 | JohnnyL | there an option to create the jquery at the server in clojure and then push it to the client? is there a name for this? |
| 17:57 | dnolen | ibdknox: if alpha software sets a convention sure. in any case I think CLJS1, and noir+pinot are all part of growing ecosystem - I'm not too worried about it. |
| 17:58 | dnolen | Vinzent: you might want to look at this, http://tsdh.wordpress.com/2012/01/06/using-clojures-core-logic-with-custom-data-structures/ |
| 17:58 | ibdknox | yeah, pinot needs to change a lot |
| 18:00 | Vinzent | dnolen, thanks, I'll check it out... |
| 18:01 | dnolen | ibdknox: exciting times IMO, will be cool to see where this stuff is by the next Conj |
| 18:01 | ibdknox | dnolen: definitely. I'm doing a big project in CLJS |
| 18:01 | seancorfield | as opposed to by the next Clojure conference (which is March) :) |
| 18:01 | ibdknox | seancorfield: I'll have very cool stuff to show by then too :) |
| 18:02 | seancorfield | with ClojureScript:One using Enlive, i'm looking forward to seeing what I can learn from it and apply to FW/1... |
| 18:02 | seancorfield | Domina... rings a bell... who wrote that library? |
| 18:03 | ibdknox | lukevanderhart |
| 18:03 | seancorfield | ah, right... |
| 18:04 | seancorfield | he's doing a talk on it at West... |
| 18:04 | ibdknox | yessir |
| 18:04 | seancorfield | i was surprised there wasn't a pinot or noir or korma talk on the schedule |
| 18:04 | seancorfield | but i guess you're doing back to back web training beforehand and covering them all there? |
| 18:05 | ibdknox | seancorfield: I pitched a different talk, but it didn't fit in really |
| 18:05 | franks | technomancy: trying to built the plugin inside of my cljsh project, but get "Could not locate leiningen/core...", even though i do not have a leiningen/core.clj - is it an issue to have src/cljsh/core.clj for a main "cljsh" project with a src/leiningen/cljsh.clj for the plugin inside that one project? |
| 18:05 | technomancy | "could not locate leiningen/core.clj" sounds like maybe you are using lein2 by accident? |
| 18:06 | technomancy | the files you mention should not interfere with anything |
| 18:06 | ibdknox | seancorfield: I'm sure there will be time to introduce some of them in lightning talks, but honestly, I think we'll see my time is better spent working on my secret project right now :) |
| 18:06 | seancorfield | lol... ok... |
| 18:06 | ibdknox | hint: people will have a very fun and interesting way to learn Clojure |
| 18:07 | Raynes | I've seen his secret project! |
| 18:08 | ibdknox | lol |
| 18:09 | ibdknox | seancorfield: it's using a lot of CLJS too, so I have some cool things coming out of that, which will be useful to folks |
| 18:14 | ritre | Can someone explain this: https://gist.github.com/1590801 to me? Why the first implementation gives stack overflow, and the second does not? The function should sum prime numbers less than n. |
| 18:15 | franks | technomancy: using lein 1.7 or 1.6.2... but i'm referring to vars in leiningen.cljsh in the project file and am using :project-init (require 'leiningen.cljsh) to force a load - could that have an effect? |
| 18:15 | technomancy | project-init... did I add that? |
| 18:16 | technomancy | huh; apparently it exists |
| 18:16 | TimMc | haha |
| 18:16 | technomancy | franks: are you trying to load leiningen code inside a non-plugin project? |
| 18:17 | amalloy | $google stackoverflow dbyrne primes sieve |
| 18:17 | lazybot | [recursion - Recursive function causing a stack overflow - Stack ...] http://stackoverflow.com/questions/2946764/recursive-function-causing-a-stack-overflow |
| 18:17 | amalloy | ritre: ^ |
| 18:18 | TimMc | oho |
| 18:18 | franks | technomancy: i'm trying to refer to my plugin vars from inside of the project.clj to set :repl-options... |
| 18:18 | ritre | amalloy: thanks |
| 18:19 | technomancy | franks: project-init runs inside the project's process itself |
| 18:19 | TimMc | hmm, gist doesn't have diffs? |
| 18:19 | franks | technomancy: before i did the same with vars that were part of my normal project files/ns, and only could make this work by requiring the var's namespace |
| 18:20 | amalloy | TimMc: none that i could find. you can clone the repo and run diffs locally, but... |
| 18:20 | TimMc | feh |
| 18:22 | TimMc | ritre: Do you see how to fix it? |
| 18:23 | ritre | TimMc: I am not sure |
| 18:24 | TimMc | ritre: THe problem is that that 'remove is lazy, and with each iteration you are calling remove on the last iteration's remove. |
| 18:25 | ritre | and that consumes stack, ok? |
| 18:25 | TimMc | You also take one element from the front. To realize that element, n removes have to be asked for their first element if you have looped n times. |
| 18:26 | TimMc | Right. Each remove is calling a remove which is calling a remove... |
| 18:27 | TimMc | What you need to do is realize the entire lazy seq on each iteration. doall is the tool for that. |
| 18:27 | ritre | well I got it now, thx! |
| 18:28 | ritre | I am going to lern more about doall. |
| 18:29 | TimMc | ritre: also see dorun, for when you don't want the seq/don't want to hold onto the head |
| 18:30 | ritre | TimMc: yes I will |
| 18:32 | TimMc | amalloy: I'd seen that before but I hadn't really read it -- that was a bit new to me. |
| 18:34 | ritre | TimMc: But I am still curious why adding only 'if' solves the exception. |
| 18:38 | amalloy | it just delays the problem, i think |
| 18:40 | ritre | amalloy: So if I sum even more numbers I'll get the error again? |
| 18:40 | amalloy | probably |
| 18:41 | amalloy | i don't see any reason that this addresses the underlying issue, but i'm not 100% sure that it doesn't |
| 18:41 | ritre | Yes, it sounds resonable |
| 19:04 | yoklov | is there a difference between (apply vector …) and (vec …)? |
| 19:04 | chhildeb | Hi there. Just testing my new IRC client privmsg function from the repl. I sure like Clojure. |
| 19:04 | amalloy | one of them has a lot more letters |
| 19:04 | yoklov | i know! i like the one with less but wanted to know if i was going to get tripped up by thinking they're the same |
| 19:05 | Raynes | Hi there. I recommend an empty channel for IRC testing. |
| 19:05 | ibdknox | amalloy: you're all over it today :p |
| 19:05 | chhildeb | Sorry, didn't actually think it would work on the first try. |
| 19:05 | Raynes | Hahaha |
| 19:05 | ibdknox | lol |
| 19:06 | chhildeb | I will do that now, please excuse the disturbance. |
| 19:06 | yoklov | hahaa |
| 19:06 | Raynes | chhildeb: Btw, I have an IRC library for Clojure called Irclj. I'm currently in the middle of a rewrite, but it might be useful to you in its current state. |
| 19:06 | Raynes | https://github.com/Raynes/irclj |
| 19:07 | chhildeb | I'm really sorry, but this is my first ever IRC client so I really didn't realise it was that easy. |
| 19:07 | ibdknox | chhildeb: no worries |
| 19:07 | Raynes | You didn't actually bother anyone. |
| 19:07 | Raynes | It was just a heads up. |
| 19:07 | Raynes | :) |
| 19:09 | zzach | While trying to start swank-cdt using lein swank, an error message comes up: ERROR: Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options. --- Error occurred during initialization of VM --- agent library failed to init: jdwp (using Java 1.6, Clojure 1.3). What has to be changed? |
| 19:10 | technomancy | zzach: I don't think anyone here understands how cdt works; you might need to try the mailing list. |
| 19:34 | lsh | I'm very new lisp/clojure and I'm trying to create a list of all directories and subdirectories using a recursive function but it doesn't appear to be appending to the list I pass down |
| 19:34 | lsh | http://pastebin.com/wnTaEmmG |
| 19:34 | lsh | can anyone offer any insight? |
| 19:36 | lsh | nuts - left out a function: http://pastebin.com/0b7Lg0P6 |
| 19:36 | technomancy | lsh: you want (if (seq subdirs) [...]) rather than just if subdirs |
| 19:36 | technomancy | the empty list is true |
| 19:36 | brehaut | lsh: you dont need to quote a vector literal |
| 19:37 | technomancy | also I hate to spoil the fun, but there's a built-in function called file-seq |
| 19:37 | lsh | I know, but I want to learn how to use a language |
| 19:38 | technomancy | ok, carry on =) |
| 19:38 | lsh | originally the function was to recurse through file-seq and build a list of ((parent children) (parent children)) |
| 19:38 | lsh | but I've had to simplify and simplify and I'm still getting an empty result: (() () (())) |
| 19:38 | lsh | I figure it's something I'm fundamentally 'not getting' |
| 19:39 | brehaut | lsh: you probably dont want cons onto vectors eithe |
| 19:39 | lsh | cons and conj produce the same result |
| 19:40 | lsh | a list of empty lists |
| 19:40 | brehaut | ,(cons 1 []) |
| 19:40 | clojurebot | (1) |
| 19:40 | brehaut | ,(conj [] 1) |
| 19:40 | clojurebot | [1] |
| 19:40 | brehaut | thats two different results |
| 19:40 | lsh | I mean in terms of the program, not their use. |
| 19:40 | brehaut | it may not be your bug, but what you are doing is weird |
| 19:40 | lsh | I want a flattened list from a tree! how is that weird? |
| 19:41 | TimMc | lsh: tree-seq |
| 19:41 | brehaut | Lsh: consing onto a vector is weird |
| 19:41 | lsh | I give up. thanks guys |
| 19:41 | brehaut | if you want to flatten a tree, mapcat is your friend |
| 19:41 | brehaut | or tree-seq |
| 19:42 | lsh | I'll look at mapcat |
| 19:42 | technomancy | it works if you (apply concat (for [...])) and do (if (seq subdirs) [...]) |
| 19:43 | lsh | thanks, I'll try that |
| 20:26 | lsh | hah - it turns out a lot of my previous versions of that function were actually correct. I was using load-file to run the file but it was sometimes using a cached version (I guess?) rather than read in the changes |
| 20:33 | _carlos_ | hi |
| 20:33 | _carlos_ | I've got this: |
| 20:33 | _carlos_ | $ lein ring server That's not a task. Use "lein help" to list all tasks. |
| 20:33 | _carlos_ | was there some change in lein? |
| 20:35 | babilen | Hi all -- I am unsure how I can rebind earmuffed/^:dynamic vars in a different namespace. I can naturally change the current namespace and (def ^:dynamic foo new-val), but I am definitely missing something here. Any good resources/documentation about this? |
| 20:37 | alandipert | babilen, you can use/require them into your ns as with any var |
| 20:38 | babilen | _carlos_: Did you install the lein-ring plugin? (lein plugin install lein-ring 0.5.4) |
| 20:39 | _carlos_ | babilen: no, I just put lein-ring in :dependencies. I guess that is the problem |
| 20:40 | _carlos_ | babilen: so lein-ring is useless in that place right? |
| 20:40 | babilen | _carlos_: Please note that "lein plugin install ..." installs the plugin globally and not specifically for your project. You can also add it to dev-dependencies and run "lein deps" |
| 20:40 | ibdknox | _carlos_: you could put it in dev-dependencies, but it's much better to install plugins at the user level |
| 20:40 | babilen | +1 |
| 20:41 | ibdknox | _carlos_: fwiw, if you're just starting out with web stuff in clojure, it might be worth taking a look at Noir: http://www.webnoir.org |
| 20:41 | _carlos_ | babilen, ibdknox I undertstand now |
| 20:41 | babilen | alandipert: Ok - That might result in some namespace polution in the long run, but I guess it'll do for now. |
| 20:43 | _carlos_ | ibdknox: I chose compojure for the sake of popularity. Is there better documentation for Noir? would compojure be better for the long run? |
| 20:43 | hiredman | alandipert: any news from core-wards regarding http://dev.clojure.org/jira/browse/CLJ-855 |
| 20:44 | technomancy | hiredman: it's not friday, dude |
| 20:44 | ibdknox | _carlos_: I'm not sure that compojure is actually more popular than Noir is now, but I don't have hard evidence |
| 20:45 | babilen | alandipert: I already :require the namespace that var belongs to -- So there is no way to reference/rebind it directly but I have to explicitly use it? I am using a library and want to override some defaults |
| 20:45 | ibdknox | _carlos_: Noir is built on top of compojure and provides a lot of stuff to help you get started. It's capable of doing everything compojure is at this point. |
| 20:45 | ibdknox | _carlos_: and yeah, there's lots more documentation for it |
| 20:46 | _carlos_ | ibdknox: thanks! I will look into it |
| 20:47 | hiredman | alandipert: it would also be great if someone from core could be nudged to comment on http://groups.google.com/group/clojure-dev/browse_thread/thread/dc46c4e80e895dd6?hl=en bug? feature? would a patch be greeted with the traditional indifference or out right hostility? |
| 20:48 | alandipert | babilen, peep https://refheap.com/paste/245 for an example |
| 20:49 | hiredman | I mean, I know everyone is frolicking through the new and exciting land of javascript developement with macros, but clj-855 could really use some attention, it is a major issue |
| 20:49 | alandipert | hiredman, unlike last week tomorrow is not a workday, and i bet it's on someone's agenda |
| 20:49 | alandipert | that said, i'm just the conj guy! |
| 20:50 | ibdknox | haha |
| 20:50 | babilen | alandipert: yeah, that is exactly what I meant -- I tried this with the difference that I (ns foo (:require [clojure.pprint :as pprint]) and that didn't quite work. I might have made a mistake though -- let me check again and provide a small example if I am able to reproduce it. |
| 20:50 | hiredman | well, you do work in much closer proximity to core |
| 20:51 | alandipert | hiredman, i'll bring it up |
| 20:51 | hiredman | so I would like you to do some head cracking by proxy |
| 20:51 | hiredman | thank you |
| 20:52 | alandipert | babilen, you should be able to bind pprint/*thingy* in that case |
| 20:53 | ibdknox | alandipert: how's your embedded lisp going? :) |
| 20:54 | jsnikeri` | Anyone willing to give me another set of eyes on something? I'm trying to add a pprint-ns function to clojure.pprint, and I think I'm just about there, but I'm having a weird issue that I think is related to dynamic binding. There is a loadable snippet here: https://refheap.com/paste/246 |
| 20:54 | babilen | alandipert: Ok, that was my intuition as well, but I must have made a mistake then. Thanks a lot! |
| 20:54 | technomancy | jsnikeri`: have you talked to replaca? |
| 20:55 | alandipert | babilen, np, happy computing |
| 20:55 | jsnikeri` | technomancy: is that a person or a function? |
| 20:55 | alandipert | ibdknox, it's changing the world |
| 20:55 | ibdknox | alandipert: that's what I like to hear :D |
| 20:55 | technomancy | jsnikeri`: heh; both! in this case the person. |
| 20:56 | jsnikeri` | technomancy: :) I have not. Should I? |
| 20:56 | technomancy | jsnikeri`: he did some work on that problem. I should have pointed him to you but I forgot your nick |
| 20:56 | technomancy | in my defense it seems to be a random jumble of vowels and consonants. |
| 20:57 | technomancy | no offense |
| 20:57 | jsnikeri` | technomancy: you making fun of my name! |
| 20:57 | jsnikeri` | ;) |
| 20:57 | technomancy | =) |
| 21:00 | alandipert | ibdknox, also put in an oscon thing for a lisp/arduino tutorial, should be a good time if they accept |
| 21:01 | ibdknox | oh sweet |
| 21:01 | ibdknox | when is oscon? |
| 21:01 | alandipert | june i think |
| 21:01 | technomancy | usually late july |
| 21:02 | alandipert | oh yeah, july 16th, in portland |
| 21:02 | ibdknox | neat :) |
| 21:02 | alandipert | far enough away for me to not be concerned about working on uberlisp at the moment |
| 21:02 | ibdknox | haha |
| 21:03 | ibdknox | well good luck with it |
| 21:03 | alandipert | thanks |
| 21:03 | hiredman | alandipert: have you seen lively linear lisp? |
| 21:04 | hiredman | lispish thing without gc |
| 21:04 | hiredman | http://www.pipeline.com/~hbaker1/LinearLisp.html |
| 21:04 | avi_flax | Hi all, I’m new to Clojure — hopeing someone can help me with something probably dumb… I have an expression: (instance? date-time DateTime) and I'm getting java.lang.ClassCastException: org.joda.time.DateTime cannot be cast to java.lang.Class — I'm baffled. |
| 21:04 | hiredman | ,(doc instance?) |
| 21:04 | clojurebot | "([c x]); Evaluates x and tests if it is an instance of the class c. Returns true or false" |
| 21:04 | avi_flax | ohh |
| 21:04 | avi_flax | thanks!! |
| 21:05 | alandipert | hiredman, yeah man |
| 21:05 | avi_flax | thanks! |
| 21:05 | alandipert | hiredman, i wish henry baker was my dad, that guy is so freaking cool |
| 21:06 | technomancy | so much suffering could be averted if "Equal Rights for Functional Objects" were required reading for anyone inventing a language. |
| 21:06 | hiredman | oh, right, the egal guy |
| 21:06 | hiredman | equality is a hard problem |
| 21:07 | babilen | alandipert: yeah, that works -- The only problem I have with that is that I would like to bind it once to the new value and forget about it. The binding approach requires me to wrap every call to a function that uses this var in (binding ..) -- I can give a more specific example if that would help. |
| 21:08 | hiredman | babilen: if you want to do that then you are doing something wrong |
| 21:08 | technomancy | hiredman: so I've been thinking that if we got knobs in clojure for varying lightness vs dynamicity, we could have serializable-fn as clojure.core/fn, right? |
| 21:08 | technomancy | and then equality on function objects becomes implementable |
| 21:08 | technomancy | but you would get it only when the knob was cranked all the way |
| 21:08 | technomancy | and I don't know how to feel about that |
| 21:08 | hiredman | technomancy: well, it (as usual) depends on what you mean by equality |
| 21:09 | technomancy | elisp has the same problem; you can compare interpreted lambdas but not byte-compiled ones. |
| 21:09 | technomancy | hiredman: eh? you mean more than just egal? |
| 21:09 | hiredman | for example #(% 1) and #(% 1) would never be equal |
| 21:09 | technomancy | ?? |
| 21:09 | lazybot | technomancy: Uh, no. Why would you even ask? |
| 21:09 | hiredman | the gensyms would be different |
| 21:10 | hiredman | neither would (fn [x] x) and (fn ([x] x)) etc |
| 21:10 | technomancy | well I wouldn't say never; it's not impossible to normalize locals. |
| 21:10 | technomancy | I just said implementable |
| 21:10 | babilen | hiredman: I have exactly the same feeling which is why I am asking here. -- Ok, to be more specific: I want to use clucy with a different analyzer (cf. https://github.com/weavejester/clucy/blob/master/src/clucy/core.clj) -- That requires me to bind *analyzer* to something else, but I don't want to do this whenever I call any of the functions that use *analyzer* |
| 21:12 | hiredman | babilen: if you are running that with clojure 1.3 (and with your reference to ^:dynamic above I will assume you are) you will have more problems |
| 21:12 | hiredman | *analyzer* is not declared as dynamic there |
| 21:13 | alandipert | technomancy, i quest for the lisp subset that is confluent and gives me a Real eq: http://en.wikipedia.org/wiki/Confluence_(abstract_rewriting) |
| 21:13 | babilen | hiredman: I've changed that already -- Just wanted to give a more specific example. |
| 21:14 | hiredman | alandipert: well, obiously we'll have to reduce to the λ calculus before we do any heavy lifting, which is great because we'll want that for the optimizing compiler anyway |
| 21:15 | technomancy | alandipert: is there much progress in that direction? |
| 21:15 | alandipert | hiredman, technomancy, i've let it go because i realized it's probably something dnolen will write eventually |
| 21:15 | alandipert | (or one of his programs will write) |
| 21:16 | hiredman | babilen: you might consider generating wrappers that do the binding for you |
| 21:16 | babilen | hiredman: I mean if I have to wrap every single call to search/add/... in (binding [clucy/*analyzer* my-analyzer] clucy/search ...) so be it -- I would, however, prefer to set this *once* and be done with it. I apologise for still trying to wrap my head around this, but I hope you understand what I am trying to do. |
| 21:16 | hiredman | that take the analyzer as an argument |
| 21:18 | hiredman | (def my-analyzer ...) (for [[v n] (ns-publucs clucy)] (intern n (fn [args] (binding [*analyzer* my-analyzer] (apply @v args))))) or something |
| 21:18 | hiredman | (better yet use a macro to generate proper defns) |
| 21:19 | hiredman | or even just run the code to generate the datastructures of the defns and copy and paste them in a file |
| 21:19 | babilen | hiredman: Ok -- That means that I have to manage an analyzer in every namespace in which I am using clucy wouldn't it? |
| 21:19 | hiredman | no |
| 21:20 | babilen | ah, I get what you mean now -- I essentially have foo.my-clucy which I use and that handles all new bindings that I might have to override |
| 21:22 | hiredman | cemerick had some kind of config idea about generating namespaces full of partially applied functions |
| 21:25 | babilen | To elaborate: Right now I see *analyzer* et al. as easy ways to change the default behaviour of a library. The problem is that I have to make sure that the same (in terms of behaviour) analyzer is used whenever I call *any* of the functions that use *analyzer*. I naïvely expected to be able to do something like (rebind clucy/*analyzer* new-value) *once* (in particular when parsing command line options) and don't care about it afterwards. |
| 21:26 | hiredman | babilen: but you can do that |
| 21:26 | babilen | how? |
| 21:26 | clojurebot | with style and grace |
| 21:26 | hiredman | ~botsnack |
| 21:26 | babilen | indeed :) |
| 21:26 | clojurebot | Thanks! Can I have chocolate next time |
| 21:27 | brehaut | hiredman: is http://cemerick.com/2011/10/17/a-la-carte-configuration-in-clojure-apis/ the thing you are thinking of? |
| 21:27 | hiredman | (binding [*analyzer* ...] (do-stuff)) in you entry function will take care of it, unless you running multiple threads, and even then in many cases with clojure 1.3 it will work |
| 21:28 | hiredman | bindings are dynamic and threadlocal |
| 21:28 | hiredman | dynamic as opposed to lexical (or static) and threadlocal (with some special cases) as opposed to globally visible |
| 21:29 | hiredman | brehaut: yes |
| 21:30 | babilen | brehaut: Ah, great. I've stumbled over that some time ago, but I guess it is time to read it again. |
| 21:30 | brehaut | theres a heap of great discussion in the comments there |
| 21:30 | hiredman | meh |
| 21:32 | alandipert | i'm outta here chaps, g'night |
| 21:32 | alandipert | oh btw, everybody's cool with conj in vegas this year? |
| 21:33 | technomancy | hah |
| 21:33 | brehaut | alandipert: im not |
| 21:33 | brehaut | needs to be somewhere more southern |
| 21:35 | babilen | hiredman: Ok, thanks for the pointers and discussion -- I see much clearer now and am sincerely grateful for that. |
| 21:35 | babilen | brehaut: Thank you too for bringing that post to my attention again. |
| 21:47 | wall | hello |
| 21:47 | cmwelsh | hey there wall |
| 21:47 | wall | can anybody help me with fnparser? |
| 21:47 | brehaut | do you mean joshua choi's fnparse ? |
| 21:48 | brehaut | ~anyone |
| 21:48 | wall | yes |
| 21:48 | clojurebot | Just a heads up, you're more likely to get some help if you ask the question you really want the answer to, instead of "does anyone ..." |
| 21:49 | brehaut | wall: just ask. there are people here who have used fnparse |
| 21:49 | wall | please see http://pastebin.com/1cpr13RZ |
| 21:50 | wall | this code must parse 3 token "false" "true" and space |
| 21:51 | wall | but then i call (parse "false true") i'm get java.lang.ClassCastException: java.lang.Character cannot be cast to java.lang.CharSequence |
| 21:51 | wall | [Thrown class java.lang.RuntimeException] |
| 21:51 | wall | why? |
| 21:51 | clojurebot | #<ClassCastException java.lang.ClassCastException: clojure.lang.Cons cannot be cast to clojure.lang.IPersistentStack> |
| 21:51 | brehaut | because a string is a seq of characters |
| 21:51 | brehaut | regexps match strings |
| 21:51 | brehaut | and the :remainder in fnparse is expected to already be tokenized |
| 21:52 | wall | oh... |
| 21:52 | wall | i must write own lexer for fnparse? |
| 21:52 | brehaut | not necessarily |
| 21:53 | hiredman | there is some thing for matching strings I think |
| 21:53 | hiredman | https://github.com/hiredman/Howler/blob/master/src/Howler/parser.clj |
| 21:54 | brehaut | wall, for your program (re-seq #"\w+" input) is all the lexer you need |
| 21:55 | brehaut | wall, otherwise hiredmans example of using a conc of lit's is what you probably want |
| 21:56 | hiredman | https://github.com/hiredman/clojurebot/blob/master/src/hiredman/clojurebot/factoids.clj even worse |
| 21:56 | brehaut | ,*clojure-version* |
| 21:56 | clojurebot | {:major 1, :minor 3, :incremental 0, :qualifier nil} |
| 21:57 | TimMc | brehaut: Both bots are these days. |
| 21:57 | brehaut | TimMc: yeah, i wasnt aware that anyone had ported fnparse to 1.3 |
| 21:58 | hiredman | clojurebot uses a classloader to run 1.3 in the same jvm as 1.2 |
| 21:58 | TimMc | brehaut: I thought you were in the future! |
| 21:58 | hiredman | so clojurebot is still 1.2 |
| 21:58 | jsnikeri` | How does one decide whether to use (bindings ...) or (with-bindings ...) in a given situation? |
| 21:58 | brehaut | TimMc: i am! |
| 21:58 | hiredman | never use with-bindings |
| 21:58 | TimMc | brehaut: The *sandboxes* are 1.3. |
| 21:58 | hiredman | (unless you really really want to) |
| 21:59 | brehaut | hiredman, TimMc: huh. thats very clever |
| 21:59 | brehaut | wall: another bot with an fnparse parser: https://github.com/brehaut/burningbot/blob/master/src/burningbot/logging.clj |
| 21:59 | wall | thanks |
| 22:00 | wall | but another question |
| 22:00 | brehaut | wall, and the tutorial you are reading is serious about not using run-p for a real project (when you get to that). its just a tool to make repl exploration easier |
| 22:00 | wall | yes, i mean it |
| 22:00 | wall | sory my bad english |
| 22:01 | wall | another quiestion, i want to do own interpreter of small subset basic |
| 22:01 | jsnikeri` | can you declare two bindings within the same binding form: (binding [*vector-newline-style* :fill *list-newline-style* :fill] ...) |
| 22:01 | wall | may be exists projecst what be like? |
| 22:03 | brehaut | wall, in clojure? |
| 22:03 | wall | yes |
| 22:04 | TimMc | wall: You are trying to write a BASIC interpreter? |
| 22:04 | wall | yes |
| 22:04 | brehaut | how specific do you mean? there are compilers and interpreters of various sorts in clojure yes. i dont think ive specifically seen a basic interp though |
| 22:05 | wall | i want anything like (basic "let x = 1; let y=2; print x+y") and at result see number 3 in REPL |
| 22:07 | brehaut | wall, how much do you know about simple interpreters? |
| 22:07 | TimMc | ,(binding [*print-readably* 'foo *print-meta* 8] [*print-readably* *print-meta*]) ; jsnikeri` |
| 22:07 | clojurebot | [foo 8] |
| 22:09 | wall | yes i want write simple interpreter |
| 22:09 | jsnikeri` | TimMc: thanks |
| 22:16 | babilen | One more question regarding dynamic vars that are used for configuration -- Assume I am writing a library that makes use of yet another library. The latter uses dynamic variables for configuration, but I don't want to expose that implementation detail to users of my (the former) library. How could this be done? What are good approaches? |
| 22:19 | tmciver_ | babilen: couldn't you just make them private vars? |
| 22:24 | babilen | tmciver_: I don't quite follow -- The situation is this: I write a library foo that uses another library bar. bar has (def ^:dynamic *setting1* true) but users of my library might want the behaviour of bar when bar/*setting1* is false -- I do, however don't want to force them to know/care about me using bar at all, let alone force them to wrap calls to my library in (binding [...] foo/great-function-that-calls-a-f-in-bar) for every conceivable ... |
| 22:24 | babilen | ... third-party lib bar' that I might use. |
| 22:28 | babilen | I guess that *I* have to make sure that every call to bar is wrapped in a suitable (binding [...] ...) and maintain and expose my own set of dynamically rebindable *configuration-vars* |
| 22:30 | tmciver_ | babilen: I see. It's not that you don't want to expose them, it's the burden on users of the lib. |
| 22:31 | babilen | yeah, but that unnecessarily forces them to care about me using specific libraries -- It also means that they have to change a lot of code when I decide not to use bar any longer, but switch to quux |
| 22:34 | tmciver_ | babilen: so am I. sorry I can't help. |
| 22:35 | babilen | No problem - Others might. :) |
| 22:39 | tomoj | anybody playing with cljque? is #'attend broken on master, or do I just not understand it? |
| 23:16 | Frank__ | hey |
| 23:16 | WorldOfWarcraft | hi Frank |
| 23:17 | WorldOfWarcraft | so my question is if I want to create the Fibonnacci sequence how would i go about doing that? |
| 23:17 | Frank__ | Well, it's quite simple |
| 23:17 | Frank__ | all you have to do |
| 23:17 | Frank__ | is |
| 23:18 | Frank__ | to make a program |
| 23:18 | WorldOfWarcraft | oh sweet |
| 23:18 | WorldOfWarcraft | thanks i got it |
| 23:18 | Frank__ | i got another question |
| 23:18 | Frank__ | i mean a question |
| 23:19 | Frank__ | what exactly is the nature of "loop?" |
| 23:19 | WorldOfWarcraft | oh well u see a loop is something that holds values |
| 23:19 | WorldOfWarcraft | for instance (1 2 3) is a loop |
| 23:19 | Frank__ | oh |
| 23:19 | Frank__ | i see |
| 23:19 | Frank__ | so in order to make a loop, |
| 23:19 | Frank__ | what would you need to do? |
| 23:20 | WorldOfWarcraft | to make a loop type in make (loop) |
| 23:20 | Frank__ | umm |
| 23:20 | Frank__ | that's kinda a problem for me |
| 23:20 | alexbaranosky | where am I? is the #clojure? |
| 23:20 | Frank__ | my keyboard is broken |
| 23:20 | Frank__ | yes |
| 23:20 | WorldOfWarcraft | yes this is clojure |
| 23:20 | WorldOfWarcraft | im teaching Frank about loops |
| 23:20 | alexbaranosky | ok, was pinching self |
| 23:21 | WorldOfWarcraft | he should use the command make (loop) |
| 23:21 | alexbaranosky | WorldOfWarcraft, ahhhh |
| 23:21 | Frank__ | what is "command?" |
| 23:21 | WorldOfWarcraft | a command is something called a string |
| 23:21 | WorldOfWarcraft | it is a word |
| 23:21 | Frank__ | wait, what? |
| 23:22 | alexbaranosky | "this is a string" |
| 23:22 | WorldOfWarcraft | what is your question, as you know i am a pro at clojure |
| 23:22 | Frank__ | i don't understand |
| 23:22 | Frank__ | please assist |
| 23:22 | WorldOfWarcraft | so to create a string type in makestring "string" |
| 23:22 | Frank__ | so then what? |
| 23:22 | Frank__ | how do i get from a string to a loop? |
| 23:23 | Frank__ | do i need to know how to knot? |
| 23:23 | Frank__ | is there such thing as a "knot?" |
| 23:23 | WorldOfWarcraft | yes how can you make a loop without a knot? |
| 23:23 | alexbaranosky | rlol |
| 23:23 | Frank__ | well, is "knot" command also a loopp? |
| 23:23 | WorldOfWarcraft | i believe u mean rofl |
| 23:23 | Frank__ | ? |
| 23:24 | Frank__ | is this funny to you? |
| 23:24 | WorldOfWarcraft | and did u know if u type in rofl in clojure it displays a large man laughing |
| 23:24 | Frank__ | rofl |
| 23:24 | Frank__ | you lied |
| 23:24 | Frank__ | okay |
| 23:24 | WorldOfWarcraft | no no open boxclojure |
| 23:24 | Frank__ | this is serious |
| 23:24 | Frank__ | i need to learn how to program |
| 23:24 | alexbaranosky | everything he says is a lie pretty much |
| 23:24 | Frank__ | really... |
| 23:24 | WorldOfWarcraft | what r u talking about |
| 23:24 | Frank__ | so there is no "knot?" |
| 23:25 | alexbaranosky | its like listening to an insane programmer |
| 23:25 | Frank__ | or "yarn?" |
| 23:25 | WorldOfWarcraft | no there is not a "knot" lol |
| 23:25 | alexbaranosky | definitely not |
| 23:25 | WorldOfWarcraft | but there is yarn |
| 23:25 | alexbaranosky | seriously, stop listening to this nutter |
| 23:25 | Frank__ | is that like a whole of "string?" |
| 23:25 | WorldOfWarcraft | yes you create a yarn by looping string |
| 23:25 | alexbaranosky | this is too much |
| 23:26 | Frank__ | so "yarn" effectively hold a lot of data? |
| 23:26 | Frank__ | wait |
| 23:26 | WorldOfWarcraft | no no |
| 23:26 | Frank__ | he's lying right? |
| 23:26 | WorldOfWarcraft | u see "yarn" holds strings of data |
| 23:26 | Frank__ | i thought that you said that "loops" held data |
| 23:26 | WorldOfWarcraft | yes that is correct |
| 23:26 | ivan | Frank__: yeah. you might want to avoid talking to crazy. |
| 23:26 | WorldOfWarcraft | however a yarn is slightly different |
| 23:27 | alexbaranosky | unless Frank__ is in on the fun |
| 23:27 | Frank__ | what? |
| 23:27 | clojurebot | #<ClassCastException java.lang.ClassCastException: clojure.lang.Cons cannot be cast to clojure.lang.IPersistentStack> |
| 23:27 | WorldOfWarcraft | what |
| 23:27 | WorldOfWarcraft | WHAT!!! |
| 23:27 | Frank__ | can you help me than? |
| 23:27 | WorldOfWarcraft | omg what r u talking about |
| 23:27 | WorldOfWarcraft | troll? |
| 23:27 | WorldOfWarcraft | what is a troll? |
| 23:27 | Frank__ | is he serious? |
| 23:27 | WorldOfWarcraft | im innocent of trolling |
| 23:27 | WorldOfWarcraft | i mean...i dont know what a troll is |
| 23:28 | ivan | Frank__: no. and most of the time this channel is pretty sane. |
| 23:28 | WorldOfWarcraft | im being called insane :( |
| 23:28 | Frank__ | dude... i really don't like it when i am in need of help from people, and i just meet trolls that i then believe because of my inexperience |
| 23:28 | WorldOfWarcraft | thats it im gonna rage quit |
| 23:28 | Frank__ | wait.. but i need help |
| 23:29 | WorldOfWarcraft | my death knight crits 20k damage |
| 23:29 | ivan | Frank__: do you know how to program in any other languages? |
| 23:29 | WorldOfWarcraft | yes |
| 23:29 | alexbaranosky | this is the mot insane moment I've seen on here |
| 23:29 | Frank__ | other than what? |
| 23:29 | Frank__ | there's more than english? |
| 23:29 | ivan | programming languages |
| 23:29 | alexbaranosky | see? two man troll |
| 23:29 | ivan | yeah. |
| 23:29 | Frank__ | wait |
| 23:29 | WorldOfWarcraft | wait what is a programming language? |
| 23:29 | alexbaranosky | they're an act |
| 23:29 | Frank__ | i'm new to programming |
| 23:29 | WorldOfWarcraft | clojure is slang english i thought |
| 23:30 | Frank__ | so mr.WoW doesn't know how to program? |
| 23:30 | WorldOfWarcraft | program? whats a program? |
| 23:30 | Frank__ | ... |
| 23:30 | Frank__ | i thought i could get help here |
| 23:30 | ivan | well, Frank__ is connecting from Illinois Mathematics and Science Academy |
| 23:30 | WorldOfWarcraft | i thought we were learning clojure not programming |
| 23:30 | alexbaranosky | dude's spinning you a yarn :) |
| 23:30 | ivan | WorldOfWarcraft from who knows where |
| 23:31 | Frank__ | i need to learn how to program for school |
| 23:31 | alexbaranosky | well #clojure is the place for help with clojure |
| 23:31 | Frank__ | what's clojure? |
| 23:31 | WorldOfWarcraft | ok enough trolling...that was fun thx guys |
| 23:31 | Frank__ | i needed help and they told me to come here |
| 23:31 | alexbaranosky | yep, adios |
| 23:31 | WorldOfWarcraft | i actually do know clojure and Frank__ is my helper in crime |
| 23:32 | Frank__ | what? |
| 23:32 | clojurebot | #<ClassCastException java.lang.ClassCastException: clojure.lang.Cons cannot be cast to clojure.lang.IPersistentStack> |
| 23:32 | Frank__ | DUDE |
| 23:32 | alexbaranosky | figures |
| 23:32 | WorldOfWarcraft | it was fun yes? |
| 23:32 | Frank__ | I WAS LIED TO |
| 23:32 | alexbaranosky | an interesting diversion |
| 23:32 | WorldOfWarcraft | lol gg back to my raid |
| 23:32 | alexbaranosky | I need a better bs detector |
| 23:32 | Frank__ | so clojure is a language in programming? |
| 23:32 | Frank__ | like java |
| 23:32 | Frank__ | ? |
| 23:33 | WorldOfWarcraft | no java is coffee |
| 23:33 | Frank__ | ... |
| 23:33 | Frank__ | you troll |
| 23:33 | WorldOfWarcraft | Frank__ i luv u |
| 23:33 | Frank__ | i'm sorry... i can't say the same to you because you lied to me so much |
| 23:34 | jcromartie | is WorldOfWarcraft a new bot? |
| 23:34 | WorldOfWarcraft | no im not a bot lol |
| 23:34 | WorldOfWarcraft | oh dang it i should have said i was |
| 23:34 | jcromartie | so, slightly OT: has anybody here read "Code" by Charles Petzold? |
| 23:34 | Frank__ | are bots programs? |
| 23:35 | WorldOfWarcraft | no what is it? |
| 23:35 | Frank__ | how can i make one? |
| 23:35 | jcromartie | it's a pretty good introduction to digital logic circuits and computer architecture |
| 23:35 | WorldOfWarcraft | cool |
| 23:35 | WorldOfWarcraft | ill look it up |
| 23:35 | Frank__ | what? |
| 23:35 | clojurebot | #<ClassCastException java.lang.ClassCastException: clojure.lang.Cons cannot be cast to clojure.lang.IPersistentStack> |
| 23:35 | Frank__ | digital logic? |
| 23:35 | jcromartie | like, I went from nothing to understanding latches, flip-flops, RAM, program counters, Von Neumann machines, etc., in about 200 pages |
| 23:35 | Frank__ | what's that... |
| 23:36 | ivan | Frank__: Wikipedia knows things |
| 23:36 | Frank__ | was wikipedia made in clojure? |
| 23:36 | ivan | no |
| 23:36 | WorldOfWarcraft | how long did it take u to read |
| 23:36 | jcromartie | oh I see what's going on here |
| 23:36 | WorldOfWarcraft | hmm? |
| 23:38 | WorldOfWarcraft | PEACE!!!!!! |
| 23:38 | Frank__ | ? |
| 23:39 | Frank__ | wiat.. then whose gonna help |
| 23:39 | aaelony | has anyone here gone through clojure script one yet? https://github.com/brentonashworth/one/wiki/Getting-started states (js/alert "hello") but I am unclear where "js" gets defined or imported from |
| 23:43 | amalloy | jcromartie: yeah, Code is a good book. i read it in high school, or thereabouts |
| 23:43 | jcromartie | amalloy: you make me feel old |
| 23:44 | jcromartie | (me being the ripe old age of 28… and feeling rather unaccomplished) |
| 23:44 | amalloy | i'm only 26, bro |
| 23:45 | jcromartie | :P OK |
| 23:45 | jcromartie | http://upload.wikimedia.org/wikipedia/commons/0/02/80486dx2-large.jpg |