←2016-05-09 2016-05-10 2016-05-11→ ↑2016 ↑all
00:10:36 <Moon__> i haz found garbage http://esolangs.org/wiki/%E2%99%A6
00:11:52 <Phantom__Hoover> check the history
00:12:27 <Moon__> i cant understand t
00:15:34 <Phantom__Hoover> straight substitution seems too obvious but it's worth trying frequency analysis
00:21:13 <Moon__> define '<': increment ptrp; define '+': increment dup; define '-': decrement dup;
00:21:32 <Moon__> A esolang im working on has a sample bf intepreter (=
00:23:26 -!- oerjan has joined.
00:24:34 <shachaf> `` quote oerjan | shuf
00:24:41 <HackEgo> 615) * oerjan concludes that unsafeCoerce has no effect on strictness \ 614) <CakeProphet> but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. [...] <oerjan> i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot. \ 366) <Sgeo> Will anyone be
00:24:55 -!- tromp_ has joined.
00:25:12 <shachaf> `quote
00:25:13 <shachaf> `quote
00:25:15 <shachaf> `quote
00:25:15 <shachaf> `quote
00:25:16 <shachaf> `quote
00:25:34 <oerjan> hichaf. turns out reading about a new mathematical concept a few hours before going to bed is not conducive to good sleeping hth
00:25:42 <HackEgo> 960) <Sgeo> o.O OS/2 is what became NT? I didn't really know what OS/2 was
00:25:42 <HackEgo> 434) <fungot> fizzie: i, myself, will bring an end to all.
00:25:46 <HackEgo> 879) <coppro> GreyKnight: for instance, you can form a poset category from a bunch of tiles <GreyKnight> oh, that's why somebody was conflating category theory with bathroom interior design the other day :-D
00:25:46 <HackEgo> 117) <Gregor> <badgood> GOODBAD! Your watered down brand of evil conflicts with my botched attempts at dogoodery!
00:25:47 <HackEgo> 1255) <shachaf> What is an esolang? <hppavilion[1]> shachaf: It's an archaic term for an Esolang
00:25:50 <shachaf> which new mathematical concept did you read about this time
00:26:08 <oerjan> on the plus side, i now understand why laver tables must have 2^n sizes if they exist. although not yet why they are shelves.
00:26:14 <shachaf> oh, that
00:26:37 <coppro> `? laver tables
00:26:39 <HackEgo> laver tables? ¯\(°​_o)/¯
00:26:42 <shachaf> shelves are p. bizarre
00:27:01 <coppro> how do you use le/rn/ again?
00:28:32 <shachaf> `le/rn laver table/A laver table is a type of Welsh furniture primarily used for eating seaweed.
00:28:38 <HackEgo> Learned «laver table»
00:28:45 <shachaf> please improve twh
00:29:07 <oerjan> no hth
00:29:16 -!- tromp_ has quit (Ping timeout: 252 seconds).
00:29:35 <shachaf> i was talking to coppro hth
00:29:44 <shachaf> obviously i wouldn't ask the retiree
00:29:55 <shachaf> `? oerjan
00:29:57 <HackEgo> Your retired mysterious evil cackling overlord oerjan is a lazy expert in future computation. Also an antediluvian Norwegian who mildly dislikes Roald Dahl. He can never remember the word "amortized" so he put it here for convenience. His arch-nemesis is Betty Crocker. He sometimes puns without noticing it.
00:30:24 <oerjan> good, good
00:30:52 <shachaf> `` sed -i 's/re//' wisdom/oerjan
00:31:12 <oerjan> /me swats shachaf -----###
00:31:42 <shachaf> have you been saving that one up
00:31:50 <oerjan> nope
00:32:02 <coppro> shachaf: I was just going to quote wikipedia
00:32:18 <coppro> laver tables are tables of numbers that have certain properties
00:32:37 <shachaf> do it
00:32:54 <shachaf> https://ncatlab.org/nlab/show/too+simple+to+be+simple
00:37:55 <Moon__> i made a thing: http://pastebin.com/680vBM4U
00:38:04 <Moon__> its the demo idea for a esolang im making
00:38:09 <Moon__> its a brainfuck intepreter
00:39:05 <Phantom__Hoover> this just looks like a lang
00:39:25 <Moon__> Eh maybe.
00:39:37 <Moon__> its unique in its own ways
00:39:39 <Phantom__Hoover> applescript is more esoteric than this
00:39:44 <Moon__> .-.
00:39:59 <Moon__> it may be useful still
00:40:08 <Moon__> think about it for a second
00:40:41 <Moon__> you could intepret a lot of languages in the finished product
00:41:06 <oerjan> i think the wikipedia article on Laver tables confuses racks with shelves. unfortunately there seems to be no article on the latter.
00:41:27 <oerjan> (racks have an extra requirement.)
00:42:58 <Moon__> Hey, at least lex is turing complete
00:43:19 <shachaf> oerjan: but what quandles twh
00:43:57 <shachaf> it's a real quandary
00:45:57 <shachaf> oerjan: also does the shelf operation have anything to do with S twah
00:47:59 <Moon__> shachaf: what do you think of this? http://pastebin.com/680vBM4U
00:48:08 <oerjan> the S combinator? looks awkward.
00:48:11 <shachaf> Why are you asking me?
00:48:22 <Moon__> because i want your opinion
00:48:43 <shachaf> But I've hardly talked to you.
00:51:01 <oerjan> "shelf" is not an easily googleable term tdnh
00:51:05 -!- tromp_ has joined.
00:51:06 * oerjan leaves a red link
00:52:51 <Moon__> Tromp_; what do you think of this? http://pastebin.com/680vBM4U
00:53:30 -!- ybden has quit (Quit: leaving).
00:54:43 <shachaf> Moon__: It's kind of rude to just ask your question of whoever is talking in the channel or just joined the channel.
00:55:01 <shachaf> It's also not too useful, because those are exactly the people who see what's going on in the channel anyway.
00:55:33 <Moon__> Srry
00:55:57 <tromp_> Moon__ i think's it's rather verbose:(
00:56:07 <oerjan> it refused to load until the very moment i pressed close, which i take as a sign not to look at it hth
00:56:42 <oerjan> (aka ^w)
00:56:59 <shachaf> That's why people ought to post raw links when they use pastebin.com
00:57:21 <oerjan> now xkcd.
00:57:30 <Moon__> im writing it so i can have aliases for things
00:57:47 <Moon__> I'd say its good for defineing intepreters :P
00:58:44 <Moon__> Here's the raw link oerjan: http://pastebin.com/raw/680vBM4U
00:58:59 <oerjan> TOO LATE
00:59:28 <Moon__> but but thats a bf interpreter and proof of turing completeness for something im makeing ;-;
00:59:39 -!- hppavilion[1] has joined.
00:59:45 <Moon__> Hia hppavilion[1]
00:59:54 <hppavilion[1]> hellmooon
00:59:58 <hppavilion[1]> s/ooo/oo/
01:00:08 <hppavilion[1]> I seem to be formulating a collection of mathematical chess variants
01:00:13 <oerjan> i recommend not naming your languages after common unix utilities hth
01:00:17 <hppavilion[1]> Are chess variants like the BF derivative of board games?
01:00:31 <hppavilion[1]> oerjan: Oh, is somebody making a mistake?
01:00:35 <Moon__> Oh, i didnt know that lex was a unix util name
01:00:41 <Moon__> *facepalm*
01:00:45 <hppavilion[1]> Moon__: What's lex?
01:00:47 <Phantom__Hoover> no because chess is kind of its own field in boardgames
01:00:53 <hppavilion[1]> (your lex, not our lex)
01:01:04 <Moon__> A language im working on
01:01:11 <Moon__> Not a one char command
01:01:12 <hppavilion[1]> Moon__: What's the concept?
01:01:20 <hppavilion[1]> One of the ones I thought of that I particularly like is Gaussian Chess
01:01:24 <hppavilion[1]> Which is like chess
01:01:29 <Moon__> Kinda like a data processer
01:01:42 <Moon__> Takes in data, does something to it, spits it out
01:01:49 <hppavilion[1]> Moon__: So a batch processor?
01:01:50 <oerjan> `8ball Are chess variants like the BF derivative of board games?
01:01:53 <HackEgo> My sources say no.
01:01:56 <hppavilion[1]> Yay!
01:01:57 <oerjan> OKAY
01:01:58 <Phantom__Hoover> i knew it
01:02:00 <Moon__> I wrote a brainfuck intepreter in it for proof of concept: http://pastebin.com/raw/680vBM4U
01:02:11 <Moon__> And turing completeness
01:02:27 <Phantom__Hoover> ironically you aren't actually parsing the brainfuck input like you should
01:02:32 <Moon__> ?
01:02:45 <Moon__> What did i do wrong?
01:02:52 <Moon__> It goes throught the code one char at a time
01:03:11 <Phantom__Hoover> you implement [] as independent jump instructions
01:03:22 <Phantom__Hoover> which admittedly is how the original spec did it
01:03:24 -!- spiette has quit (Ping timeout: 246 seconds).
01:03:43 <Moon__> next means just ignore it
01:03:51 <Moon__> and go to the next char
01:04:23 <hppavilion[1]> But with the additional allowance that, instead of moving a piece, you may take the abs() of a piece or the sum or product of two pieces, where such an operation produces a piece with the position of the abs/sum/product of its inputs when they are treated as rank+file*i
01:04:33 <Phantom__Hoover> whereas i would argue that [] loops are a syntactic construct and should be treated as such
01:04:43 <hppavilion[1]> Phantom__Hoover: Either solution is valid ATM
01:05:07 <Moon__> Well, my language is turing complete at least
01:05:11 <hppavilion[1]> Phantom__Hoover: I actually made a quite nice extension using the stack model (didn't publish it because it was a BF derivative)
01:05:29 <Phantom__Hoover> i.e. the implementation should scan through the program and construct an AST of normal instructions and loops containing blocks of normal instructions
01:05:33 <hppavilion[1]> Phantom__Hoover: [] behaves as normal, and {} are like [] except they do nothing but serve as labels
01:05:39 <Phantom__Hoover> ('normal' meaning '+-<>.,')
01:06:01 <hppavilion[1]> [] is while, {] is do-while, [} is if-then, {} is... well, that's just do
01:06:12 <oerjan> actually the "Use defines" command is sort of esoteric, i think.
01:06:13 <Phantom__Hoover> Moon__, at the very least an implementation like that would demonstrate interesting data manipulation, rather than just iteration on an array
01:06:20 <oerjan> er *use
01:06:32 <hppavilion[1]> It's basically scope, but BF doesn't exactly do scope, so it's useless
01:06:51 <Phantom__Hoover> even then, the brackets match each other and should be parsed
01:07:18 <Moon__> i beleive they wrk, only a function interpreter could prove me wrong
01:07:19 <hppavilion[1]> Moon__: Does it crash if the brackets don't match? As in, a surplus of leading brackets?
01:07:42 <Moon__> The lex implentation should prevent running off the file
01:08:23 <Moon__> Thats up to the person who implents it, really
01:08:30 <hppavilion[1]> Moon__: But does it crash if there are extra [s that DON'T try to look for their partner (e.g. if they're always prefixed with [-])?
01:08:33 <Phantom__Hoover> it's not about how well the interpreter actually runs
01:09:08 <Moon__> It will stop, yes, but the intepreter wont full crash
01:09:17 <Phantom__Hoover> it's about properly acknowledging the structure of the interpreted program, and making your interpreter implement something more interesting than the bog standard interpreter that everyone's written in C
01:09:27 <hppavilion[1]> Phantom__Hoover: I'm a fan of BF's stack strategy- they're a syntactic construct to a naive onlooker, yes, but if you can get away without parsing, goodonya
01:10:18 <Moon__> if someone wanted ,they could use 'on error <errorname>' constructs to handle errors like that
01:10:22 <oerjan> if you don't parse you're doomed to get quadratic overhead on looping
01:10:42 <oerjan> um maybe quadratic is the wrong word
01:10:50 <hppavilion[1]> oerjan: Ah, yes, that too
01:10:53 <Phantom__Hoover> i'm not sure it's worse than a constant overhead
01:10:55 <hppavilion[1]> oerjan: Exponential? Polynomial?
01:10:55 <tswett> Hey, can all y'all guys access a webpage at this URL? http://nlp.stanford.edu:8080/parser/
01:10:59 <Phantom__Hoover> but it's a really dumb constant overhead
01:11:08 <Phantom__Hoover> tswett, no
01:11:11 <hppavilion[1]> tswett: Nope
01:11:26 <Moon__> No?
01:11:29 <oerjan> Phantom__Hoover: it's not constant if a large loop is frequently skipped
01:11:29 <tswett> So isup.me is lying.
01:11:59 <hppavilion[1]> tswett: Yes, or we live in an oppressive regime and didn't notice the transition
01:12:01 <Moon__> Someone could write the parsar too, easy
01:12:08 -!- tromp_ has quit (Remote host closed the connection).
01:12:09 <hppavilion[1]> Moon__: If it's easy, make one
01:12:15 <hppavilion[1]> Moon__: Demonstrate the ease of your language
01:12:20 <Moon__> im not done with the specs
01:12:39 <Moon__> but they could use loops and 'replace with <char>' for that
01:13:23 <Moon__> what i wrote was a proof of turing completeness, really
01:13:58 <hppavilion[1]> Moon__: Yes, but it's not an elegant proof
01:14:10 <Moon__> Doesnt need to be
01:14:11 <hppavilion[1]> Moon__: If you can make a parser in it, the language will be provably interesting
01:14:33 <Moon__> True, ill make something
01:16:06 <oerjan> `` sed -i 's/Mexico/all Mexico/' wisdom/hackego
01:16:11 <oerjan> didn't get it quite right
01:16:13 <HackEgo> No output.
01:16:19 <oerjan> `? HackEgo
01:16:21 <HackEgo> HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing. HackEgo is the slowest bot in all Mexico!
01:17:33 <Moon__> The only problem with writing a parsar is im lazy :P
01:18:00 <shachaf> there's a unix utility that can help with that hth
01:18:09 <Moon__> What?
01:18:24 <oerjan> shachaf: tdnh
01:18:44 -!- ^^v has quit (Ping timeout: 276 seconds).
01:18:46 <shachaf> oerjan: "tdnh" is not in my lexicon hth
01:18:54 <Moon__> `lex
01:19:15 <oerjan> also, lex cannot parse brackets, can it?
01:19:24 <HackEgo> No output.
01:19:30 <oerjan> it's regexp-based, you need yacc/bison.
01:19:50 <oerjan> `which lex
01:19:52 <HackEgo> ​/usr/bin/lex
01:20:09 <Moon__> 'run external command @echo off
01:20:29 <Moon__> thats a theoretical lex command :P
01:20:53 <hppavilion[1]> Oh my god
01:20:59 <Moon__> ?
01:20:59 <oerjan> Moon__: sounds unlikely, since @echo off is the kind of thing you _don't_ implement externally.
01:21:03 <shachaf> oerjan: i said it can help, not that it'll do the whole job for you
01:21:09 <shachaf> and also i didn't name a utility
01:21:19 <hppavilion[1]> Dinosaur Comics: "THIS COMIC WILL NOT BE DISPLAYED TWICE"
01:21:20 <Moon__> is it 1sed
01:21:21 <oerjan> although someone here manage to make an external cd, so...
01:21:27 <oerjan> *managed
01:21:29 * hppavilion[1] refreshes the page
01:21:32 <hppavilion[1]> Different comic
01:21:46 <hppavilion[1]> Oh, it's the same with a different ending
01:22:07 <oerjan> hppavilion[1]: "with a different text" hth
01:22:07 <Moon__> would you all try writing in lex?
01:22:11 <oerjan> >_> <_<
01:22:19 <hppavilion[1]> oerjan: Yesh, there we go
01:22:21 <hppavilion[1]> Moon__: No
01:22:23 <hppavilion[1]> *yeah
01:22:45 <hppavilion[1]> Moon__: Make the language interesting and we will gravitate towards it
01:22:55 <Moon__> K
01:23:09 <oerjan> Moon__ is going through the try-to-make-others-use-his-language phase. soon, the despair.
01:23:49 <oerjan> then the vodka.
01:25:11 <Moon__> *is a electric badmitten racket maniac*
01:25:27 <Moon__> *trying to electricute flys*
01:25:37 <oerjan> so mad he forgets /me again
01:31:35 -!- tromp_ has joined.
01:32:15 <Moon__> Hi tromp
01:32:26 <tromp_> hi
01:35:51 <oerjan> `ls atmospheres
01:35:56 <HackEgo> atmospheres
01:36:01 <oerjan> `culprits atmospheres
01:36:16 <HackEgo> oerjan
01:36:21 <oerjan> oh duh
01:36:25 <oerjan> `rm atmospheres
01:36:30 <HackEgo> No output.
01:38:35 <izabera> how do you deal with spam on the eso wiki?
01:38:54 <oerjan> there's a captcha and a spam filter
01:39:01 <izabera> thanks
01:39:14 <oerjan> and some blocked ips
01:39:50 <oerjan> the spam filter is rules handcrafted by ais523
01:40:20 <izabera> like matching viagra?
01:40:40 -!- Moon__ has quit (Quit: jIRCii - http://www.oldschoolirc.com).
01:40:56 <oerjan> no. because bots don't understand proper wiki formatting, nearly all have strange but obvious things like <br> instead of newlines
01:41:30 <oerjan> *spambots
01:41:43 -!- Phantom__Hoover has quit (Read error: Connection reset by peer).
01:43:03 -!- Moon_ has joined.
01:43:09 <Moon_> back
01:43:58 <oerjan> so afaik there are no filters based on what the spammers try to advertise.
01:44:33 <izabera> why not just recaptcha?
01:45:07 -!- tromp_ has quit (Remote host closed the connection).
01:45:48 -!- tromp_ has joined.
01:46:00 <oerjan> izabera: well those spammers that bother to hire out to a human captcha solver get through anyway.
01:46:59 <oerjan> last autumn or so some of them did that. but after ais523 updated the filters again, those held.
01:47:38 <oerjan> izabera: we were sort of running an experiment where we were using just _one_ captcha. and until last autumn that was pretty good.
01:47:50 <izabera> one?
01:47:54 <izabera> like, never changing?
01:47:56 <oerjan> (it just occasionally had to be changed, but just one.)
01:48:09 <oerjan> not automatically, no.
01:48:59 <izabera> that probably doesn't scale too well
01:49:19 <oerjan> indeed. it was entirely based on the principle that we're too small to target specifically.
01:49:49 <oerjan> (if not, the filters probably would have been got around too)
01:53:07 <Moon_> i have decided to write a chatbot in C++
01:56:58 <izabera> why
01:58:05 <Moon_> Cuz
02:00:26 <Moon_> No reinventing the wheel, ill start from a skeleton, add the meat
02:01:20 -!- tromp_ has quit (Remote host closed the connection).
02:10:50 <lifthrasiir> making a skeleton generally classifies as reinventing the wheel :)
02:11:28 <lifthrasiir> but well, if you know enough C++11 and have boost at hands, not *that* hard I guess
02:12:25 <izabera> import cleverbot
02:12:28 <izabera> #done
02:13:06 <Moon_> its a irc bot >_>
02:13:13 <izabera> neither is cleverbot
02:13:20 <izabera> oh
02:13:22 <izabera> i read that wrong
02:22:47 <Moon_> Anyone feel like (code)golfing?
02:25:26 <oerjan> i think the golfers are currently busy doing laver tables in binary lambda calculus.
02:27:07 <Moon_> i was thinking about challanging you all to write a brainfuck intepreter in the esolang of your choise
02:27:08 <quintopia> i like golfing
02:27:19 <quintopia> bindun
02:27:38 <lifthrasiir> I have a programming language that is basically identical to brainfuck except that the empty program is a self-interpreter.
02:27:39 <Moon_> as small as possible
02:27:52 <Moon_> id call that cheating :P
02:28:28 <Moon_> just dont use cheaty ones and im ok with it
02:28:49 <lifthrasiir> no, it is a rule-bending. after all golfing across different languages is... uh... not really worth arguing.
02:28:59 <lifthrasiir> rule-bending one*
02:29:08 <shachaf> Are you a golpher?
02:29:11 <shachaf> Like the animal.
02:29:19 <lifthrasiir> shachaf: gollang.
02:29:22 <Moon_> no-.-
02:29:30 <shachaf> lifthrasiir: Game of life language?
02:29:39 <lifthrasiir> shachaf: sounds great
02:29:45 <lifthrasiir> never thought in that way
02:29:55 <quintopia> Moon_: you think to compare cross-lang to get shortest interp?
02:30:04 <Moon_> Yea
02:30:56 <quintopia> i can't think what would be the best lang for that purpose
02:31:09 <quintopia> i wonder how long a jelly interp would be
02:32:16 -!- jaboja has quit (Remote host closed the connection).
02:32:35 <Moon_> http://chat.stackexchange.com/rooms/27364/esoteric-programming-languages
02:32:37 <Moon_> i found home
02:32:42 <Moon_> gnight
02:33:01 <lifthrasiir> SE had a chat? I didn't know
02:33:50 <quintopia> the 103 byte simplex solution is the shortest one i can find
02:34:07 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
02:34:13 <quintopia> Moon_: that chat has very sporadic activity
02:35:52 <lifthrasiir> Brian Raiter had 166-byte-long ELF binary (!) for BF interp http://www.muppetlabs.com/~breadbox/software/tiny/bf.asm.txt
02:36:18 <oerjan> activity spores
02:37:34 <quintopia> i bet i could do it in under 100
02:37:34 -!- Moon_ has quit (Ping timeout: 260 seconds).
02:37:41 <quintopia> (not a binary)
02:37:42 <tromp> Moon_: 103 bytes barely beats my Binary Lambda Calculus one
02:38:14 <tromp> which is 5 bits longer
02:38:26 <quintopia> oh
02:38:36 <quintopia> so you're not tuomas laakkonen
02:38:45 <quintopia> or are you
02:38:48 <oerjan> can we just declare BLC to be cheating and get it over with >:)
02:38:59 <tromp> cheating how:-?
02:39:01 <quintopia> no
02:39:08 <oerjan> tromp: it's TOO GOOD hth
02:39:14 <quintopia> pfft
02:39:34 <lifthrasiir> let's make BLC plus adaptive compression
02:39:53 <tromp> you don't need to
02:39:54 <quintopia> you could do better
02:39:58 <shachaf> 22:41:09 <shachaf> tromp: https://en.wikipedia.org/wiki/Binary_lambda_calculus says that Haskell-style I/O requires a type system, but that isn't true.
02:40:01 <shachaf> 22:41:59 <shachaf> Not that BLC would benefit from Haskell-style I/O, for the things it's typically used for.
02:40:32 <tromp> how would you do Haskell style IO shachaf?
02:41:06 <tromp> extend the lambda calculus with readbit and writebit primitives?
02:41:30 <shachaf> For example with an a sum type like data IO = ReadBit (Bool -> IO) | WriteBit Bool IO | Done
02:41:41 <shachaf> Or you can make it a monad if you want to.
02:41:51 <tromp> that's not untyped then?!
02:41:56 <shachaf> Of course you'd have to encode it in lambdas.
02:42:20 <oerjan> just use original haskell 1.0 hth
02:42:33 <shachaf> But the type system isn't really what prevents Haskell programs from mixing up "IO a" and "a", which is what that entry looked like it suggested.
02:42:47 <shachaf> oerjan: haskell 1.0 doesn't exist hth
02:42:57 <tromp> the type sysmtem is needed to serialize io primitives
02:43:12 <shachaf> What do you mean?
02:43:16 <shachaf> If you can encode a list, you can encode this type.
02:43:52 <tromp> you need to prevent things like writebit applied to writebit
02:43:58 <oerjan> shachaf: hm?
02:45:00 <tromp> also, you dont want order of io operations to depend on order of evaluation
02:45:04 -!- centrinia has quit (Quit: Leaving).
02:45:06 <shachaf> It doesn't.
02:46:03 <shachaf> I wrote about this a bit in http://stackoverflow.com/a/13538351
02:46:55 <shachaf> When you encode a list in lambda calculus, do you need to prevent things like cons applied to a non-list?
02:46:56 <oerjan> shachaf: https://www.google.no/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwj4zdWEsc7MAhUK2SwKHWtSA0YQFggbMAA&url=https%3A%2F%2Fwww.haskell.org%2Fdefinition%2Fhaskell-report-1.0.ps.gz&usg=AFQjCNERSb6UmbpF5lvDfv5V3HZsJsVKlg&bvm=bv.121099550,bs.1,d.bGg
02:47:03 <shachaf> good url
02:47:12 <oerjan> stupid google doesn't let me link directly without opening it
02:47:22 <shachaf> it was meant to be a joke about old things not existing
02:47:28 <shachaf> but i didn't really think it through
02:47:49 <shachaf> MAYBE
02:48:10 <shachaf> or maybe it existed so much that it wrapped around to not existing
02:48:28 <shachaf> more than you'll ever exist
02:48:30 <shachaf> `? ørjan
02:48:33 <HackEgo> ​Ørjan is oerjan's good twin. He's banned in the IRC RFC for being an invalid character. Sometimes he publishes papers.
02:49:59 <oerjan> . o O ( a solipsistic AI simulation )
02:50:05 -!- hppavilion[1] has joined.
02:50:28 <shachaf> are ørjan and oerjan påls
02:51:23 <oerjan> are you going to drag pål-ørjan into this, i had almost forgot the guy
02:53:11 <oerjan> looks like he has a twitter https://twitter.com/po_johansen
02:54:29 <oerjan> he seems to like LSD
02:56:32 <oerjan> ...and a norwegian wikipedia page.
02:57:41 <tromp> thx for the link shachaf, will slowly digest that
02:57:56 -!- acertain has quit (Quit: Leaving).
02:59:15 <notfowl> +1 LSD
03:00:14 <shachaf> oerjan: wow, even i don't have a norwegian wikipedia page
03:00:35 <shachaf> https://www.reddit.com/r/science/comments/2ywf4a
03:00:38 <oerjan> shocking
03:01:14 <shachaf> "Please note, Pål and Teri do not have PhDs."
03:01:46 <oerjan> shachaf: AAAAAAAAAAA
03:01:56 -!- tromp_ has joined.
03:02:41 <shachaf> oerjan: maybe you can publish a joint paper about lsd homology
03:02:57 <shachaf> well, i guess a joint paper would be about a different drug
03:05:52 <shachaf> oerjan: how come harald didn't name his son pål
03:06:15 <tromp> shachaf: nice write-up, but i don't see how to implement any of your approaches without types
03:06:19 <oerjan> i don't think pål is a traditional royal name
03:06:38 -!- tromp_ has quit (Ping timeout: 276 seconds).
03:07:03 <shachaf> well, this one would be principål
03:07:26 <\oren\> content delivery networks are the webs of the spiderdemon
03:07:33 <shachaf> tromp: I don't see what types have to do with it.
03:08:18 <tromp> ContIO = Exit | PutStrLn String ContIO | GetLine (String -> ContIO) | ... is a type
03:08:30 <shachaf> Yes, and data List a = Nil | Cons a (List a) is a type.
03:08:39 <shachaf> But you can implement lists even in untyped lambda calculus.
03:09:19 <tromp> but you cannot constrain lists in untyped lc
03:09:48 <tromp> PutStrLn needs to constrain its argument to be a string
03:10:05 <shachaf> And Cons needs to constrain its second argument to be a list.
03:10:07 <\oren\> there are two doors between me and my wireless router. my internet is fastest when both are closed.
03:10:18 <\oren\> THIS DOES NOT MAKE SENSE
03:12:10 <tromp> show me an alternative definition of BLC with IO primitives
03:13:47 <tromp> and then we can discuss its semantics
03:14:56 <\oren\> maybe there's some weird geometry in my house that causes the signal to cancel itself out???
03:17:30 <shachaf> There are lots of possible encodings in lambda calculus.
03:18:17 <tromp> pick the simplest
03:18:46 <shachaf> Encode Exit as (\e w r -> e); WriteBit b k as (\e w r -> w b more); ReadBit k as (\e w r -> r k)
03:18:47 <tromp> i just need readbit and writebit
03:19:35 <shachaf> I guess that's the Scott encoding.
03:20:34 <tromp> you lost me alrd:(
03:21:25 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
03:21:32 <oerjan> \oren\: feng shui poltergeist hth
03:21:37 <shachaf> OK, how would you encode a program that generates a list of bits as output?
03:21:41 <shachaf> No input necessary.
03:22:58 <tromp> in my model, any closed lambda term is a program that does binary IO
03:23:31 <tromp> the input bit stream is represented as a list of booleans to which the term is applied
03:23:50 <shachaf> How do you represent a list?
03:24:26 <tromp> cons = \M\N. \z. z M N
03:24:43 <tromp> 0 = \t\f. t
03:24:47 <tromp> 1 = \t\f. f
03:25:12 <shachaf> How do you terminate a list?
03:25:23 <tromp> nil = 1
03:26:26 <shachaf> OK. Would you believe the encoding "cons = \M\N. \c\n. c M N"; "nil = \c\n. n"?
03:26:47 <shachaf> I.e., to consume a list cell, you pass it what to do in the nil case and in the cons case.
03:28:23 <tromp> that works too
03:28:32 <shachaf> OK, so I'm doing the same thing.
03:28:47 <shachaf> Exit = \e\w\r. e
03:28:56 <tromp> i just dont call that monadic IO
03:29:44 <shachaf> I didn't say it was monadic, though you can make it a monad easily enough if you want to.
03:30:32 <tromp> i claimed that having readbit as a *primitive* of the lambda calculus language requires a type system
03:31:27 -!- lambda-11235 has joined.
03:32:03 <shachaf> Maybe we're just talking about different things.
03:32:33 <tromp> i thought we're talking about https://en.wikipedia.org/wiki/Binary_lambda_calculus#Binary_I.2FO
03:33:18 <tromp> where i contrast my approach to IO with that of Chaitin
03:33:27 <shachaf> "unless one distinguishes between an I/O action and its result, as Haskell does with its monadic I/O"
03:33:38 -!- hppavilion[1] has joined.
03:33:42 <shachaf> I'm just saying that the type system isn't what distinguishes between an I/O action and its result.
03:33:52 <shachaf> They're just completely different things.
03:34:12 <shachaf> The type system distinguishes between strings and integers, sure, but even without the type system they'd be different things.
03:34:19 <tromp> i didnt say that
03:34:59 <tromp> i said that a readbit *primitive* with monadic semantics requires a type system
03:35:25 <shachaf> OK. Perhaps I just misunderstood.
03:35:32 <shachaf> Though I think "monadic" is a red herring anyway.
03:36:03 <tromp> you can omit the word monadic there
03:36:44 -!- sebbu has quit (Ping timeout: 244 seconds).
03:37:23 <Cale> It would be good for more languages to make a distinction between IO action values and their results, even in the absence of type systems, and even in the absence of being able to abstract over the choice of a monad.
03:45:26 <tromp> i use the word monadic to emphasize that distinction, but the "requires type system" refers to readbit being a language primitive
03:46:46 <tromp> agree with Cale
03:48:46 -!- centrinia has joined.
03:49:15 <coppro> Cale: why IO specifically and not other side effects?
03:49:28 <coppro> since side effects could indirectly have IO effects
03:50:23 <Cale> coppro: Well, IO is the stuff that you want some sort of support in the language implementation to interpret.
03:50:59 <Cale> It's perfectly possible to carve out a subclass of pure lambda terms which encode IO actions
03:51:24 <Cale> But without some sort of interpreter underneath which is going to carry out the effects, it doesn't really do much for you.
03:52:16 -!- centrinia has quit (Client Quit).
03:53:16 <coppro> Cale: hmm... I'm not sure I agree
03:53:38 <coppro> you do need language implementation (or library implementation) support
03:53:52 <coppro> but I'm not sure that that's a reason to make a distinction
03:54:06 <coppro> integer addition requires implementation support as well
03:54:13 <Cale> Oh, you mean, "why is it a good idea to distinguish IO actions like we do in Haskell"?
03:54:33 <coppro> ohhhh, I misread what you said
03:55:17 <coppro> yeah, I'd still ask why not do that for any function with side effects
03:55:41 <Cale> Well, obviously we'd rather not have arbitrary side effects at the same time
03:55:57 <coppro> hmm
03:56:01 <Cale> The idea is just to encode effects as values of a particular type
03:56:02 <coppro> can you give an example, perhaps?
03:58:04 <Cale> Well, you know how things work in Haskell, right? We have this separate parametric data type, IO t, representing actions which can be carried out and which may have arbitrary effects, before resulting in a value of type t if they succeed.
03:58:51 <coppro> yep
03:59:36 <Cale> You can think of such a value as consisting of some sort of encoding of what to do in what order in terms of various primitive I/O actions. It's possible to represent that entirely with a pure lambda term, taking the I/O primitives and bind, and return as arguments, and sticking them together somehow.
03:59:52 <coppro> right
04:00:35 <Cale> Not that you'd *need* to do this in an arbitrary other language -- just to say that as soon as your language is expressive enough to have lambda terms, it's expressive enough to represent IO actions purely.
04:00:47 <coppro> right
04:01:42 <coppro> I guess I don't really see the benefit in a language not built around purity
04:01:56 <Cale> Having such a concept is nice because it lets you not worry about effects during evaluation -- you have this separate notion of the execution of one of these IO actions, where the thing is taken apart and the steps described are carried out
04:02:33 <coppro> right
04:02:37 <Cale> Well, it gives you a really nice formulaic way to pull a bunch of messy stuff out of the description of evaluation.
04:02:50 <coppro> yeah
04:02:52 <Cale> So in some sense, it's all about making the language more pure
04:03:04 <Cale> But my point is that it really doesn't *require* a type system
04:03:04 <coppro> I guess I was just thinking of trying to staple that onto, say, an OO language
04:03:29 <Cale> It probably requires lambdas to not pull your hair out in anguish
04:03:34 <coppro> yeah
04:03:40 <shachaf> Cale: You're making a similar point to the one I was making a few pages up, I think.
04:03:43 <coppro> that would be a neat esolang actually
04:03:43 <Cale> You're going to want something akin to bind and/or do-notation anyway
04:03:51 <coppro> pure OOP
04:03:53 <coppro> POOP
04:03:57 <Cale> shachaf: I'm basically rephrasing what you were talking about
04:04:11 <shachaf> With more emphasis on monads, maybe.
04:04:24 <shachaf> I don't know that you get that much benefit out of having a monadic interface.
04:05:41 <Cale> Well, you need *some* ways to glue these IO actions together. I hesitate to say that providing return and bind as operations is really giving you "monads" in any real sense, because the whole story about abstracting over a choice of monad is still lots more work.
04:06:21 <Cale> But yeah, if you prefer to glue together IO actions in some other ways, then those are fine too
04:06:51 <shachaf> Well, the type you would get is a monad, whether or not you recognize it.
04:08:11 <Cale> Yeah -- though recognising it may not have much use if it doesn't let you write code which will work with any monad and reuse it.
04:10:27 <Cale> Like, people implement Maybe or State in various other languages, and they implement the monad operations for them, but I would resist the notion that they're "programming with monads" just for having done so -- the point at which you really start to use monads is when you write something like sequence or liftM2 and have it work for all the monads you'll ever define.
04:10:55 <shachaf> People's implementations of Maybe are often scow because they collapse Nothing and Just Nothing.
04:11:00 <Cale> hah
04:11:04 <Cale> Yeah, that too
04:11:17 <Cale> btw, did you know that Aeson's JSON encoding of Maybe does that?
04:11:36 <shachaf> No.
04:11:44 <Cale> I didn't, until information started getting destroyed in transit between my web frontend and backend
04:11:44 <shachaf> I guess it kind of fits with the JSON model.
04:12:28 <coppro> yeah
04:12:32 <coppro> the JSON model is odd
04:12:42 <\oren\> shachaf: Maybe Nothing is a stupid type
04:12:42 <coppro> partly because of its genesis in javascript
04:12:54 <shachaf> \oren\: But it's a great value.
04:13:10 <coppro> JavaScript can't really distinguish between an explicit and implicit null
04:13:22 <coppro> at least, not without effort
04:13:26 <Cale> We use the Template Haskell stuff to write all our ToJSON/FromJSON instances for both the frontend and backend of our apps, and so mostly don't have to worry about how anything is being encoded
04:13:36 <oerjan> :k Maybe 'Nothing
04:13:37 <lambdabot> The first argument of ‘Maybe’ should have kind ‘*’,
04:13:37 <lambdabot> but ‘Nothing’ has kind ‘Maybe k0’
04:13:37 <lambdabot> In a type in a GHCi command: Maybe Nothing
04:13:43 <oerjan> OR NOT
04:13:50 <coppro> Cale: IIRC the Maybe Nothing thing was an accident rather than by design, wasn't it?
04:14:03 <Cale> coppro: Yeah, well, kinda
04:14:04 <shachaf> \oren\: Wait, never mind.
04:14:18 <coppro> Cale: I mean, how would you otherwise distinguish them in JSON?
04:14:28 <coppro> since the default encoding of Maybe Foo is either as null or a Foo
04:14:29 <Cale> coppro: They should be records with a tag
04:14:39 <coppro> that doesn't match common usage at all though
04:14:46 <Cale> Aeson has template haskell code which will construct instances for an arbitrary algebraic data type
04:14:58 <Cale> they should have just used the TH code to write the instances, and everything would be good :)
04:15:01 <\oren\> > Maybe Nothing
04:15:03 <lambdabot> Not in scope: data constructor ‘Maybe’
04:15:03 <lambdabot> Perhaps you meant variable ‘maybe’ (imported from Data.Maybe)
04:15:04 <coppro> it wouldn't though
04:15:06 <Cale> > Just Nothing
04:15:08 <lambdabot> Just Nothing
04:15:10 <coppro> because then they wouldn't have a way to deserialize null
04:15:21 <\oren\> :t Just Nothing
04:15:22 <lambdabot> Maybe (Maybe a)
04:15:38 <\oren\> :t Nothing
04:15:39 <lambdabot> Maybe a
04:15:57 <\oren\> :t Just Just Nothing
04:15:57 <coppro> Cale: like, if it was a record with a tag, so would the inside
04:15:58 <lambdabot> Couldn't match expected type ‘Maybe a1 -> t’
04:15:58 <lambdabot> with actual type ‘Maybe (a0 -> Maybe a0)’
04:15:58 <lambdabot> The function ‘Just’ is applied to two arguments,
04:16:11 <\oren\> :t Just (Just Nothing)
04:16:12 <lambdabot> Maybe (Maybe (Maybe a))
04:16:24 <Cale> coppro: Well, I suppose I'm in a bit of a special position. We're using Haskell all the way through the applications I'm working on, so we don't actually *care* what the JSON looks like, so long as it's a faithful representation of the Haskell values.
04:16:25 <coppro> so you'd have { "isNull": "false", "value": { "isNull": "false", "value": "something" } }
04:16:39 <coppro> Cale: yeah, that's an unusual use case
04:17:01 <\oren\> hey i Just met you, and this is crazy, so here's my Number, so call me Maybe
04:17:09 <coppro> being able to understand nulls for a datatype is important for things like JSON merge-patch
04:17:23 <Cale> But yeah, the problem is that Just x can't be encoded the same way as x
04:17:33 <Cale> It needs *some* kind of wrapper
04:17:40 <coppro> it can *except* if x is itself a Maybe
04:17:46 <coppro> or more accurately
04:17:51 <coppro> if x itself has a null value
04:18:00 <coppro> Aeson's model is that Maybe should be the only thing with a null value though
04:18:24 <Cale> Yeah, I suppose you could do a bunch of awful type class nonsense to try to express which types have a JSON encoding that encodes something as null
04:18:43 <coppro> you *could* define types like MaybeFoo = NoFoo | HasFoo Foo and serialize them "correctly"
04:18:54 <Cale> Yeah, I ended up using Either ()
04:19:51 <coppro> I think I recall that conversation actually, now that I think about it
04:19:53 <coppro> yeah that works
04:20:00 <coppro> there's an iso anyway :P
04:20:06 -!- nisstyre has quit (Ping timeout: 246 seconds).
04:20:15 <Cale> Yeah, it's just a really annoying gotcha
04:24:18 <Cale> I'd expect that in most cases where you had some particular JSON format you wanted to match, you'd be defining your own types to represent its values, and writing the ToJSON and FromJSON by hand anyway, and so you might as well handle the nulls yourself then.
04:24:38 <Cale> (rather than having the Maybe instance do it for you)
04:25:26 <coppro> I think that's unlikely
04:25:44 <coppro> I think the more realistic case is that you would have Maybe handle it
04:26:08 <coppro> since it would be thins like "this field is either a string or null"
04:27:04 <Cale> You could still have some explicit "nullable" JSON parser combinator, which does that
04:27:21 <Cale> But I dunno, I don't think of Maybe as being the same thing as nullable.
04:28:29 <shachaf> I think realizing the importance of things like Just Nothing vs. Nothing is one of the benefits you get from learning Haskell.
04:30:07 <Cale> In my case, it came up sort of semi-automatically (it would have been in a case where the type to use would have been determined by associated types, but we hadn't yet got to the point of automating it when I ran into the problem)
04:30:25 <coppro> Cale: I think the use cases of nullables and Maybe are pretty similar
04:30:35 <Cale> Basically, the thing was regarding representing patches to a Map k v as values of type Map k (Maybe v)
04:31:08 <Cale> (this isn't a perfect encoding in general, since you'd really want that to involve a type representing a patch to a v, but regardless...)
04:31:37 <Cale> When v happened to already be Maybe t, this mysteriously fell over at runtime
04:31:46 <coppro> yeah
04:31:53 <Cale> and it was quite hard to track down what the heck was happening
04:32:37 <Elronnd> I'm thinking of writing an extension to brainfuck -- would it be against the spirit of bf to add a single cell that can hold strings, for file handling and env variables?d
04:32:46 <Cale> (would have been harder still if the type class machinery for representing patches that we have now was in place)
04:33:28 <Cale> But yeah, it sucks a bit needing to be careful that these type level programs which compute the types of patches don't accidentally put two Maybe's in a row
04:33:56 <coppro> Cale: yeah, I feel like the "correct" solution there from a usability + workingness perspective would be to identify some types as supporting explicit nulls so that you can serialize them appropriately
04:34:10 -!- Moon_ has joined.
04:34:18 <Cale> I think the correct solution is just to treat Maybe as you would any other algebraic data type
04:34:18 <coppro> the more JSON-y way would probably be null vs. { "value": null } vs. { "value": value }
04:34:31 <Cale> The TH instance is *fine*
04:34:32 <coppro> that sucks for common users now
04:34:52 <Cale> I don't think I agree -- note that it's only the *default* behaviour for Maybe
04:35:11 <coppro> I'm Joe Stupid trying to use Aeson, I have a field which is encoded as either null or an integer
04:35:47 <coppro> I try "Maybe Integer" but it always gives an error. I try "Integer" but it can't deserialize null. I give up and go use JavaScirpt.
04:36:15 <Cale> We can still provide something like parseNullable :: Value -> Parser (Maybe a)
04:36:34 <coppro> but now I have to explicitly write my To/FromJson instances
04:36:37 <Cale> well, parseNullable :: (FromJSON a) => Value -> Parser (Maybe a)
04:37:08 <Cale> yeah, well, if you care about the precise JSON representation, it makes sense to be doing that anyway
04:37:09 <shachaf> Cale: how come sql doesn't have let ... in ...
04:37:19 <shachaf> how do people live without it
04:37:19 <Cale> shachaf: because it's scow?
04:37:36 <shachaf> can't argue with that
04:37:42 <Cale> hahaha
04:38:05 <coppro> Cale: I don't think that's the point of Aeson, though.
04:38:06 <Cale> If you're at all interested in writing a new database, I have a few feature requests :P
04:39:07 -!- Moon_ has quit (Ping timeout: 260 seconds).
04:39:27 <Cale> I really want a database with which my application can register a query in a semi-permanent fashion, and any time that a transaction commits which might affect the result of that query, the DB sends my application a diff of the results.
04:39:43 <coppro> oh apparently someone opened an issue
04:39:44 <coppro> https://github.com/bos/aeson/issues/376
04:39:44 <shachaf> Cale: http://www.rethinkdb.com/ hth
04:40:01 <shachaf> (I worked at that company a few years ago, though it was a very different database back then.)
04:40:20 <coppro> Cale: oh wait that's you
04:40:28 <coppro> Cale: maybe that wasn't you who I remember complaining about it then
04:40:35 <coppro> I recall this discussion quite a while back
04:40:37 <Cale> shachaf: Oh, yeah, I also want it to be statically typed.
04:40:42 <Cale> coppro: Yeah, that was me :)
04:40:50 <shachaf> Well, obviously you would want that.
04:41:16 <Cale> shachaf: and I want sum typed columns
04:41:44 <Cale> e.g. "this column is a primary key of table A, B, or C, and we know which"
04:41:56 <shachaf> You mean that the value at a particular column is sum typed, or that you have one of a set of possible sets of columns?
04:42:13 <Cale> The value at a particular column
04:42:41 <Cale> and then the query language needs to be able to case on that information obviously
04:43:17 <coppro> might have been when I was lurking #yesod
04:43:45 <Cale> coppro: Well, I had most of this conversation in the bug ticket :)
04:44:06 <Cale> I don't hang out in #yesod, so it wouldn't have been there
04:44:18 <Cale> I might've mentioned it in #haskell at the time
04:44:27 <shachaf> Cale: What do you think about protobufs?
04:44:44 <shachaf> The interesting thing about them is that they let you change a data type and keep backwards compatibility.
04:44:53 <Cale> shachaf: I don't know enough about them to have a strong opinion
04:45:03 <shachaf> Which is somewhat in contrast to the Haskell philosophy of having a type be able represent exactly the values you want and no more.
04:45:50 <shachaf> I'm not sure how to reconcile the two.
04:46:16 <coppro> Cale: I don't think it was you, since it was definitely IRC and many months ago
04:46:23 <coppro> Cale: the JSON merge-patch spec is actually a great example of JSON null conflation
04:46:33 <coppro> common usage of JSON treats null weird
04:47:07 <\oren\> we use a sort of typed json at my work. the json is parsed into C++ a struct
04:47:18 <Cale> coppro: If people want to shoot themselves in the foot by conflating Nothing and Just Nothing, there probably should be a way to do it, but I don't think it should be the default thing
04:47:38 <\oren\> and if it doesn't mathc the layout, it throws a character pointer
04:47:41 <Cale> coppro: You could also make a newtype for it.
04:48:05 <Cale> (and put a big warning label on it regarding what happens when you nest them)
04:48:24 <shachaf> Protobufs are certainly a better way to do communication and serialization than JSON for a lot of things.
04:48:25 -!- nisstyre has joined.
04:49:36 <\oren\> i forget where I was going with this
04:51:21 <Cale> shachaf: In our case, the thing we really need some sort of migration strategies for is with respect to the database (this is the main reason we're using groundhog, which is a library very similar to persistent, and I don't really understand the differences), moreso than the stuff we use JSON for.
04:51:41 <Cale> We *could* be just using Binary instances :)
04:52:38 <Cale> It's just nice that when something goes wrong, the browser can show you the JSON and it's somewhat readable, if ugly.
04:52:39 <shachaf> Google's use case for protobufs is approximately everything.
04:52:44 <shachaf> Including RPC, for instance.
04:54:59 <coppro> Cale: I agree that it shouldn't allowed
04:55:17 <coppro> I like the idea of forbidding nesting and leaving the instance more than I like the idea of changin gthe instance
04:55:56 <coppro> because the other instance is usually the correct one
04:56:08 <coppro> anything else is asking for unnecessary gymnastics on the user's part
04:56:12 <Cale> coppro: I sort of agree with you from the perspective of "what's most convenient for existing users", but I have half a mind just to fork the entire library to fix the thing :)
05:01:59 -!- tromp_ has joined.
05:06:53 -!- tromp_ has quit (Ping timeout: 276 seconds).
05:14:11 <HackEgo> [wiki] [[User:Elronnd]] N https://esolangs.org/w/index.php?oldid=46989 * Elronnd * (+115) Created
05:15:34 -!- mukaiten has joined.
05:16:21 -!- mukaiten has quit (Remote host closed the connection).
05:21:01 <\oren\> goddamn ksp changing their wheel physics
05:29:53 <oerjan> physics rotation
05:33:27 -!- sebbu has joined.
05:34:16 <HackEgo> [wiki] [[User:Elronnd/brainfcuk]] N https://esolangs.org/w/index.php?oldid=46990 * Elronnd * (+2905) First steps
05:39:34 <HackEgo> [wiki] [[User:Elronnd/brainfcuk]] https://esolangs.org/w/index.php?diff=46991&oldid=46990 * Elronnd * (+32) update
05:41:47 <shachaf> ski: Do you know the type zzo38 calls CodensityAsk?
05:42:30 <ski> i haven't seen it
05:43:00 <shachaf> newtype CodensityAsk f a = CodensityAsk { runCodensityAsk :: forall r. f r -> (a -> r) -> r }
05:44:51 <ski> ok
05:45:47 <shachaf> zzo38 points out that CodensityAsk ((->) x) = Either x; CodensityAsk (Const x) = ((->) x); CodensityAsk Endo = Writer (Sum Natural); CodensityAsk Finalize = Identity; CodensityAsk Identity = Maybe
05:46:04 <shachaf> Where Finalize = Proxy, I guess.
05:46:55 <oerjan> hm was that the one we discussed adapting the (co?)yoneda lemma to?
05:47:12 <oerjan> in order to show those equivalences
05:47:23 <shachaf> I don't remember that.
05:48:01 <oerjan> hm maybe it was something differnet.
05:48:08 -!- Caesura has quit (Ping timeout: 265 seconds).
05:48:31 <oerjan> (some typos refuse to be fixed)
05:49:08 <shachaf> maybe you're thinking of dithernet
05:49:16 <shachaf> like ethernet, but with more dithering
05:49:32 <oerjan> nope
05:50:01 <oerjan> i recall (x,x) was represented using Bool
05:51:03 <oerjan> hm i think it was some connection between expressing a functor f in terms of f ()
05:51:22 <shachaf> Representable functors?
05:51:26 <oerjan> perhaps
05:52:09 <oerjan> anyway it involved something yonedal
05:54:44 <ski> shachaf : <https://en.wikibooks.org/wiki/Structured_Query_Language/with_clause>
05:55:14 <shachaf> fizzie: Actually I wish Dremel had let.
05:56:45 <pikhq> I assume you're not talking about the Dremel I'm thinking of.
05:56:53 <shachaf> I think I am.
05:57:03 <pikhq> Oh, okay then.
05:57:10 <shachaf> Why? Does it have let?
05:57:17 <pikhq> Not to my knowledge.
05:57:28 <shachaf> Mysterious assumption.
05:57:31 <pikhq> Don't have access to the docs for it, but don't think so.
05:57:43 <pikhq> I assume dumb things all the time.
06:02:04 -!- Shubshub has joined.
06:02:41 <Shubshub> Hey everyone
06:02:48 <pikhq> Hello.
06:03:50 <prooftechnique> arPhttps://www.dremel.com
06:04:09 <shachaf> HTTPS over ARP?
06:04:10 <prooftechnique> Hmm... https://www.dremel.com
06:04:29 <prooftechnique> I must have typed something with this window focused
06:04:37 <prooftechnique> I can't imagine what, though
06:06:27 <ski> shachaf : ok ?
06:06:53 <shachaf> I thought it was pretty neat, is all.
06:07:02 <shachaf> It's related to adjunctions somehow, I think.
06:07:39 <shachaf> After all, you know the definition of free objects that goes newtype Thing k a = Thing { runThing :: forall r. k a => (a -> r) -> r }
06:07:49 <ski> <shachaf> Cale: how come sql doesn't have let ... in ...
06:08:00 <ski> my link was in response to that ^
06:08:34 <shachaf> Except a class can have laws and a type presumably doesn't.
06:09:05 <shachaf> ski: Yes, I know.
06:09:26 <ski> ok
06:10:58 <HackEgo> [wiki] [[User:Elronnd/brainfcuk]] https://esolangs.org/w/index.php?diff=46992&oldid=46991 * Elronnd * (+1688) file handling
06:31:33 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
06:35:08 -!- hppavilion[1] has joined.
07:04:16 -!- tromp_ has joined.
07:08:33 -!- tromp_ has quit (Ping timeout: 240 seconds).
07:29:23 -!- lambda-11235 has quit (Quit: Bye).
07:37:22 -!- Shubshub has quit (Quit: On the other hand, you have different fingers.).
07:48:44 <b_jonas> whew
07:51:19 -!- rdococ has joined.
07:53:00 -!- TellsTogo has quit (Ping timeout: 250 seconds).
08:12:41 <Elronnd> b_jonas: ?
08:25:32 <fizzie> fungot: Will you, yourself, bring an end to all?
08:25:33 <fungot> fizzie: i was just dropping by and told the message about increasing the stack size a while ago back when we were playing around with variable allocation to attempt to solve impossible problems
08:26:05 <fizzie> Well, I'm guessing that's as good an approach as any to solve impossible problems.
08:27:37 -!- zadock has joined.
08:34:23 <shachaf> fungot: hungot
08:34:23 <fungot> shachaf: but if another program will halt or not
08:34:46 <shachaf> fungot: you just worry about yourself halting or not. let us worry about other programs.
08:34:46 <fungot> shachaf: maybe so that the c literature doesn't use that many scheme primitives, only, max and make-string.
08:39:44 -!- zadock has quit (Quit: Leaving).
08:50:48 <fizzie> fungot: Do you have a halting oracle?
08:50:49 <fungot> fizzie: i could allocate esoapi a fnord of a
08:58:13 <oerjan> ^style ct
08:58:13 <fungot> Selected style: ct (Chrono Trigger game script)
08:58:31 <oerjan> fungot: what about using a sword?
08:58:32 <fungot> oerjan: are you a man, if there weren't evil in this kingdom to you!
08:59:03 <oerjan> fungot: well sort of evil.
08:59:03 <fungot> oerjan: as long as you keep crono in your heart, the day of lavos"... go to " leene square" 1000 a.d.? yes, i'd have done something very brave! he's probably up north, to guardia!!! let's toast our land! now we'll have some peace! magus is a tad on the spooky side. our only hope.
08:59:27 <oerjan> fungot: peace would be nice.
08:59:27 <fungot> oerjan: your majesty! and queen. he and a friend left on a journey 10, then magic damage will be reduced by 10%. a star after any characteristic means it's at maximum strength! no matter what the price! it is, you idiot! hey! is that for us! the chef's in a snit, trying to get food to the front lines. heard a spell to energize the sword takes immense evil! indeed! this thing. what you have? transform! this trading house. it's t
08:59:56 <oerjan> fungot: ah. better to drop the sword, then.
08:59:56 <fungot> oerjan: are you a man, if there weren't evil in this kingdom to you!
09:00:02 <oerjan> ^style irc
09:00:02 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
09:02:03 <fizzie> indeed! this thing.
09:14:40 <shachaf> ^style calvinandhobbes
09:14:40 <fungot> Not found.
09:17:36 <oerjan> ^style
09:17:36 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp youtube
09:32:03 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
09:47:48 -!- AnotherTest has joined.
10:00:03 -!- oerjan has quit (Quit: Later).
10:21:11 -!- TellsTogo has joined.
10:38:55 <izabera> what's the closest alternative to google code search?
10:39:57 <lifthrasiir> izabera: rsc had a standalone version of google code search I think?
10:40:03 <lifthrasiir> but only for *your* code.
10:41:52 <izabera> but i want other people's code
10:42:02 <izabera> really
10:42:57 <izabera> reading that imagemagick thing made me wonder how many projects call system() without proper input sanitization
10:43:03 <lifthrasiir> github search?
10:43:12 <izabera> that's not good enough :(
10:43:14 <lifthrasiir> no regex, unfortunately
10:48:18 <Taneb> ImageMagick thing?
10:49:01 <izabera> imagemagick is stupid and it calls system(something) with user input in it
10:49:14 <Taneb> I mean, I'd believe it
10:49:17 <izabera> https://imagetragick.com/
10:50:44 <Taneb> OK
10:51:02 <Taneb> I'm glad that this doesn't (directly) affect me
11:03:22 -!- ybden has joined.
11:05:40 -!- tromp_ has joined.
11:10:01 -!- tromp_ has quit (Ping timeout: 252 seconds).
11:33:48 -!- boily has joined.
11:35:53 <boily> `wisdom
11:36:54 <HackEgo> snow//Snow is Jesus's dandruffs, and some suspect that he is the son of Rhaegar Targeryan. It turns the sidewalks to white as if someone broke a lot of styrofoam on it.
11:38:43 -!- earendel has joined.
11:38:54 -!- earendel has quit (Changing host).
11:38:54 -!- earendel has joined.
11:42:14 <Taneb> `? styofoam
11:42:17 <HackEgo> styofoam? ¯\(°​_o)/¯
11:42:25 <Taneb> `? styrofoam
11:42:27 <HackEgo> styrofoam? ¯\(°​_o)/¯
11:42:46 <ybden> `? foam
11:42:47 <Taneb> `learn styrofoam is Taneb's only weakness.
11:42:48 <HackEgo> foam? ¯\(°​_o)/¯
11:42:58 <HackEgo> Learned 'styrofoam': styrofoam is Taneb's only weakness.
11:46:19 <izabera> https://i.imgur.com/wAI1Jwm.jpg
11:47:48 <Taneb> izabera, from a certain point of view, that's very logical, although symptomatic of skewed priorities
11:49:15 <boily> Tanelle. the sound, the smell, the touch of it makes you feel wrong?
11:49:16 <fizzie> There's grepcode.com, but it's only for Java stuff.
11:50:45 <Taneb> boily, the sound, mostly
11:50:53 <Taneb> The touch, too, to a lesser extent
11:51:23 <Taneb> If I buy something in styrofoam, I have to get someone else to unpack it while I'm in a different room
11:59:34 -!- TellsTogo has quit (Ping timeout: 250 seconds).
12:02:05 -!- TellsTogo has joined.
12:18:51 -!- boily has quit (Quit: REALPOLITIK CHICKEN).
12:34:05 -!- earendel has quit (Ping timeout: 276 seconds).
13:06:08 <b_jonas> `? top hat
13:06:10 <b_jonas> `? high hat
13:06:13 <b_jonas> `? hi-hat
13:06:21 <b_jonas> `? up hat
13:06:23 <b_jonas> `? hi hat
13:06:25 <b_jonas> `? top quark
13:06:29 <b_jonas> `? up quark
13:07:10 <b_jonas> wakey wakey, HackEgo
13:07:23 <fizzie> kernel:[957239.928577] BUG: soft lockup - CPU#1 stuck for 21s! [nginx:632]
13:07:43 <b_jonas> `reboot
13:08:18 <HackEgo> No output.
13:08:27 <fizzie> There's 61 umlbox processes all fighting for CPU time.
13:08:46 <HackEgo> No output.
13:08:48 <HackEgo> top hat? ¯\(°​_o)/¯
13:08:49 <HackEgo> No output.
13:08:49 <HackEgo> hi hat? ¯\(°​_o)/¯
13:08:49 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: reboot: not found
13:08:50 <HackEgo> No output.
13:08:51 <HackEgo> up quark? ¯\(°​_o)/¯
13:08:52 <b_jonas> maybe it's a hard disk failure or a disk hard failure??
13:09:18 <b_jonas> `? high hat
13:09:19 <HackEgo> high hat? ¯\(°​_o)/¯
13:09:25 <b_jonas> `? hi-hat
13:09:26 <HackEgo> hi-hat? ¯\(°​_o)/¯
13:09:30 <b_jonas> `? up hat
13:09:32 <HackEgo> up hat? ¯\(°​_o)/¯
13:09:41 <b_jonas> `? top quark
13:09:42 <HackEgo> top quark? ¯\(°​_o)/¯
13:10:02 <fizzie> Not having much luck there.
13:10:41 <b_jonas> `slashlearn high hat/A high hat is the same as a top hat, not the same as a hi-hat, just like how a top quark is not the same as an up quark.
13:10:44 <HackEgo> Learned «high hat»
13:13:58 <b_jonas> `? orkut
13:13:59 <HackEgo> orkut? ¯\(°​_o)/¯
13:14:00 <b_jonas> `? myspace
13:14:01 <HackEgo> myspace? ¯\(°​_o)/¯
13:14:13 <b_jonas> `? os/2
13:14:15 <HackEgo> os/2? ¯\(°​_o)/¯
13:14:17 <b_jonas> `? os2
13:14:18 <HackEgo> os2? ¯\(°​_o)/¯
13:22:57 -!- ^v has quit (Ping timeout: 260 seconds).
13:25:50 -!- ^v has joined.
13:52:29 -!- tromp_ has joined.
13:52:40 -!- vanila has joined.
13:52:41 <vanila> helo
13:57:09 -!- tromp_ has quit (Ping timeout: 260 seconds).
14:15:56 <b_jonas> `? vms
14:15:58 <HackEgo> vms? ¯\(°​_o)/¯
14:16:09 <b_jonas> `? plan9
14:16:10 <HackEgo> plan9? ¯\(°​_o)/¯
14:16:11 <b_jonas> `? plan-9
14:16:13 <b_jonas> `? plan 9
14:16:13 <HackEgo> plan-9? ¯\(°​_o)/¯
14:16:14 <HackEgo> plan 9? ¯\(°​_o)/¯
14:16:39 <b_jonas> `? hurd
14:16:41 <HackEgo> hurd? ¯\(°​_o)/¯
14:16:52 <b_jonas> there should be something in there about those operating systems
14:17:06 <vanila> why
14:21:03 -!- Sgeo has quit (Ping timeout: 240 seconds).
14:21:06 <impomatic> Some kind of bitcoin inspired capture the flag programming game http://hackcha.in/
14:42:27 <int-e> . o O ( does it hurd when I say this? )
14:44:39 -!- jaboja has joined.
14:46:01 <int-e> `learn Plan9 is the precursor to Inferno, home of the Limbo programming language.
14:46:09 <HackEgo> Learned 'plan9': Plan9 is the precursor to Inferno, home of the Limbo programming language.
14:46:15 <int-e> (all true)
14:47:03 <int-e> hmm, let's tweak it a bit.
14:47:11 <int-e> `learn Plan9 is the precursor to Dante's Inferno, home of the Limbo programming language.
14:47:16 <HackEgo> Relearned 'plan9': Plan9 is the precursor to Dante's Inferno, home of the Limbo programming language.
14:49:21 -!- `^_^v has joined.
14:51:48 -!- jaboja has quit (Ping timeout: 250 seconds).
14:53:14 <b_jonas> wtf, so in C, the "%n" conversion takes type modifiers like "%zn" or "%hhn"?
14:56:08 <vanila> lol
14:56:14 <vanila> %n is absolute ridiculous
14:57:12 <vanila> I guess worse is just the fact format strings need not be statically known
15:01:23 <b_jonas> no, %n is totally useful. but %hhn is ridiculous. why is that even allowed?
15:02:06 <vanila> when is %n useful
15:03:43 <b_jonas> vanila: when I want to test if a sscanf match is successful, or consumed all of a string. for the former, it's easier to use than the return value of sscanf, because you don't have to count format entries in the pattern when writing the source code. for the latter, it's absolutely necessary.
15:04:19 <vanila> ah thats a nice techinique, i was only thinking about printf
15:04:35 <b_jonas> yes, for printf it's not very useful
15:04:41 -!- jaboja has joined.
15:06:33 <prooftechnique> I've been trying to contrive a use for %hhn, but so far I have nothing
15:06:52 <b_jonas> prooftechnique: you can probably find some eso-use
15:06:58 <prooftechnique> Maybe some kind of cipher?
15:07:39 <prooftechnique> I'm just trying to imagine what the motivation was for having it in printf
15:08:05 <prooftechnique> Someone must have used it for *something*
15:08:35 <b_jonas> prooftechnique: I think it's just so that sscanf handles writing integers uniformly, converting them to the right integer type regardless if the conversion is any of diouxXn
15:08:50 <b_jonas> the rules would have been uglier otherwise
15:09:06 <prooftechnique> Yeah, I guess that fits.
15:09:07 <b_jonas> and then in sprintf, it would be strange to disallow it if sscanf allows it
15:35:04 <FreeFull> %n is useful for exploiting C programs that give input strings directly to pritnf
15:48:27 -!- spiette has joined.
15:53:52 -!- tromp_ has joined.
15:55:55 -!- FreeFull has quit (Quit: Rebooting into new kernel).
15:57:54 -!- FreeFull has joined.
15:58:13 -!- tromp_ has quit (Ping timeout: 252 seconds).
16:08:31 -!- jaboja has quit (Ping timeout: 250 seconds).
16:24:27 <fizzie> You kinda-sorta can use %n with sprintf to save one extra strlen call, if you, say, print a number, and need to know how long it was.
16:25:53 <ybden> Hmm, that's a thought
16:28:28 <fizzie> Well, okay, you get *that* via the return value as well. But maybe you might conceivably need to know the lengths of some substrings.
16:33:38 -!- nycs has joined.
16:34:31 -!- `^_^v has quit (Ping timeout: 252 seconds).
16:44:45 -!- Reece` has joined.
16:50:08 -!- Phantom_Hoover has joined.
17:21:25 <Phantom_Hoover> <oerjan> no. because bots don't understand proper wiki formatting, nearly all have strange but obvious things like <br> instead of newlines
17:21:39 <Phantom_Hoover> you do need to do <br> to do single-line breaks in mediawiki
18:04:40 -!- vanila has quit (Remote host closed the connection).
18:07:32 -!- hppavilion[1] has joined.
18:08:17 <hppavilion[1]> I think we could triple the topic's entertainingness by allowing "people" to be replaced with some other demonym (not sure what limiting condition to use yet) and "cloaks" to be other sorts of normal word-turned-tech word
18:09:08 <Taneb> folkses with cloakses
18:09:14 <hppavilion[1]> Example: Note: reptilian overlords with <um> will be treated as if they're from Saint Petersburg (not Saint Petersburg)
18:13:07 -!- hppavilion[1] has set topic: The international hub of solid matrices | Home of the world's largest ball of threads | logs: http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D | http://esolangs.org/ | https://dl.dropboxusercontent.com/u/2023808/wisdom.pdf | Note: reptilian armada commanders with cookies will be treated as if they're from Saint Petersburg (not Saint Petersburg).
18:13:12 <hppavilion[1]> Just going to see if that sticks
18:13:28 <hppavilion[1]> (See #esoteric:Be Bold in editing the topic)
18:15:02 <hppavilion[1]> ^style
18:15:03 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp youtube
18:15:12 <hppavilion[1]> ^style lovecraft
18:15:12 <fungot> Selected style: lovecraft (H. P. Lovecraft's writings)
18:15:21 <hppavilion[1]> fungot: Lovely weather we're having
18:15:21 <fungot> hppavilion[1]: published fnord 1922 in home brew vol. 1, p. fnord vol. 17, no. 1 ( march 1936), p. fnord.
18:15:38 <hppavilion[1]> dammit, fungot. That didn't work
18:15:39 <fungot> hppavilion[1]: " the flame the flame beyond body, beyond life in the boy, with imagination as his one avenue of freedom. he had, he declared, studies of much more vital importance to pursue; and intimated a wish to look out over the waters to the white ship
18:15:58 <hppavilion[1]> That was a little better
18:16:40 <hppavilion[1]> ^style darwin
18:16:40 <fungot> Selected style: darwin (Books by Charles Darwin -- you know, that evilution guy)
18:16:45 <hppavilion[1]> Oooh
18:16:51 <hppavilion[1]> fungot: Lovely evolution we're having
18:16:52 <fungot> hppavilion[1]:/ offspring :) a single race, that :)/ fish to such a degree as before. i have heard it stated that they are anywhere lined by reefs; except in a very southerly course,/ whole, i.e. about/ rattle-snake, look to some special conditions :) life must play a most important fnord it might be a great kindness, and return them in hopes :) receiving another, it was tender when first introduced to a new edition :) ( youatt
18:16:57 <hppavilion[1]> ...
18:17:05 <hppavilion[1]> Darwin used a lot of smiley faces.
18:17:36 <hppavilion[1]> ^style darwin+lovecraft
18:17:36 <fungot> Not found.
18:17:37 <hppavilion[1]> ...
18:17:52 <hppavilion[1]> fizzie: Fungot does not support compound styles. i iz sad.
18:18:38 <int-e> what would that even mean
18:19:02 <hppavilion[1]> (I would recommend a|b makes it choose between styles a and b for the entire message, and a&b would juxtapose the styles)
18:20:23 <hppavilion[1]> int-e: It would take the "product" of the two styles (calculating by multiplying the frequencies of each word, with 0 equaling 1 so that words only used by 1 don't get thrown away), allowing it to sound a little darwin and a little lovecraft
18:21:08 <hppavilion[1]> int-e: Thus, you might get Darwin talking about the evolution of cthulhu
18:21:16 <hppavilion[1]> (well, not really, but you get the picture)
18:21:30 <hppavilion[1]> ^help
18:21:30 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
18:21:38 <hppavilion[1]> ^style help
18:21:38 <fungot> Not found.
18:22:51 <hppavilion[1]> @tell fizzie fungot lacks support for compound styles (e.g. darwin&lovecraft), which gives me sads.
18:22:51 <lambdabot> Consider it noted.
18:22:52 <fungot> hppavilion[1]: from/ facts above given and from/ honour so gained it might ultimately have become/ universal habit. according to parmentier " 5? 13. sir archibald geikie as having long been :( a subject :) which you have now fnord, fnord
18:36:54 -!- hppavilion[2] has joined.
18:40:28 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
18:43:29 <Phantom_Hoover> hppavilion[2], hmm, i don't think that'd work with a markov chain
18:43:59 <hppavilion[2]> Phantom_Hoover: LIES
18:44:44 -!- MDude has joined.
18:46:06 -!- EggBot has joined.
18:46:06 -!- EggBot has quit (Read error: Connection reset by peer).
18:46:44 <hppavilion[2]> Yay!
18:46:47 <hppavilion[2]> It's beginning to work!
18:46:50 -!- EggBot has joined.
18:47:24 -!- EggBot has quit (Read error: Connection reset by peer).
18:47:40 -!- EggBot has joined.
18:47:48 <hppavilion[2]> Yay!
18:52:31 -!- hwpplayer1 has joined.
18:52:57 <fizzie> Interpolating between n-gram models is certainly possible, but I don't think I feel like actually implementing that in Befunge.
18:53:12 <fizzie> Especially given how the current code is.
18:53:22 <hppavilion[2]> fizzie: You clearly have lost the spirit for #esoteric. Sorry to see you go.
18:55:22 -!- tromp_ has joined.
18:55:30 <fizzie> The code's rather intertwined with the binary file formats. For example, the n-grams are stored (and sampled from) in terms of numeric "tokens", which are mapped back to words only at a very late stage (once the entire sentence has been constructed), and the token-to-text mappings are entirely separate for each style.
18:56:19 <fizzie> There's no way for it to know that 1235 of the irc style is the same word as 724 of some other style, for example.
18:56:37 <fizzie> I could precompute some mixed styles, but that's so brute-force.
18:57:42 <hppavilion[2]> fizzie: Oh :/
18:57:53 <hppavilion[2]> fizzie: Should've used hashing.
18:58:27 -!- jaboja has joined.
18:59:06 <fizzie> Then the numbers wouldn't have been contiguous.
18:59:17 <fizzie> (And they're used directly as the file offsets.)
18:59:30 -!- tromp_ has quit (Ping timeout: 244 seconds).
19:05:21 <b_jonas> `random-card
19:05:22 <b_jonas> `random-card
19:06:02 <HackEgo> Hollowhenge Beast \ 3GG \ Creature -- Beast \ 5/5 \ DKA-C
19:06:02 <HackEgo> Debt of Loyalty \ 1WW \ Instant \ Regenerate target creature. You gain control of that creature if it regenerates this way. \ WL-R
19:07:12 <fizzie> `words --finnish --english 20
19:07:22 <HackEgo> Unknown option: english
19:07:27 <fizzie> Aw.
19:07:31 <fizzie> It was something else.
19:07:32 <fizzie> `words -l
19:07:34 <HackEgo> valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian --esolangs \ default: --eng-1M
19:07:38 <fizzie> `words --finnish --eng-1M 20
19:08:09 <HackEgo> alairali polkismal irrettama fundamentänsä ticotilitsentärkt ahaaso prcv ilonitschcl vercla imattin ait boot luche thinfini muristor ching notkikolly sannerastisaa hypähän geofyl
19:09:22 <shachaf> `recipe
19:09:24 <HackEgo> ​-- solid halves \ 2 tb Dijon mustard \ \ In small bowl, stirring to decorate, about 4 minutes. \ \ Remove from pan or until it gets roll is cooked. Drain beans; spread one egg \ yolks in a large bowl. Pour off fruit slices. Make a slices of the sauces, \ and white replacer pieces from liquid. \ \ Recipe By : ISBN 315-786-1120 \ \ M
19:09:34 <shachaf> `recipe
19:09:35 <HackEgo> ​/3 c Unsweetened cocoa \ 2 lb Boneless chicken \ -pepper; seeded \ 2 tb Sour cream or flour \ 1/4 ts Dried parsley \ 1/2 ts Baking soda \ 1/2 ts Cayenne pepper \ \ Cut onion and frozen into provide peach over tops of liquid. Mix cornmeal, syrup, \ pepper and chopped parsley. Makes 3 cups. Parchmenchic, \ Date: More excecked \ fat 199
19:10:45 <b_jonas> `random-card
19:10:47 <HackEgo> Yavimaya Ancients \ 3GG \ Creature -- Treefolk \ 2/7 \ {G}: Yavimaya Ancients gets +1/-2 until end of turn. \ AI-C, ME2-U
19:11:14 <b_jonas> `random-card
19:11:18 <HackEgo> Cryptic Cruiser \ 3U \ Creature -- Eldrazi Processor \ 3/3 \ Devoid (This card has no color.) \ {2}{U}, Put a card an opponent owns from exile into that player's graveyard: Tap target creature. \ BFZ-U
19:11:34 <b_jonas> `random-card BBB$
19:11:36 <HackEgo> Necropotence \ BBB \ Enchantment \ Skip your draw step. \ Whenever you discard a card, exile that card from your graveyard. \ Pay 1 life: Exile the top card of your library face down. Put that card into your hand at the beginning of your next end step. \ IA-R, 5E-R, VMA-R, ME2-R, V09-M
19:12:00 <shachaf> `random-card WUBRG
19:12:01 <HackEgo> Coalition Victory \ 3WUBRG \ Sorcery \ You win the game if you control a land of each basic land type and a creature of each color. \ IN-R, TSP-S
19:12:28 <shachaf> `random-card UNH
19:12:30 <HackEgo> Loyal Cathar \ WW \ Creature -- Human Soldier \ 2/2 \ Vigilance \ When Loyal Cathar dies, return it to the battlefield transformed under your control at the beginning of the next end step. \ [Front face. Transforms into Unhallowed Cathar.] \ DKA-C
19:12:43 <shachaf> `random-card UNH-
19:12:45 <HackEgo> Cheap Ass \ 1W \ Creature -- Donkey Townsfolk \ 1/3½ \ Spells you play cost {½} less to play. \ UNH-C
19:12:45 -!- EggBot has quit (Remote host closed the connection).
19:12:53 <hppavilion[2]> Dammit
19:12:54 <shachaf> `random-card UNH-
19:12:55 <HackEgo> Graphic Violence \ 2G \ Instant \ All creatures by the artist of your choice get +2/+2 and gain trample until end of turn. \ UNH-C
19:13:00 -!- Caesura has joined.
19:13:11 <hppavilion[2]> shachaf: You crashed eggbot xD
19:13:16 <b_jonas> shachaf: it's case-insensitive by default but can be case-sensitive with (?i)
19:13:26 <shachaf> `random-card comes into play
19:13:28 <HackEgo> Charm School \ 2W \ Enchant Player \ When Charm School comes into play, choose a color and balance Charm School on your head. \ Prevent all damage to you of the chosen color. \ If Charm School falls off your head, sacrifice Charm School. \ UG-U
19:13:54 <b_jonas> `random-card - [0-9]$
19:13:56 <HackEgo> Deep Reconnaissance \ 2G \ Sorcery \ Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library. \ Flashback {4}{G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) \ OD-U
19:14:16 <b_jonas> `random-card \- [0-9]$
19:14:19 <HackEgo> No output.
19:14:30 <b_jonas> `random-card ular
19:14:32 <HackEgo> Gerrard's Irregulars \ 4R \ Creature -- Human Soldier \ 4/2 \ Trample, haste \ MM-C
19:14:35 <b_jonas> `random-card ular
19:14:37 <HackEgo> Battle Mastery \ 2W \ Enchantment -- Aura \ Enchant creature \ Enchanted creature has double strike. (It deals both first-strike and regular combat damage.) \ LRW-U, M15-U, DTK-U, DDL-U
19:14:49 <b_jonas> `random-card dular
19:14:52 <HackEgo> Arcbound Reclaimer \ 4 \ Artifact Creature -- Golem \ 0/0 \ Remove a +1/+1 counter from Arcbound Reclaimer: Put target artifact card from your graveyard on top of your library. \ Modular 2 (This enters the battlefield with two +1/+1 counters on it. When it dies, you may put its +1/+1 counters on target artifact creature.) \ DST-R
19:15:11 <b_jonas> `random-card [0-9] \(
19:15:13 <HackEgo> Reality Acid \ 2U \ Enchantment -- Aura \ Enchant permanent \ Vanishing 3 (This Aura enters the battlefield with three time counters on it. At the beginning of your upkeep, remove a time counter from it. When the last is removed, sacrifice it.) \ When Reality Acid leaves the battlefield, enchanted permanent's controller sacrifices it. \ PLC-C
19:15:17 <b_jonas> `random-card [0-9] \(
19:15:19 <HackEgo> Forked-Branch Garami \ 3GG \ Creature -- Spirit \ 4/4 \ Soulshift 4, soulshift 4 (When this creature dies, you may return up to two target Spirit cards with converted mana cost 4 or less from your graveyard to your hand.) \ BOK-U
19:17:06 -!- EggBot has joined.
19:17:15 <hppavilion[2]> What prefix should eggbot use?
19:17:21 <hppavilion[2]> Currently it's --, but it doesn't do anything
19:17:47 <b_jonas> hppavilion[2]: um, what will it want to do?
19:17:57 <hppavilion[2]> b_jonas: Just a collection of fun tools
19:18:02 <hppavilion[2]> b_jonas: Like IRC Thoof
19:18:13 <b_jonas> hppavilion[2]: you can try "EggBot: " as the prefix at first
19:18:22 <hppavilion[2]> b_jonas: That is supported as well
19:18:25 <b_jonas> and only later add shortcuts if it's useful
19:18:28 <b_jonas> it is?
19:18:30 <hppavilion[2]> I'll just stick with that for now, thanks
19:18:31 <b_jonas> EggBot: help
19:18:36 <notfowl> All the single digit punctuations are taken I think
19:18:38 <b_jonas> EggBot: commands
19:18:40 <hppavilion[2]> b_jonas: It doesn't have any commands yet
19:18:45 <b_jonas> EggBot: list
19:18:47 <b_jonas> EggBot: version
19:18:53 <b_jonas> EggBot: unignore
19:18:54 <hppavilion[2]> b_jonas: No commands at all
19:18:57 <b_jonas> ok
19:19:04 <hppavilion[2]> b_jonas: It's just an empty shell ATM
19:19:05 <b_jonas> not even hidden ones?
19:19:14 <b_jonas> EggBot: invite perlbot
19:19:24 <b_jonas> EggBot: join #esoteric-blah
19:19:38 <hppavilion[2]> b_jonas: Literally nothing. It's not done yet
19:19:51 <b_jonas> sure but, I still have to try
19:46:03 -!- EggBot has quit (Ping timeout: 240 seconds).
19:46:28 -!- hppavilion[2] has quit (Ping timeout: 250 seconds).
19:51:50 -!- hppavilion[2] has joined.
19:59:50 -!- rdococ has quit (Quit: gtg).
20:32:09 -!- shikhin has changed nick to shikhincat.
20:32:39 -!- shikhincat has changed nick to shikhin.
20:33:22 -!- ybden has changed nick to neither.
20:33:32 -!- neither has changed nick to either.
20:33:36 -!- Reece` has quit (Ping timeout: 276 seconds).
20:33:47 -!- either has changed nick to ybden.
20:42:14 -!- hwpplayer1 has quit (Remote host closed the connection).
20:43:13 <hppavilion[2]> For some reason
20:43:35 <hppavilion[2]> I'm translating Romeo and Juliet into a highly exaggerated version of gamerspeak in a Garry's Mode chat log
20:43:48 <hppavilion[2]> (With a friend. For an assignment. At school. That I plan to turn in.)
20:43:57 <hppavilion[2]> At one point, this line appears:
20:44:09 <hppavilion[2]> [S4MP50N Quickscopes a Tromp Rat npc from the "1337 5p4ce F1gh75 M0d" mod]
20:44:15 <hppavilion[2]> I don't know why I made that joke
20:44:49 <hppavilion[2]> Some sort of hybrid between a Star Wars reference, some xkcd jokes, and a reference that no one will ever get to this specific channel
20:47:50 <hppavilion[2]> ("tromp rat")
20:48:20 -!- Akaibu has joined.
20:48:21 <hppavilion[2]> (no one will ever get the reference; they'll just think it's a slightly-off-brand rename from "womp rat")
21:02:22 <fizzie> I didn't get home in time to see the first Eurovision semi-final live. :/
21:18:34 -!- TellsTogo has quit (Ping timeout: 250 seconds).
21:34:36 -!- nycs has quit (Read error: No route to host).
21:35:22 -!- hppavilion[2] has quit (Ping timeout: 252 seconds).
21:35:39 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
21:35:54 -!- hppavilion[2] has joined.
22:05:31 -!- Moon_ has joined.
22:06:00 <Moon_> Hi
22:07:26 <Moon_> N1:1:aa;Naa:2:aa;$o=aa
22:14:32 <HackEgo> [wiki] [[User talk:Moon]] N https://esolangs.org/w/index.php?oldid=46993 * Moon * (+59) /* Bug reporting */ new section
22:26:31 -!- spiette has quit (Quit: :qa!).
22:27:29 <Moon_> whats the stub code?
22:27:37 <Moon_> for making a article a stub?
22:30:48 <fizzie> I'm going to guess {{Template:Stub}}, but maybe somebody could confirm.
22:31:02 <fizzie> (Or just look at an existing stub article for reference.)
22:31:18 <HackEgo> [wiki] [[N--]] N https://esolangs.org/w/index.php?oldid=46994 * Moon * (+438) Created page with "N-- is a 3 instruction minimalistic variable based language, it has three commands. * N: Nand, format: Ninput1:input2:outputvar; * =: Set variable, format: var=varnumorchar;..."
22:31:49 <fizzie> Oh, it's just {{stub}} as well.
22:32:02 <fizzie> I guess maybe template transclusion picks from the template namespace by default? Who knows.
22:32:11 <Moon_> you told me too late lol, i hit the wrong button anyways
22:32:19 <HackEgo> [wiki] [[N--]] https://esolangs.org/w/index.php?diff=46995&oldid=46994 * Moon * (+9)
22:32:20 <Phantom_Hoover> i love how we can't use any standard mediawiki infrastructure because the wiki is public domain
22:32:52 <quintopia> all of that infrastructure is CC?
22:33:29 <Moon_> N1:1:aa;Naa:2:aa;$o=aa does a thing, what it does i dunno, as i havent make a intepreter yet
22:35:12 <quintopia> what lang is it?
22:35:19 <Phantom_Hoover> quintopia, you mean on the esolang wiki or?
22:35:57 <quintopia> the standard infrastructure you referenced
22:36:49 <Moon_> N--
22:36:56 <Moon_> The one i just published :P
22:37:37 <Phantom_Hoover> wikipedia's CC licence does not allow you to relicense to PD
22:37:46 <Phantom_Hoover> obviously, because otherwise it'd just be a PD licence
22:38:35 <quintopia> thats what i was asking. ifvall that stuff was CC
22:39:07 <quintopia> its hard to know what is PD and what is not
22:39:20 <Phantom_Hoover> i assume it is, because it's under the standard wikipedia licence
22:39:55 <prooftechnique> PD?
22:39:59 <prooftechnique> Oh, public domain
22:40:01 <prooftechnique> Duh
22:40:08 <fizzie> Police department.
22:40:23 <shachaf> Pooch Department
22:40:48 <fizzie> Posh detergent.
22:41:16 <HackEgo> [wiki] [[N--]] https://esolangs.org/w/index.php?diff=46996&oldid=46995 * Moon * (+97) Hello, world! example, i forgot it
22:41:51 <hppavilion[2]> Phantom_Hoover: Would it work to get whoever runs the wiki to allow a license exemption where "Most of the wiki is public domain, but specially-marked areas are CC"?
22:41:59 <hppavilion[2]> Thus allowing us to use mediawiki infrastructure?
22:42:09 <Phantom_Hoover> you'd need every contributor to relicense it
22:42:14 <hppavilion[2]> Phantom_Hoover: ?
22:42:27 <hppavilion[2]> Phantom_Hoover: No, our wiki
22:42:34 <Phantom_Hoover> ah ok
22:42:47 <hppavilion[2]> Phantom_Hoover: Who would have the power to do such a thing?
22:42:52 <Phantom_Hoover> maybe. we've gotten by OK as it is, i just find it kind of amusing
22:43:20 <int-e> hppavilion[2]: that would make the wiki less esoteric
22:43:22 <prooftechnique> Does using MediaWiki force all the content to be under CC?
22:43:51 <prooftechnique> Or is it that the wiki itself is also meant to be PD?
22:43:52 <coppro> mediawiki does not care about content licensing
22:43:58 <coppro> wikimedia does
22:44:50 <prooftechnique> All right, so same question mutatis mutandis
22:44:58 -!- AnotherTest has quit (Quit: ZNC - http://znc.in).
22:48:21 <Moon_> quintopia there you go: N1:1:aa;Naa:2:aa;$o=aa + N-- specs = program
22:53:01 <tromp> hi, int-e. i shaved off a few more bits
22:53:26 <shachaf> From what?
22:53:36 <tromp> from the laver tables:(
22:54:04 <tromp> https://github.com/tromp/AIT/blob/master/laver.lam
22:54:19 <shachaf> lamver tables
22:55:10 <shachaf> Does BLC turn recursion into an inline Y combinator?
22:55:15 <tromp> yes
22:57:01 -!- tromp_ has joined.
22:57:25 <tromp> see lines 57-62 of Lambda.lhs
22:57:36 <shachaf> Yes, I found it.
22:57:43 <shachaf> Does the compiler do all sorts of optimizations?
22:57:57 <tromp> some sorts. see optimize function in AIT.lhs
22:58:50 <shachaf> Does it beta-reduce fix?
22:59:12 <tromp> sure, if it reduces size
22:59:34 <tromp> so not fix itself, but application of fix
22:59:41 <shachaf> Right.
22:59:55 -!- centrinia has joined.
23:00:05 <tromp> there's a lot more optimization it could do
23:00:41 <tromp> like eta reduction
23:00:41 <shachaf> I see what it does.
23:00:55 <shachaf> Hmm, is BLC non-strict?
23:01:09 -!- tromp_ has quit (Ping timeout: 246 seconds).
23:01:22 <tromp> yes
23:02:06 <tromp> the Haskell implementation is as lazy as Haskell itself
23:02:25 <tromp> the obfuscated interpreter is call-by-need
23:02:45 <tromp> in the interest of saving many bytes:)
23:06:21 -!- hppavilion[2] has quit (Ping timeout: 276 seconds).
23:11:20 <shachaf> Hmm, so when you name an expression in a BLC program, does it just get inlined in every place it's used?
23:11:37 <shachaf> Or does it make a lambda and apply it to an argument?
23:12:03 <tromp> the second, but if only used once, a beta reduction will be applied to give the first
23:12:41 <shachaf> Even if it's not the first argument?
23:12:53 <tromp> sure
23:13:00 <tromp> wait
23:13:50 <tromp> it will be the first argument of some expr then
23:14:24 <tromp> since a let defining 3 names will compile to 3 applications
23:14:29 <shachaf> Sure, but that expression might be an application and not a lambda.
23:14:59 <shachaf> I mean something like ((\x -> (\y -> ...x...x...y...x...x...)) many) one
23:16:37 <tromp> parentheses wrong? you mean y binds to many?
23:16:51 <int-e> tromp: "save two bits" can't be right... it works for a = 0 and a = 1, and somewhat amazingly for a = 2 as well, but for a = 3 and b = 1 it gives 0 instead of 2 as its answer.
23:17:29 <shachaf> No, x binds to many.
23:17:47 -!- Sgeo has joined.
23:17:54 <shachaf> Since there are many occurrences of x and one of y.
23:18:11 <tromp> hmm, then one is not substituted for y
23:18:23 <tromp> let me check that, int-e
23:18:28 <int-e> tromp: laver (\f\x. f (f (f x))) (\f\x. f (f (f x))) (\f\x. f x)
23:19:05 <shachaf> Then do you order the lambdas in let-in to put the ones that are likely to be reduced first?
23:19:20 <int-e> tromp: (that should be 2)
23:19:53 <int-e> oh, I'm testing with argument order mx, a, b.
23:21:29 <tromp> aha
23:22:06 <tromp> we do not re-order the lambdas from a let
23:25:07 <int-e> (the reason that a = 2 works is because 2 |> _ is idempotent. 3 |> _ is not idempotent; 3 |> 1 is 2, but 3 |> (3 |> (3 |> 1)) is 0)
23:27:25 <tromp> ah yes, i see the problem
23:29:34 <tromp> now how do i revert back to the last good commit?
23:30:37 <tromp> (git newbie here)
23:30:51 <int-e> something like git checkout 796e4fe368bd82800f011cec49e7f201b2f1e49f laver.lam
23:31:28 <int-e> (git diff --cached will show that this actually had an effect... git diff won't)
23:31:28 <shachaf> Or git revert.
23:32:01 <int-e> ah, I've never used git revert with mre than one commit...
23:32:22 <shachaf> You can give it a range, it looks like.
23:33:43 <int-e> anyway it's not nicely applicable here because one of the commits touches two files... one of which is now gone...
23:34:06 <tromp> that's ok, i'll re-commit the older checkout
23:35:59 <tromp> back to 215 bits
23:36:32 <int-e> and revert would produce two commits ... which could then be smashed with rebase... the checkout was simpler :)
23:37:00 <shachaf> revert -n
23:37:39 <int-e> thanks, that would do the trick
23:39:12 <int-e> (there would still be an awkward conflict to resolve though)
23:40:07 <int-e> but for teaching purposes, I agree that's what I should've suggested :P
23:40:16 <shachaf> Sure.
23:40:26 <shachaf> It's all fine.
23:40:47 <shachaf> git is TG
23:41:40 <fizzie> Transcendentally groovy.
23:42:47 -!- hppavilion[2] has joined.
23:46:44 <quintopia> transcendtal e groove e
23:48:36 <shachaf> tromp: Oh, but your let definitions are ordered.
23:52:00 <tromp> yes, manually
23:52:40 <tromp> so writing them in a different order might help optimization
23:53:37 <tromp> hmm, wait. your example may not fit the let expansion pattern
23:54:29 <tromp> in expanded let every name is available for reducing
23:57:25 <tromp> feel free to upvote at http://codegolf.stackexchange.com/questions/79620/laver-table-computations-and-an-algorithm-that-is-not-known-to-terminate-in-zfc :)
23:58:26 <hppavilion[2]> Is there a traditional variant on glob that's suitable for configuring /output/ in substitutions? Like, a glob4s/// of some sort
23:58:54 <Phantom_Hoover> traditional globs are pretty limited
←2016-05-09 2016-05-10 2016-05-11→ ↑2016 ↑all