←2014-09-06 2014-09-07 2014-09-08→ ↑2014 ↑all
00:01:05 <oerjan> `interp glass {M[m(_o)O!"Hello World!"(_o)o.?]}
00:01:07 <HackEgo> Hello World!
00:01:17 <oerjan> it seems like the simple interpreters are working
00:01:57 <Sgeo> Can I consider an Applicative to basically be a function `lift` that lifts a function of any arguments to a stream of arguments in an... um, applicative
00:02:04 <Sgeo> *in the same applicative
00:02:31 <elliott> Applicative is liftN
00:04:59 <elliott> (~~>) :: [*] -> * -> *; [] ~~> r = r; (t:ts) ~~> r = t -> (ts ~~> r); liftN :: (ts ~~> r) -> (map f ts ~~> r)
00:04:59 * oerjan is still not quite sure what Sgeo means by using streams.
00:05:18 <elliott> (map f ts ~~> f r), rather
00:05:23 <Sgeo> I mean Racket streams, which are approximately heterogenous lazy lists
00:05:32 <elliott> this is just an ugleir form of the HList thing.
00:05:36 <elliott> *uglier
00:05:37 <Sgeo> Not quite, since I think you can't traverse the spine wiithout forcing the contents
00:07:17 <oerjan> i understand what you mean by streams, i just have no idea how they fit into applicative
00:08:53 <elliott> traverse would be a really nice definition of Applicative if you could define Traversable in some nice way without Applicative.
00:09:10 <Sgeo> elliott: I thought I did that >.>
00:09:18 <Sgeo> Or something like that
00:09:59 <Sgeo> Actually, no.... my function to extract a traverse out of my encoding knows what an Applicative is, even if the traversal-like thing itself doesn't
00:11:02 <elliott> data Fn a = Ret a | a :~> Fn a deriving Functor; i :: Fn * -> *; i (Ret r) = r; i (t :~> fn) = t -> i fn; liftN :: i fn -> i (fmap f fn)
00:12:14 <shachaf> How would you use traverse to define Applicative?
00:12:27 <elliott> by defining Traversable without Applicative and then putting traverse in Applicative
00:13:24 <elliott> class ??? (t :: k -> *) where { type MapArg t :: (* -> *) -> k -> k; ... }; class Functor f => Applicative f { where liftN :: ??? t => t x -> t (MapArg t f x) }
00:14:47 <elliott> data family Fn :: ([*], *) -> *; data instance Fn '('[], r) = FnRet r; data instance Fn '((t ': ts), r) = FnArg (t -> Fn '(ts, r))
00:15:26 <elliott> instance ??? Fn where type instance MapArg f '(ts, r) = '(Map f ts, f r); ...
00:16:31 <oerjan> i think we are approaching the schwarzschild radius of type level programming
00:17:03 <elliott> ??? is some kinda weird type functor thing.
00:17:33 <elliott> well, this isn't actually interesting <_<
00:17:44 <oerjan> ooh
00:19:16 <elliott> oerjan gets interested right as I admit I'm not.
00:19:39 <oerjan> you're good at reverse psychology?
00:19:50 <oerjan> ('s ok i'm not really interested)
00:22:49 <oerjan> <-- technically that _would_ be sane (and equivalent to ({})*n) if it was required that a ()*n which contains unmatched brackets must match precisely with another ()*n (same n)
00:22:52 <oerjan> oops
00:22:57 <oerjan> <Lymia> ([)*n (])*n might work directly <-- technically that _would_ be sane (and equivalent to ({})*n) if it was required that a ()*n which contains unmatched brackets must match precisely with another ()*n (same n)
00:23:21 <Lymia> No such requirement
00:23:30 <Lymia> It's a plain bug in this implementation
00:23:35 <oerjan> well naturally not in the broken impl.
00:23:45 <oerjan> but i'm saying it could be done.
00:24:36 <elliott> can (a)*m b (c)*n for m =/= n be efficiently implemented?
00:24:48 <elliott> it doesn't seem inherently impossible to do it without expanding fully
00:24:53 <oerjan> i think i recall pondering that
00:25:46 <oerjan> i think you can expand cleverly to avoid blowup in many case, but _possibly_ there are cases where you cannot avoid exponential expansion
00:25:46 -!- Patashu_ has joined.
00:25:46 -!- Patashu has quit (Disconnected by services).
00:25:50 <oerjan> *+s
00:27:20 <CrazyM4n> how would you go along renaming a wiki page?
00:27:25 <oerjan> and you'd need some good modulo arithmetic
00:27:48 <oerjan> CrazyM4n: you can Move it, and if you wish, the admins can delete the old one if it's unnecessary
00:28:44 <oerjan> it's in the down arrow dropdown menu
00:28:48 <HackEgo> [wiki] [[Special:Log/move]] move * CrazyM4n * moved [[Brainfunge]] to [[Simplefunge]]: Brainfunge was kind of a terrible name and already taken
00:29:07 <CrazyM4n> got it, thanks
00:29:34 <CrazyM4n> can you, uh, rename a github repo also?
00:29:45 <oerjan> oh i have no idea how you do that.
00:29:53 * oerjan doesn't do git
00:30:33 <Sgeo> I think I'll just use my multilens encoding but keep the name multilens and not traversal, in case I change my mind
00:30:34 <oerjan> whether you want to delete the old page might depend on whether you've linked to it otherwise
00:30:43 <CrazyM4n> just on the esolang wiki
00:30:59 <oerjan> i think i saw you post in /r/haskell? but i guess that didn't link to the wiki.
00:30:59 <elliott> you can rename github repos yes
00:31:14 <HackEgo> [wiki] [[Simplefunge]] http://esolangs.org/w/index.php?diff=40412&oldid=40410 * CrazyM4n * (-58) Renamed language
00:31:25 <CrazyM4n> oh yeah, I did post that
00:31:33 <oerjan> shall i delete the old wiki page?
00:31:35 <CrazyM4n> but it´s so buried that it shouldn´t matter
00:31:38 <CrazyM4n> and yes please
00:31:59 <oerjan> now if the wiki weren't molasses
00:32:10 <CrazyM4n> haha
00:32:52 <HackEgo> [wiki] [[Special:Log/delete]] delete * Oerjan * deleted "[[Brainfunge]]": Author request: content was: "#REDIRECT [[Simplefunge]]" (and the only contributor was "[[Special:Contributions/CrazyM4n|CrazyM4n]]")
00:34:54 <CrazyM4n> other than just manually moving it, eliott: how would i rename the github repo then?
00:35:03 -!- Phantom_Hoover has quit (Quit: Leaving).
00:35:21 <oerjan> please spel names corectly twh
00:35:30 <CrazyM4n> my bad
00:35:50 <CrazyM4n> elliott: how would I go along renaming the github repo then?
00:35:58 <elliott> it's in the repo admin somewhere.
00:36:04 <elliott> click around and you'll find it
00:36:27 -!- Phantom_Hoover has joined.
00:36:28 <CrazyM4n> never mind, I just remembered that google is a thing
00:36:36 <CrazyM4n> got it
00:39:16 <oerjan> once again i find my bfjoust comments have already been anticipated in the logs.
00:39:29 <HackEgo> [wiki] [[Simplefunge]] http://esolangs.org/w/index.php?diff=40413&oldid=40412 * CrazyM4n * (+1)
00:40:28 <fizzie> Even if the moved-to-HackEgo bfjoust thing worked, it wouldn't affect the actual scorecards and such on codu.org.
00:40:42 <oerjan> right, but i
00:40:45 <oerjan> argh
00:41:04 <oerjan> t should be possible to transfer those too and use the repository browser
00:41:31 <oerjan> would be more vulnerable to someone breaking it, of course
00:42:38 <fizzie> Technically speaking, it would be possible for me to set it up on e.g. esolangs.org/bfjoust/ or some-such and have HackEgo feed it stuff, since they're the same machine. But that's perhaps going a bit above my mandate of wiki maintenance.
00:43:02 <fizzie> (And anyway it'd involve some work.)
00:49:56 -!- augur has quit (Remote host closed the connection).
00:52:00 <oerjan> oh hm wait
00:53:34 <oerjan> hm _is_ (a)*n b (c)*n equivalent to (a { b } c)%n if implemented simply by jumping between matching brackets and keeping loop count in each ()*n ?
00:53:57 <oerjan> (rather than full expansion, which is clearly equivalent)
00:54:32 <oerjan> because i'd suspect the "buggy" impl. to be closer to the former.
00:55:56 <oerjan> i suspect it isn't, because in the algorithm i developed they shared a counter and the c part _decrements_ instead of increments.
00:56:41 <oerjan> but maybe it accidentally works...
00:57:41 <oerjan> hm dubious
00:59:42 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
01:01:00 <oerjan> ( ... [ ... )*n ... ( ... ] ... )*n let's say the cell checked is 1 on first try, 0 on second and third, then both counters will be 1 when it's supposed to leave
01:01:00 <idris-bot> (input):1:1: error: no implicit
01:01:00 <idris-bot> arguments allowed
01:01:00 <idris-bot> here, expected: ":",
01:01:00 <idris-bot> dependent type signature,
01:01:00 <idris-bot> end of input↵…
01:01:07 <oerjan> ...darn :P
01:01:31 <oerjan> POSSIBLY NOT MY BEST IDEA
01:03:14 <ais523> oerjan: pretty much all the bots have been accidentally triggered at one time or another
01:04:30 -!- augur has joined.
01:05:08 <oerjan> @tell Lymia It is possible that (a)*n b (b)*n is not always equivalent to (a{b}c)%n if the loop counters for the two parts are separate.
01:05:09 <lambdabot> Consider it noted.
01:05:35 <fizzie> @tell Lymia Or, in oerjan's example, if b != c.
01:05:35 <lambdabot> Consider it noted.
01:05:45 <oerjan> OKAY
01:05:47 <ais523> fizzie: that was evil :-)
01:06:28 <Lymia> I'm aware. :P
01:06:50 <oerjan> ah
01:06:55 <Lymia> The behavior in the interperter I'm working with is plain weird.
01:07:09 <Lymia> (a[b)*10c] is also accepted
01:07:13 <Lymia> And [a(])*0
01:08:02 <Melvar> < Sgeo> Can I consider an Applicative to basically be a function `lift` that lifts a function of any arguments to a stream of arguments in an... um, applicative – I have written such a function in Idris, using an Applicative constraint, and then of course one can recover the zero- and one-arg forms.
01:08:08 <oerjan> sounds like the interpreter is so weird it's an esolang of its own
01:08:42 -!- augur has quit (Remote host closed the connection).
01:09:05 <oerjan> Lymia: although my comment wasn't specifically targeted at that interpreter (which i haven't looked at), but at the idea of treating unmatched [] in ()*n simply by jumping to the matching one
01:10:22 <oerjan> it is becoming clear that ()*n loops sharing matched [] need to share counters too, and adjust them in different directions
01:10:49 <fizzie> Assuming the cell is always true, I guess (a[b)*4c] translates to ababababcababababc...
01:11:18 <elliott> Lymia: does it even attempt to check balancedness at all?
01:11:22 <Lymia> elliott, yes.
01:11:26 <elliott> aw.
01:11:27 <Lymia> It matches [] and () separately
01:11:30 <Lymia> Leading to "fun" behavior.
01:11:59 <elliott> the most fun: (a{b)%m c (d}e)%n
01:12:13 <elliott> don't ask me. I don't know.
01:12:14 <Lymia> Luckily there is no ({}) support.
01:12:14 <Lymia> :D
01:14:52 <elliott> ideally () and {} would be defined entirely independently of each other. just to let you do more confusing things.
01:15:07 <fizzie> The description does say it's only "inspired by" BF Joust.
01:16:14 <fizzie> Oh, the cycle limit is also only one tenth of that of the "real thing". I was wondering why the performance difference was so moderate.
01:16:39 <Lymia> Excepting obvious bugs (the behavior here is contradicatry to what they state in the OP!), it's pretty much BF Joust without the flipped configuration.
01:20:04 <fizzie> Lymia: Looking at Arena.py, I think it also doesn't implement the rule that the "second" program's [] instructions look at the original value of the tape cell, even if the "first" program did + or - on it.
01:20:17 <Lymia> yep~
01:20:39 <Lymia> I don't think that's common enough to be a major difference?
01:21:00 <elliott> it's relevant for shuddery type things, isn't it...?
01:21:07 <elliott> locky things. I forget the terminology >_>
01:22:57 <fizzie> I don't know how much it matters, but it's not very elegant to not be commutative. (Then again, if it doesn't run the full set of tape lengths either.)
01:23:38 <oerjan> you could be non-commutative _and_ check both orders, i guess
01:25:22 <fizzie> Whoops, something like 4:30am with visitors tomorrow. ->
01:27:44 -!- doesthiswork has joined.
01:28:43 <doesthiswork> have you folk heard of pattern calculus? http://www.pps.univ-paris-diderot.fr/~kesner/papers/purepattern.ps
01:29:02 <elliott> Lymia: does it parse []s in a more reasonable way than ()s?
01:29:13 <Lymia> That code parsers both []s and ()s
01:30:54 -!- ais523 has quit (Read error: Connection reset by peer).
01:31:08 -!- ais523 has joined.
01:31:11 <elliott> ...so can you do weird things with loops like you can with the ()*2?
01:32:54 <oerjan> perhaps each of the parsings are correct separately, and you only get weird things when you _combine_ ()* and []
01:32:57 -!- augur has joined.
01:33:23 <elliott> oerjan: I mean the thing where it overloads hash values while parsing for both "code position" and "scope depth".
01:33:28 <elliott> so you can do.
01:33:30 <elliott> weird things.
01:34:08 <oerjan> okay
01:34:32 <elliott> oerjan: https://github.com/redevined/brainfuck/blob/master/BrainFuckedBotsForBattling/Arena.py#L94
01:35:26 -!- lambdabot has quit (Remote host closed the connection).
01:35:52 <Sgeo> Is there likely to be any ... harm if I go ahead and use my encoding for now?
01:38:44 -!- ais523 has quit.
01:38:51 -!- ais523 has joined.
01:39:42 -!- lambdabot has joined.
01:49:24 <oerjan> is there any difference between using rbraces()[scope] there and braces[scope] at all?
01:49:49 <elliott> oerjan: it's reverse lookup
01:49:51 <elliott> (value to key)
01:49:56 <oerjan> oh
01:50:01 <elliott> (the logs have a spoiler as to the problem)
01:50:51 <oerjan> i assume a collision might be possible. if so, will the last colliding pair be used?
01:51:23 <oerjan> hm wait this is hashed right
01:51:30 <oerjan> so you cannot assume anything about order
01:51:48 <oerjan> (i'm sure i read the spoiler already)
01:52:02 <elliott> it's just like a haskell Map
01:52:10 <oerjan> hm?
01:52:19 <Lymia> elliott, you can probably
01:52:24 <Lymia> But that's harder to control
01:52:27 <Lymia> And [] takes ticks unlike ()
01:52:36 <oerjan> a haskell Map gives the listing in order by keys, but does python dicts do that?
01:52:41 <oerjan> *do
01:53:00 <Lymia> oerjan, I'm p. sure the hash is i%bucketSize
01:53:37 <Lymia> Apparently zip(map.values(), map.keys()) is actually legit.
01:53:38 <oerjan> Lymia: um that's too low level to answer my question without hurting my brain
01:53:55 <Lymia> oerjan, the order is predictable, but very non-intuitive.
01:54:17 <Lymia> .()*2<<<<<<<<<<((((-)*5>[(-)*4.[+.]].)*10000)*1)*1
01:54:22 <Lymia> ()*2 makes an entry 1:2
01:54:30 -!- callforjudgement has joined.
01:54:37 -!- callforjudgement has quit (Changing host).
01:54:37 -!- callforjudgement has joined.
01:54:40 <Lymia> The second ( in the second part makes an entry 16:2
01:54:48 <Lymia> Obvious results occur.
01:55:02 <oerjan> right. so what i'm implying is, we can assume no sensible behavior in which (value, key) pair ends up in rbraces() if there is a collusion of values?
01:55:04 <Lymia> (since 16 ends up in bucket 0, and 1 in 1 apparently)
01:55:11 <Lymia> No sensible behavior, nope
01:55:22 <oerjan> *collision :P
01:55:22 -!- augur has quit (Read error: Connection reset by peer).
01:56:25 -!- augur has joined.
01:57:34 <CrazyM4n> are you going to make a bfjoust bot or something?
01:57:42 -!- ais523 has quit (Ping timeout: 246 seconds).
01:57:47 <oerjan> CrazyM4n: we already had one, in theory
01:57:55 <callforjudgement> I'm disappointed
01:58:00 <callforjudgement> because preparation beat every other warrior
01:58:01 <oerjan> but Lymia found another one someone made, which is horribly buggy
01:58:04 <callforjudgement> yet didn't come top of the hill
01:58:22 <callforjudgement> oerjan: wait, someone made a BF Joust bot who isn't a regular in this channel?
01:58:33 <Lymia> There's a BF Joust hill on Stack Overflow
01:58:49 <callforjudgement> link?
01:58:51 <Lymia> A fairly trivial program I just submitted gets a 93% win rate ove rit.
01:58:53 <Lymia> <callforjudgement> because preparation beat every other warrior
01:59:01 <Lymia> "beat"?
01:59:09 <Lymia> 42:0 or what?
01:59:11 <callforjudgement> Lymia: won on over 50% of tape lengths and polarities
01:59:18 <Lymia> http://codegolf.stackexchange.com/questions/36645/brainfedbotsforbattling-a-brainf-tournament
01:59:23 <callforjudgement> most of the wins were quite slow, because preparation uses a probabilistic lock algorithm
01:59:41 <callforjudgement> meaning that it's almost guaranteed to win on some proportion of tape lengths and lose on others
02:00:25 <Lymia> ... well, you know.
02:00:30 <Lymia> The rules here only say it has to be your own code.
02:00:39 <Lymia> Right?
02:01:15 <callforjudgement> ?
02:01:37 <oerjan> callforjudgement: this seems somehow similar to how tit-for-tat never loses big in any PD game yet doesn't always win tournaments
02:01:38 <callforjudgement> oh, 10000 cycle limit on that hill
02:01:40 <callforjudgement> that isn't enough
02:02:07 <Lymia> There's an extra rule that seems to "make up" for the cycle limit
02:02:25 -!- augur has quit (Remote host closed the connection).
02:02:28 <Lymia> If the opponent flag is "smaller" than yours, you win.
02:02:34 <Lymia> (When the cycle limit is reached)
02:02:36 <callforjudgement> well, not really
02:02:44 <callforjudgement> that completely misunderstands defence programs and counter-turtles and so on
02:03:17 <callforjudgement> are there any turtles on that hill yet?
02:03:28 <Lymia> A few attempts at it
02:03:30 <Lymia> They don't do well
02:03:34 <callforjudgement> if not, you should be able to get a very good score with one (although that highly upvoted vibration program would beat it)
02:03:36 <oerjan> perhaps not so much "misunderstands", as makes it a completely different game
02:03:41 <Lymia> Or, well.
02:03:44 <Lymia> What's a turtle?
02:04:09 <Lymia> Oh, careless clear?
02:04:20 <callforjudgement> yes
02:04:43 <callforjudgement> oerjan: well, it's more that "doing well on the tiebreak" and "doing well on the rest of the game" aren't very correlated
02:05:21 <Lymia> The tiebreak earns my bot, like, 10 wins.
02:05:33 <Lymia> So, it's not insignificant.
02:05:43 <Lymia> But, you still need a normal clear
02:05:48 <Lymia> Or you lose by falling off the tape.
02:06:35 <callforjudgement> well the idea of a turtle is that you win before the point where you fall off
02:08:39 -!- scarf has joined.
02:08:43 <scarf> [03:07] <callforjudgement> Lymia: huh, you won with an evolved prograM?
02:08:44 <scarf> [03:08] <callforjudgement> I'm not sure whether to be impressed at the evolver, or horrified at how bad the programs there are
02:09:06 <Lymia> Horrified at how bad the programs are.
02:09:12 <Lymia> Look at the analysis of that evolved program
02:09:38 <Lymia> (-)*5(>.(-)*7)*3(>[(-)*8[.+]](-)*2)*-1 < Reduces to this basically
02:09:50 <scarf> ooh, someone submitted a defence program
02:10:07 <scarf> even if it has one of the worst tripwire setups ever
02:10:18 <Lymia> Yanderebot?
02:10:31 <scarf> Polar bear
02:11:14 <Lymia> Is this.... a careless clear?
02:11:32 -!- callforjudgement has quit (Ping timeout: 245 seconds).
02:11:33 <Lymia> Oh, yep
02:13:45 <Lymia> scarf, Yeah, uh
02:13:51 <Lymia> My bot screws this over in 19 cycles
02:14:02 <Lymia> (-)*19
02:18:00 -!- scarf has quit (Read error: Connection reset by peer).
02:18:14 -!- scarf has joined.
02:22:25 -!- Bicyclidine has joined.
02:29:11 -!- Male has joined.
02:29:32 -!- scarf has changed nick to ais523.
02:29:52 -!- Male has quit (Client Quit).
02:34:47 -!- Bicyclidine has quit (Ping timeout: 245 seconds).
02:43:19 <quintopia> Lymia: where is the hill posted
02:48:20 <Lymia> http://codegolf.stackexchange.com/questions/36645/brainfedbotsforbattling-a-brainf-tournament
03:12:40 -!- variable has joined.
03:34:37 -!- doesthiswork has quit (Quit: Leaving.).
03:40:51 <CrazyM4n> so I don´t understand
03:41:00 <CrazyM4n> in the brainbots tournament
03:41:40 <CrazyM4n> what´s stopping you from just doing ¨(>[-])*100¨
03:45:06 <oerjan> well in bfjoust, you can defend by putting some "traps" in between
03:45:28 <oerjan> which slows down that strategy enough that you may get to their flag first
03:45:59 -!- variable has quit (Ping timeout: 276 seconds).
03:47:00 * oerjan doesn't at the spot recall what the traps are actually called in bfjoust terminology
03:47:53 <ais523> decoys
03:48:00 <oerjan> right
03:48:08 <ais523> CrazyM4n: you can do that, it's known as a fast rush program
03:48:20 <ais523> it'll fall to a program that does >-(>[-])*100, though
03:48:26 <ais523> the very basics of BF Joust strategy is understanding why
03:52:02 <CrazyM4n> :/
03:54:12 <oerjan> hm well given that the other hill is working _somewhat_ different than bfjoust and iirc never reverses +- polarity, i can see one way that could fail: if cells don't wraparound and decrementing 0 is a loss.
03:54:43 <oerjan> a decoy wouldn't be _nearly_ as effective if you couldn't do that
03:55:20 * oerjan has no idea if the brainbots game would do that, mind you
03:57:55 <oerjan> CrazyM4n: the basic idea is that with wrapping 8-bit cells, if a cell is -1 or +1 but you don't know which, then you waste 127 steps or thereabouts if your [-] clearing goes the wrong way
03:58:14 <oerjan> you can me more clever, but then the defender can be too
04:11:54 -!- tromp has joined.
04:13:57 -!- tromp__ has quit (Ping timeout: 245 seconds).
04:24:26 -!- augur has joined.
04:25:05 <ais523> oerjan: cells do wrap on the other hill
04:26:18 <oerjan> ok
04:27:11 <oerjan> mind you a decoy could _still_ work somewhat because a -] is slower than a +
04:28:09 <ais523> oerjan: indeed, setting decoys is faster than clearing them even if the opponent knows which polarity you're using
04:28:37 <ais523> in decrementing-0-is-death BF Joust, vibration seems like a pretty powerful strategy
04:28:57 <ais523> if you can decrement your flag from 1 to 0 at the same time the opponent does
04:28:59 <ais523> then, umm
04:29:01 <ais523> you both lose?
04:29:21 <oerjan> heh
04:29:22 <coppro> vibration?
04:29:47 <oerjan> i understand the brainbot game doesn't have simultaneous moves though
04:30:08 <ais523> coppro: changing your flag between 0 and 1 rapidly
04:30:20 <ais523> oerjan: it says it does from the description, but it may be lying
04:30:22 <coppro> don't you lose, then?
04:30:29 <ais523> has to be 0 for two cycles to lose
04:30:33 <ais523> and many programs just move on if they see a 0
04:30:38 <coppro> oh right
04:30:39 <ais523> so you have a 50% chance of beating those programs
04:30:45 <ais523> it's pretty easy to counter if you know what you're doing, though
04:30:55 <oerjan> i think it was said 1 cycle in brainbots
04:31:25 <ais523> vibration programs have topped the hill (anticipation2), but that only works if people aren't paying attention to them
04:41:11 -!- CrazyM4n has quit (Quit: Leaving).
04:51:23 -!- ais523 has quit (Read error: Connection reset by peer).
04:51:38 -!- ais523 has joined.
04:53:58 -!- callforjudgement has joined.
04:53:59 -!- ais523 has quit (Disconnected by services).
04:54:03 -!- callforjudgement has changed nick to ais523.
05:09:21 <Sgeo> > join [[1,2],[3,4,5],[6]]
05:09:22 <lambdabot> [1,2,3,4,5,6]
05:12:44 <Sgeo> I'm wrong, you can traverse the spine of a Racket stream without forcing each element
05:13:26 <coppro> Sgeo: why the sudden interest in Racket?
05:14:10 <Sgeo> I think because I got a sudden interest in Haskell and then lens reminded me of my intentions to make an optics library in Racket
05:23:27 <Sgeo> My stream-join is a bit haiy
05:23:57 <Sgeo> https://github.com/Sgeo/racket-optics/blob/417c0c5ff91dc9cee9e402c6f479abafa5b3275d/profunctors.rkt#L72-L81
05:24:01 <Sgeo> hairy
05:35:32 <Sgeo> DrRacket has a code coverage tool built-in. That and module+test might encourage me to actually write unit tests
05:40:09 -!- shikhin has joined.
05:51:24 <ais523> oh, haha
05:51:32 <ais523> I /finally/ figured out what causes my compose key to stop working
05:51:43 <ais523> it's alt-tabbing from Firefox to Konversation; alt-tabbing from any other program to Konversation fixes it
06:15:32 <shachaf> Hmm. Firefox in general or in particular Firefox with focus on the URL bar or something?
06:15:46 <ais523> shachaf: not sure yet
06:15:50 <ais523> I think there's at least one other condition
06:15:58 <ais523> but at least this means that I can easily fix it when things go wrong
06:16:05 * Sgeo wonders what distro ais523 uses... mostly because Kubuntu sucks
06:16:11 <ais523> Sgeo: Ubuntu, with Unity
06:16:18 <ais523> I like Unity, pity it's so buggy and so unperformant
06:16:29 <shachaf> Focus in the Chrome URL bar misbehaves in all sorts of ways.
06:16:48 <Sgeo> I think I tend to prefer using GNOME and GTK+ apps when in GNOME and KDE and Qt apps only in KDE
06:16:48 <shachaf> I vaguely remember similar issues with Firefox.
06:28:52 -!- callforjudgement has joined.
06:29:21 -!- ais523 has quit (Ping timeout: 260 seconds).
06:38:54 -!- CrazyM4n has joined.
06:52:53 -!- CrazyM4n has quit (Quit: Leaving).
07:01:50 <Sgeo> Hmm... is IO the main interesting side-effect in non-Haskell languages?
07:02:52 <callforjudgement> Sgeo: variable mutation's a big one
07:03:08 <Sgeo> Variable mutation doesn't fall under IO?
07:03:22 <callforjudgement> well, everything falls under IO, because it's basically the most general possible monad
07:03:26 <oerjan> the ST monad does variable mutation without IO
07:03:30 <callforjudgement> you can do it with much less than IO, though
07:04:05 <callforjudgement> and it's definitely impure because it lets you observe evaluation order
07:04:09 <Sgeo> But if I want to encode the concept of side-effect in a non-Haskell language, it should be sufficient to support IO, with 0-argument functions since it's a side-effecty language
07:04:25 <callforjudgement> Sgeo: one of my colleagues made the point that the "IO monad" of Haskell is basically OCaml
07:04:29 <callforjudgement> rather than IO generally
07:04:58 <callforjudgement> you can think of the ML family as basically being Haskell only everything is forced to be in the IO monad
07:05:46 <oerjan> Sgeo: the "concept of side-effects" in haskell is really the "concept of _distinction_ of side effects", so using only IO misses much of the point.
07:06:53 * Sgeo is mostly not trying to let all of the abilities of traversal go to waste just because I don't feel like encoding applicatives
07:10:03 <Sgeo> I think the main distinction between explicit support vs. letting users 'cheat' with over and a side-effecting function is that the former forces the traversed structure
07:11:32 <Sgeo> Hmm... is it possible to write a Traversal' (a -> b) b?
07:11:48 <Sgeo> If it is, I'm abandoning my encoding... I can't see how to write a getter
07:15:31 <oerjan> > (cos & traverse %~ (*2)) 0
07:15:33 <lambdabot> No instance for (GHC.Show.Show a0)
07:15:33 <lambdabot> arising from a use of ‘M288691002170012585531335.show_M2886910021700125855...
07:15:33 <lambdabot> The type variable ‘a0’ is ambiguous
07:15:33 <lambdabot> Note: there are several potential instances:
07:15:33 <lambdabot> instance [safe] GHC.Show.Show
07:15:36 <oerjan> wat
07:15:48 <oerjan> :t cos & traverse %~ (*2)
07:15:49 <lambdabot> (Traversable ((->) b), Floating b) => b -> b
07:15:57 <oerjan> oh hm
07:16:50 <oerjan> it's possible if a is a finite type, i think.
07:19:26 <shachaf> It is not possible in general.
07:19:31 <shachaf> You can write a Setter.
07:19:49 <shachaf> A Traversal needs to traverse at most a countable number of things.
07:29:05 <Sgeo> I feel like I'm going through contortions to serve a use-case I'm not sure exists
07:29:26 <Sgeo> I don't know if there really are that many lazy structures used in Racket
07:29:29 <shachaf> You tend to do that.
07:34:35 <Sgeo> Allowing users to 'cheat' would feel worse
07:34:55 <Sgeo> Also the reason I can't merely encode lenses as setters
07:52:01 -!- callforjudgement has quit.
07:52:17 -!- callforjudgement has joined.
07:52:38 -!- xTREM has joined.
07:52:48 -!- xTREM has left ("Saliendo").
07:55:08 -!- AnotherTest has joined.
08:01:35 -!- drdanmaku has quit (Quit: Connection closed for inactivity).
08:07:00 -!- oerjan has quit (Quit: leaving).
08:27:51 <Sgeo> Reader r and List seem to suggest that maybe IO doesn't cover all side effects
08:28:34 <Sgeo> Is there an Applicative that describes all applicatives, the way Cont describes all monads?
08:29:02 <Bike> http://mandalicgeometry.tumblr.com/
08:31:35 <Sgeo> I was going to say 'I would be happy if that didn't have a name implying pseudomath and pseudoscience', but I take it back.
08:34:30 <shachaf> Cont doesn't describe all monads.
08:34:45 <shachaf> Well. I don't know what it means to describe a monad. But I bet Cont doesn't do it.
08:35:22 <Sgeo> X describes Y = X <relation between Cont and all monads explored in 'mother of all monads'> Y
08:36:01 <shachaf> That article says Cont but I'm pretty sure it really means Codensity.
08:38:02 -!- shikhout has joined.
08:40:54 -!- shikhin has quit (Ping timeout: 246 seconds).
08:43:40 <int-e> Bike: huh, what now?
08:59:49 <int-e> oh it's a "cross-disciplinary blog", I guess that's one way of putting it...
09:25:34 -!- callforjudgement has quit.
09:31:06 -!- shikhout has changed nick to shikhin.
09:31:13 -!- shikhin has quit (Remote host closed the connection).
09:34:58 <HackEgo> [wiki] [[Talk:Suicide]] N http://esolangs.org/w/index.php?oldid=40414 * Rdebath * (+1813) /* Appears to be NOT turning complete */ new section
09:43:30 -!- shikhin has joined.
09:46:56 <int-e> hmm, another language with a weird specification.
09:50:53 <Jafet> Turning complete
09:51:25 <int-e> I missed that.
09:52:12 <Jafet> A language that is not actually complete, but could almost be
09:52:17 <Jafet> imo
09:52:56 <int-e> "It has a limit of 676 variables, but if these are unbounded it might still be able to emulate a Minsky machine."
09:54:14 <int-e> Yes, it'll be able to do that, all one needs is a single loop with a body of if-then-else checking the current state and doing the corresponding updates.
09:56:08 <int-e> The funny thing about that page is that it describes a language, and then, in the examples, uses < and << which have not been mentioned before.
10:52:49 -!- J_Arcane has joined.
11:46:15 -!- J_Arcane has quit (Quit: WeeChat 0.4.4-dev).
11:50:41 -!- J_Arcane has joined.
12:29:06 -!- Phantom_Hoover has joined.
12:31:54 -!- jix has quit (Remote host closed the connection).
12:32:28 -!- jix has joined.
12:41:02 -!- Sprocklem has quit (Ping timeout: 245 seconds).
12:41:17 -!- Sprocklem has joined.
12:58:09 -!- Patashu_ has quit (Ping timeout: 264 seconds).
13:26:17 -!- Phantom__Hoover has joined.
13:29:06 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
13:35:44 <coppro> man, ARIN is down to less than a /8
13:36:32 <coppro> (not counting the reserve /10 for IPv6 transition)
13:37:26 <Jafet> Better prepare the fallout bunker
13:41:05 -!- boily has joined.
13:47:29 <Jafet> Interesting that most countries don't have a /8, but some american organizations have two.
13:50:08 <boily> not only American, but Canadian too :D
13:50:54 <boily> (okay, they aren't quite pure /8 as they are fragmented around, but they occupy the same address space.)
13:51:05 <coppro> my university only has a /16
13:54:07 <boily> many years ago I made a list of quite a few Canadian /16, mainly universities. mine was 132.203.0.0/16.
13:55:43 <boily> a list I just found.
13:56:54 <boily> aaaurgh. pastebin is rebarbative.
13:57:34 <boily> http://pastebin.ca/2839477
14:01:15 <coppro> Why does BC need so many?
14:02:36 <boily> I have absolutely no clue.
14:09:13 <Jafet> Why did the Ford Motor Company need 19.0.0.0/8? It probably didn't.
14:09:22 <elliott> surely ARIN should be putting pressure on them to give up parts of their address space by now
14:10:07 <Jafet> I'm actually hoping that we run out of v4 faster
14:10:20 <int-e> RegDate: 1988-06-15
14:10:34 <int-e> back then the IPv4 address space was huge ;)
14:11:27 <Jafet> They didn't need to share it with the commies
14:12:03 <int-e> And this was class-based routing. So if 64k addresses of a class B net were not enough, I suppose you'd get a class A net.
14:13:46 <boily> I hope we completely switch out to IPv6 soon, because then I'll be forced to learn it correctly.
14:14:08 <boily> address scopes confuse the fungot out of me.
14:14:08 <fungot> boily: you're back!! i'm not made of cons cells though. how can the code be wrong?
14:14:34 <boily> fungot: of course I'm back. I'm always back, and you guys are going to be stuck with me a loooong time.
14:14:34 <fungot> boily: they are definitely a lot of schemes seem to dislike the way gimp does stuff in scheme, or programming in general)
14:19:48 <int-e> Your search - "I'm not made of cons cells" - did not match any documents. ... pity.
14:20:19 <int-e> It sounded like such a sensible thing to say.
14:20:31 <J_Arcane> :D
14:20:55 <J_Arcane> Of course, you're made of atoms, the cons cells are just how they're bound together. ;)
14:21:18 <int-e> Ow.
14:21:29 <int-e> So does anybody call S-expressions "molecules"?
14:21:44 <J_Arcane> Heh heh. Not that I know of.
14:23:31 <int-e> http://www.google.com/patents/CN102625850A?cl=en mentions "LISP molecules", but LISP stands for "labeled probe identification sequence"
14:25:51 <Phantom__Hoover> 'your lisp code is terrible, look at all these texas IFs'
14:27:05 <int-e> Phantom__Hoover: can you explain?
14:27:22 <int-e> "texas IF" is not a very good search term.
14:27:29 <Phantom__Hoover> https://www.google.co.uk/search?q=texas+carbon
14:32:06 <int-e> okay. (if a b c d) would be wrong indeed.
14:32:34 <int-e> (though I wonder whether that should count as four bounds)
14:33:32 <int-e> bonds. luckily, I don't do chemistry.
14:34:34 <boily> if “a” is true then “b” else “c” else else “d”???
14:35:00 <int-e> @google things I won
14:35:02 <lambdabot> http://pipeline.corante.com/archives/things_i_wont_work_with/
14:35:02 <lambdabot> Title: In the Pipeline:
14:35:08 <int-e> that's funny.
14:35:26 <int-e> (even more funny is the fact that this was what I was looking for)
14:36:15 <int-e> boily: something like that
14:36:23 <int-e> s/else else/otherwise/
14:37:31 -!- shikhout has joined.
14:37:46 <boily> int-e: I reject your reality and placidly continue to munch on some toasts with nutella.
14:40:45 -!- shikhin has quit (Ping timeout: 264 seconds).
14:43:17 -!- shikhout has changed nick to shikhin.
14:43:41 <HackEgo> [wiki] [[Archway]] http://esolangs.org/w/index.php?diff=40415&oldid=36068 * 76.100.81.188 * (+5) /* Example */ Fix Archway2 cat example.
14:44:12 <int-e> my personal most memorable quote from that blog: "At seven hundred freaking degrees, fluorine starts to dissociate into monoatomic radicals, thereby losing its gentle and forgiving nature." http://pipeline.corante.com/archives/2010/02/23/things_i_wont_work_with_dioxygen_difluoride.php
14:48:31 <boily> my favourite, where he mentions shrapnel: “Ranking my equipment in terms of its shrapneliferousness is not something that's ever occurred to me, I have to say.” http://pipeline.corante.com/archives/2009/03/18/things_i_wont_work_with_chalcogen_polyazides.php
15:04:05 <int-e> "There are no conceivable uses for [N-amino azidotetrazole] - well, other than blowing up Raman spectrometers, which is a small market - and the number of research groups who would even contemplate a resynthesis can probably be counted on one well-armored hand."
15:04:48 <int-e> Hmm, that blog used to have a table of contents per category, now the best I can find is http://pipeline.corante.com/archives/things_i_wont_work_with.xml which lists only 16 of 29 posts :-(
15:08:15 <Phantom__Hoover> <boily> if “a” is true then “b” else “c” else else “d”???
15:08:28 <Phantom__Hoover> if a is true, b; if a is false, c; if a is filenotfound, d
15:10:28 <Taneb> boily, you were interested in writing IRC bots in Haskell, write?
15:10:30 <Taneb> ...
15:10:38 <Taneb> *right?
15:11:31 <Jafet> Self-writing self-righting irc bots
15:11:37 <boily> Phantom__Hoover: point.
15:11:59 <boily> Taneb: uhm, yes? afaicr, I think it is so.
15:12:06 <boily> Jafet: a self-modifying fungot!
15:12:06 <fungot> boily: could it be done without a wrapper
15:12:18 <boily> fizzie: could it?
15:12:41 <Jafet> fungot is pushing the boundaries here.
15:12:41 <fungot> Jafet: it requires a full ai to parse it
15:12:44 <Taneb> boily, one of my friends is writing a bunch of IRC-related Haskell libraries
15:12:55 <int-e> you didn't just mix up fungot and fizzie, did you...
15:12:56 <fungot> int-e: i just a new module that provides a full build environment in fnord.
15:13:24 <int-e> I swear fungot knows how much I hate that word.
15:13:24 <fungot> int-e: the addition of addmov and submov :) fnord/ pictures/ flow.gif hofstadter would probably enjoy it very much. it's not bad, but if it's so important that people get the false impression that fnord and start hacking.
15:13:42 <int-e> exactly.
15:14:03 <boily> Taneb: interesting. fascinating. appropriatable, and on-top-of-it codeable.
15:14:13 * Taneb whistles for barrucadu
15:14:30 <barrucadu> Yes?
15:14:36 <Taneb> barrucadu, advertise to boily your IRC stuff
15:14:39 <boily> int-e: fungot is smart. fungot knows you. fungot will assimilate you, and in the befunge bind you.
15:14:39 <fungot> boily: is this the esolang channel? i mean, can you send the generated code
15:16:00 <barrucadu> Well, I've got a library on hackage to encode and decode CTCPs (https://github.com/barrucadu/irc-ctcp), and plan to put up today a message decoder using conduits (https://github.com/barrucadu/irc-conduit)
15:16:38 <barrucadu> I've got a haskell irc bot running atop all this stuff, and am just gradually breaking it up into libraries
15:19:48 <boily> has your bot joined this channel?
15:20:14 -!- yukibot has joined.
15:20:18 <barrucadu> Has now
15:20:58 <barrucadu> At the moment it's not doing much
15:21:05 <barrucadu> I've mostly been playing with the underlying stuff
15:21:28 <Taneb> en.wiktionary.org/wiki/sorry
15:21:43 <Taneb> Hmm, its URL shouter isn't working
15:21:49 <Taneb> Do I need the protocol, barrucadu?
15:21:50 <barrucadu> Yes it is
15:21:53 <barrucadu> https://en.wiktionary.org/wiki/sorry
15:21:54 <yukibot> Title: "sorry - Wiktionary"
15:22:28 <boily> yukibot: botsnack
15:23:33 <barrucadu> At the moment it basically does link info and !seen
15:24:12 <barrucadu> But it handles multiple networks with ease, which is nice
16:16:50 <int-e> this is cute, http://img.thedailywtf.com/images/14/q2/e115/Pic-1.png
16:17:38 <int-e> the point being, it's a perfectly sensible graph.
16:22:17 -!- drdanmaku has joined.
16:37:12 <quintopia> helloily
16:38:59 <Jafet> Interesting error.
16:40:48 <Jafet> Oh, it's exactly one hour. Well, I consider that an error anyway.
16:42:19 <Melvar> It clearly depicts a DST switch.
16:46:35 <int-e> Melvar wins.
16:48:02 <Jafet> In fact, a graph which did not contain the loop would be erroneous.
16:54:35 <int-e> Arguably there should be two curves in the [2,3) interval, without any line going back in time. But that's a minor complaint.
16:57:43 <Jafet> It's a mapping from linear time (presumably utc) to some political abomination that allows time travel
16:58:05 -!- oerjan has joined.
16:58:42 <Bike> "god damn politicians", i complain to myself, as i orbit the infinitely long spinning cylinder
16:59:23 <int-e> rotating yourself into an early grave?
17:03:32 <TieSoul> hey guys
17:17:51 <mroman_> hey Soul
17:23:35 <TieSoul> I'm learning C++
17:23:52 <mroman_> oh no!
17:23:58 <mroman_> why the hell would you do that
17:23:58 <TieSoul> It's pretty hard, considering I'm used to Python and Ruby.
17:24:06 <TieSoul> speed, mostly
17:24:55 <TieSoul> also, pointers confuse me.
17:25:18 <TieSoul> I managed to implement brainfuck though
17:25:27 <TieSoul> https://gist.github.com/TieSoul/688e7326453384862ce1
17:25:28 <yukibot> Title: "brainfuck.cpp"
17:25:34 <mroman_> so...
17:25:50 <mroman_> Java?
17:25:51 <mroman_> @Speed
17:25:51 <lambdabot> Unknown command, try @list
17:26:09 <TieSoul> I don't like Java, I'd actually rather C++ than Java
17:26:36 <mroman_> well
17:26:42 <mroman_> If you'd really care about speed you'd learn Ada
17:29:22 -!- NeroReflex has joined.
17:29:31 <NeroReflex> hi
17:29:40 <mroman_> although on alioth g++ is just barely better than Ada
17:29:42 <TieSoul> hey
17:29:54 <mroman_> but considering that it's C++ :)
17:30:46 -!- oerjan has quit (Quit: leaving).
17:42:19 <boily> quintopia: quinthellopia!
17:43:21 <boily> TieSoul: you are wrong. Wrong, I say!
17:43:32 <TieSoul> wrong about what?
17:44:41 <boily> java is less despicable than C++, imso.
17:46:08 <boily> NeroReflex: hi!
18:12:52 <int-e> imso, hmm. "superior"?
18:14:07 <int-e> The Internet (tm) suggests "sovereign".
18:14:12 <mroman_> C++ has all the bad traits of C you don't really want anymore
18:14:18 <mroman_> and it's got ugly syntax
18:14:46 <int-e> @quote int-e C++
18:14:46 <lambdabot> Plugin `quote' failed with: user error (parseRegex for Text.Regex.TDFA.String failed:"C++" (line 1, column 3):
18:14:46 <lambdabot> unexpected '+'
18:14:46 <lambdabot> expecting empty () or anchor ^ or $, an atom, "|" or end of input)
18:14:51 <int-e> @quote int-e C\+\+
18:14:51 <lambdabot> int-e says: C++ does make a reasonably usable high-level assembler
18:15:02 <mroman_> Java on the other hand is so easy it makes people write so bloaty code that complies to "clean code" but is split into 1k files which makes it unreadable as fuck
18:15:19 <int-e> mroman_: the PHP effect
18:15:47 <J_Arcane> mroman_: see FizzBuzzEnterpriseEdition? ;)
18:15:54 <mroman_> J_Arcane: like that, yes
18:15:58 -!- ais523 has joined.
18:16:02 <int-e> (Hmm, not quite. The PHP effect is that the language is so easy that every wannabe programmer uses it.)
18:16:08 <mroman_> you have to look at dozens of classes and packages to figure out what's going on
18:16:23 <mroman_> and then there's an injection framework that just changes everything again :(
18:16:29 <int-e> what's the deal with giving every class its own interface anyway?!
18:16:50 <mroman_> I think you need that for Injection und some other Frameworks @interface for every class
18:16:59 <mroman_> i.e. FooClass is an interface
18:17:07 <mroman_> and then there's RealFooClass
18:17:11 <mroman_> which is the real thing
18:17:59 <int-e> I just balk at the idea of providing an interface for something that has a single implementation.
18:19:02 <ais523> int-e: the best argument I know is that it lets you later swap out the class without changing code that uses it
18:19:10 <int-e> I guess a possible excuse is that you want a mock object for everything for testing purposes.
18:19:26 <fizzie> Also for binary compatibility.
18:19:38 <int-e> ais523: I don't buy it. Anyway, eclipse has a ready-to-use refactoring tool for that purpose.
18:19:45 <int-e> binary compa...
18:19:51 <int-e> ah I never care about that.
18:20:00 <int-e> but I guess it's a semivalid point.
18:20:01 <ais523> int-e: I didn't say it was a /goo/d/ argument
18:20:22 <int-e> ais523: right.
18:21:32 <int-e> fizzie: my thinking about binary compatibility is influenced too much by Haskell, which offers none. Oh and Open source which means that recompiling stuff is always an option. But thanks for the argument :)
18:21:56 <fizzie> I've browsed through Effective Java once, that's all I know.
18:22:30 <fizzie> It has some leanings towards the "prefer interfaces" side, though not so strong as to prefer them blindly.
18:23:32 <fizzie> Hmp, I just broke gearlance.
18:24:06 <newsham> anyone solve botguard.js yet?
18:24:27 <ais523> newsham: apparently not, or we'd see a noticeable increase in spam
18:25:18 <int-e> The downside is that when browsing source code, in a top-down manner, one usually finds that the interesting functionality is hidden behind some interface ... and then one has to go looking for classes implementing it, possibly digging in xml configuration files to find out which one is actually used. It's awful.
18:25:23 <newsham> ais: not necessarily
18:26:09 <int-e> I guess figuring such stuff out is what makes the difference between a Java programmer and a JavaEE programmer.
18:30:20 <fizzie> Welp, I unbroke gearlance, but my "optimization" is a... if "pessimization" is something that makes it worse, what's it called when it has no effect? "Status quptimization?" "Futilization?"
18:30:30 <quintopia> boily: you take long time to respond
18:31:00 <quintopia> fizzie: what was it you changed?
18:31:33 <Jafet> "Refactoring"
18:33:29 <fizzie> quintopia: I switched it from the current "almost computed-goto threaded code except it keeps the original parsed program around to look up repeat counts and jump targets" to a slightly more compact "computed-code threaded code with target/count operands intermixed for those operands that need them" form, as a side effect of adding support for doing the threaded-code translation and actual ...
18:33:35 <fizzie> ... tournament-running as separate stages.
18:34:11 <int-e> depending on whether it adds code complexity, "Obfuscation", or "Simplification"
18:34:34 <fizzie> From what I recall from my last benchmark, a large amount of time is spent in parsing the (larger) programs, and I thought if I at some point want to maintain a hill with the code, it'd make sense to keep the existing programs around in a precompiled form.
18:34:47 <quintopia> ah
18:35:01 <quintopia> i am in favor of the idea of fizzie hill.
18:35:16 <quintopia> since perhaps fizzie will implement fixed point scoring :P
18:35:24 <fizzie> That sounds like a place.
18:35:40 <quintopia> it should be a place
18:36:26 <quintopia> a pub. a pub called Fizzie Hill.
18:36:35 <fizzie> (I won't have actual time to think about this until the week after next, so don't expect miracles. So far I'm just fiddling a bit.)
18:36:59 <quintopia> no miracles????? but aren't you C Jesus?
18:38:17 <fizzie> fungot: While I'm busy, you work on that thing for me, m'kay?
18:38:17 <fungot> fizzie: by the way? :d: :d :d :d)
18:39:32 <quintopia> i agree fungot. you should definitely be in charge of the hill.
18:39:33 <fungot> quintopia: maybe for arithmetic. see http://www.gehennom.org/fis/ fib.sed for an example. of course
18:40:16 <Jafet> sed hill
18:40:16 <quintopia> there is no such file fungot
18:40:16 <fungot> quintopia: this is scary.
18:43:14 <int-e> what's up with the trend towards increasingly wider aspect ratios in screens? would it stop if we started measuring screen surfaces instead of diagonals?
18:43:40 <fizzie> quintopia: https://dl.dropboxusercontent.com/u/113389132/Misc/20140907-fib.sed there you go
18:43:57 <int-e> > let x a b = (a^2 + b^2)/(a*b) in (x 17 9/x 16 9,x 16 9/x 16 10,x 16 10/x 4 3)
18:43:59 <lambdabot> (1.0333391516844126,1.0518102372034956,1.068)
18:44:01 <J_Arcane> FizzBuzz in a tweet (clojure): (map #(cond (= 0 (mod % 15)) "FizzBuzz" (= 0 (mod % 3)) "Fizz" (= 0 (mod % 5)) "Buzz" :else %) (range 1 100))
18:44:02 <fizzie> (It's just a recursive-sed experiment.)
18:44:04 <Jafet> The human field of vision is pretty wide.
18:44:49 <int-e> [a 4:3 monitor has 6.8% more surface area than a 16:10 one with the same diagonal... etc.]
18:46:14 <fizzie> The forthbuzz I pasted the other day also fits in a tweet.
18:47:34 <fizzie> What was a tweet again, 140 characters?
18:47:39 <J_Arcane> fizzie: Yeah, I remember that. I was just amused that I could do it in clojure. Not sure I could in my usual Lisp, too verbose.
18:47:41 <J_Arcane> Yeah, 140.
18:48:19 <fizzie> 75 tweetable languages in the http://golf.shinh.org/p.rb?FizzBuzz then.
18:48:23 <yukibot> Title: "anarchy golf - FizzBuzz"
18:48:36 <fizzie> That's new.
18:49:01 <Jafet> I'd consider any language that could not do this in a tweet to be a joke language somehow
18:49:23 <fizzie> The shortest Erlang solution there is 150 characters, and Erlang's no joke.
18:49:51 <Jafet> Its syntax is imo
18:50:01 <fizzie> Many of the others are esolangs, though.
18:50:04 <Jafet> Prolog scoping needs to die
18:50:12 <TieSoul> befunge has a 54-byte solution
18:50:26 <J_Arcane> Shorter: (map #(condp = 0 (mod % 15) "FizzBuzz" (mod % 3) "Fizz" (mod % 5) "Buzz" %) (range 1 100))
18:51:21 <fizzie> Prolog itself is only 91.
18:52:41 <Jafet> I wonder if 150 represents trying very hard, considering that brainfuck scores 180.
18:58:50 -!- variable has joined.
19:07:22 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
19:13:10 <fizzie> So what's the story with this yukibot?
19:16:11 <boily> quintopia: I was out to lunch, and now I just woke up from a nap.
19:19:06 <ais523> it'd be nice to know whose bot it is
19:19:11 <ais523> or if it just decided to turn up one day
19:20:41 -!- metasepia has joined.
19:23:07 <quintopia> boily: guess we can't hang out yet again as usual. :P
19:24:40 <fizzie> Well, hacksoc.org is the York thing, right?
19:25:09 <fizzie> And Taneb's going there, ISTR.
19:25:19 <J_Arcane> Aww. Well, I have a code-golf passing solution but it doesn't work with anarchy golf's clojure evaluator.
19:25:23 <Taneb> fizzie, it's barrucadu's bot
19:26:11 <fizzie> There we go. Do you happen to know if it does something exciting too?
19:26:49 <quintopia> fizzie: it just reads titles from links
19:27:33 <ais523> now I'm trying to work out how to create a botloop with that
19:27:43 <ais523> with no "Title: " prefix or quotes, it would be easy
19:28:10 -!- AnotherTest has quit (Ping timeout: 252 seconds).
19:28:14 <fizzie> ^source
19:28:14 <fungot> https://github.com/fis/fungot/blob/master/fungot.b98
19:28:16 <yukibot> Title: "fungot/fungot.b98 at master · fis/fungot · GitHub"
19:28:16 <fungot> yukibot: what happened to offby1!!! rampage!!!
19:28:31 <fizzie> That's not much of a loop, but at least it was already built-in.
19:30:51 <fizzie> http://zem.fi/crlf.html
19:30:51 <yukibot> Title: "this title has a newline PRIVMSG #esoteric :and this is a private message"
19:30:56 <fizzie> Aw.
19:31:10 <fizzie> Well, it's the kind of thing that has to be tried.
19:31:58 <barrucadu> I think it's just a coincidence that that doesn't break it
19:32:06 <J_Arcane> Damn. there's a 77-char Clojure solution. I wonder how they did it.
19:32:17 <barrucadu> Multiple spaces get stripped out to give a more useful title, I guess it's also eating newlines
19:32:49 <fizzie> http://zem.fi/ctcp.html
19:32:49 <yukibot> Title: "this title has an embedded CTCP <CTCP>PING 123<CTCP> in it"
19:32:50 <quintopia> fizzie: i need to use fcolor but i can't find it
19:33:20 <fizzie> quintopia: http://zem.fi/2012-03-15-fcolor -- you're in luck, I think I fixed it just the other month.
19:33:21 <yukibot> Title: "Use Flickr to Define Colors | 2012-03-15 | zem.fi"
19:33:28 <barrucadu> yukibot: blacklist linkinfo
19:33:59 <fizzie> Aw, and I didn't even get to the web page with a six-gigabyte title yet.
19:34:07 <barrucadu> Hmm
19:34:15 <barrucadu> It truncates titles over a certain length
19:34:30 <fizzie> Does it fetch the entire page in any case, though?
19:34:35 * barrucadu checks how he does that
19:34:55 <barrucadu> …but that works by checking the length of the title
19:35:15 <barrucadu> And yes, it fetches the page with wreq, and then processes it with HXT, so that's probably not going to be sufficiently lazy either
19:36:32 <Jafet> Just run the bot on a slow network
19:38:16 <quintopia> fizzie: the weight of each image in the average is inversely proportional to the standard deviation of its histogram?
19:39:22 <fizzie> quintopia: It's slightly complicated, http://zem.fi/2012-03-14-gcolor has a "technical details" paragraph, it's the same thing for fcolor.
19:39:51 <quintopia> yeah but i didn't read that paragraph, which is why i asked you :P
19:41:00 <fizzie> Well. It's related to the variance, that's for sure.
19:42:23 <fizzie> I didn't remember myself exactly. There's both the directionality parameter of the von Mises-Fisher hue distribution, and the variance matrix of the (saturation, lightness) bivariate Gaussian fit.
19:43:05 <fizzie> But also the average log-likelihood of each pixel, which is kind of a measurement of how well the image fits the (unimodal) distributions.
19:43:50 <fizzie> It doesn't really have any very good theoretical foundation, I just did something that seemed to make a bit of sense.
19:43:56 <quintopia> yeah i don't know that i could understand that without an hour of research, as i've never worked with directional stats
19:45:17 <fizzie> You can mentally replace the first one with "inverse variance", it's pretty much the same thing.
19:45:19 <shachaf> ion: thion
19:45:45 <ion> shachaf: you’re wachaf
19:45:54 <shachaf> true
19:47:27 <fizzie> Internet suggests that for large values of κ, it in fact asymptotically approaches a normal distribution with variance 1/κ.
19:49:44 -!- Sorella has joined.
19:50:22 -!- Sorella has quit (Changing host).
19:50:22 -!- Sorella has joined.
19:51:21 <fizzie> Anyway, to summarize, the weight is a geometric mean of "how narrow the peaks of the distributions are" plus "how well the pixels match the distributions".
19:51:32 <quintopia> fizzie: wouldn't it make more sense to use the square root of that?
19:53:09 <quintopia> fcolor seems to be giving waaaay to much weight to grayscale images
19:53:30 <quintopia> ideally, it wouldn't include them at all
19:54:02 <fizzie> That's pretty much due to there being no built-in bias for saturation.
19:54:19 <fizzie> But yes, it could be improved.
19:58:00 <fizzie> I'm reasonably sure I thought "I'll tweak this to be more sensible later" when writing that.
19:58:18 <zzo38> My own client automatically responded to the embedded CTCP PING 123 in the title (it says AUTO ANSWERED to indicate that)
19:58:35 <fizzie> zzo38: You're probably in the minority.
19:58:51 <quintopia> you can say that again
19:59:17 <zzo38> fizzie: Does anyone else do, though, or only mine does?
20:01:22 <J_Arcane> More Markdown drama: http://blog.codinghorror.com/standard-markdown-is-now-common-markdown/
20:01:29 <zzo38> This message has an embedded CTCP <CTCP>PING 123<CTCP> in it.
20:01:42 <fizzie> I found one bot-building library that supports them, but that's not a client.
20:01:46 <zzo38> Only weissschloss responded
20:02:50 <zzo38> Only one bot-building library does?
20:04:43 <fizzie> Perhaps several do, but that's the one I found quickly.
20:07:05 <zzo38> I didn't know mIRC is compatible with Linux.
20:07:07 -!- Frooxius has quit (Quit: *bubbles away*).
20:10:15 -!- Frooxius has joined.
20:14:26 -!- Phantom__Hoover has joined.
20:17:51 -!- ais523 has quit.
20:18:01 -!- ais523 has joined.
20:27:11 -!- NeroReflex1 has joined.
20:28:56 -!- NeroReflex has quit (Ping timeout: 276 seconds).
20:33:39 -!- NeroReflex has joined.
20:35:26 -!- NeroReflex1 has quit (Ping timeout: 276 seconds).
20:36:52 -!- ais523 has quit.
20:38:19 -!- shikhout has joined.
20:41:27 -!- shikhin has quit (Ping timeout: 245 seconds).
20:42:30 <quintopia> fizzie: fcolor is proving to me that fact that the phrase "purple mountain's majesty" is not entirely absurd. "dark mountain" gives a shade of lilac.
20:43:47 <fizzie> Going purely on anecdotal evidence, gcolor was giving me "better" results, but Google was bad about having an API for the image search.
20:53:13 <pikhq> Pikes Peak in certain conditions does actually look faintly purple.
20:57:43 <quintopia> lots of mountains do
20:58:11 <pikhq> Pikes Peak is the relevant one for the quote. :)
21:00:40 -!- Patashu has joined.
21:17:17 -!- KingOfKarlsruhe has quit (Ping timeout: 245 seconds).
21:23:56 -!- perrier_ has quit (Read error: Connection reset by peer).
21:25:08 -!- perrier has joined.
21:26:36 -!- perrier has quit (Remote host closed the connection).
21:26:49 -!- KingOfKarlsruhe has joined.
21:27:42 -!- Patashu has quit (Ping timeout: 245 seconds).
21:27:45 -!- perrier has joined.
21:35:29 -!- ^v has joined.
21:44:21 -!- KingOfKarlsruhe has quit (Ping timeout: 264 seconds).
21:44:27 -!- int-e has quit (Ping timeout: 245 seconds).
21:45:23 -!- ^v has quit (Ping timeout: 240 seconds).
21:47:04 -!- Jafet has quit (Ping timeout: 250 seconds).
22:00:47 -!- Phantom___Hoover has joined.
22:02:03 -!- heroux has quit (Read error: Connection reset by peer).
22:03:06 -!- zzo38 has quit (Remote host closed the connection).
22:03:52 -!- Jafet has joined.
22:04:21 -!- Phantom__Hoover has quit (Ping timeout: 255 seconds).
22:11:36 -!- TieSoul has quit (Read error: Connection reset by peer).
22:11:54 -!- TieSoul has joined.
22:12:00 -!- heroux has joined.
22:12:30 -!- conehead has joined.
22:13:38 -!- ^v has joined.
22:13:46 -!- int-e has joined.
22:18:34 -!- NeroReflex has left.
22:35:52 -!- ^v has quit (Ping timeout: 240 seconds).
22:39:30 -!- int-e has quit (Ping timeout: 246 seconds).
22:46:10 -!- int-e has joined.
22:51:31 -!- ^v has joined.
22:58:44 -!- KingOfKarlsruhe has joined.
23:17:53 <Taneb> fizzie, fcolor for "york" yields a disappointing amount of images of New York
23:18:33 <Taneb> (nothing you can do about this, though)
23:41:37 -!- CrazyM4n has joined.
23:42:46 <Phantom___Hoover> fcolor?
23:43:41 <quintopia> it's the best color
←2014-09-06 2014-09-07 2014-09-08→ ↑2014 ↑all