#clojure logs

2011-05-14

03:06grantmwhen i try to use case, the REPL tells me that case doesn't exist. which is weird. i'm pretty sure case exists... right? why can't the repl (or clojure for that matter) find it?
03:08stirfoosometimes I'll fat-finger a namespace and I can't acces core functions, but I have no idea exactly what I did wrong.
03:08stirfoobut clojure.core/case would work
03:09stirfoo<shrug>
03:09grantmoh wait, im using clojure 1.1 and it needs 1.2
03:09grantmsimple :)
03:09stirfoono case in 1.1?
03:09grantmnope
03:10stirfooah, I think I jumped into Clojure after 1.2 was released
03:11grantmme too :)
03:11grantmnot sure how i have 1.1
03:12stirfooI find it weird that (in-ns 'frumbajimbleooza) does not fail if that namespace does not exist. I think that's how I lose core functions sometimes.
03:15amalloystirfoo: that's the way namespaces are (usually) created
03:16amalloy,(macroexpand '(ns tmp))
03:16clojurebot(do (clojure.core/in-ns (quote tmp)) (clojure.core/with-loading-context (clojure.core/refer (quote clojure.core))))
03:16stirfoooh, that's interesting
03:17amalloyyou can explicitly create them with ##(create-ns)
03:17sexpbotjava.lang.IllegalArgumentException: Wrong number of args (0) passed to: core$create-ns
03:19amalloyi'm not sure if there exists a way to enter a namespace that doesn't implicitly create it. it's hard to imagine it seeing much use, though, since (ns whatever) is supposed to be macro sugar over in-ns/use/require, and if it actually did more than just package them up nicely i think that would cause more confusion
03:19amalloy~source in-ns
03:19amalloy$source in-ns
03:19sexpbotSource not found.
03:19amalloyreally?
03:19amalloy&(doc in-ns)
03:19sexpbot⟹ "([name]); Sets *ns* to the namespace named by the symbol, creating it if needed."
03:20stirfoowell there it is, 'creating it' if needed
03:22stirfooI got my copy of Joy of Clojure but I want to get a proper Clojure environment in place before I dig in. I've been using my own scripts handling CLASSPATH, but now I'm trying to get lein working.
03:23amalloystirfoo: http://stackoverflow.com/questions/5983427/how-to-install-clojure-on-ubuntu-10-04-from-github-repo-with-no-clojure-jar/5984183#5984183 is a super-easy way to get lein running
03:23Vinzentin enlive, is it possible to alter inner tag of the tag which I've selected?
03:24Vinzentlike, <div><a ...>, I have to clone-for div and change href attr of a
03:27thorwilVinzent: if you clone-for :div, you can then just follow on with selecting :a
03:27thorwil[:a] (en/set-attr :href string)
03:28thorwilaside of that, transformations can be nested, so you can always sub-select
03:29Vinzentthorwil, but then all links will have the same href, right? The idea is to build list of links
03:30thorwilVinzent: that's what the let part of clone-for is
03:30thorwilgood for
03:31thorwil(en/clone-for [i (:items arg-from-defsnippet)], then extract the needed data from i
03:32stirfoothanks amalloy. I had actually gotten that far but if I add [org.clojure/clojure-contrib "1.1.0"] to my project :dependencies, run lein deps, run lein repl, then (require '[clojure.contrib.str-utils2 :as sutils]) I get: java.lang.NoSuchMethodError: clojure.lang.RestFn.<init>(I)V (NO_SOURCE_FILE:0)
03:34thorwilVinzent: see for example http://paste.pocoo.org/show/388503/
03:34amalloy(a) 1.1 is way old, as is str-utils2. (b) that's the error message you get for mismatched compiled binaries
03:34amalloydid you build something yourself?
03:35stirfooamalloy: ah, no I just installed the lein script, created a project, added the contrib dependency. So maybe I should use a different version in the :dependencies vector?
03:36amalloystirfoo: depend on clojure 1.2.1, and contrib 1.2.0
03:38stirfooamalloy: what replaces str-utils2? or have most of those functions been folded into core?
03:38amalloystirfoo: most of them have been folded into clojure.string
03:38stirfooamalloy: that worked, thanks!
03:38stirfooamalloy: ah
03:38amalloythe rest mostly live in clojure.contrib.string, i think
03:42Vinzentthorwil, that's it, thank you very much for the paste!
03:42thorwilnp
03:51stirfooWell all right. Full macro expansion works in swank now, sans namespaces and pretty printed.
03:52amalloysans namespaces?
03:52stirfooamalloy: namespaces were included in macro expansions before. I had something wrong, but it's all working now.
03:53amalloystirfoo: not entirely sure i know what you mean. macroexpansions should have namespaces in them, like ##`x
03:53sexpbot⟹ clojure.core/x
03:54amalloyanyway glad it's working for you
03:54stirfoosexpbot: no! I don't want that, it just muddles the output, imo
03:55amalloystirfoo: too bad, mate. it's there for a reason, to prevent accidental symbol capture, which is heinously difficult to debug
03:57stirfooIf I'm writing a macro and want to see what it expands to, the namespaces just make it harder to read, again, imo.
03:57Vinzentstirfoo, there is clojure-debug that makes macroexpansions pretty
03:58amalloyVinzent: linkkkkk plz
04:00stirfoosometimes I like a *fully* recursive expansion as well C-c M-m (slime-macroexpand-all) which seems to work well with lein swank now. Nice an pretty printed with no namespaces.
04:00amalloystirfoo: you're right in most cases. i wouldn't complain if clojure.core/inc printed as inc when macroexpanding
04:01amalloybut if you have a symbol you accidentally namespace-qualify and didn't intend to, it seems like you're asking for pain if you cause the macroexpansion-printer to hide the ns
04:01stirfooNo, I agree. I depends on the complexity of the macro I suppose.
04:02amalloystirfoo: the usual mistake is qualified let-bindings: ##`(let [x 1] (inc x))
04:02sexpbot⟹ (clojure.core/let [clojure.core/x 1] (clojure.core/inc clojure.core/x))
04:02amalloywhen what is really *meant* is ##`(let [x# 1] (inc x))
04:02sexpbot⟹ (clojure.core/let [x__10202__auto__ 1] (clojure.core/inc clojure.core/x))
04:02amalloyhaha, except with the # in both places :P
04:02stirfooamalloy: I've gotten used to `(let [x# 1] ...), which is really cool ;)
04:03amalloyyeah
04:03stirfooI don't think I've used (gensym) yet
04:03stirfooI don't think I'*had* to use (gensym)
04:03amalloybut especially devious is ##`(do `(let [x# 1] x#))
04:03sexpbot⟹ (do (clojure.core/seq (clojure.core/concat (clojure.core/list (quote clojure.core/let)) (clojure.core/list (clojure.core/apply clojure.core/vector (clojure.core/seq (clojure.core/concat (clojure.core/list (quote clojure.core/x__10210__auto__)) (clojure.core/list 1)))... http://gist.github.com/972036
04:04amalloywhere the outermost ` form qualifies the gensym produced by the inner one
04:04amalloystirfoo: i've found a couple reasons to use gensym, but not many
04:19Vinzentamalloy, well, actually I don't know what exactly does that :) I can paste my (messy) emacs config if you want
04:20amalloyVinzent: eh. i don't really use C-C C-m that often; i just call macroexpand from the repl
04:23Vinzentamalloy, why? imo hit C-c RET on the form is much more convenient
04:23stirfoothat's what I always use, and the extra C-c M-m sometimes
04:24Vinzenthttp://imgpaste.com/i/cgdlr.png
04:24amalloyyeah, it is, i'm sure. i just never really got into the habit, and i most often test macroexpansions while i'm developing something in the repl anyway
04:24stirfooand you can C-c RET in that buffer to do surgical strikes
04:27amalloy$mail dnolen https://github.com/technomancy/clojure-mode/pull/17
04:27sexpbotMessage saved.
04:33Vinzentbtw, I haven't solved my yesterday's problem: when doing java -cp ./lib;my.jar my.ns i've got Failed to load Main-Class manifest attribute from... Indeed, there is no such atribute in lein-created jars, but then how should i run it correctly?
04:40amalloyVinzent: set the :main attribute in project.clj to my.ns
04:44Vinzentamalloy, Could not find the main class...
05:24terom&(doc find-ns)
05:24sexpbot⟹ "([sym]); Returns the namespace named by the symbol or nil if it doesn't exist."
05:26yayitsweiis there an easy way to stop a hung process without killing the REPL? I'm using clojure.contrib.shell-out and am trying to debug a process that keeps freezing
09:21technomancyamalloy_: nice; thanks for the fix
12:15TimMcyayitswei is gone, but... my suggestion would have been Ctrl-Z, then ps -e --forest | grep rlwrap -A 5
12:15TimMcAnybody have a better approach?
12:43robonoboIs there a function that gives back every pair of two given colls? so (f (range 3) (range 3)) -> ([0 0] [0 1] [0 2] [1 0] [1 1] ...)
12:44Vinzentfor?
12:44clojurebotfor is not used often enough.
12:45robonobo,(for [i (range 3)] (map #(vector % 4) (range 3)))
12:45clojurebot(([0 4] [1 4] [2 4]) ([0 4] [1 4] [2 4]) ([0 4] [1 4] [2 4]))
12:45robonobobut
12:45robonobo,(flatten (for [i (range 3)] (map #(vector % 4) (range 3))))
12:45clojurebot(0 4 1 4 2 4 0 4 1 4 ...)
12:46ampleyfly$help findfn
12:46sexpbotampleyfly: Finds the clojure fns which, given your input, produce your output.
12:46ampleyflyhmm
12:46Vinzent,(for [i (range 3) j (range 3)] [i j])
12:46clojurebot([0 0] [0 1] [0 2] [1 0] [1 1] [1 2] [2 0] [2 1] [2 2])
12:46robonoboofcourse
12:46robonoboVinzent: thanks
12:46Vinzentrobonobo, np
14:19stirfooif I wanted to set (javadoc foo) to look for a local copy of the docs, I could put it in ~/.lein/init.clj?
14:19stirfoosomething like: (dosync
14:19stirfoo (ref-set clojure.java.javadoc/*local-javadocs* '("/usr/share/doc/openjdk\
14:20stirfoo-6-jdk/api/")))
14:20stirfoosorry for the multiline crap-ola
14:20stirfoowould that just go at the top level of init.clj?
14:25tomojwonder why that's a ref
14:27stirfooI don't know, I've only used atoms and dynamic vars, not refs
14:27stirfooI had to look up how to set it ;)
14:28tomojlooks like there is an add-local-javadoc there for you too
14:34stirfootomoj: do you know how to add that to ~/.lein/init.clj? I tried to require clojure.java.javadoc, then use add-local-javadoc, but lein swank fails to start
14:37tomojnot sure why it would fail, but I don't think it will help anyway
14:37tomojinit.clj runs in leiningen's jvm
14:38stirfooso how would I append to *local-javadocs* globally (for lein repl or lein swank)
14:38tomoj:repl-init seems like it would work
14:38tomojbut then you need the code in a namespace that you either add to every project or depend on for every project
14:39stirfoothat doesn't sound fun
14:59thorwili'm trying to get rid of some repetition, but this doesn't seem exactly elegant: http://paste.pocoo.org/show/388899/ any ideas how to express that conciser?
15:02arohnerthorwil: one possibility is to make title a keyword argument. then use a let block to say [title (or title (:title content#))]
15:03arohnernm, I'm not sure which part you don't like
15:04thorwilarohner: the repetition of the "name title transformation" sequence
15:05arohnerthorwil: in the reworked defview?
15:05thorwilyes
15:06thorwilin the other case, it's the almost exact same body. no big issue, but there maybe something to learn here
15:09arohnerhttp://paste.pocoo.org/show/388908/
15:09arohnerthat changes the calling function a little, I don't know if you care about that
15:10arohner (defview name transformation :title :foo)
15:11thorwilarohner: i actually had to look up how keyword args are supposed to work and that looks like what i just started to imagine. thanks!
15:12arohnernp
15:12stevendo any of you use TextMate for clojure?
15:12thorwilhmm, i guess i can get rid of the let with an :or in the signature
15:14arohnerthorwil: maybe. I wasn't sure what the defn was called with.
15:15arohnerdo you have access to (:title content) when the macro is run?
15:16stirfoodoes anyone have a sample ~/.lein/init.clj I could take a peek at?
15:18tomojstill trying to add the local javadoc?
15:20thorwilarohner: no, would have to work put into the macro as string. experimenting
15:23stirfootomoj: yes
15:23arohnerman, zip-filter.xml is great until it doesn't work
15:23stirfooif I try use or require in init.clj lein repl fails
15:25tomojstirfoo: good luck, just worried what you will find if you get it to work :)
15:25arohnerstirfoo: what are you trying to use/require? something in lein's classpath, or something in your project?
15:25tomojif you get it to work I suspect that it will only be changed in lein's jvm, which won't help at all in your jvm
15:26stirfooarohner: I'm tryin to point javadoc to a local directory, but I want to to be globally set
15:26arohnerstirfoo: yes, but what are you trying to require?
15:26stirfoo(use '[clojure.java.javadoc :only (add-local-javadoc)])
15:26stirfooor require
15:27arohnerwhat's the exception?
15:27stirfooException in thread "main" java.lang.ExceptionInInitializerError (init.clj:1)
15:28arohnercan you paste all of it? on gist or pastie or something?
15:28stirfoowhich pastebin?
15:28arohnerstirfoo: any of them. https://gist.github.com/
15:28stirfoook, give me a sec...
15:32stirfoohttps://gist.github.com/972546
15:35stirfoois that require syntax correct?
15:36arohnerstirfoo: yeah. Looks like lein has a problem loading clojure.java.javadoc. the line (:use [clojure.java.browse :only (browse-url)])
15:36arohnernot sure why
15:37stirfooI think learning how to read tracebacks is going to take a while ;)
15:52arohnerstirfoo: add a (require 'clojure.java.shell) and (require 'clojure.java.browse) before requiring clojure.java.javadoc
15:52arohnerI really don't understand why that works, but it does
16:02stirfooarohner: well that kept the repl from crashing, but it's not setting *local-javadocs*. It's still an empty list which may be what tomoj was alluding to.
16:02arohnerstirfoo: leiningen always starts in it's own JVM. when it starts the repl, it spawns a second JVM that contains all your project code
16:02stirfoolein's resetting it afterwords
16:03arohnerhow do you know?
16:03stirfoouser=> clojure.java.javadoc/*local-javadocs*
16:03stirfoo#<Ref@7a4fe91e: ()>
16:05arohnerthat shows local-javadocs is empty, in your repl JVM. it doesn't prove lein reset it.
16:05arohneras I said, you have two JVMs. the one lein is running in, and the one your project is running in
16:06arohnerlein init modifies lein's JVM
16:06stirfooarohner: true
16:06arohner"The ~/.lein/init.clj file will be loaded every time Leiningen launches; any arbitrary code may go there. This code is executed inside Leiningen itself, not in your project. Set the :repl-init key in project.clj to point to a namespace if you want code executed inside your project."
16:06stirfooI tried that as well, but I'm quite sure I didn't know what I was doing ;)
16:07arohnerdo you have a project yet? i.e. a directory with a project.clj in it?
16:07stirfooyes setler/, I'm running lein from within that dir
16:08arohnerso in that project.clj, add ':repl-init setler.init'
16:08arohnerthen make a setler.init namespace
16:08arohnerthen stick your add-local-javadoc stuff there
16:09stirfooarohner: so I'd need to create setler/init.clj with: (ns setler.init (require ...)) (add-local-javadoc "...")
16:10arohnerright
16:10stirfoook, let me try that
16:10arohneryou know clojure files need to be in src/, right?
16:10stirfoono
16:10arohnerif you have setler/project.clj
16:10stirfooyes
16:10arohnerthen all clojure source needs to be in setler/src/setler/init
16:11arohnerbecause setler/src is the root of the classpath, and then namespaces need to have directories that match the parse of the ns name
16:14stirfoowell all right. thanks arohner (and tomoj)
16:15stirfooI only had to require clojure.java.javadoc as well, not the others (shell, browser)
16:15stirfooboilerplate code sux
16:15arohnerstirfoo: yeah, needing the others was some kind of weirdness w/ how ~/.lein/init loads. Not sure why
16:16stirfoowhat would be the point of ~/.lein/init.clj? If I wanted to modify the behavior of lein itself?
16:16arohnerstirfoo: yeah
16:17arohnerchouser: when using zf-xml, I always seem to need to use zf/descendants to get anything to work. The examples in zf-xml work on atom1, but they don't work on my own XML and I don't understand why.
16:20robonoboso I have this function that generates a random nr between an upper and a lower limit (defn r [low upp] (+ low (* (- upp low) (Math/random))))), that seems to always return a rounded number when it's defined in a file, but not when it's defined in the REPL. Is there anyway I'm not hallucinating?
16:20arohnerrobonobo: I'd make sure you're calling what you think you're calling. There's no way file vs. repl would cause that
16:21arohnerrobonobo: maybe you're calling an old version or one defined somewhere else?
16:21robonoboarohner: i've restarted swank a couple of times.
16:21robonoboor would that not help?
16:21robonobothe function used to contain a Math/ceil call, so it's probably because of that
16:22arohnerrobonobo: swank lives in emacs, and talks to the clojure JVM over a socket. are you restarting emacs or the JVM?
16:22arohnerrestarting swank won't affect the JVM
16:22robonobothe jvm
16:23arohneradd a println in the function. like (println "I'm calling it!").
16:24arohneryeah, floor & ceil would fix it. random returns a double. double * int is a double. double + int is a double. so what you have pasted should always return a double
16:26robonobough. I swear i've restarted swank a couple of times, but now, trying it after i've asked #clojure, it magically works. damn computers.
16:29stirfoo,sayoonara should kill the server as well, yes?
16:29clojurebotjava.lang.Exception: Unable to resolve symbol: sayoonara in this context
16:29stirfoohehe, down boy!
16:32stirfoowell, :repl-init only works for the REPL, not swank, so now (javadoc ...) uses the URL, not the local doc
16:33stirfoothat's why I need to set it globally... somehow. that and I really don't want to have to add the boilerplate to every project. lein repl doesn't require a project too.
16:40stirfoolooks like alexott merged a patch to address that problem 6 months ago
16:44stirfoohave to use the deprecated :repl-init-script for it to work with swank
18:07fmwbit of a weird channel for this question, but here we go: anyone found a good alternative to the Aloha rich text editor (I'm working in an Apache licensed CMS in Clojure and don't want to force the AGPL on people)?
18:08fmwI've been trying a few, but have been rather underwhelmed
18:09fmwof course, I rather use markdown/rst for markup, but will need something WYSIWYG for typical users
18:29lucianfmw: ckeditor? tinymce?
18:31fmwlucian: thanks for the suggestions. those seem a bit bloated to me, but I might try them anyway. right new I'm testing the YUI editor, which seems to be quite decent
18:31luciani've never seen a good wysiwyg editor in a browser
18:31lucianor anywhere else, for that matter
18:31fmwlucian: me neither
18:32fmwlucian: I would personally never use one either, but for non-technical users its quite nice.
18:32luciani'm not convinced of that
18:32lucianbut yeah, people expect one
18:33fmwindeed, I'd like to try and convince them something like markdown is easy to learn, but there is a whole group of people that says "WHAT!? it doesn't look like Microsoft Word so how am I going to make sense of this?"
18:34fmwno point arguing with that
18:37technomancystirfoo: there's a bug in Clojure where classes in jars on the bootclasspath can't transitively require
18:43technomancythat's why you have to require shell/browser before javadoc works.
18:43stirfootechnomancy: ok. how would I go about modifying what `lein new' writes? Is there some template mechanism?
18:43technomancybut the bootclasspath shaves like half a second off boot time, so it's worth putting up with its annoyances
18:44technomancystirfoo: there's a plugin called "spawn" that does that
18:44technomancysomething like that may be added to leiningen itself in a future version
18:44stirfooah, ok I'll check that out.
18:44stirfootechnomancy: swank is working great so far, thanks for the effort
18:45technomancycool
18:45technomancycrap... I thought I had added :repl-init support to swank in 1.3; I guess I missed it =\
18:46stirfootechnomancy: yes, I had to use the deprecated keyword, but it does work
19:21amalloytechnomancy: i think my patch breaks some things
19:22stevendo any of you use TextMate for writing clojure code? if so, which plugin do you use?
19:22amalloyin particular [[]|] - a backspace there deleted the innermost ]
19:23amalloyand i assume that's because C-M-b there skips to before the first [
19:29amalloybut i can't figure out why. ideas?
19:31tomoj3fba516 is good?
19:32stirfoo[[]|] C-M-b [|[]] on my setup, no paredit, just basic emacs with clojure-mode
19:32amalloytomoj: afaik
19:33amalloystirfoo: with or without the commit i made last night to clojure mode? https://github.com/technomancy/clojure-mode/commit/4495e3
19:34stirfooamalloy: probably before that, I've had clojure-mode installed for a couple weeks
19:35stirfooamalloy: yes, my local version does not have that 'forward-sexp-function line
19:37stirfoodoes | have any special meaning in Clojure? I wonder if slime-repl is still parsing that char as common lisp. It messes with the repl.
19:37stirfooI think it's for escaping symbols in cl
19:37amalloyright, and not meaningful in clojure
19:38stirfooso, slime-repl would need to be hacked, or slime proper maybe?
19:38amalloyi'd argue you need to stop using |. i don't know if it's a valid symbol character anyway
19:40tomojI think that signifies point?
19:40stirfooI have a macro named op|, which means 'alternate' (x | y | z) (op| x y z). I think I did look and couldn't determine if it was legal syntax or not
19:41amalloy$google clojure symbol reader
19:41sexpbotFirst out of 1540 results is: Clojure - reader
19:41sexpbothttp://clojure.org/reader
19:41tomojoh
19:41amalloySymbols begin with a non-numeric character and can contain alphanumeric characters and *, +, !, -, _, and ? (other characters will be allowed eventually, but not all macro characters have been determined)
19:41dnolen| is definitely a valid symbol character in Clojure.
19:41stirfoo$ is another I use that isn't listed
19:42amalloythere are a lot of valid ones it doesn't mention
19:42amalloyso it's not a very helpful reference
19:42amalloydnolen: evidence?
19:42dnolen,(first '(|a|))
19:42clojurebot|a|
19:43dnolenamalloy: rhickey even talked about supporting it more explicitly.
19:43amalloythat's evidence that it works now
19:43stirfooyes, it works nicely, just not with the slime repl
19:43amalloystirfoo: that's weird
19:43stirfoounless you C-u RET
19:45stirfoowell, since I have a good installation now (not my bubble-gum version) maybe it works.
19:46stirfoouser> (op| \x \y \z) RET => mini-buffer message [input not complete]
19:47amalloyi see. yeah, probably slime-repl then
19:47stirfoojust need to rip out the code that is intercepting the |
19:59dnolensteven: I maintain it very sporadically, https://github.com/swannodette/textmate-clojure
20:00dnolensteven: it's quite easy to hack on, yet few people send in patches.
20:04stevencool thanks
20:18aavdoes anyone know if there any changes with exception handling in 1.3? it seems that try/catch does not work for me, as it did in 1.2
20:25alandipertaav: what have you noticed?
20:26aavalandipert: it seems that ClassNotFoundException get's wrapped into RuntimeException without any notice
20:27aav (try
20:27aav (.loadClass *bundle* cname)
20:27aav (catch Exception e
20:27aav (when osgi-debug
20:27aav (println "class not found: " cname))))
20:27aavthat's what i have
20:27aavand this code works now
20:28aavbut before (under 1.2) i had it working with (catch ClassNotFountException e
20:29alandipertyes, there have been changes that explain that
20:30aavalandipert: any hint where to read?
20:30alandiperthttps://github.com/clojure/clojure/commit/8fda34e4c77cac079b711da59d5fe49b74605553
20:32aavalandipert: i see. thank you!
20:33alandipertno problem
20:35symboleHow does one create a variable, local to a prarticular namespace?
20:35dnolensymbole: w/ def
20:36symbolednolen: It would still be refrencable from another namespace though.
20:37dnolensymbole: you can use metadata to make it private to the namespace if you like.
20:37amalloybut someone can still use it if they feel like ignoring the private meta
20:37amalloyjust fyi
20:40dnolennary inline in alpha7 is sick.
20:40dnolenfinally (+ 1 2 3 4 5) is not dog slow.
20:42dnolen1.3.0 is going to be a tasty release.
20:44TheMoonMasterWhen will 1.3 be out?
20:44dnolenTheMoonMaster: unknown, but I'm sensing we're nearing beta.
20:45TheMoonMasterdnolen: Awesome, wish there was some sort of release schedule
20:50symboleFrom what I can see, while there is defn- which would prevent "use" from exporting the symbol, there's no equivalent macro for vars. Why is that?
20:51scottjsymbole: there's a really long thread in the mailing lists's history about this
20:51scottjsymbole: basically there's ^:private and some ppl don't want private to be encouraged too much
20:53symbolescottj: I'm intersted in reading it. I imagine it could be very useful to have this local data, and prevent pollution if someone just did (use 'foo).
20:54scottjsymbole: then (def ^:private foo ..)
20:55dnolenclojurebot: use
20:55clojurebotchouser: I really did wonder why you had all those photobombers on slide 2.... audio is so useful :)
20:55dnolenheh
20:56scottjsymbole: that is for 1.3, older versions require (def ^{:private true} foo...)
20:57symbolescottj: Maybe what I am trying to do is just misguided? Do most people simply rely on users to use :only?
20:57dnolensymbole: exactly.
21:01scottjdnolen: in your recent recorded talk you mentioned type systems, maybe https://bitbucket.org/tarballs_are_good/lisp-random/src/b03568c1f295/HindleyMilner/tests.lisp would interest you
21:02symboleSeems to be more of an idiomatic approach to establishing an interface compared to what Common Lisp has. I'll roll with it. :-)
21:02alandipertdnolen's nyc lisp talk was recorded?
21:03scottjalandipert: yeah
21:03alandipertoh awesome
21:03dnolenalandipert: not the logic one no, a short talk about Scheme vs. Clojure
21:03scottjoh no wait maybe it was a scheme talk
21:03dnolenscottj: that is interesting though I'm more interested in post-HM type inference.
21:06alandipertdnolen: really enjoyed logic-tutorial btw, core.logic is a super cool library
21:07dnolenalandipert: thank you! still need to sit down and really flesh out the logic-tutorial.
21:11dnolenscottj: it's funny I'm interested in the type system stuff, but I can't even begin to understand how a type checker might be written for the predicate dispatch stuff I'm interested in.
21:35aavis there a way to control which classloader is used by (import ... ?
21:37aavit seems, that Compiler.ImportExpr generates code, that uses some default classloader
22:33yayitsweiTimMC: thanks for your suggestion on using Ctrl-Z to pause a hung REPL. could you elaborate? ps -e --forest on my mac yields "illegal option -- -"
22:35TimMcyayitswei: Well, you may have a different ps binary. CHeck the man page for available options. Anyway, just find the process ID of the spwaned process and kill it.
22:36yayitsweiTimMc: and how do you resume the thread that you paused?
22:37TimMcOh, that depends on your shell, I guess. Let me see...
22:37TimMcfg should work
22:38TimMcYou may have to check the job control features of your shell.
22:41TimMcyayitswei: echo $SHELL # What shell are you using?
22:42yayitsweibash
22:44TimMcOK, cool. You can find out more about job control in bash's documentation. You won't need most of it -- ^Z, %, fg, bg, and jobs are the main things to know.
22:46yayitsweicool, thanks!!
22:49wastrelpstree maybe
22:49wastreli dunno if they have that for mac
23:27yayitsweithanks guys, the suspend-and-resume technique is working perfectly. any suggestions on how to view stdout while the command is running? currently if the process hangs in the REPL i have no additional information on why it's hanging