#clojure logs

2016-05-14

05:37lnostdalhi guys, i'm doing some computations in Clojure and have found direct linking to be beneficial in some cases .. tho i wonder if there's some ^:directly-linked type flag or similar i could use on my Fns instead of specifying that *all* shall be directly linked via "-Dclojure.compiler.direct-linking=true" ....?
05:38lnostdali notice this: "As of Clojure 1.8, the Clojure core library itself is compiled with direct linking." .. so i suppose it can be specified with some particular granularity somehow
05:44lnostdalperhaps it's just on a project basis
05:44lnostdala per project*
05:46dysfunhttps://github.com/clojure/clojure/blob/master/build.xml#L57
05:48lnostdalyup, clojure core is built with that activated by default now
05:48dysfuni actually know nothing of direct linking, i just know where to go looking
05:49dysfunwell that is how the mechanism works, a system property
05:49lnostdaldysfun, it's pretty interesting concept; https://gist.github.com/lnostdal/c38899f42d983a786049 .. but it is a pretty big and fundamental change for all your code
05:49dysfunpresumably you can get it down to a per-file basis if you're clever and willing to mess about
05:51dysfunright. direct linking is not something you'd want enabled at the repl
05:52lnostdalanyway, i do see ^:redef mentioned in places .. but that sort of goes the other way .. ..i'd sort of like a "whitelist" instead of a "blacklist"....sotosay
05:53dysfunright, well you'll probably have to wait for america to wake up before someone who might know is here
05:53lnostdal:)
06:38lnostdaldysfun, just noticed the clojure.core/*compiler-options* dynamic var .. perhaps rebinding that on per-file basis or something would work .. anyway, will explore further
06:39lnostdalhttp://clojure.org/reference/compilation#_compiler_options
07:22TownsieSo I have a game world state (world) , which I evaluate the next step of, using (update-world (world)), so I can do things like (nth (iterate update-world (world)) 100)
07:23Townsieupdate-world does things like add, update and prune entities. I want to be able to get a vector of strings of events that happened to these entities as I evaluate update-world
07:23TownsieI summarized my problem here http://stackoverflow.com/questions/37225385/for-a-function-that-updates-a-world-state-i-want-to-return-a-vector-of-string
07:23TownsieWould really like some design input.
07:27dysfunmake update-world return a vector of [world strings]
07:29Townsiedysfun: I thought about that, but then a lot of the cleanliness breaks when I don't simply return the new thing from these update functions.
07:30dysfunc'est la vie
07:30dysfunyou can also use a map
07:30TownsieYeah
07:32dysfunyou know you can use (let [[world strings] (update-world world)] ...) right?
07:33TownsieRight, but for update-entity that to would then return [entity strings], and so too with prune-entities.
07:33TownsieHow to collect all of those then and return them in update-world?
07:34TownsieIs this something I could use dynamic binding for?
07:34TownsieLike have an *events* that update-entity could write to?
07:35dysfunno, i don't think dynamic binding would be helpful here
07:36dysfunand the way i would do it is the long way
07:36TownsieYeah, I'll try it.
08:54OscarZim still a bit confused about :require and :use in (ns ...) ... some libraries have their examples using :use and some :require, how do you make the choice which one to use ?
08:55lumachoose require
08:59OscarZwhy?
08:59clojurebotwhy is startup slow is busy compiling the `for` macroexpansion
09:01ilevdAbout 3 weeks ago somebody posted an article about Clojure tips, eg don't use pmap, use core.async. Did anybody save it?
09:03dysfunluma: use is unfashionable these days
09:04TimMcin much the same way that not washing your hands before surgery is unfashionable
09:04dysfunactually TimMc that's the law
09:04TimMc:-)
09:05dysfun"i fought the law and the law won"
09:05TimMcOscarZ: When you use :use, it becomes very difficult later to tell what the symbols in your code are referring to.
09:05TimMcdysfun: keyword :fight in the config map will be a no-op
09:05OscarZyeah i remember reading that you should use require but then these seemingly nice libraries (presumably coded by experienced clojurists) have their examples using "use".. was just wondering if theres legit use for "use" :)
09:05dysfunTimMc: except for :only
09:06TimMcOscarZ: :use is great for the REPL
09:06dysfunTimMc: :fight? :thats-right
09:06TimMcexcept then when you copy stuff into your source files, you have to go in and qualify all the vars anyhow
09:06TimMcI don't even use :use in tests anymore.
09:06dysfunyeah this
09:06OscarZsure ok..
09:06dysfuni just alias to single characters
09:07TimMcOscarZ: So basically just use :require all the time, and if that becomes really painful, use :refer [some syms] to pick out a few that you want to use unqualified for some reason.
09:08OscarZok thanks
09:08TimMc(:use refers everything by default; it supports :only to similarly narrow it down)
09:08dysfunalso :exclude
09:13ilevdI've found https://rasterize.io/blog/clojure-the-good-parts.html
09:14TimMcSuch a cheeky title, but good post.
09:20shiranaihitoi'm kind of uncomfortable with this: "Clojure users - schema all the things. Schema. All. The. Things."
09:20shiranaihitolike.. "i don't wanna" :P
09:21dysfunyeah, i don't put too much by that
09:21dysfun'check your data' is a better general rule
09:22shiranaihitobasically i can't help but wonder if the lack of static typing is such a big problem that we all be should using Haskell instead :)
09:22dysfuni don't think so at all, and i do program haskell
09:22shiranaihitoi accidentally a sentence there and my keyboard is acting up
09:22shiranaihitooh? what's your take on the pros and cons between Clojure and Haskell
09:24dysfunclojure is very 'get things done', haskell is very 'feel good that it's correct'
09:24shiranaihito:P:P
09:24shiranaihitothat certainly sounds comforting :)
09:24shiranaihitoany details? :)
09:25dysfunwell i know which one i'd rather build a business on
09:25shiranaihitoi take it that would be Clojure, then
09:25dysfunit would. although i will soon be deploying haskell to production as well
09:25shiranaihitothat's what i'm doing btw
09:25shiranaihitohm
09:26shiranaihitooh, what did you mean with "check your data"
09:26dysfuni mean check to see your expectations of it are met. that's what a type system does, it's what predicate functions do
09:27dysfunfor example in scheme the rule is "start functions with 'if'"
09:29shiranaihitohmm
09:30shiranaihitoyeah well, i guess i'm doing something like that out of habit, but it's felt more unwieldy than with Java and other imperative languages
09:30shiranaihitosooo.. i think i've been doing it less
09:30dysfunright. quite often the answer is 'do it dumbly'
09:30dysfunafterwards you can look for ways to tidy it up
09:30shiranaihito"dumbly"?
09:31dysfunjust do it in the way you know how
09:31dysfunwithout worrying about the structure
09:31shiranaihitoah, right.. so.. i should just try not to mind the resulting ugliness.. ? :P
09:32dysfunas fred brooks said "write one to throw away: you will anyway"
09:32shiranaihito:)
09:32shiranaihitoi'm kind of confused about what people see as the main benefit of say, static typing, or whatever they mean exactly.. especially if they're writing code in emacs or vim instead of an actual IDE etc
09:33shiranaihitowith Java and IntelliJ IDEA, it's been cool to be able to perform heavy refactorings "automatically"
09:33shiranaihitobut i doubt that's the kind of thing Haskell enthusiasts mean
09:34dysfunyou can never really perform all useful refactorings automatically
09:34dysfunyou can simply get some of the simpler cases
09:34shiranaihitosooo.. maybe in other words, how much do you think using Cursive (and IDEA) might alleviate the problems emacs and vim users see with the lack of static typing
09:35shiranaihitoi'm kind of hoping "a lot", but i can't tell
09:35dysfuni'm an emacs user. i see no advantage whatsoever in an IDE for clojure
09:35shiranaihitoare you talking about how "lacking" Cursive still is compared to IDEA with JAva?
09:36shiranaihitooh :)
09:36dysfunno, i just happen to think that text editing efficiency is important
09:36dysfunmore than i ever use any of the automated tools
09:36shiranaihitofor me it's the other way round, i'd say all the other stuff is important
09:37shiranaihito(besides, i bet there's quite a lot of "text-editing efficiency" with Cursive too)
09:37dysfuni think perhaps you don't realise how powerful cider is
09:37dysfunit's really the most powerful clojure editing environment there is
09:37shiranaihitothat's certainly possible, just like you might not realize how productive using an IDE is :P
09:37dysfuni have used IDEs
09:38dysfunjust not by choice
09:38shiranaihitohave you used JetBrains IDEs?
09:38dysfunyes
09:38shiranaihitook
09:38shiranaihitoand.. in an "adept" way?
09:38dysfuni don't even know what you mean by that
09:39dysfuni memorise keyboard shortcuts and such
09:39shiranaihitowell, i'd say someof the most useful stuff is related to navigating around code
09:39dysfuni figure out how to make it build things. occasionally i might use the debugger
09:39dysfunokay, well emacs has those things too
09:40shiranaihitostuff like.. "open class/file/symbol/implementation"? "go to last edited location (and the one before that on the next invocation, and so on)"?
09:40dysfuni'm sure those exist
09:40dysfunif they don't, write them
09:40dysfunthis is why we make a big deal about emacs having a full programming language built in
09:40shiranaihitowhy would i write them (for emacs?) when i have them already with IDEA? :P
09:41shiranaihitobut it sounds like emacs doesn't have those
09:41dysfunthat only works so long as everything you ever want will be prewritten
09:41dysfunthere are third party libraries
09:41shiranaihitowhich are more or less half-assed?
09:42dysfunsome of them are very good
09:42shiranaihito(or kind-of-sort-of functional?)
09:42dysfunwhy don't you try one of the ready-to-go emacs configurations and try it yourself?
09:42shiranaihito.. and then, ofc, if something is half-assed, barely functional etc, the standard refrain is "pull requests welcome" :P
09:43shiranaihitobecause i'm happy with IDEA / Cursive, and don't believe i could reach the same level of comfort and productivity with emacs? :)
09:43dysfunwell i'm not going to engage you in debate since you don't seem to have done your research. cider is *excellent* and a massively important part of my day
09:43shiranaihitoin a way, i'm doing research now :P and so far, my research seems to show that some important functionality is missing from emacs :)
09:44dysfuni think perhaps you do not understand how to use emacs in the modern era
09:44shiranaihito(which you haven't confirmed, but i take to be accurate)
09:44dysfuni use literally hundreds of elisp packages in my config
09:44shiranaihitoof course i don't, considering i've never really used it? :P but so what, when the same applies to you and IDEA? :P
09:44dysfunemacs by default is not a ready-to-go tool
09:45shiranaihitocool, and i don't need any extra tools or libs bolted on to Cursive :)
09:45shiranaihitobecause it actually is a ready-to-go tool :)
09:46dysfunyour question is about "problems emacs and vim users complain about". this emacs user does not have these problems
09:46dysfundraw your own conclusions
09:47shiranaihitoyep, well.. this conversation has basically just reinforced my earlier views on "text editors vs IDEs"
09:47shiranaihitobut to each their own, and all
09:47dysfunall i can see is that you simply have no idea how people actually use anything but an IDE
09:47shiranaihitonevertheless, it's good to hear an emacs user say there's no need to switch to Haskell :)
09:48shiranaihitoyou're being kind of strangely accusatory
09:49shiranaihitono offense - but i take it to mean you're a bit emotional about the topic, which suggests that you might subconsciously see emacs lacking in some respects, but don't want to accept it
09:49shiranaihitoofc, i could be wrong
09:49dysfunoh here we go
09:49shiranaihitowe don't have to "go" :P
09:49Chousukesince when is emacs not an IDE? :P
09:50dysfuni'm quite happy with my tools thank you
09:50shiranaihitosure, at least that's what your conscious mind tells you :)
09:50Chousukeit's basically *the* IDE. It integrates everything from your editor to the web browser.
09:50shiranaihitobut if it's alright for you to say "you simply have no idea how people actually use anything but an IDE", it's fine for me to say what i just did.. it doesn't need to lead to any animosity either way
09:51dysfuni identified a gap in your knowledge and you claimed to know my mind
09:51shiranaihitoyou've made biased claims about me too, so i guess we're even :)
09:51shiranaihitoi ain't even mad :P
09:52shiranaihitonow i'll go brew some lovely japanese green tea :)
10:11shiranaihitoChousuke yeah, emacs is quite a beast :)
10:24shiranaihitoDemocracy, EU-style: https://www.youtube.com/watch?v=Ozj0qwnMGZ0
10:24shiranaihito(not that democracy itself is any good btw)
11:37ben_vulpes2/10 trolling
11:37ben_vulpesemacs has jump-to-def in every language that a tags table can be made for
11:37ben_vulpesand yes it's a shitty ide, a "the poorest man's ide", if you will
11:38ben_vulpesbut it works for every language, consistently, and i don't need a new wacky programming environment for every language.
11:39ben_vulpesand mine wastes precisely zero pixels on pointless ui widgety and clicky buttons because time spent on the mouse/trackpad is time wasted.
11:41shemben_vulpes: amen
11:45shemon a general level, if people invest a lot of time in something, they subconsciously want this investment to be worthwhile. this is why it is so hard to have a neutral discussion between adept users of systems X & Y that do broadly similar things
11:47ben_vulpesshem: amen
11:48ben_vulpesotoh familiarity breeds contempt.
11:49ben_vulpes(and boy howdy do i hate emacs)
11:50shemwell, there's that too. and early converts are usually eager to proselytize
11:50ben_vulpesearly in their own trajectories or early in the system trajectory?
11:51shemin their own
11:51shemthey have a big momentum going, learning new, exciting stuff, and want to spread the word
11:54ben_vulpesi can see it
11:59shemon one hand, it would be nice to have neutral discussions about technical things, where it is often possible to find an objective metric. on the other, it is so much fun to gush about things you are excited about.
12:00ben_vulpesand trivial to shit on things you don't know or understand.
12:00ben_vulpesthe more complex and abstract the topic, the more shared understanding must be built between participants.
12:01shemindeed
12:01ben_vulpesthis almost demands an enduring relationship, and most IRC channels are not set up for this, but rather to encourage drive-by opining.
12:02shemi think this channel has a very good s/n ratio, and generally patient people.
12:03ben_vulpeshey, justin_smith and dysfun tend to my idiocy on a daily basis. i can't complain.
12:04dysfunben_vulpes: ah, but you want to learn
12:05ben_vulpesstasis is death
12:10ben_vulpesdysfun: that one looks neat
12:11dysfuni'd been holding off learning it because i already know clojure and they're useful for similar problems
12:11ben_vulpesunfortunately i have to bite the bullet and up my GUI game with $nextlang
12:11dysfunheh, i'm building a gui in lfe
12:12dysfunsadly they only have wx
12:13ben_vulpesi'm hoping to find tooling that helps with the complexity of gui programming
12:14dysfunquite honestly with the exception of the cljs/react stuff, it's all abysmal
12:14dysfunit's the only problem where i can't even imagine how it might work better if you took the OOP away
12:14ben_vulpesi don't even think react improves it much
12:14dysfunnor do i, as it happens
12:14ben_vulpeshas the same view-will-appear view-will-disappear semantics as obj-c and friends
12:14dysfuni have a project on playing with the idea, without the react dep
12:15ben_vulpesdysfun: have you touched elm at all?
12:15dysfuni've seen odd bits and i know they have some FRP stuff
12:15dysfunbut the problem is elm is a new language - it's not haskell, but on the web
12:16dysfunghcjs, haste and fay can be this
12:16dysfunand i'm not convinced anyone has actually improved upon the situation in functional languages since cells (common lisp)
12:17dysfunthe author of cells is porting it to clojure at present, using refs
12:17ben_vulpes> magic typing tricks
12:17ben_vulpeseeeee
12:17ben_vulpesscawwy
12:20ben_vulpesinteresting
12:21shemelm author just said they are no longer about FRP, http://elm-lang.org/blog/farewell-to-frp
12:23dysfunoh wow, looks i have a lot more reading to do on elm all of a sudden
12:58weathered-treeanybody know a good way to hire a Clojurescript dev for a small project?
13:00dysfunasking in irc? do you know what you want?
13:03weathered-treeYes, I am going to post the offering but it's really just a rewrite of a simple client site from using Angular 1.x to either Om or Reagent. I was looking for advice on where to post that people in the Clojure community actually check.
13:04dysfuni don't think there's any one particular avenue. the mailing list might be a good place, and i'm happy to discuss it with you in private as well
13:05weathered-treethanks, I'll message you in private
14:16Lewixhow to get to the var value of another namespeace
14:16justin_smithLewix: by requiring the namespae and then using the values in it
14:17justin_smithor do you mean the namespace object itself? (which isn't a var)
14:17Lewixi require my namespace [myproject.core.playground :as playground]
14:17justin_smithOK
14:17Lewixnow i have access to playground in the current namespace
14:17Lewix#'playground however returns an error
14:17justin_smithbecause namespaces are not vars
14:18justin_smith,(the-ns 'clojure.core)
14:18clojurebot#object[clojure.lang.Namespace 0x7d033cdc "clojure.core"]
14:18justin_smiththat's a namespace
14:18Lewixahhhh
14:18LostInTheWoodsI wrote code so bad my face hurts.
14:18dysfunit's why you can have a module alias and a var that clash and it work just fine
14:19Lewixi require my namespace [myproject.core.playground :as playground :require playground];; this is probably what I want and I should change the name
14:19justin_smithwhat?
14:19clojurebotwhat is cells
14:19justin_smithLewix: that :require key is invalid
14:19Lewixjustin_smith: basicall in the playground namespace I have a function 'playground'
14:19justin_smithLewix: playground/playbround
14:19justin_smithor you can use :refer [playground] in the require
14:20Lewixrefer that is thanks
14:20dysfuni tend to use single-letter aliases, like p
14:20justin_smithhaskeller :P
14:20dysfun:require [myproject.core.playground as p]
14:20dysfunjustin_smith: naw, i'm learning LFE now
14:20Lewixdysfun: doesn't it require a lot ot eye traveling when you give short name
14:21dysfunnot really. if you're doing it right, you don't have many imports
14:21dysfunso you just hold it as state in your head
14:21justin_smithrequires are not imports, but OK
14:21dysfunshush dammit justin :p
14:22ben_vulpes> hold it as state in your head
14:22ben_vulpeswhyyyy
14:22ben_vulpesnoooo
14:22ben_vulpesmy head is so small though
14:22dysfunmine too, but for just a tiny bit of memorising i get to avoid writing long words
14:22Lewix" so you just hold it as state in your head" sounds so OO
14:22dysfunand i'm lazier than i am forgetful
14:23TimMchah
14:23dysfunalthough that's a tough-run thing
14:26Lewix,(var inc)
14:26clojurebot#'clojure.core/inc
14:26Lewix,#'inc
14:26clojurebot#'clojure.core/inc
14:26justin_smith,'#'inc
14:27clojurebot(var inc)
14:27dysfun,(inc inc)
14:27clojurebot#error {\n :cause "clojure.core$inc cannot be cast to java.lang.Number"\n :via\n [{:type java.lang.ClassCastException\n :message "clojure.core$inc cannot be cast to java.lang.Number"\n :at [clojure.lang.Numbers inc "Numbers.java" 112]}]\n :trace\n [[clojure.lang.Numbers inc "Numbers.java" 112]\n [sandbox$eval121 invokeStatic "NO_SOURCE_FILE" 0]\n [sandbox$eval121 invoke "NO_SOURCE_FILE" -1]\...
14:27dysfundidn't clojurebot used to do karma or am i imagining things?
14:28justin_smithlazybot
14:30dysfunhrm, that was a long time ago
14:32Lewixdo you guys have an example of a small cljs set up with one function called in another file
14:32Lewixoutside of core.cljs
14:33dysfunit's just like in clojure
14:33dysfunexcept :require doesn't take :refer :all
14:33Lewixdysfun: I'm new to both, it's only recently that I took it seriously.
14:33dysfun(ns my.ns) (defn foo [a] a) ?
14:34dysfunthat's your other namespace
14:34dysfunin your core ns, you can (ns my.core (:require [my.ns :as n])) (n/foo "bar")
14:34Lewixhttps://gist.github.com/6ewis/43b7c96a7f9514f6c2ebe8a358c5cd3f what am I doing wrong
14:35Lewixurl/playground => not found
14:35dysfunwell for a start, you don't have a url namespace
14:35Lewixby url i mean localhost:port/
14:36Lewixthat perfectly work with /about or /homepage
14:36justin_smithso you are trying to make a string?
14:36Lewixi just want to go to the url /playground and see my html
14:36Lewixthat is defined on playground.cljs
14:37dysfuni'm not familiar with secretary, but d you absolutely need #'name ?
14:38LewixI added #'play on line 32
14:38Lewixi only added two things in the file core.cljs line 6 and line 31-32
14:38dysfunand what error do you get?
14:38Lewixurl/playground => not found
14:39dysfunhave you rebuilt your clojurescript?
14:39dysfunor are you using figwheel or something?
14:39Lewixi fired lein figwheel multiple times
14:39dysfuninspect the javascript and see if it's actually reflecting your changes
14:39dysfunsource maps might be useful
16:04jortiz7Hey guys, so I wanted to do something but I am not sure if it is achievable: I write a console application which takes, for example "-a 1 2 3" as parameters. I can already check if the function a exists in a namespace and if so call it (I check and call every -* automatically), but now I want to use the rest of the argument, the get splitted into '('("b" 1) '("a" 1 2 3)) automatically to call the function a
16:04jortiz7with 3 and b with 1 parameter, not checking the count of paramters in the function. I tried a bit of unsplicing, but not really got the hang of it. Here is what I have right now: https://paste42.de/10659/ Can you help me out a bit with that?
16:05justin_smithjortiz7: don't use splicing, just use apply
16:05justin_smith,(apply + [1 2 3])
16:05clojurebot6
16:05justin_smith,(apply + [])
16:05clojurebot0
16:07ridcully_just to have it mentioned: on unix i'd expect that to be -a "1 2 3" - it's one param for that -a
16:10jortiz7ridcully_: Its more like "programm -d 14 16 2016" for getting the function use that specific date (the example would be today). I think thats easier than parsing a date.
16:11ridcully_my brain reads -d "14" 16 2016 (where 16 2016 are just & args)
16:11ridcully_sorry for being a pendatinc ahole
16:11ridcully_i also discriminate bash users ;)
16:12jortiz7ridcully_: No, thank you for being one. What would you use? ISO-date? And if so, how would you handle the indicaton of a specific week in a year?
16:12jortiz7And I use zsh because .. um .. I am a lazy fuck and use ohmyzsh ... I write my scripts for /bin/sh though.
16:13justin_smithridcully_: there are plenty of counter examples - xterm -e less +F /tmp/foo
16:14justin_smithwhere less +F /tmp/foo are all args to -e
16:14ridcully_that's madness
16:16jortiz7justin_smith: Thank you very much for your help! Works perfectly.
16:18ridcully_justin_smith: xterm -e less ~/.gitignore -fa Fira
16:20justin_smithridcully_: that expects "-fa" to be another file
16:20ridcully_and i expect -fa to be the xterm font. that's what i meant by "my brain reads"
16:21ridcully_but granted, that there are tools out there, that give some leeway on param parsing
16:22ridcully_so i assume, that xterm's -e is supposed to be the last param and & args is just send off as params into it
16:49jrcGiven the design of Clojure, is a strategy to improve the friendliness of its error messages possible? As someone new to it, that seems to be the only weakness
16:50ridcully_some sunshinehappyunicorn castle might protect you from common errors. but in the end you will get a 400 line stacktrace from java for that odd case
16:56amalloy!learn add amalloy_todo Te can't start flying in spider form, but casting spider form doesn't make them stop flying
16:56amalloyoops
16:56justin_smithTIL amalloy is a spider wizard IRL
16:57ridcully_it's pronounced spyder in amalloys case
17:01jonathanjjrc: https://github.com/yogthos/clojure-error-message-catalog is an attempt to build a catalogue of commonly confusing errors so that better messages might be provided, something like Elm's error message catalogue
17:03jonathanjjrc: you'll notice if you read the "State of Clojure Survey" results for the last few years that "better errors" is a pretty commonly suggested improvement people would like to see
17:13jrcThanks jonathanj! I read the 2015 report it was really interesting
17:22amalloyjustin_smith: if you're curious, actually i develop for dungeon crawl stone soup
17:23amalloyi also record videos of me playing it, and often end up adding stuff to my todo list if i notice something weird while playing
17:23TEttingerreally? why did you kill the hill dwarf paladin or whatever that thing was people like?
17:24amalloyhaha, mountain dwarves were before my time
17:24TEttingerI remember there was an entertainingly weird orc cleric thing where you basically had a ton of followers
17:24ridcully_dcss is really nice!
17:24amalloythat still exists
17:24TEttingernice.
17:25ridcully_but tome imho is the new level
17:25TEttingerDCSS is... is it C and Lua scripting?
17:25TEttingeryeah tome4 is a pretty amazing change from earlier tome
17:25amalloyc++ and lua
17:26TEttingerI do know a lot of people who prefer DCSS to TOME4
17:26TEttingermaybe not a lot, I don't know many active players of either
17:27amalloysince it came up: if anyone wants to try out dcss, the 0.18 release tournament is going on now, so there are a lot of people playing, and it's free from http://crawl.develz.org/
17:27ridcully_now you know at least an arena master ;p
17:27TEttingerI think I know more active players of DCSS than massively popular games like candy crush saga
17:28ridcully_never ever managed to finished a campaign
18:28tolstoyInteresting. Core.async doesn't have a "chan?" function built in.
18:32TimMcamalloy: What do you use to record videos of DCSS? I just learned about asciinema, which sounds neat...
18:33amalloyOBS
18:35TimMcOh, I guess you'd want audio too, right.
18:46amalloyTimMc: my DCSS series, if you want to see hwo it comes out: https://www.youtube.com/user/asdfgvbd/playlists?view=50&shelf_id=2&sort=dd
19:46sdegutisHi.
20:03justin_smith,(transduce (comp (map (partial + 101)) (map char)) str "" [3 0 7 7 10])
20:03clojurebot"hello"
22:22Lewixhi
22:28Lewishi
22:32Lewiswhat's the difference between those two functions: https://www.refheap.com/119107 - contrived example
22:50justin_smiththe one on line 11 will have a recognizable name in a stack trace
22:51justin_smithbut (fn timer-component [] ....) would too
22:51justin_smith,(macroexpand '(defn foo []))
22:51clojurebot(def foo (clojure.core/fn ([])))
22:51justin_smithLewis: ^ as the above shows, they are effectively the same though
22:53Lewisjustin_smith: note the metadata
22:53Lewisposition is different
22:54justin_smithyes, one puts metadata on an fn object, the other puts it on a var
22:54justin_smithmetadata on an fn object isn't really useful (unless you are writing other code that checks fns for metadata)
22:57Lewisjustin_smith: thanks
23:26amalloyjustin_smith: actually both have recognizable names in a stacktrace
23:27amalloyif the value-part of a def expression is a lambda, it arranges for the classname to match the name-part