←2012-11-23 2012-11-24 2012-11-25→ ↑2012 ↑all
00:26:57 <ais523> Sgeo__: ?
00:27:09 <olsner> it would be somehow amazing if elliott, monqy and Phantom_Hoover were all bots run by Sgeo__
00:27:12 <ais523> oh, was that line /meant/ to not make sense?
00:27:26 <shachaf> ais523: There's a "Homestuck" update.
00:27:31 <shachaf> Sgeo__ is notifying them.
00:27:40 <ais523> aha
00:27:45 <elliott> fsvo notify
00:27:53 <olsner> oh, and I see the channel has become #haskell-lens for the past few hours ... thanks shachaf
00:28:18 <shachaf> ywolsner
00:28:21 <shachaf> Which channel?
00:28:30 <monqy> #haskell-lens, presumably
00:28:37 <monqy> what other channel could be #haskell-lens
00:28:42 <shachaf> monqy: ##crawl
00:28:46 <monqy> :0
00:29:47 <olsner> relatedly, I got three packets of ketchup for free when I paid for my food
00:29:53 <kmc> LIKE A BOSS
00:30:01 <ais523> what is #haskell-lens about?
00:30:11 <shachaf> haskell and lens
00:30:11 <ais523> also I like your use of the word "relatedly"
00:30:39 <olsner> hopedly, it is indeed a word
00:31:31 <shachaf> olsner: "hi olsner i know you like pretending to be oerjan but its not wokring"
00:32:14 <olsner> ehm, I'm not pretending
00:32:20 <elliott> hi shachaf i know you like pretending to ...
00:32:57 -!- nooga has quit (Ping timeout: 252 seconds).
00:33:07 <shachaf> elliott: be monqy+you?
00:33:22 <olsner> though it would've been a bit better if I could have said that as "<oerjan> ehm, I'm not pretending"
00:33:22 -!- Jafet has joined.
00:36:15 <shachaf> ehm, I'm nøt pretending
00:38:13 <Jafet> This jøke is getting øld.
00:40:47 -!- copumpkin has quit (Ping timeout: 260 seconds).
00:41:18 -!- copumpkin has joined.
00:43:25 <olsner> shachaf: is ##crawl where you usually discuss haskell lens libraries?
00:43:51 <shachaf> olsner: Sometimes I discuss them in #lesswrong
00:43:56 <shachaf> I have no idea what I'm doing in that channel.
00:43:58 <shachaf> It's terrible.
00:44:13 <olsner> ok
00:47:31 <olsner> if you don't know why you're there, maybe you should leave
00:47:32 <kmc> how is it terrible
01:12:21 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds).
01:18:12 -!- Phantom_Hoover has joined.
01:19:07 <kmc> shachaf: elliott: apparently Simon Marlow is leaving MSR to work at Facebook
01:19:15 <kmc> and is going to stop working on GHC full time
01:19:23 <shachaf> kmc: I heard.
01:19:25 <kmc> and basically it is the end times
01:19:26 <kmc> http://www.haskell.org/pipermail/haskell/2012-November/023566.html
01:19:41 <shachaf> The RTS will be lonely.
01:21:06 <shachaf> kmc: Now's your chance to rise up and take over the Haskell compiler world with THC.
01:22:05 <zzo38> I managed to make a Csound plugin, currently I made and tested the "avecrev" command which reverses a a-rate vector.
01:25:57 <Gregor> Heeeeeeeeey
01:26:06 <Gregor> Comin' up on my one year anniversary of tongue-face-smiley-freedom.
01:26:29 <olsner> :P
01:36:58 <Phantom_Hoover> what happened worth anniversarising?
01:38:12 <Gregor> Phantom_Hoover: On December 17th, 2011, I swore off the tongue-face smiley forever.
01:39:46 <Phantom_Hoover> have you stayed cold-turkey since
01:39:56 <Jafet> Colon pee
01:40:32 <oerjan> Gregor proved the power of machine over man
01:40:43 <Gregor> Phantom_Hoover: Mmmhmm.
01:41:50 -!- Phantom_Hoover has quit (Remote host closed the connection).
02:23:41 -!- ion has quit (Ping timeout: 252 seconds).
02:26:04 -!- ion has joined.
02:33:49 <ais523> so, is BSD the fourth most popular operating system family?
02:34:04 <ais523> (after the Windowses and the Linuxes and the OS X/iOSes?)
02:34:14 <ais523> or do old-fashioned commercial Unices still beat it?
02:34:16 <ais523> or something else?
02:35:24 <Fiora> I'm guessing it'd depend how you count popular, like, do OSs running on embedded systems count, or just PCs, or...
02:35:27 <kmc> do you mean "most popular OS to run on traditional PC hardware and macs"
02:35:32 <kmc> right
02:36:24 <ais523> I'm thinking about desktop/laptop/tablet systems, I guess
02:36:29 <kmc> seems pretty arbitrary
02:36:31 <ais523> things that are meant to be interacted with by a human
02:36:37 <kmc> many embedded systems are
02:36:45 <ais523> as their primary function
02:36:57 <ais523> so I guess the Rasperry Pi counts, but similar systems used as industrial controllers don't
02:36:57 <kmc> how about the dash computer in your car
02:37:05 <ais523> kmc: I don't own a car
02:37:07 <kmc> what about a thermostat -- its primary purpose is to take instructions from a human and execute them
02:37:17 <ais523> and thermostats are still analog where I live
02:37:26 <Fiora> symbian is a phone OS even though it mostly runs on dumbphones I think
02:37:27 <kmc> how about the 100 or so microcontrollers inside your PC alongside the main CPU
02:37:30 <ais523> but no, a thermostat's primary function is to control the temperature
02:37:37 <ais523> it does its job even when you aren't sitting there configuring it
02:37:42 <kmc> a computer's primary function is to send IP packets
02:37:48 <kmc> it does its job even when you aren't sitting there configuring it
02:37:50 <ais523> kmc: not mine, I use it offline quite a lot
02:37:57 <kmc> ok how about web servers then
02:37:59 <ais523> my /server's/ primary function is to do that
02:38:11 <kmc> do you include those as "meant to be interacted with by a human"
02:38:16 <zzo38> A computer's primary function is not to send IP packets. That is a function of some of the programs.
02:38:33 <ais523> kmc: I guess no
02:39:03 <kmc> also, does the baseband processor in your phone count, or only the applications processor?
02:39:34 <kmc> typically they are separate and the former runs some proprietary RTOS
02:39:37 -!- ion has quit (Ping timeout: 260 seconds).
02:39:48 <ais523> I also don't own a digital phone
02:39:55 <kmc> what about the firmware running on your computer's GPU -- surely that is an integral part of "interacting with a human"
02:40:00 <kmc> ais523: i'm using the word "your" rhetorically
02:40:02 <ais523> there's a phone in my office, but it's one of those dumb-terminal-style landlines
02:40:16 <ais523> also GPUs don't normally have much of an operating system
02:40:17 <kmc> oh yeah right what about the ubiquitous Cisco VoIP phones
02:40:21 <kmc> obviously a human interaction device
02:40:23 <kmc> does their OS count?
02:40:24 <ais523> I should know, I taught a class on GPU programming
02:40:35 <kmc> did you teach a class on GPU firmware / driver authoring
02:41:10 <ais523> kmc: nah, it was at the level of authoring software for them (the shaders, etc., that are sent to the GPU)
02:41:23 <ais523> but the GPU doesn't have much of an OS to speak of
02:41:27 -!- ion has joined.
02:41:32 <ais523> if it crashes, the whole system hard crashes, no permissions or anything like that
02:41:38 <kmc> mm
02:41:47 <ais523> (if you're lucky it'll have a watchdog timer that'll reboot it after it's spent 5 seconds crashed, sometimes it even works)
02:42:14 <ais523> I guess I still don't think of computers as Internet communication devices
02:42:27 <ais523> that's really what tablets are for, people used larger computers for that earlier because tablets hadn't been invented yet
02:43:17 <kmc> well
02:43:21 <kmc> i don't have any desire to own a tablet
02:43:30 <ais523> "media consumption devices" is a description I'd seen
02:43:33 <kmc> i find it useful to use the same device for internet communications and other things
02:43:34 <ais523> and I think tablets are terrible too
02:44:12 <kmc> it might be nice if that one device were a tablet with a keyboard dock
02:44:18 <kmc> but i don't think i can get one meeting my needs
02:44:33 <kmc> and so i don't have a desire to own a second device that's only good for a subset of the things the firsst device is good for
02:45:47 <kmc> (it would have to be a nice keyboard, preferably with a pointing stick, and capable of running a real desktop linux distro, and not "capable" in the sense of "some guy on xda forums might have done it", but actually no bullshit)
02:46:53 <kmc> the reason i finally got a smartphone is that i needed a 3G/4G hotspot device, and phone was not much more than a standalone device
03:04:18 -!- oerjan has quit (Quit: Good night).
03:11:52 -!- Jafet has quit (Quit: Leaving.).
03:28:37 <tswett> "You are now traveling into the future. Please wait..."
03:28:49 <tswett> One way of implementing time travel in an MMOG.
03:29:04 <monqy> ok
03:29:11 -!- sivoais has quit (Ping timeout: 245 seconds).
04:19:41 -!- NihilistDandy has joined.
04:50:04 <shachaf> help did i just write a monad tutorial :'(
04:50:54 <kmc> monad tutorial writers anonymous
04:51:49 -!- Nisstyre-laptop has joined.
04:51:56 <shachaf> It's actually mostly an "IO tutorial" if anything.
04:52:05 <shachaf> But not really either.
04:53:43 <kmc> is it an Either tutorial?
04:54:50 <shachaf> kmc: I'm cold so I have two ghci windows open with "last [1..]"
04:54:59 <shachaf> Should I feel bad?
04:56:03 <kmc> c.c
04:56:32 <shachaf> Should probably fold proteins instead or something.
04:57:53 <kmc> every day
05:15:37 <kmc> is there a name for the visual artifact that happens when you render antialiased text on a white background, and then composite it over something else with a transparency channel which is just white = transparent, anything else = fully opaque?
05:15:49 <kmc> a local restaurant has that on their menu and it makes me not want to eat there
05:16:23 <shachaf> If I understand what you mean, I don't like that. :-(
05:16:45 <shachaf> kmc: Do you hate all antialiasing?
05:17:04 <shachaf> You should write a window manager and then angrily stop programming.
05:21:34 <kmc> haha
05:21:37 <kmc> no i love antialiasing
05:25:19 -!- carado has quit (Ping timeout: 246 seconds).
05:28:39 -!- ogrom has joined.
05:32:21 <zzo38> I think antialiasing should only sometimes be used.
05:32:48 <elliott> tuomov has some surprisingly interesting opinions underneath the noise
05:38:10 <shachaf> Sure, tuomov is great.
05:38:19 <shachaf> I think kmc might end up like him in bitter old age.
05:49:28 -!- constant has quit (Read error: Operation timed out).
05:53:03 <kmc> ah well
05:57:20 -!- augur has quit (Read error: Connection reset by peer).
05:57:51 -!- augur has joined.
06:00:40 <elliott> is bitter old kmc supposed to be distinguishable from current kmc
06:03:23 -!- augur has quit (Ping timeout: 244 seconds).
06:45:32 -!- augur has joined.
06:50:39 <NihilistDandy> Equivalent up to isomorphism, etc.
06:56:32 -!- Bike has quit (Quit: unworthy).
06:59:43 -!- Bike has joined.
07:04:06 -!- epicmonkey has joined.
07:12:51 -!- NihilistDandy has quit (Quit: Computer has gone to sleep.).
07:14:05 -!- quintopia has quit (Ping timeout: 252 seconds).
07:21:09 -!- quintopia has joined.
07:26:45 <Sgeo__> Someone just replied to me saying "Damn you"
07:27:02 <pikhq_> In #jesus?
07:27:24 <Sgeo__> On Reddit
07:27:36 <Sgeo__> (Actually, they're not mad at me)
07:27:37 <Sgeo__> http://www.reddit.com/r/AskReddit/comments/13ooyr/ten_years_ago_our_family_cat_had_to_have_an/c75xis7?context=3
07:27:51 <Bike> so how is this notable
07:28:18 <pikhq_> Other than that I didn't know Sgeo was autistic, not at all.
07:28:29 <Sgeo__> #esoteric is now Wikipedia.
07:28:29 <oonbotti> Nothing here
07:28:54 <pikhq_> Sgeo__: Quite. You don't see me talking about myself, now do you? :P
07:28:58 <Bike> well i mean it's not an uncommon phrase
07:29:09 <Bike> i figured if you were bringing it up there must be something unique about the usage
07:29:13 * pikhq_ inserts life spew here
07:29:17 <Bike> like maybe the person saying it was literally a demon
07:29:19 <shachaf> elliott: whoa, dude
07:29:26 <shachaf> elliott: what if infinity was, like, a number
07:29:56 <Sgeo__> shachaf, who/what are you mocking today? I assume not my 7th grade self since you haven't met him.
07:30:07 <shachaf> Sgeo__: Nope, it's you.
07:30:18 <shachaf> (Sorry.)
07:30:56 <Sgeo__> I guess my 8th grade self said some mockable math stuff, but not about infinity.
07:31:20 <Sgeo__> I tried to define a number, ati, such that |ati| = -1
07:31:39 <Bike> well you were close
07:31:45 <coppro> is it sad that my first thought is "but that's not a norm!"
07:32:18 <pikhq_> :)
07:32:19 <Sgeo__> Bike, coppro: I'm now confused.
07:32:22 <Bike> i think everybody who got into math and stuff later did things like that. or maybe just me and you
07:33:21 <Bike> i was just referring to that being sort of like imaginary numbers. and a norm is a lengthy-y thing denoted with vertical bars.
07:33:47 <Sgeo__> I knew about imaginary numbers back then
07:36:21 -!- ais523 has quit.
07:44:39 -!- augur has quit (Ping timeout: 244 seconds).
08:00:45 -!- augur has joined.
08:03:32 -!- augur_ has joined.
08:06:52 -!- augur has quit (Ping timeout: 244 seconds).
08:18:01 -!- nooga has joined.
08:24:21 <zzo38> I made a Csound plugin library, not quite completed, some things I am unsure how to program them but some I did put in, I have added these commands so far: avecrev, hsvtorgb, hysteresis, integlim, interleave, rgbtohsv, slowchange, squarewave, trianglewave.
08:45:00 -!- Nisstyre-laptop has quit (Read error: Operation timed out).
09:03:17 <shachaf> monqy: did you unsafeCoerce today
09:03:25 <monqy> no
09:03:29 <monqy> should i ?
09:03:36 <shachaf> maybe
09:03:39 <shachaf> "its good for you"
09:04:00 <shachaf> > let a = zipper ("helloz","world") % down _1 % fromWithin traverse % rights1 6 in (a % view focus, a % save % flip unsafelyRestore ("another","world") % view focus)
09:04:02 <lambdabot> ('z','e')
09:04:57 <shachaf> helloz monqy
09:05:44 -!- zzo38 has quit (Remote host closed the connection).
09:22:36 <monqy> Prelude Unsafe.Coerce> unsafeCoerce id :: IO ()
09:22:36 <monqy> [1] 17766 segmentation fault (core dumped) ghci
09:22:43 <monqy> daily unsafeCoerce
09:23:05 <Sgeo__> Why am I reading this http://www.reddit.com/r/ShittyProgramming
09:24:17 <monqy> why are you reading that
09:29:05 <Sgeo__> http://www.reddit.com/r/shittyaskscience/comments/13o48n/is_it_required_to_shampoo_the_air_before_turning/
09:29:14 * Sgeo__ is easily amused
09:30:44 <ion> hehe
09:55:22 <shachaf> ion: Want lens to be faster?
10:19:11 -!- Phantom_Hoover has joined.
10:20:44 <ion> shachaf: No, it’s perfect right now.
10:21:08 <shachaf> You're sure?
10:22:01 <ion> Making it any faster might rip a hole in the spacetime.
10:22:33 <shachaf> It's, uh, pretty slow right now.
10:23:20 <Phantom_Hoover> spacetime tears pretty easily
10:24:14 <shachaf> monqy: Want lens to be faster?
10:24:31 <Phantom_Hoover> Sgeo__, wow, /r/shittyprogramming is crap
10:24:41 <monqy> shachaf: I don't know.
10:25:01 <shachaf> monqy: when will you learn that knowing is important
10:25:08 <monqy> shachaf: I don't know.
10:25:22 <shachaf> monqy: Good answer.
10:25:29 <Sgeo__> Will making it faster require the use of unsafeCoerce/unsafePerformIO or a tradeoff in a different dimension such as space usage?
10:25:35 <shachaf> Nah.
10:25:47 <shachaf> Well, maybe. I don't know.
10:25:52 <shachaf> It'll require someone to write benchmarks.
10:26:30 <Sgeo__> Is there any significant liklihood thatn making it faster will require architectural considerations that should be taken into account now rather than later?
10:27:12 <shachaf> I don't know?
10:27:14 <shachaf> Like what?
10:28:02 <Sgeo__> No idea, just saying that it might be a bad idea to solidify the design and base everything around it if it fundamentally does something significantly slow, if speed is a concern.
10:28:38 <Sgeo__> But if it's slow but not due to underlying algorithm (i.e. due to not being microoptimized or something) then I assume that could wait.
10:28:53 * shachaf wonders how many "algorithms" lens has.
10:29:23 <Phantom_Hoover> is
10:29:39 <Phantom_Hoover> is sgeo giving shachaf advice
10:30:02 <monqy> shachaf seems to need lens advice, and who better to give it than sgeo
10:30:27 <shachaf> monqy makes a good point
10:30:30 <Sgeo__> As far as I can tell I'm channeling Captain Obvious.
10:31:10 <shachaf> monqy: have you read book
10:31:13 <shachaf> (by vernor vinge)
10:31:19 <Phantom_Hoover> Lieutenant Commander Obvious now.
10:31:22 <Phantom_Hoover> She got promoted.
10:31:35 <monqy> shachaf: maybe? probably not.
10:32:49 <shachaf> monqy: can i have some life advice????
10:33:20 <monqy> don't ask sgeo for lens advice
10:33:44 <monqy> is that life enough for you
10:33:48 <monqy> alt. advice enough for you
10:33:52 <shachaf> monqy: no monqy
10:33:57 <shachaf> life isn't all about lenses
10:34:20 <monqy> what!!!!!
10:34:23 <monqy> I've been decieved
10:34:33 <shachaf> oh no
10:34:33 <monqy> i'll try another life advice
10:34:33 <Sgeo__> shachaf, what did you do with the real shachaf?
10:34:38 <elliott> i thought lens was fast
10:34:49 <shachaf> elliott: Have you seen Control.Lens.Zipper?
10:34:52 <shachaf> "hideous"
10:34:58 <Phantom_Hoover> your perception was distorted
10:35:03 <monqy> shachaf
10:35:05 <monqy> i have a site for you
10:35:06 <monqy> http://www.lifeadvicefromoldpeople.com/
10:35:14 <monqy> maybe it will help you
10:35:22 <elliott> control.lens.zipper isn't lens...
10:35:23 <shachaf> wait......
10:35:26 <shachaf> monqy are you old?
10:35:37 <elliott> yes
10:35:41 <shachaf> oh no!
10:35:46 <monqy> I'm like a granny or something
10:35:46 <shachaf> elliott: Yes it is?
10:36:01 <shachaf> monqy: are you granny smith
10:36:07 <shachaf> a granny smith
10:36:24 <monqy> is a granny smith old
10:37:14 <Phantom_Hoover> old granny smiths are
10:37:33 <shachaf> is monqy a old granny smith
10:38:05 <monqy> i don't see why not
10:45:11 <elliott> well it doesn't make lens slow
10:45:14 <elliott> just because one extra par tof itis slow
10:46:06 <shachaf> elliott: but
10:46:10 <shachaf> lens is made of parts
10:54:05 <Sgeo__> If IRC servers never sent PINGs, would some clients get disconnected because of lack of activity on the socket?
11:00:34 <fizzie> It sounds not impossible, though the client could very easily e.g. do TCP keepalive to mitigate that.
11:05:07 <elliott> > Just ["a","b","c"] & partsOf template %~ reverse
11:05:09 <lambdabot> Ambiguous type variable `a0' in the constraint:
11:05:09 <lambdabot> (Data.Typeable.Internal....
11:05:15 <elliott> > Just ["a","b","c"] & partsOf template %~ (reverse :: [String] -> [String])
11:05:18 <lambdabot> Just ["c","b","a"]
11:05:20 <elliott> cool.
11:05:26 <elliott> > (Just ["a","b","c"], "e") & partsOf template %~ (reverse :: [String] -> [String])
11:05:29 <lambdabot> (Just ["e","c","b"],"a")
11:05:32 <elliott> hee
11:05:47 <elliott> monqy: isn't that magic
11:06:02 <shachaf> @ty template
11:06:04 <lambdabot> (Data.Data.Data s, Typeable a, Applicative f) => (a -> f a) -> s -> f s
11:06:48 <shachaf> Did Cale import that?
11:07:32 <elliott> > "abcde" & partsOf uniplate %~ reverse
11:07:35 <lambdabot> "abcde"
11:08:33 <elliott> > "abcde" ^.. uniplate
11:08:35 <lambdabot> ["bcde"]
11:08:43 <shachaf> > over uniplate reverse "hello monqy"
11:08:45 <lambdabot> "hyqnom olle"
11:08:58 <elliott> I don't get it, what does over do there?
11:09:04 <shachaf> elliott: Did you know lastOf (backwards folded) compiles to the same code as listToMaybe?
11:09:20 <elliott> no
11:09:30 <elliott> that is pretty cool though
11:09:37 <elliott> > "abcd" ^?! _head
11:09:39 <lambdabot> Not in scope: `_head'
11:09:39 <lambdabot> Perhaps you meant one of these:
11:09:39 <lambdabot> `head' (imported ...
11:09:43 <elliott> oh
11:09:45 <shachaf> "lens 3.old"
11:09:49 <elliott> :t over
11:09:51 <lambdabot> Setting s t a b -> (a -> b) -> s -> t
11:10:05 <elliott> > "test abc" & uniplate %~ reverse
11:10:08 <lambdabot> "tcba tse"
11:10:16 <elliott> hmm
11:10:24 <elliott> > "test abc" ^.. uniplate
11:10:26 <lambdabot> ["est abc"]
11:10:37 <elliott> what's the difference between uniplate and partsOf uniplate here?
11:10:40 <elliott> > "test abc" ^. partsOf uniplate
11:10:42 <lambdabot> ["est abc"]
11:10:46 <elliott> > "test abc" ^.. partsOf uniplate
11:10:48 <lambdabot> [["est abc"]]
11:10:52 <elliott> right, but...
11:10:56 <elliott> hm
11:11:05 <shachaf> Which part is the confusion?
11:11:32 <elliott> I don't quite understand why partsOf uniplate %~ reverse doesn't do the shuffly thing
11:11:47 <elliott> or how uniplate %~ reverse works, given that it seems to only give one result ("est abc")
11:11:54 <elliott> yet it shuffles "recursively" inside those results when you actually do it
11:11:59 <shachaf> No it doesn't.
11:12:04 <shachaf> Look again.
11:12:17 <elliott> ah, so it doesn't
11:12:32 <elliott> so the reason partsOf uniplate doesn't do it is because you just reverse a one-element list and put it back; right
11:12:46 <elliott> is there a recursive version of uniplate?
11:13:36 <shachaf> btw did you know template = uniplate
11:13:45 <elliott> yes
11:13:48 <elliott> but is there a recursive version of uniplate?
11:13:56 <shachaf> uniplate is recursive.
11:14:06 <elliott> > "test abc" ^.. uniplate
11:14:08 <lambdabot> ["est abc"]
11:14:11 <elliott> doesn't look like it
11:14:27 <elliott> I'd expect ["est abc", "st abc", "t abc", ..., ""]
11:14:36 <shachaf> > universe "test abc"
11:14:38 <lambdabot> ["test abc","est abc","st abc","t abc"," abc","abc","bc","c",""]
11:14:43 <elliott> :t universe
11:14:45 <lambdabot> Plated a => a -> [a]
11:14:46 <elliott> I guess it can't be a Lens
11:14:54 <shachaf> > universeOf uniplate "test abc"
11:14:57 <lambdabot> ["test abc","est abc","st abc","t abc"," abc","abc","bc","c",""]
11:15:26 <shachaf> When Cale upgrades lambdabot, we'll get upon.
11:15:32 <shachaf> Oh, and edwardk implemented uponTheDeep
11:17:45 <elliott> shachaf: is Control.Lens.WithIndex.itoList's documentation supposed to link to Data.IntMap
11:18:52 <shachaf> elliott: Nope.
11:19:10 <elliott> someone should fix that
11:19:14 <elliott> (not me)
11:20:36 <shachaf> elliott: Any others?
11:20:57 <elliott> shachaf: the "map" in its code example links to Data.IntMap too
11:21:04 <elliott> haven't noticed any other issues
11:21:05 <elliott> > Node 123 [Node 12 [Node 4 []], Node 3 []] & uniplate %~ reverse
11:21:07 <lambdabot> Couldn't match expected type `Data.Tree.Tree a0'
11:21:07 <lambdabot> with actual t...
11:21:14 <elliott> hm
11:21:15 <elliott> :t Node
11:21:16 <lambdabot> a -> Forest a -> Tree a
11:21:24 <elliott> > Node 123 [Node 12 [Node 4 []], Node 3 []]
11:21:25 <lambdabot> Node {rootLabel = 123, subForest = [Node {rootLabel = 12, subForest = [Node...
11:21:31 <shachaf> elliott: Thanks.
11:21:35 <elliott> > Node 123 [Node 12 [Node 4 []], Node 3 []] ^.. uniplate
11:21:37 <lambdabot> [Node {rootLabel = 12, subForest = [Node {rootLabel = 4, subForest = []}]},...
11:21:40 <elliott> :t Node 123 [Node 12 [Node 4 []], Node 3 []] ^.. uniplate
11:21:42 <lambdabot> (Data.Data.Data a, Num a) => [Tree a]
11:21:57 <elliott> > Node 123 [Node 12 [Node 4 []], Node 3 []] & partsOf plate %~ reverse
11:21:57 <shachaf> Whoops, foldl, too
11:21:59 <lambdabot> Node {rootLabel = 123, subForest = [Node {rootLabel = 3, subForest = []},No...
11:22:04 <elliott> > Node 123 [Node 12 [Node 4 []], Node 3 []] & partsOf plate %~ reverse & drawTree
11:22:06 <lambdabot> No instance for (GHC.Num.Num GHC.Base.String)
11:22:07 <lambdabot> arising from the literal `...
11:22:14 <elliott> huh?
11:22:15 <elliott> :t drawTree
11:22:17 <lambdabot> Tree String -> String
11:22:18 <elliott> oh
11:22:22 <elliott> > Node 123 [Node 12 [Node 4 []], Node 3 []] & partsOf plate %~ reverse & fmap show & drawTree & text
11:22:25 <lambdabot> 123
11:22:25 <lambdabot> |
11:22:25 <lambdabot> +- 3
11:22:25 <lambdabot> |
11:22:25 <lambdabot> `- 12
11:22:27 <lambdabot> |
11:22:29 <lambdabot> `- 4
11:22:32 <elliott> nice
11:22:34 <elliott> monqy: look'at that
11:23:22 <monqy> im mmlooking
11:23:47 <shachaf> what
11:23:51 <shachaf> who invented drawTree
11:24:13 <elliott> Data.Tree did
11:24:34 <shachaf> Data.Tree is a very smart computer
11:25:23 <elliott> > Node 123 [Node 12 [Node 4 []], Node 3 []] & template *~ 2 & fmap show & drawTree & text
11:25:26 <lambdabot> 246
11:25:26 <lambdabot> |
11:25:26 <lambdabot> +- 24
11:25:26 <lambdabot> | |
11:25:26 <lambdabot> | `- 8
11:25:28 <lambdabot> |
11:25:30 <lambdabot> `- 6
11:25:33 <elliott> coooooool
11:30:11 <elliott> shachaf: would it make sense to generalise Plated to "class Plate a b where plate :: Simple Traversal a b"? so you can do what "template" does
11:30:15 <elliott> I guess it'd be redundant with Data
11:30:26 <elliott> and also mess up inference
11:31:36 <shachaf> elliott: your lens talk is offtopic in here
11:31:42 <shachaf> take it to #LENS!!!!
11:40:07 <elliott> :t (?~)
11:40:09 <lambdabot> Setting s t a (Maybe b) -> b -> s -> t
11:40:56 <shachaf> > M.empty & at "monqy" ?~ "hi"
11:40:58 <lambdabot> fromList [("monqy","hi")]
11:44:54 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
11:45:28 <elliott> apparently my lens is 6 major versions behind
11:45:33 <elliott> because I installed it a few days ago
11:46:28 <shachaf> upon elliott upgrade
11:46:56 -!- Phantom_Hoover has joined.
11:52:23 -!- Arc_Koen has joined.
12:15:56 <Arc_Koen> @tell oerjan my Minks implementation is based on what was written in the minks page + what was said on the talk page; also I did not put any comments in it and the parser is incredibly badly written; I'm not sure considering that implementation as some sort of "reference implementation" is such a good idea ;)
12:15:57 <lambdabot> Consider it noted.
12:16:19 <Arc_Koen> @tell oerjan also I'll try to remember why I put it on the talk page in the first place and not in a wiki page of its own
12:16:19 <lambdabot> Consider it noted.
12:23:23 -!- Vorpal has joined.
12:27:42 <elliott> shachaf: what if you did the same trick that isomorphisms use for all lenses
12:28:00 <shachaf> ?
12:28:32 <elliott> type Getter s a = forall f. (Gettable f, Gettery k) => k s a
12:28:37 <elliott> instance Gettery (->)
12:28:45 <elliott> instance Gettery (\s a -> (a -> f a) -> s -> f s)
12:30:16 <shachaf> And for Lens?
12:32:30 <elliott> type Lens s t a b = forall f. (Lensy k) => k s t a b
12:32:41 <elliott> instance Lensy (\s _ a _ -> (s -> a))
12:32:51 <elliott> instance Lensy (\s t a b -> forall f. (Functor f) => (a -> f b) -> s -> f t)
12:32:58 <monqy> Q: if i know lens will all their type signatures stop looking really stupid
12:32:58 <elliott> what could go wrong, right
12:33:03 <elliott> monqy: no
12:33:37 <shachaf> monqy: no but! your eyes just sort of glaze over and you don't actually read the signatures after a while
12:33:44 <shachaf> which is basically the same as before you know lens
12:34:00 <shachaf> except not the same
12:34:20 <elliott> :t (%~)
12:34:21 <lambdabot> Setting s t a b -> (a -> b) -> s -> t
12:34:28 <elliott> :t itraverse
12:34:29 <lambdabot> (Applicative f, TraversableWithIndex i t) => (i -> a -> f b) -> t a -> f (t b)
12:34:39 <elliott> monqy: it has some cool signatures!
12:34:40 <elliott> like uh
12:35:07 <shachaf> @ty (%%~)
12:35:09 <lambdabot> LensLike f s t a b -> (a -> f b) -> s -> f t
12:35:12 <shachaf> "pretty cool signature right"
12:35:42 <elliott> :t _1
12:35:44 <lambdabot> (Functor f, Field1 s t a b) => (a -> f b) -> s -> f t
12:35:49 <elliott> um um
12:35:52 <elliott> :t index
12:35:54 <lambdabot> Ambiguous occurrence `index'
12:35:54 <lambdabot> It could refer to either `Data.Ix.index',
12:35:54 <lambdabot> imported from `Data.Ix' at State/L.hs:32:1-14
12:35:57 <elliott> nice
12:36:01 <monqy> :t upon
12:36:03 <lambdabot> Not in scope: `upon'
12:36:04 <elliott> :t Control.Lens.Indexed.index
12:36:06 <lambdabot> Indexed i k => ((i -> a) -> b) -> k a b
12:36:08 <elliott> monqy: that's a pretty nice signature!
12:36:23 <monqy> :i Indexed
12:36:28 <monqy> :'[
12:36:30 <elliott> :t act
12:36:31 <lambdabot> Control.Lens.Internal.Effective m r f => (s -> m a) -> (a -> f a) -> s -> f s
12:36:33 <elliott> so's that
12:36:47 <elliott> except
12:36:53 <elliott> :t Control.Lens.Action.act
12:36:54 <shachaf> elliott: help what's Eq#
12:36:55 <shachaf> in Core
12:36:55 <lambdabot> Control.Lens.Internal.Effective m r f => (s -> m a) -> (a -> f a) -> s -> f s
12:36:59 <elliott> weird it shows differently
12:37:01 <elliott> shachaf: idk
12:37:17 <shachaf> monqy: duk
12:37:49 <shachaf> elliott: Really happy with how the Core for getters/folds turns out!
12:37:59 <elliott> what about traversals
12:38:05 <shachaf> ion is sending patches to lens now.
12:38:09 <shachaf> I'm sure it's just a phase.
12:38:15 <elliott> :t focus
12:38:17 <lambdabot> (Functor f, Indexed (Tape (h :> a)) k) => k (a -> f a) ((h :> a) -> f (h :> a))
12:38:21 <elliott> monqy: also a pretty good type
12:38:26 <ion> shachaf: I see what you did there. “phase”
12:38:32 <shachaf> focus? more like stupidus
12:38:32 <elliott> except it's actually
12:38:34 <elliott> focus :: SimpleIndexedLens (Tape (h :> a)) (h :> a) a
12:38:36 <shachaf> @ty rezip
12:38:37 <lambdabot> Zipper h a => (h :> a) -> Zipped h a
12:38:50 <monqy> elliott: are these the sorts of types that look cool once i know lens,m because i don't know lense
12:39:09 <elliott> ion: "This isn't /quite/ a legal lens."
12:39:13 <elliott> this isn't ok ion
12:39:15 <elliott> monqy: "sort of"
12:39:17 <elliott> it
12:39:18 <shachaf> monqy: lens is easey
12:39:20 <elliott> it' sa cool library i like it
12:39:49 <ion> elliott: edwardk already did that in polarize, so i thought it would be okay.
12:39:51 <shachaf> elliott: Not sure about traversals.
12:39:53 <shachaf> It depends.
12:39:57 <monqy> im sure id find it cool if i took the time to read what the stuff meant
12:39:57 <elliott> ion: he's not ok either
12:40:10 <elliott> monqy: i figured out lens just by reading the haddocks
12:40:14 <elliott> p. good way imo
12:40:16 <monqy> yeah but i hjavent done that
12:40:24 <monqy> ive been too busy doing other stuff!!!!
12:40:44 <elliott> i haven't
12:41:04 <shachaf> monqy: i figured out lens just by going to edwardk's talk about it in san francisco
12:41:08 <shachaf> have you been to san francisco
12:41:13 <monqy> maybe
12:41:18 <monqy> i forget!!
12:41:26 <elliott> how can you forget that
12:41:41 <shachaf> elliotts right
12:43:08 <ion> shachafs left
12:43:39 <shachaf> ion: tug
12:43:44 <shachaf> tug left
12:43:46 <shachaf> tugs left 5
12:43:54 <shachaf> shachafs left ß
12:44:22 <elliott> shachaf: you should fix Data.Vector.Lens
12:44:27 <elliott> it has lots of partial lenses which should be traversals
12:44:37 <shachaf> elliott: No, you should fix it.
12:44:50 <shachaf> And while you're at it, write some benchmarks for me.
12:45:08 <shachaf> @ty over id id
12:45:09 <lambdabot> t -> t
12:45:11 <shachaf> @ty view id
12:45:13 <lambdabot> s -> s
12:45:19 <shachaf> coïncidence
12:45:34 <shachaf> Hey, it's pretty nifty that GHC infers t for over and s for view.
12:45:36 <ion> ï?
12:45:49 <shachaf> ïon: What about ït?
12:46:24 <elliott> monqy: another cool lens thing
12:46:25 <elliott> > ala _sum foldMap [1,2,3,4]
12:46:27 <lambdabot> 10
12:46:35 <shachaf> import Control.Newtype
12:46:40 <ion> s̈ḧäc̈ḧäf̈:̈¨n̈öẗḧïn̈g̈
12:46:47 <elliott> > ala _endo foldMap [("a"++),reverse,(++"b")] "hello"
12:46:49 <lambdabot> "abolleh"
12:46:50 <monqy> lens has ala? yeah i remember ala from before
12:46:59 <elliott> it's like Control.Newtype but better since it's not tied to the notions of newtypes
12:47:00 <elliott> :t ala
12:47:01 <lambdabot> Simple Iso s a -> ((s -> a) -> e -> a) -> e -> s
12:47:04 <elliott> :t _sum
12:47:06 <lambdabot> (Functor f, Isomorphic k) => k (Sum a -> f (Sum b)) (a -> f b)
12:47:07 <elliott> :t _endo
12:47:08 <lambdabot> (Functor f, Isomorphic k) => k (Endo a -> f (Endo b)) ((a -> a) -> f (b -> b))
12:47:11 <shachaf> monqy: lens has first clarinet ala
12:47:11 <monqy> o neaaeto
12:47:13 <shachaf> first class
12:47:29 <elliott> _endo is actually
12:47:30 <elliott> _endo :: Iso (a -> a) (b -> b) (Endo a) (Endo b)
12:47:32 <elliott> and _sum is actually
12:47:38 <shachaf> @ty review
12:47:39 <elliott> _sum :: Iso (Sum a) (Sum b) a b
12:47:40 <lambdabot> Not in scope: `review'
12:47:40 <lambdabot> Perhaps you meant `view' (imported from Control.Lens)
12:47:44 <elliott> lambdabot just displays them badly :(
12:47:45 <shachaf> @let review = view.from
12:47:47 <lambdabot> Defined.
12:47:55 <ion> Yes, lens has first clarinet ala.
12:47:56 <shachaf> > view _sum 1
12:47:58 <lambdabot> Sum {getSum = 1}
12:48:03 <shachaf> > review _sum (Sum 1)
12:48:06 <lambdabot> 1
12:48:21 <shachaf> > isomorphic Sum getSum 1
12:48:23 <lambdabot> Sum {getSum = 1}
12:48:25 <shachaf> > from (isomorphic Sum getSum) 1
12:48:27 <lambdabot> No instance for (GHC.Num.Num (Data.Monoid.Sum a0))
12:48:28 <lambdabot> arising from a use of...
12:48:36 <elliott> monqy: so you can also do things like get an isomorphism for your newtype made
12:48:36 <shachaf> oooops
12:48:52 <elliott> monqy: so you can treat it as a lens field to modify it/get at it/etc.
12:49:07 <shachaf> monqy: Did you know GHC doesn't optimize [] to []?
12:49:10 <elliott> > First (Just "abcd") & _first %~ reverse
12:49:10 <shachaf> Ahem.
12:49:12 <lambdabot> Couldn't match expected type `Data.Monoid.First [GHC.Types.Char]'
12:49:12 <lambdabot> ...
12:49:13 <shachaf> monqy: Did you know GHC doesn't optimize reverse [] to []?
12:49:16 <elliott> oops
12:49:25 <elliott> > First (Just "abcd") & _first._just %~ reverse
12:49:27 <lambdabot> Not in scope: `_just'
12:49:28 <monqy> shachaf: i hear ghc doesnt inline reverse
12:49:31 <elliott> hmm
12:49:39 <shachaf> > First (Just "abcd") & _first.traverse %~ reverse
12:49:41 <lambdabot> Couldn't match expected type `Data.Monoid.First [GHC.Types.Char]'
12:49:42 <lambdabot> ...
12:49:50 <monqy> > reverse [1..]
12:49:54 <lambdabot> mueval-core: Time limit exceeded
12:50:09 <monqy> > reverse [..10]
12:50:14 <lambdabot> mueval-core: Time limit exceeded
12:50:15 <shachaf> > First (Just "abcd") & from _first.traverse %~ reverse
12:50:19 <lambdabot> mueval-core: Time limit exceeded
12:50:27 <shachaf> uh oh
12:50:27 <elliott> :t from
12:50:32 <lambdabot> Isomorphic k => Isomorphism a b -> k b a
12:50:34 <shachaf> > First (Just "abcd") & from _first.traverse %~ reverse
12:50:35 <elliott> right
12:50:38 <lambdabot> mueval-core: Time limit exceeded
12:50:40 <shachaf> > First (Just "abcd") & from _first.traverse %~ reverse
12:50:40 <shachaf> > First (Just "abcd") & from _first.traverse %~ reverse
12:50:40 <shachaf> > First (Just "abcd") & from _first.traverse %~ reverse
12:50:41 <shachaf> > First (Just "abcd") & from _first.traverse %~ reverse
12:50:43 <lambdabot> can't find file: L.hs
12:50:43 <lambdabot> can't find file: L.hs
12:50:44 <elliott> needs to go the other way
12:50:44 <lambdabot> mueval-core: Time limit exceeded
12:50:44 <lambdabot> mueval-core: Time limit exceeded
12:50:52 <monqy> > var "hi shachaf"
12:50:55 <lambdabot> hi shachaf
12:51:00 <shachaf> how did you do that
12:51:01 <monqy> time limit "not exceeded"
12:51:02 <shachaf> > First (Just "abcd") & from _first.traverse %~ reverse
12:51:06 <lambdabot> mueval-core: Time limit exceeded
12:51:09 <shachaf> help
12:51:10 <ion> Lens is too slow.
12:51:11 <elliott> > 3
12:51:13 <lambdabot> 3
12:51:14 <shachaf> monqy: do you have magic powers
12:51:17 <shachaf> > First (Just "abcd") & from _first.traverse %~ reverse
12:51:19 <lambdabot> First {getFirst = Just "dcba"}
12:51:23 <monqy> congratulat
12:51:24 <shachaf> oh no
12:51:30 <shachaf> do i have magic powers now>?
12:51:32 <shachaf> am i monqy
12:51:58 <elliott> monqy: other cool things: it has a notion of "indexes" so you can do things like
12:52:03 <elliott> > "abcde" & iwhere (\i -> i `mod` 2 == 0) .~ 'q'
12:52:06 <lambdabot> "qbqdq"
12:52:07 <elliott> > "abcde" & iwhere (\i -> i `mod` 2 == 0) %~ toUpper
12:52:09 <lambdabot> "AbCdE"
12:52:16 <shachaf> oh good thinking elliott
12:52:22 <elliott> > M.fromList [("a",2),("b",3)] & at "b" +~ 10
12:52:24 <lambdabot> No instance for (GHC.Num.Num (Data.Maybe.Maybe a0))
12:52:24 <lambdabot> arising from a use o...
12:52:26 <monqy> elliott: o thats cool
12:52:27 <elliott> oh
12:52:30 <elliott> > M.fromList [("a",2),("b",3)] & at "b" ?~ 10
12:52:33 <lambdabot> fromList [("a",2),("b",10)]
12:52:41 <elliott> > M.fromList [("a",2),("b",3)] & at "b" ?+~ 10
12:52:43 <lambdabot> Not in scope: `?+~'
12:52:43 <lambdabot> Perhaps you meant one of these:
12:52:43 <lambdabot> `+~' (imported from...
12:52:46 <elliott> > M.fromList [("a",2),("b",3)] & at "b" +?~ 10
12:52:48 <lambdabot> Not in scope: `+?~'
12:52:48 <lambdabot> Perhaps you meant one of these:
12:52:48 <lambdabot> `+~' (imported from...
12:52:50 <elliott> hmm
12:52:54 <elliott> is there even an operator for that
12:53:10 <shachaf> elliott: Can you believe how uninlined this is? :-(
12:53:12 <elliott> monqy: anyway you get the idea
12:53:24 <shachaf> > M.fromList [("a",2),("b",3)] & at "b".traverse +~ 10
12:53:26 <lambdabot> fromList [("a",2),("b",13)]
12:53:31 <elliott> right
12:53:38 <elliott> isn't that just traverseAt
12:53:45 <elliott> > M.fromList [("a",2),("b",3)] & traverseAt "b" +~ 10
12:53:45 <shachaf> > M.fromList [("a",2),("b",3)] & _at "b" +~ 10
12:53:47 <lambdabot> can't find file: L.hs
12:53:48 <lambdabot> fromList [("a",2),("b",13)]
12:53:54 <shachaf> It's called _at now
12:53:57 <elliott> oh it got renamed, right
12:54:02 <elliott> :t at
12:54:05 <elliott> :t _at
12:54:05 <lambdabot> (Functor f, At k m, Indexed k k1) => k -> k1 (Maybe v -> f (Maybe v)) (m v -> f (m v))
12:54:07 <lambdabot> Not in scope: `_at'
12:54:07 <shachaf> But not in lambdabot
12:54:07 <lambdabot> Perhaps you meant one of these:
12:54:07 <lambdabot> `cat' (imported from Text.PrettyPrint.HughesPJ),
12:54:12 <elliott> :t _traverseAt
12:54:13 <elliott> er
12:54:13 <lambdabot> Not in scope: `_traverseAt'
12:54:14 <lambdabot> Perhaps you meant one of these:
12:54:14 <lambdabot> `traverseAt' (imported from Control.Lens),
12:54:14 <elliott> :t traverseAt
12:54:16 <lambdabot> (Applicative f, At k m, Indexed k k1) => k -> k1 (v -> f v) (m v -> f (m v))
12:54:27 <elliott> right, so at is just a lens on the Maybe result
12:54:27 <shachaf> :i _λ> :i _at
12:54:28 <shachaf> _at ::
12:54:28 <shachaf> forall k (m :: * -> *) v.
12:54:28 <shachaf> At k m =>
12:54:28 <shachaf> k -> SimpleIndexedTraversal k (m v) v
12:54:30 <shachaf> -- Defined in `Control.Lens.IndexedTraversal'
12:54:32 <elliott> whereas traverseAt lifts it to a traversal
12:54:39 <elliott> I wonder if you could unify the notions somehow so they ended up having the same type
12:54:40 <shachaf> @let _ = traverse
12:54:42 <lambdabot> <local>:4:5:
12:54:42 <lambdabot> Ambiguous type variable `t0' in the constraint:
12:54:42 <lambdabot> (Tr...
12:54:59 <elliott> monqy: have you seen the examples with "both"
12:55:08 <elliott> > (1,2) & both *~ 2
12:55:08 <shachaf> elliott: Wow. :-(
12:55:10 <lambdabot> (2,4)
12:55:23 <elliott> > (1,2) & partsOf both %~ reverse
12:55:25 <lambdabot> (2,1)
12:55:31 <elliott> (that last one is evil don't actually use it please)
12:55:31 <shachaf> "bad core"
12:55:42 <shachaf> > (1,2) & unsafePartsOf both %~ reverse -- less evil??
12:55:44 <lambdabot> (2,1)
12:56:15 <elliott> can you do partsOf foo %~ reverse just by using Backwards
12:56:21 <shachaf> I don't think so.
12:56:24 <shachaf> How would that work?
12:56:29 <elliott> can you do it in a way that doesn't involve a list at least
12:56:34 <shachaf> I don't know. :-(
12:56:39 <shachaf> I've wondered about that.
12:56:44 <elliott> i mean you must be able to
12:57:05 <shachaf> You can uh, use the traversal twice?
12:57:14 <shachaf> Zip the traversal with its Backwrads?
13:00:28 <elliott> :t (^?!)
13:00:30 <lambdabot> Not in scope: `^?!'
13:00:30 <lambdabot> Perhaps you meant one of these:
13:00:30 <lambdabot> `^!' (imported from Control.Lens),
13:00:32 <elliott> right
13:00:38 <elliott> how is cale going to keep up
13:00:45 <elliott> also how did cale get convinced to put lens in lambdabot in the first place
13:00:51 <shachaf> @let (^?!) = fromMaybe (error "hi monqy") .: headOf
13:00:54 <lambdabot> Defined.
13:00:55 <monqy> elliott: ive seen "both" in ursala but in haskell it is new to me !
13:01:02 <monqy> except in ursala it is just b
13:01:05 <monqy> "wow succinct"
13:01:18 <elliott> :t both
13:01:19 <lambdabot> Applicative f => (a -> f b) -> (a, a) -> f (b, b)
13:01:31 <elliott> monqy: but in ursala can you use it to map over both elements
13:01:33 <elliott> or is it just a getter??
13:01:43 <shachaf> elliott: Other way around.
13:01:52 <elliott> you know ursala?
13:01:55 <shachaf> No.
13:01:58 <elliott> er right I said it wrong
13:02:03 <elliott> but
13:02:14 <elliott> monqy: the traversal is actually more powerful!
13:02:23 <monqy> but ursala
13:02:27 <elliott> monqy: than just (a -> b) -> (a, a) -> (b, b)
13:02:28 <elliott> because
13:02:30 <shachaf> > sumOf _2 ("hi","monqy")
13:02:33 <lambdabot> "monqy"
13:02:35 <shachaf> can ursala compute the sum of a string
13:02:38 <elliott> you can do the reverse thing
13:02:39 <elliott> > (1,2) & partsOf both %~ reverse
13:02:41 <lambdabot> (2,1)
13:02:51 <elliott> (because you get that arbitrary applicative effect)
13:02:53 <elliott> similarly
13:02:59 <elliott> > ("a","b") ^. both
13:03:01 <lambdabot> "ab"
13:03:04 <elliott> for mappending them
13:04:07 <ion> > (Sum 3, Sum 4) ^. both
13:04:09 <lambdabot> Sum {getSum = 7}
13:04:18 <shachaf> > sumOf both (Sum 3, Sum 4)
13:04:20 <lambdabot> No instance for (GHC.Num.Num (Data.Monoid.Sum a0))
13:04:20 <lambdabot> arising from a use of...
13:04:21 <shachaf> help
13:04:25 <ion> > sumOf both (3, 4)
13:04:27 <lambdabot> 7
13:04:29 <ion> > 7
13:04:31 <lambdabot> 7
13:04:32 <elliott> > (1,2) & both %~ Sum & get both
13:04:32 <monqy> % fun -c -m="~&brlX ((1,2),(3,4))"
13:04:33 <monqy> ((2,1),4,3)
13:04:34 <lambdabot> Could not deduce (Control.Monad.State.Class.MonadState
13:04:34 <lambdabot> ...
13:04:36 <monqy> "but can haskell do this"
13:04:41 <elliott> > ((1,2) & both %~ Sum) ^. both
13:04:43 <lambdabot> mueval-core: NotAllowed "These modules have not been loaded:\nL\n"
13:04:46 <shachaf> > lastOf (backwards traverse) [1..100000000]
13:04:46 <elliott> what
13:04:48 <lambdabot> Just 1
13:04:51 <elliott> > ((1,2) & both %~ Sum) ^. both
13:04:53 <lambdabot> Sum {getSum = 3}
13:04:57 <elliott> is there a nicer way of doing this
13:05:00 <elliott> without sumOf
13:05:01 <shachaf> > lastOf (backwards traverse) [1..100000000000000000000000000000000]
13:05:02 <ion> Wow, i haven’t seen the NotAllowed error before.
13:05:04 <lambdabot> Just 1
13:05:07 <shachaf> > lastOf (backwards traverse) [1..100000000000000000000000000000000000000000000000]
13:05:09 <lambdabot> Just 1
13:05:14 <elliott> like is there a way to capture
13:05:29 <shachaf> elliott: sum toListOf both?
13:05:37 <elliott> :t sum
13:05:38 <lambdabot> Num a => [a] -> a
13:05:45 <shachaf> > sum (toListOf both (1,2))
13:05:47 <elliott> that's not really what i maen...
13:05:47 <lambdabot> 3
13:05:50 <elliott> i mean a way of capturing
13:06:01 <elliott> foo l f x = over l f x ^. l
13:06:08 <elliott> alternatively, how is sumOf defined
13:06:17 <shachaf> Using Sum
13:06:23 <elliott> yes
13:06:27 <elliott> this does not shock me
13:06:38 <shachaf> getSum . foldMapOf l Sum
13:06:42 <shachaf> (except not that)
13:06:45 <shachaf> (more unsafeCoerce)
13:06:46 <elliott> :t foldMapOf
13:06:47 <lambdabot> Getting r s t a b -> (a -> r) -> s -> r
13:06:54 <elliott> eh
13:06:56 <elliott> ok
13:07:34 <elliott> :t even
13:07:36 <lambdabot> Integral a => a -> Bool
13:07:44 <elliott> > sumOf (iwhere even) [1..10]
13:07:46 <lambdabot> 25
13:07:48 <elliott> mmmm
13:07:52 <elliott> that's nice
13:08:03 <ion> Why isn’t getSum unsafeCoerce in the first place?
13:08:14 <shachaf> ion: It is.
13:08:33 <shachaf> (getSum .), however...
13:08:59 <ion> ಠ_ಠ
13:09:08 <shachaf> ?
13:09:19 <elliott> > sumOf (iwhere even) $ M.fromList []
13:09:21 <lambdabot> Ambiguous type variable `k0' in the constraints:
13:09:21 <lambdabot> (GHC.Real.Integral k0)
13:09:21 <lambdabot> ...
13:09:24 <shachaf> ion: *You* try to get "over mapped" to compile into fmap
13:10:42 <elliott> > M.fromList [(0,"abc"), (1,"def"), (2,"qqq")] ^. traverse
13:10:44 <lambdabot> "abcdefqqq"
13:10:54 <elliott> > M.fromList [(0,"abc"), (1,"def"), (2,"qqq")] ^. iwhere even . traverse
13:10:56 <lambdabot> No instance for (Data.Monoid.Monoid GHC.Types.Char)
13:10:56 <lambdabot> arising from a use o...
13:11:00 <elliott> hm
13:11:04 <elliott> :t M.fromList [(0,"abc"), (1,"def"), (2,"qqq")] ^. iwhere even
13:11:05 <lambdabot> Ambiguous type variable `k0' in the constraints:
13:11:06 <lambdabot> (Integral k0) arising from a use of `even' at <interactive>:1:56-59
13:11:06 <lambdabot> (Num k0) arising from the literal `0' at <interactive>:1:14
13:11:10 <elliott> huh?
13:11:43 <elliott> shachaf: what am I doing wrong
13:12:12 <shachaf> ?
13:12:18 <elliott> why isn't this working
13:12:25 <shachaf> Works in my ghci
13:12:44 <shachaf> > M.fromList [(0,"abc"), (1,"def"), (2,"qqq")] ^. iwhere (even::Int->Bool)
13:12:46 <lambdabot> "abcqqq"
13:13:00 <shachaf> monqy: What's ursala?
13:13:21 <ion> Doesn’t work in my ghci. 7.4.2.
13:13:46 <shachaf> 7.6: better than 7.4?
13:14:36 <ion> no wai
13:15:05 <shachaf> elliott: I'm not liking the iwhere Core.
13:15:09 <monqy> shachaf: you should learn ursala!
13:15:18 <shachaf> monqy: who's that
13:15:21 <elliott> monqy: did you ever finish the manual
13:15:25 <shachaf> didn't she write that book
13:15:27 <monqy> elliott: no i got sidetracked
13:15:36 <elliott> monqy: im disappointed
13:15:58 <monqy> elliott: im struggling with the hell that is figuring out how to get rewriting under binders working in coq
13:16:11 <monqy> while really tired??? i should sleep
13:16:21 <elliott> monqy: sounds less fun than ursala. you should read the manual some more instead
13:16:35 <elliott> pure = Mutator
13:16:35 <elliott> 403
13:16:35 <elliott> + {-# INLINE pure #-}
13:16:40 <elliott> shachaf: come on, ghc is smart enough for that
13:17:53 <shachaf> elliott: OK, OK
13:17:59 <shachaf> But not for one of the other ones I added.
13:18:11 <shachaf> itraverse or something
13:18:16 <shachaf> elliott: wait wait wait
13:18:17 <shachaf> help
13:18:39 <shachaf> itoListOf ifolded is working
13:18:45 <shachaf> but itoListOf itraverse is not??????
13:19:35 <ion> monqy: Binders full of women?
13:20:40 <elliott> :t itoListOf ifolded
13:20:41 <lambdabot> FoldableWithIndex i f => f b -> [(i, b)]
13:20:42 <elliott> :t itoListOf itraverse
13:20:43 <lambdabot> Couldn't match expected type `IndexedGetting
13:20:44 <lambdabot> i0 [(i0, a0)] s0 t0 a0 b0'
13:20:44 <lambdabot> with actual type `(i1 -> a1 -> f0 b1) -> t1 a1 -> f0 (t1 b1)'
13:20:51 <elliott> that sure is a type error
13:23:09 <monqy> ahh, the hell that is rewriting under binders was working all along but i forgot to declare my stuff as morphisms
13:23:17 <monqy> im too tired for this
13:23:42 <shachaf> i declare monqqys stuff as morphisms
13:23:48 <monqy> thank u
13:24:29 <shachaf> elliott: Should indexed be strict?
13:24:36 <elliott> :t indexed
13:24:37 <lambdabot> Indexed Int k => ((a -> Control.Lens.Internal.Indexing f b) -> s -> Control.Lens.Internal.Indexing f t) -> k (a -> f b) (s -> f t)
13:24:45 <shachaf> indexed l = index $ \iafb s -> case runIndexing (l (\a -> Indexing (\i -> (iafb i a, i + 1))) s) 0 of
13:24:48 <elliott> which is faster
13:24:49 <shachaf> indexed l = index $ \iafb s -> case runIndexing (l (\a -> Indexing (\i -> i `seq` (iafb i a, i + 1))) s) 0 of
13:25:00 <shachaf> elliott: help i dont havae any benchmarks!!
13:25:01 <elliott> oh
13:25:06 <elliott> i thought you meant strict as in strict
13:25:11 <elliott> as in indexed _|_ = _|_
13:25:12 <shachaf> No, index-strict.
13:25:19 <shachaf> One of them builds a bunch of thunks, though, I assume.
13:25:19 <elliott> um
13:25:21 <elliott> probably not
13:25:25 <shachaf> Why not?
13:25:32 <elliott> what if you have a complex lens type
13:25:40 <shachaf> And?
13:25:41 <elliott> er
13:25:43 <elliott> complex index type
13:25:49 <shachaf> @ty indexed
13:25:50 <elliott> that has a lot of computation
13:25:51 <lambdabot> Indexed Int k => ((a -> Control.Lens.Internal.Indexing f b) -> s -> Control.Lens.Internal.Indexing f t) -> k (a -> f b) (s -> f t)
13:25:56 <shachaf>
13:26:09 <shachaf> ☝☝☝
13:26:15 <elliott> what
13:26:16 <shachaf> "oopse"
13:26:18 <elliott> oh
13:26:19 <shachaf> @ty indexed
13:26:19 <elliott> the Int part
13:26:20 <lambdabot> Indexed Int k => ((a -> Control.Lens.Internal.Indexing f b) -> s -> Control.Lens.Internal.Indexing f t) -> k (a -> f b) (s -> f t)
13:26:22 <elliott> wel
13:26:23 <elliott> l
13:26:24 <shachaf> Yes.
13:26:25 <elliott> I guess it can be strict
13:26:28 <elliott> it seems semantically wrong though
13:26:35 <shachaf> indexed turns an existing traversal into an Int-indexed traversal
13:26:40 <elliott> what if you have a structure where it's easy to access in order
13:26:41 <shachaf> Just by the order it Ints by.
13:26:46 <elliott> but calculating the exact indices is expensive
13:26:51 <shachaf> ?
13:26:54 <elliott> oh
13:26:57 <elliott> wait
13:27:01 <elliott> does it even change semantics to make it strict then
13:27:07 <shachaf> Sort of.
13:27:09 <elliott> how
13:27:17 <shachaf> Maybe not.
13:27:19 -!- sivoais has joined.
13:27:20 <shachaf> Who cares about semantics?
13:27:25 <shachaf> I asked if it should be strict.
13:27:28 <elliott> me too
13:27:38 <elliott> i assumed it was a question about the function's denotation
13:27:40 -!- monqy has quit (Quit: hello).
13:27:46 <elliott> operationally, do whatever you think will be fastest, probably strict
13:28:43 <shachaf> I thought so.
13:30:50 -!- atriq has joined.
13:33:13 <shachaf> elliott: Yay, saves us from a stack overflow.
13:33:59 <shachaf> elliott:
13:34:00 <shachaf> itoListOf l = ifoldMapOf l (\i a -> [(i,a)])
13:34:21 <shachaf> Should it be ifoldrOf l (\i a -> ((i,a):))?
13:36:31 <elliott> what's the difference
13:37:18 <shachaf> right-associative
13:40:15 <elliott> then i guess yes
13:45:30 <shachaf> elliott: Isn't it annoying how with rank-2 types, to make a type *more* polymorphic you have to make the signature *more* specific?
13:46:22 <elliott> no
13:46:45 <shachaf> wrong answer
14:03:46 <shachaf> elliott: Oh.
14:03:50 <shachaf> It's itoListOf itraversed
14:12:52 <Phantom_Hoover> "ph plays df adventure mode: pt 1"
14:13:33 <Phantom_Hoover> for some reason every single human in the village i was in, including my 3 companions, turned hostile
14:13:47 <elliott> were you rude
14:14:06 <Phantom_Hoover> presently i am retreating from a massive crowd of them, a trail of broken bodies in my wake
14:16:43 <Phantom_Hoover> no, i got sent to kill a spearman by someone in the same village
14:17:11 <Phantom_Hoover> when i found him in one of the huts, there was a flurry of chaos and everyone started attacking me
14:17:32 <Phantom_Hoover> they've gashed my foot and my left arm, but so far i'm holding them off pretty handily
14:22:17 <atriq> Phantom_Hoover, has elliott started the fortress yet?
14:23:08 <Phantom_Hoover> maybe
14:23:12 <Phantom_Hoover> you could ask elliott that
14:24:05 <atriq> I figured asking you would ping both of you
14:24:18 <atriq> elliott, does Phantom_Hoover think you've started the fortress yet?
14:24:48 <elliott> does Phantom_Hoover think
14:24:50 <elliott> burn??
14:25:08 <shachaf> hey elliott
14:25:09 <Phantom_Hoover> brun
14:25:15 <shachaf> Indexing is terrible
14:25:16 <shachaf> fix it :'(
14:25:28 <shachaf> @ty indexed
14:25:30 <lambdabot> Indexed Int k => ((a -> Control.Lens.Internal.Indexing f b) -> s -> Control.Lens.Internal.Indexing f t) -> k (a -> f b) (s -> f t)
14:25:36 <shachaf> "how hard can it be to write this function"
14:25:43 <atriq> elliott, if Phantom_Hoover thought you had started the fortress, would he be correct#?
14:25:57 <atriq> I feel like I'm in a logic puzzle
14:26:51 <elliott> atriq: from a falsehood, all follows
14:27:01 <elliott> the falsehood is Phantom_Hoover thinking
14:47:23 -!- variable has joined.
14:48:53 -!- variable has quit (Read error: Connection reset by peer).
14:49:07 <Phantom_Hoover> oh god there is no way i'm getting out of this
14:49:25 <Phantom_Hoover> i can't sleep in the town, it's night, and i can't stand before healing
14:49:28 <Phantom_Hoover> and i can't travel at night
14:49:51 <Vorpal> Phantom_Hoover, which game?
14:50:28 <Phantom_Hoover> dwarf fortress adventure mode
14:50:44 <Vorpal> hm, never played that mode, is it any good?
14:51:18 <Phantom_Hoover> it's...
14:51:22 <Phantom_Hoover> interesting
14:51:34 <Vorpal> hm okay
14:51:56 <Vorpal> is it as fun as the fortress mode though?
14:52:07 <Phantom_Hoover> hell no
14:52:13 <Vorpal> ah
14:52:58 <Vorpal> bbl
14:52:59 <elliott> Vorpal: it's a masterpiece
14:57:34 -!- Vorpal has quit (Ping timeout: 250 seconds).
15:04:12 <Phantom_Hoover> elliott, i thought you weren't a fan
15:04:38 <elliott> define fan
15:06:34 <fizzie> A thing that moves air around.
15:06:55 <fizzie> Apparently only if it's done by movement of a surface or surfaces.
15:06:56 <elliott> i am that
15:11:51 -!- variable has joined.
15:18:13 -!- variable has quit (Ping timeout: 246 seconds).
15:53:13 -!- t1 has joined.
16:01:22 -!- oerjan has joined.
16:02:24 <oerjan> @messages
16:02:25 <lambdabot> Arc_Koen said 3h 46m 28s ago: my Minks implementation is based on what was written in the minks page + what was said on the talk page; also I did not put any comments in it and the parser is
16:02:25 <lambdabot> incredibly badly written; I'm not sure considering that implementation as some sort of "reference implementation" is such a good idea ;)
16:02:25 <lambdabot> Arc_Koen said 3h 46m 5s ago: also I'll try to remember why I put it on the talk page in the first place and not in a wiki page of its own
16:04:01 <oerjan> Arc_Koen: well the part about conditions starting True was also in the talk page; the other change was that only conditions before commands count for the loop checking, which your truth machine depends on. feel free to undo it but then you need to change both your implementation and your truth machine.
16:04:16 <oerjan> hm gone 3 hours
16:04:25 <oerjan> @tell Arc_Koen well the part about conditions starting True was also in the talk page; the other change was that only conditions before commands count for the loop checking, which your truth machine depends on. feel free to undo it but then you need to change both your implementation and your truth machine.
16:04:25 <lambdabot> Consider it noted.
16:05:52 <oerjan> @tell Arc_Koen that is, the condition x is used as a target in the truth machine, but ignored for the loop check
16:05:53 <lambdabot> Consider it noted.
16:06:24 -!- t1 has left.
16:08:57 <oerjan> @tell Arc_Koen also i certainly don't consider your use of bounded integers to be authoritative >:)
16:08:57 <lambdabot> Consider it noted.
16:16:45 <atriq> Well, that code became neater quickly
16:17:13 <atriq> Rewriting a DCPU interpreter I started and never finished
16:17:25 <oerjan> it's when it starts obfuscating itself you should start worrying
16:18:52 <atriq> From 3 lines with ridiculous lambdas, record syntax, and the "lens" function to 1 line, with pointless fun
16:19:40 <atriq> Basically, I've got two UArrays of Word16s in one datatype, with different address types
16:20:08 <atriq> And I was making a function that took an Either AddressType1 AddressType2 and returned a Simple Lens DCPU Word16
16:20:35 <atriq> dcpuLens = dcpuRegisters .: ix ||| dcpuRam .: ix
16:24:50 <atriq> Anyway
16:38:16 -!- oerjan has quit (Quit: leaving).
16:39:57 <Phantom_Hoover> elliott
16:40:03 <Phantom_Hoover> you know
16:40:06 <Phantom_Hoover> what you should be doing
16:45:31 <elliott> i can't become a duck all by myself Phantom_Hoover
16:45:33 <elliott> you have to help
16:45:47 <Phantom_Hoover> step 1, find witch
16:46:01 <Phantom_Hoover> step 2, anger witch after expressing utmost revulsion for ducks
16:47:15 -!- AnotherTest has joined.
16:47:18 <AnotherTest> Hello
16:47:49 <atriq> elliott, you can do step 2 easily by saying "I hate you almost as much as I hate ducks!"
16:48:23 <Phantom_Hoover> atriq, good thinking!
16:48:39 <Phantom_Hoover> i'm handing control of this project over to you, you are more likely to know about witches in the hexham area
16:49:21 <atriq> I can't think of any specific witch off the top of my head, but I'll put out some feelers
16:49:30 <elliott> atriq: that doesn't work if i like ducks though..... i;td be a compliment
16:49:49 <atriq> elliott, the witch doesn't have to know you like ducks!
16:50:33 <atriq> Think of the insinuations of the negative word "hate"
16:50:38 <atriq> As applied to ducks
16:50:45 <Phantom_Hoover> ok
16:50:47 <atriq> The obvious assumption is that the speaker hates ducks
16:50:49 <Phantom_Hoover> bring a duck with you
16:50:51 <Phantom_Hoover> kill it
16:51:02 <Phantom_Hoover> then say 'i hate you almost as much...' etc.
16:51:15 <elliott> what if that just means i love ducks....... to death
16:51:42 <Phantom_Hoover> say you love her........... to death too, then try and kill her however you killed the duck
16:51:55 <Phantom_Hoover> she will turn you into a duck as an ironic lesson on the consequences of your actions
16:52:19 <elliott> im bested
16:55:06 <Phantom_Hoover> atriq, any luck on witch location
16:56:35 <atriq> Not so far
16:59:42 <Phantom_Hoover> come on surely there are some witches in northumberland who like homestuck!
17:00:48 <atriq> a) Northumberland is pretty big, and Hexham's right in the south of it
17:01:01 <atriq> b) most of the Homestucks I know live in Tyne and Wear
17:05:23 <fizzie> Tyne and Wear sound like made-up names.
17:06:12 <atriq> It's a modern county named after two rivers flowing through it
17:06:21 <atriq> The Tyne also flows through Hexham
17:06:33 <kmc> they have a metro
17:06:43 <fizzie> Do the metro trains run on Tyne?
17:06:53 <atriq> Yeah, and Wear
17:06:55 <atriq> How cool is that?
17:06:57 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
17:10:54 <Phantom_Hoover> i'm fairly sure the nick cage appreciation society at this university was made by homestucks, but they seem to be in hiding
17:11:42 <atriq> Acquire a Homestuck shirt, ideally from your wardrobe. Wander about in it constantly, but not just after updates.
17:12:08 <Phantom_Hoover> unfortunately i wear a jumper all the time
17:12:15 <Phantom_Hoover> and i don't think you can get homestuck jumpers
17:12:18 <Phantom_Hoover> more's the pity
17:12:37 <atriq> You can get Homestuck hoodies, which are closer to jumpers than t-shirts
17:13:41 <Phantom_Hoover> too heavy for the purposes i wear a jumper
17:14:33 <fizzie> You can just wear your Homestuck underwear on top of your pants.
17:15:03 <Phantom_Hoover> hahaha nice try fizzie
17:15:10 <Phantom_Hoover> i'm not googling 'homestuck underwear'
17:15:33 <fizzie> There's an empty Tumblr with that title.
17:15:55 <atriq> Which reminds me
17:16:02 <atriq> I need to pretend to be Phantom_Hoover
17:16:11 <fizzie> There was also something I didn't understand in the results.
17:16:42 <Phantom_Hoover> i heard someone mentioning something called 'mathfuck' or maybe 'fuckbrath', it sounded awful
17:16:57 <Phantom_Hoover> i couldn't get any more details out of them but that sounds like a good start
17:25:58 <atriq> Hmm
17:26:37 <atriq> My query on Facebook for witch recommendations has received three likes. All by Homestucks, as it happens
17:29:07 -!- carado has joined.
17:29:27 <fizzie> What's this witch thing?
17:29:41 <atriq> elliott needs a witch so he can become a duck
17:29:57 <fizzie> Ah, I "see".
17:30:35 <Phantom_Hoover> atriq, why is your facebook picture a drawing of a girl :/
17:30:39 <atriq> It's not
17:30:43 <atriq> It's a drawing of me
17:30:54 <atriq> I'm just rather devoid of masculinity
17:30:57 <fizzie> All Hexhamites look like girls, is that it?
17:31:06 <atriq> And in an unusual outfit
17:31:20 <Phantom_Hoover> eeewwww you watch doctor who?????
17:31:52 <atriq> ...
17:31:58 <atriq> I'm fairly sure you watch Doctor Who
17:32:07 <atriq> You've complained about my taste in doctors before.
17:32:11 <Phantom_Hoover> yes!
17:32:16 <Phantom_Hoover> that's why i don't watch it any more!
17:32:31 <Phantom_Hoover> stop liking things i don't!
17:33:07 <fizzie> Yeah, it's lowering your compatibility percentage.
17:33:26 <Phantom_Hoover> have to love how my dorfs are happy to have a drink at the edge of a 9-level precipice
17:38:21 <Phantom_Hoover> atriq, at least you liked the episode with ben browder in it
17:38:28 <Phantom_Hoover> that's *almost* like liking farscape
17:38:35 <atriq> Which episode was that?
17:39:01 <atriq> Oh, that episode
17:39:05 <atriq> That was a good episode
17:40:12 <Phantom_Hoover> hmm
17:40:29 <Phantom_Hoover> maybe i should not starve my mayor to death
17:40:56 <quintopia> farscape was a good episode. i was younger then, and probably happier.
17:41:17 <Phantom_Hoover> a good episode of what
17:41:53 <quintopia> my life
17:45:02 <Phantom_Hoover> welp, the mayor died
17:45:15 <Phantom_Hoover> at least she was surrounded by her friends when she died
17:45:21 <Phantom_Hoover> probably begging them all for food or water
17:48:39 -!- zzo38 has joined.
17:48:48 <Phantom_Hoover> now they're showing their respects by leaving her corpse lying on one of the central staircases and making no effort at all to bury her
17:49:28 -!- elliott has quit (Remote host closed the connection).
17:49:41 <zzo38> That is not a very good place to leave the corpse.
17:50:23 <Phantom_Hoover> oops turns out i didn't have any spare coffins
17:50:55 <zzo38> Even if you don't have any coffins, the stairs is not a good place to leave it.
17:51:04 <zzo38> Throw it outside.
17:51:08 <atriq> zzo38, dwarf logic
17:51:27 <atriq> "Hey, there's the old mayor's corpse"
17:51:35 <atriq> "It should be in a coffin"
17:51:39 <atriq> "We don't have any coffins"
17:52:05 <atriq> "Bah, I've got more important things to do, like carry this barrel of mushrooms to the mushroom farm to put a mushroom in it"
17:58:42 -!- Nisstyre-laptop has joined.
18:05:59 <Phantom_Hoover> hrrrm
18:06:05 <Phantom_Hoover> a donkey has gone missing
18:06:11 <Phantom_Hoover> another donkey went missing a while ago too
18:06:22 <Phantom_Hoover> we may have another, smarter vampire on our hands
18:07:16 <quintopia> vampiiiiiiiires
18:08:46 <atriq> A vampire donkey
18:08:51 <fizzie> Horsepire.
18:09:08 <Phantom_Hoover> no, vampires will prey on domesticated animals if they can't find dorfs
18:13:25 <Phantom_Hoover> both of them have just vanished out of the blue, with no hostiles on the map and no combat logs
18:13:28 <Phantom_Hoover> it's all very mysterious
18:32:12 <nooga> oh no
18:32:27 <nooga> where's elliott
18:32:40 <zzo38> What is a amplitude per second units?
18:33:05 <quintopia> amplitude is not a unit?
18:33:17 <atriq> dB/s?
18:33:33 <quintopia> dBHz
18:34:08 <nooga> oh
18:34:11 <zzo38> It is not measured here in dB though, it is measured using linear
18:34:32 <nooga> I see that DF is trendy again
18:34:44 <zzo38> They are floating point values that would be converted to integer and store in sound files.
18:35:21 <kmc> probably that amplitude is unitless
18:35:28 <kmc> it's a fraction of the maximum cone displacement
18:35:40 <kmc> unless your audio files are normalized to some volume standard
18:36:17 <kmc> in which case they are a maximum of some specified decibel value at some specified measuring condition
18:36:20 <kmc> and so still unitless
18:36:43 <zzo38> They are 0 dB at whatever the user specifies in the Csound orchestra file, in the "0dbfs" parameter.
18:37:09 <zzo38> That becomes the maximum value without clipping
18:39:46 <nooga> what was that command to leave a message for someone using our bot[s]?
18:39:55 <zzo38> It is Csound, and some of the commands I added take the amplitude per second measurements, such as the "slowchange" command.
18:39:58 <kmc> @tell nooga it's @tell
18:39:58 <lambdabot> Consider it noted.
18:40:15 <nooga> and he didn't told me
18:40:16 <lambdabot> nooga: You have 1 new message. '/msg lambdabot @messages' to read it.
18:40:19 <nooga> oh
18:40:40 <FreeFull> Waits until the next time you speak in a channel it's in =P
18:41:26 <zzo38> Although you can check messages even without that, too
18:41:36 <nooga> @tell elliott http://cl.ly/image/2R2T1L0G0L2e OH LOOK WHAT I'VE GOT :}
18:41:36 <lambdabot> Consider it noted.
18:41:50 <nooga> done, thanks
18:44:23 <quintopia> zzo38: ah you mean samples per second. also known as frequency. it is measured in Hz
18:45:10 <zzo38> quintopia: Well, yes, it is Hz, I guess, although in this case the amplitude is important too
18:45:28 <FreeFull> Well, the sampling rate is twice the maximum frequency
18:45:50 <quintopia> but as kmc said, the amplitude is unitless
18:45:57 <quintopia> because it is relative
18:46:08 <FreeFull> Amplitude will depend on bits per sample
18:46:32 <FreeFull> Well, accuracy
18:46:39 <quintopia> or use dB since apparently you specify a 0dB standard
18:47:36 <zzo38> But what I have is more like a slope I think
18:50:06 <Phantom_Hoover> oh shit itidus' ghost has possessed my spearmaster
18:50:33 <Phantom_Hoover> fortunately he's just kind of standing next to a lever doing nothing
18:50:45 <atriq> That's our itidus!
18:51:58 <Phantom_Hoover> "i think the reason i can't get her to do anything is that i just can't wrap my brain around possessing people"
18:52:45 <Phantom_Hoover> "they say possession is nine tenths of the law, but what about the laws of physics?
18:52:46 <Phantom_Hoover> "
18:53:02 <Phantom_Hoover> wait
18:53:07 <Phantom_Hoover> motherfucker trashed my danger room!
18:55:36 <nortti> what?
18:55:48 -!- Nisstyre-laptop has quit (Quit: Leaving).
18:57:30 -!- Nisstyre-laptop has joined.
18:59:03 <Phantom_Hoover> nortti, a device for training soldiers very quickly.
18:59:13 <nortti> ok
19:02:30 <zzo38> Make up the game involving possession nine tenths of the law of physics.
19:13:47 <quintopia> most rts's and social games are like that
19:17:26 <zzo38> Now I programmed the Csound command "aQ, anotQ flipflop aS, aR, aclock, [ithreshold], [klow], [khigh], [init]"
19:44:40 -!- AnotherTest has quit (Quit: Leaving.).
19:44:48 <nooga> what's Csound?
19:45:02 -!- AnotherTest has joined.
19:47:45 <zzo38> Csound is a program to make music and sound effect.
19:47:58 <zzo38> You can look it up in Wikipedia for information.
19:48:52 <zzo38> It has its own orchestra prorgamming language, and then there is also a score file which tells it what instruments to play, when, and what parameters.
19:50:39 <nooga> oh
19:50:39 <zzo38> It is not difficult to add new commands by writing plugins in C. You don't need to do anything other than compile the plugin with the correct options (on my computer: gcc -DUSE_DOUBLE -I "$CSOUNDDIR/include" -shared -o csoundextraopcodes.dll -O2 csoundextraopcodes.c -lm); once it is compiled, it will automatically work.
19:50:54 -!- atriq has quit (Quit: Leaving).
19:51:17 <nooga> btw. I'm writing a roguelike with it's own, runic, esoteric programming language for inscribing items
19:52:03 <nooga> script your own items, cool, huh?
19:52:32 <zzo38> OK write a description of such programming language in esolang wiki then?
19:53:07 <nooga> the problem is that it does not exist at the moment
19:53:22 -!- atriq has joined.
19:53:32 <nooga> i have only vague idea how to tackle it
19:54:53 <zzo38> Write the ideas on a user subpage perhaps.
19:55:15 <quintopia> i figured out how metajousting would work yesterday
19:56:49 <zzo38> I changed S, R, clock, to x-rate instead of a-rate. This "flipflop" command I made up can be used to convert other signals into a square wave one octave lower.
19:56:57 <zzo38> quintopia: How does metajousting work?
19:57:50 <quintopia> the rules about the tape and polarities are the same as for bfjoust
19:58:22 <quintopia> but the "flag" cells are initialized to zero, because the goal is not to tear down the flags on the regular tape
19:58:45 <quintopia> instead, there is a second two-cell three-bit tape, with both initialized to 7
19:59:08 <quintopia> and each player has a pointer to one of these cells on this tape
19:59:26 <quintopia> we reinclude . and , to mean what they do in bf
20:00:07 <quintopia> but, if a player outputs 0, it flips the meta-pointer to the other cell, and if it outputs 1 or -1, it increments or decrements the cell the metapointer is pointing to
20:01:04 <quintopia> and , copies the current value of the pointed cell on the metatape to the regular tape
20:01:14 <quintopia> the goal is to lower the metaflag for two cycles
20:01:30 <quintopia> *the opponent's
20:03:35 -!- AnotherTest has quit (Quit: Leaving.).
20:06:32 <zzo38> Now implement it and/or write a wiki article about it.
20:24:31 -!- atriq has quit (Quit: Leaving).
20:24:33 -!- epicmonkey has quit (Ping timeout: 260 seconds).
20:24:40 -!- Nisstyre-laptop has quit (Ping timeout: 244 seconds).
20:28:26 -!- oerjan has joined.
20:28:47 <oerjan> @messages
20:28:47 <lambdabot> You don't have any new messages.
20:29:32 -!- ais523 has joined.
20:31:05 <oerjan> 16:48:39: <Phantom_Hoover> i'm handing control of this project over to you, you are more likely to know about witches in the hexham area
20:31:08 <oerjan> 16:49:21: <atriq> I can't think of any specific witch off the top of my head, but I'll put out some feelers
20:31:20 <oerjan> isn't everyone in hexham a witch? it's sort of in the name...
20:31:47 <oerjan> except i hear "hex" in that sense has only been borrowed into american english...
20:33:30 <oerjan> btw in norwegian fairy tales a "hekseham" is an animal hide used by a witch to turn into that animal
20:34:50 <oerjan> or wait would that be a hide someone uses to turn into a witch...
20:36:58 <oerjan> "dyreham" might be more correct.
20:38:20 -!- atriq has joined.
20:40:18 <Phantom_Hoover> atriq, check logs
20:40:28 <Phantom_Hoover> oerjan has revealed critical information
20:41:17 <atriq> Wow
20:41:28 * Phantom_Hoover googles 'hekse' in an attempt to confirm this, ends up at http://da.wikipedia.org/wiki/Heks
20:41:53 <atriq> elliott is in luck
20:42:14 -!- Nisstyre-laptop has joined.
20:42:37 <atriq> http://translate.google.co.uk/#en/da/witch%20home
20:43:41 -!- sivoais has quit (Ping timeout: 255 seconds).
20:47:30 <oerjan> atriq: that would be combined into heksehjem
20:49:30 -!- nooga has quit (Ping timeout: 276 seconds).
20:53:14 -!- atriq has quit (Remote host closed the connection).
20:53:44 -!- sivoais has joined.
20:53:52 -!- atriq has joined.
20:54:40 <oerjan> that minks language has some awkward flow control
20:54:55 <atriq> More or less awkward than Fueue?
20:55:25 <oerjan> more i should think, although the paradigms are completely different so how to compare...
20:56:03 <oerjan> there are enough registers to do a collatz function similar to the 3-cell bf, but i'm not sure whether it is possible to manipulate conditions in the right way
20:56:46 <oerjan> i don't yet see a way to set a condition only if a register is 0
20:57:40 <oerjan> and you cannot clear conditions at all if both registers are far from 0
21:01:05 <oerjan> however it is easy to set one register if another is set
21:01:19 <oerjan> a inc a dec b
21:01:29 <oerjan> *one condition
21:01:35 <quintopia> zzo38: it would be trivial to implement, but i don't feel like doing that or writing it up
21:05:35 <fizzie> The grad school funding thing that pays for my salary is called "Hecse". There are no hams involved, though.
21:12:42 -!- Vorpal has joined.
21:12:44 <zzo38> Is there any driver to emulate physical damage in a disk image?
21:12:47 <Vorpal> hi
21:13:28 <oerjan> zzo38: a screwdriver hth
21:16:00 <zzo38> It is not what I mean.
21:16:09 <oerjan> shocking
21:17:36 -!- NihilistDandy has joined.
21:19:43 -!- NihilistDandy has quit (Quit: leaving).
21:20:02 -!- NihilistDandy has joined.
21:39:48 <fizzie> Linux device-mapper has a "dm-flakey" target.
21:39:59 <fizzie> "This target is the same as the linear target except that it exhibits unreliable behaviour periodically. It's been found useful in simulating failing devices for testing purposes."
21:40:54 -!- atriq has quit (Quit: Leaving).
21:41:02 <FreeFull> Well, how else are you supposed to know if your code does the right thing in bad conditions without having bad hardware
21:41:25 -!- atriq has joined.
21:42:07 <fizzie> You give it numbers X and Y, and then it cycles so that it's available for X seconds, then it's broken for Y seconds, and so on. By default when it's broken it's totally broken, but you can also tell it to instead drop all writes but work correctly when reading, or to corrupt every N'th byte of each matching IO request data block.
21:43:01 <zzo38> Can you also tell it what parts of the disk are broken?
21:43:20 -!- variable has joined.
21:43:37 -!- ogrom has quit (Quit: Left).
21:44:13 <fizzie> I don't think it has an option for that, though it probably should be possible to do that too with device-mapper somehow. Possibly with some setup involving dm-delay too.
21:46:26 <fizzie> If nothing else, you should be able to make your "disk" by combining dm-linear's mapping to the non-broken parts and dm-flakeys for the broken ones. Some scripting would undoubtedly be involved.
21:52:55 <Phantom_Hoover> Hmmmm.
21:53:25 <Phantom_Hoover> OK so in DF, minecarts going quickly around sharp bends jump the tracks and spill their contents everywhere at high speed.
21:53:31 <Phantom_Hoover> Minecarts can also carry magma.
21:54:04 <atriq> Phantom_Hoover, did you do this by accident, or are you planning to do this delibrately
21:54:16 <Phantom_Hoover> Deliberately.
21:54:44 <Phantom_Hoover> Obviously, even in DF it'd be pretty ridiculous to accidentally build a magma linear accelerator.
21:55:44 <Phantom_Hoover> OTOH minecarts are also a much more practical way of transporting magma over long distances than pump stacks, so I was planning to do it anyway.
21:55:45 <atriq> Maybe you accidentally built your magma forges miles away from lava
21:55:51 <atriq> Because you sneezed
21:56:01 <atriq> And thought "let's be dorfy!"
21:56:13 <atriq> "MAGMA TRAIN!!!"
21:59:54 -!- copumpkin has joined.
22:00:33 -!- monqy has joined.
22:08:04 <Phantom_Hoover> atriq, that *is* what I'm thinking.
22:18:40 <Sgeo__> http://ansuz.sooke.bc.ca/entry/254
22:32:18 <Arc_Koen> hello
22:32:19 <lambdabot> Arc_Koen: You have 3 new messages. '/msg lambdabot @messages' to read them.
22:32:24 <Arc_Koen> @messages
22:32:24 <lambdabot> oerjan said 6h 28m ago: well the part about conditions starting True was also in the talk page; the other change was that only conditions before commands count for the loop checking, which your
22:32:24 <lambdabot> truth machine depends on. feel free to undo it but then you need to change both your implementation and your truth machine.
22:32:25 <lambdabot> oerjan said 6h 26m 32s ago: that is, the condition x is used as a target in the truth machine, but ignored for the loop check
22:32:25 <lambdabot> oerjan said 6h 23m 28s ago: also i certainly don't consider your use of bounded integers to be authoritative >:)
22:32:28 <oerjan> ah thinking of the devil...
22:32:35 -!- copumpkin has quit (Ping timeout: 255 seconds).
22:33:06 -!- copumpkin has joined.
22:33:17 <Arc_Koen> am I the devil to you? :(
22:33:33 <oerjan> ...it's a stock phrase, slightly modified.
22:36:53 <oerjan> i think the impossibility of clearing conditions while both registers are non-zero implies Minks is not TC
22:38:20 <Arc_Koen> I was afraid you might say that
22:47:56 <oerjan> oh hm actually the more serious problem is that there is no way to set one condition based on another _not_ being set.
22:48:56 <oerjan> wait that's an oversimplification too
22:52:39 <Arc_Koen> yeah hmm "there is no way to" doesn't seem like something easy to prove
22:55:16 <oerjan> it's not true when a register is close to 0 :P
22:55:58 <oerjan> the actual argument is somewhat more complicated.
22:57:44 <oerjan> you make a graph where the vertices are conditions, and there is an edge between conditions if there's a dec or DEC instruction causing the one to set the other
23:00:22 <oerjan> when both registers are set, conditions gradually get set to True along the paths of that graph, until there are no more edges to follow. this must happen in a number of loops <= the diameter of the graph.
23:01:12 <oerjan> once this happens, no conditions can change again until one of the registers reaches 0.
23:05:55 <Arc_Koen> so the graph is one way of describing the program?
23:06:15 <oerjan> well one aspect of it
23:09:04 <oerjan> i am having an annoying intuition not to try to explain this
23:09:45 <oerjan> ...maybe there's an error in the argument somewhere, then.
23:11:48 * oerjan is more inclined to think his intuition is just being an asshole.
23:20:31 <atriq> How can I encode that in Haskell...
23:20:41 <atriq> AGE_AT_EVENT: = {Size=1:12}
23:20:41 <atriq> [ < | > | <NULL>]
23:20:41 <atriq> [ YYy MMm DDDd | YYy | MMm | DDDd |
23:20:41 <atriq> YYy MMm | YYy DDDd | MMm DDDd |
23:20:41 <atriq> CHILD | INFANT | STILLBORN ]
23:20:42 <atriq> ]
23:20:47 <atriq> From the GEDCOM specs
23:21:42 <Arc_Koen> stillborn
23:21:49 <Arc_Koen> is that when you're dead before being born?
23:21:51 <atriq> Yes
23:22:18 <atriq> I'm inclined to make the first part an Ordering
23:22:31 <Arc_Koen> can I ask why you're doing this? it sounds depressing
23:22:53 <atriq> I'm writing a genealogy library in haskell
23:22:59 <atriq> It's a long term project
23:23:05 <atriq> I'm not very far
23:24:39 <Arc_Koen> are stillborn that relevant for genealogy purposes? I don't think they get to have much offspring
23:24:48 <atriq> I don't know
23:24:54 <atriq> This is a standard that I'm trying to stick to
23:33:21 <Phantom_Hoover> uhhh
23:33:34 <Phantom_Hoover> i let the vampire out so i could move her into a strand extraction facility
23:33:49 <Phantom_Hoover> she's already killed elliott
23:35:18 <Arc_Koen> did you at least give her suncream?
23:38:37 <Phantom_Hoover> oh she got Vorpal as well
23:38:51 <Phantom_Hoover> i feel like this is some form of irony
23:39:32 <Phantom_Hoover> oh for--
23:39:46 <Phantom_Hoover> every time she actually goes inside her little prison she immediately leaves and feeds again
23:40:15 <Phantom_Hoover> on her way to the bedrooms, she has passed the people carrying both elliott and Vorpal's bodies to the tombs
23:41:46 <Phantom_Hoover> ohshit
23:42:07 <Phantom_Hoover> those 3 deaths alone were enough to make like 10 dorfs miserable
23:42:26 <Phantom_Hoover> this could get very messy indeed
23:43:33 <oerjan> time to exercise some exorcism
23:43:47 <Arc_Koen> so three of your people have been killed because they were trying to rescue dead bodies?
23:43:57 <Arc_Koen> and now there are 5 dead bodies and nobody to rescue them?
23:44:03 <Phantom_Hoover> No.
23:44:15 <Phantom_Hoover> Vampire kills elliott; body is discovered.
23:44:19 <Arc_Koen> ok
23:44:26 <Phantom_Hoover> Vampire kills Vorpal, body is discovered.
23:44:32 <Arc_Koen> ok
23:44:50 <Phantom_Hoover> Bodies moved to tombs. Vampire moves to other section of fortress where I am vainly attempting to trap her.
23:44:59 <Arc_Koen> oook
23:45:40 <Phantom_Hoover> Tombs are also in this section. Vampire slips the net, moves back to bedrooms to feed again. People carrying Vorpal and elliott's bodies are going the other way and pass her in the corridor.
23:45:55 <Arc_Koen> wait
23:46:08 <Phantom_Hoover> Vampire kills third dorf, I follow her back and trap her properly this time.
23:46:09 <Arc_Koen> you said "vampire moves to other section"
23:46:28 <Arc_Koen> I was assuming "other than the section the "moving bodies to tomb" action takes place in"
23:49:30 <Phantom_Hoover> nah, they're the same
23:49:37 <Phantom_Hoover> also: the tantrums have started
23:49:57 <Phantom_Hoover> i have a robust justice system and a lot of happiness boosters in place; i hope it's enough
23:50:48 <oerjan> famous last words
23:52:11 <Phantom_Hoover> a robust system where the captain of the guard is asleep, preventing any crimes being reported
23:57:40 <Phantom_Hoover> Yeah, this has fortunately mostly blown over.
←2012-11-23 2012-11-24 2012-11-25→ ↑2012 ↑all