←2016-03-01 2016-03-02 2016-03-03→ ↑2016 ↑all
00:07:15 <Taneb> YESS
00:07:18 <Taneb> YEEEEEEEES
00:07:49 <shachaf> Taneb: are you able to predict questions before they're asked of you?
00:08:08 <Taneb> Also, I have a brainfuck program that generates ASCII art banners!
00:08:24 -!- boily has joined.
00:08:39 <boily> `? weather
00:08:48 <Taneb> b_jonas, thanks! :D
00:08:49 <HackEgo> lambdabot: @@ @@ (@where weather) CYUL ENVA ESSB KOAK
00:08:51 <lambdabot> CYUL 020000Z 03010KT 10SM -SN OVC052 M10/M13 A3006 RMK SC8 SLP183 \ ENVA 012350Z 17020G34KT CAVOK 01/M07 Q0994 RMK WIND AT 670FT 17035G47KT \ ESSB 012350Z AUTO 12006KT 9999 OVC021/// M01/M05 Q1009 \ KOAK 012353Z 27010KT 10SM FEW100 FEW180 20/10 A3013 RMK AO2 SLP202 T02000100 10217 20167 56006
00:09:10 <boily> @massages-loud
00:09:12 <lambdabot> shachaf said 3h 36m 23s ago: do not @messages-loud this message twh
00:09:27 <boily> hellochaf. too late.
00:09:29 -!- Phantom_Hoover has joined.
00:09:42 <Taneb> izabera, would you mind terribly if I use arin.ga to paste a rather large amount of brainfuck?
00:12:11 <Taneb> Screw it, it's better to ask forgiveness than permission
00:12:54 <hppavilion[1]> Taneb: Yeah, but it's only easier if you don't explicitly say that to the person you would be getting permission (and will be asking for forgiveness) from
00:13:02 <hppavilion[1]> So here's a project to recruit more people to the #esoteric empire
00:14:26 * hppavilion[1] waits patiently for someone to respond so he knows that he's talking to something other than an empty room
00:16:24 <int-e> why, are you afraid of echoes?
00:17:47 <boily> hppavellon[1]. there's tofu in my mouth; I can't answer readily.
00:17:55 <shachaf> echoes?
00:18:00 <hppavilion[1]> int-e: Yes.
00:18:18 <hppavilion[1]> int-e: I'd rather not talk at all that talk and have it get buried and ignored
00:18:20 <Taneb> choes?
00:18:28 <shachaf> That's what usually happens.
00:18:30 * hppavilion[1] claps for shachaf and Taneb
00:18:34 <boily> ...oes...
00:18:42 * hppavilion[1] adds boily
00:18:58 <shachaf> oerjan: Oh, I got some intuition for par the other day.
00:19:08 <shachaf> but it turned out to be kind of scow tdnh
00:19:19 * boily does not mapole shachaf
00:19:25 <hppavilion[1]> So the idea is to create some simple (not 100% insane, but strange enough to be intriguing) esolangs that are practical to use
00:19:30 <Taneb> brainfuck program I "wrote": https://arin.ga/FQLSPy/
00:19:38 <int-e> ...lap ...ap
00:20:01 <hppavilion[1]> And publish them together with some project revolving around tehm
00:20:09 <hppavilion[1]> And watch what people do
00:21:00 <hppavilion[1]> They would be published on some blog (as opposed to esolangs.org, which defeats the purpose) with hopes of attracting new people, eventually to the point that we can do esolangs4charity or something like that
00:21:26 <hppavilion[1]> Also, because that way we get MOAR BRAINS.
00:21:32 <hppavilion[1]> To make MOAR ESOLANGS
00:22:04 <int-e> . o O ( moaronic spelling )
00:22:17 <hppavilion[1]> An example of a language is a declarative language/machine called TurMinsFuck, which is exactly what it sounds like
00:22:58 <boily> we will Conquer the World, one Eggplant at a Time!
00:23:06 <int-e> yum.
00:23:08 <hppavilion[1]> A side effect is that esolangs will show people how to implement languages, so we'll get MOAR non-esoteric languages too
00:23:16 <hppavilion[1]> boily: That's the plan
00:24:00 <hppavilion[1]> The aforementioned language is JSON-based, to ease implementation. The goal of users is to write a simple pseudo-OS in it
00:24:27 <hppavilion[1]> Or something, not sure yet
00:25:13 <int-e> so how many of hppavilion[1]'s ideas have materialized so far?
00:25:21 <hppavilion[1]> int-e: Thoof.
00:25:25 <hppavilion[1]> int-e: That's about it.
00:25:35 <hppavilion[1]> int-e: And it's unpublished as of yet
00:31:36 -!- tromp has joined.
00:31:52 <Taneb> I'm really proud I got his program working
00:33:14 <int-e> Taneb: that looks horrible :)
00:33:41 <int-e> also... <> ... doesn't look so useful :)
00:33:49 <Taneb> It's generated
00:34:00 <Taneb> I've been focusing on getting it working, not getting it looking nice
00:34:08 <Taneb> There's a whole bunch of <> and I think some +-
00:34:21 -!- lambda-11235 has joined.
00:34:33 <int-e> what does it do?
00:34:42 <Taneb> Generates ASCII art banners
00:35:48 <Taneb> It takes a string in input and prints a rendering of that string using just space and #
00:35:52 <int-e> I see.
00:36:50 <Taneb> Using the font b_jonas is designing
00:39:31 <hppavilion[1]> One type of brainfuck derivative I could never hate is one that uses novel data structures or types as its primitive- either instead of the tape or instead of the integers
00:42:42 -!- idyllei has joined.
00:47:35 <prooftechnique> What's the font?
00:47:54 <Taneb> prooftechnique, one b_jonas designed and shared with me
00:48:04 <hppavilion[1]> Taneb: At least run bf.replace('<>', '') on the program...
00:48:05 <Taneb> I'm afraid I've lost the appropriate links
00:48:21 <prooftechnique> Aww. Is it as nice as \oren\'s? :D
00:48:40 <Taneb> At the very least, it was more immediately available
00:49:27 <hppavilion[1]> prooftechnique: What do you think would be good for an esolang practical enough that people can use it, but esoteric enough to be interesting?
00:49:27 <Taneb> I really hope I win this competition
00:49:40 <hppavilion[1]> Taneb: Competition?
00:49:48 <prooftechnique> Taneb: Sounds like you have a good shot :)
00:50:06 <prooftechnique> hppavilion[1]: Humo sounds neat.
00:50:12 <Taneb> hppavilion[1], my uni's electronics society is running a brainfuck programming competition
00:50:21 <hppavilion[1]> prooftechnique: Humo?
00:50:23 <Taneb> My ego demanded I demonstrate I'm the best in my uni at brainfuck
00:50:27 <hppavilion[1]> Taneb: Awesome xD
00:50:35 <prooftechnique> https://github.com/fpetrola/humo
00:50:39 <hppavilion[1]> Taneb: I don't see how you could lose
00:50:48 <prooftechnique> Also https://esolangs.org/wiki/Humo
00:50:53 <hppavilion[1]> prooftechnique: I made a proof assistant based on s/// notation already :)
00:51:11 <Taneb> hppavilion[1], well, the deadline is just listed as "the 2nd of March", and I submitted this at 00:15
00:51:22 <hppavilion[1]> Taneb: Ah
00:51:38 <Taneb> I've submitted solutions for all the easier challenges, though
00:51:51 <hppavilion[1]> Taneb: Wait, but does that mean at the beginning or end of march 2?
00:51:58 <Taneb> I've got no idea
00:52:01 <hppavilion[1]> Taneb: Oh, this wasn't your own project?
00:52:14 <hppavilion[1]> Taneb: As in, your own idea for a freestyle competition
00:52:15 <Taneb> I presume not the latter as the winner is announced at 2
00:52:22 <hppavilion[1]> Ah
00:52:36 <int-e> tsk, the program overflows when given a 0xFF character as input
00:52:49 <hppavilion[1]> DISQUALIFIED
00:52:51 <Taneb> It wasn't my idea, but I think I'm the only person who attempted it
00:53:00 <hppavilion[1]> Ah
00:53:06 <hppavilion[1]> Taneb: How'd you generate it?
00:53:16 <Taneb> hppavilion[1], Haskell script
00:53:22 <hppavilion[1]> Ah
00:53:42 <Taneb> It's got a fairly regular structure, it's just really tedious and finicky
00:53:55 <Taneb> There's a whole load of improvements I can make
00:53:58 <hppavilion[1]> Taneb: Did the competition include specifications about the particular bf dialect?
00:54:23 <hppavilion[1]> Taneb: I recommend you start maintaining it as FOSS and get it included in some distribution of Linux as a standard command xD
00:54:27 <Taneb> 32 bit word size, EOF is no change, 30000-length tape aborting on memory error
00:54:40 <hppavilion[1]> Ah
00:54:40 <int-e> characters 3,4,5,6 look so asymmetric
00:54:54 -!- idyllei has quit (Quit: Leaving).
00:55:09 <hppavilion[1]> I'm tempted to feed it to tryitonline
00:56:02 <hppavilion[1]> I now must wait a year for it to output
00:56:31 <int-e> (I did this: for i in $(seq 255); do echo $i; echo ${i}P | dc | ./a.out banner.bf; done ... where a.out is a brainfuck interpreter)
00:56:42 <Taneb> hppavilion[1], for the purpose of this competition the reference interpreter is https://copy.sh/brainfuck/
00:56:43 <int-e> I should use printf.
00:57:21 <int-e> (but it's an 8 bit version)
00:57:35 <Taneb> int-e, it should work fine on an 8-bit interpreter
00:58:02 <int-e> Taneb: it does, except for character 255
00:58:19 <Taneb> Ah, shit, I can see why that would happen
00:58:21 <hppavilion[1]> Taneb: Do I pass it input with ! or what?
00:58:33 <Taneb> hppavilion[1], depends on your brainfuck implementation
00:58:45 <Taneb> Give it input as normal for your implementation
00:58:48 <hppavilion[1]> Taneb: With the reference
00:59:12 <Taneb> There's a little input box under the output box
00:59:34 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
00:59:35 <hppavilion[1]> Oh!
01:00:01 <hppavilion[1]> That's amazing
01:00:20 <hppavilion[1]> Taneb: Bookmarked the paste
01:00:37 <Taneb> :)
01:00:44 <hppavilion[1]> prooftechnique: An example of a language of that form is a TM+MM+BF description language
01:00:47 <Taneb> It's for now All Rights Reserved probably
01:00:53 <hppavilion[1]> Taneb: xD
01:01:17 <Taneb> Please don't redistribute it without asking me
01:01:21 <hppavilion[1]> OK
01:01:32 <hppavilion[1]> Taneb: You should FOSS it when the competition ends and start actively maintaining it as a joke.
01:01:54 <hppavilion[1]> Taneb: What strategies are used to generate BF as such? Is there something I could read on this?
01:02:17 -!- Opodeldoc has joined.
01:02:31 <Taneb> hppavilion[1], I'm using a couple things from around the internet and a lot of things on the inside of my head
01:02:42 <hppavilion[1]> OK
01:03:08 <lifthrasiir> bf program is not very hard to write (assuming you know some essential tricks like [-]) as long as you don't need arrays
01:03:10 <Taneb> I linked something this afternoon about brainfuck control structures
01:03:22 <Taneb> lifthrasiir, this... this uses arrays
01:04:02 <lifthrasiir> Taneb: to be exact, free-form arrays? I guess you store your text up somewhere and seek to the beginning or end by [<] or [>]
01:04:12 <prooftechnique> Was it oerjan who determined that 3-cell BF is Turing complete?
01:04:14 <Taneb> lifthrasiir, sort of ish
01:04:18 <Taneb> prooftechnique, yeah
01:04:23 <prooftechnique> That was a fun day :)
01:04:30 <hppavilion[1]> Taneb: If one were to make a brainfuck that was made for much easier development (while still remaining esoteric), what instructions and changes do you think would be crucial?
01:04:33 <lifthrasiir> explicit arrays are harder, and multiple arrays at once are much harder
01:04:36 <Taneb> lifthrasiir, I'm actually storing 20 copies of each character, with a bunch of cells of working space
01:04:37 <hppavilion[1]> (This is turning into an interview xD)
01:04:54 <lifthrasiir> Taneb: is your banner 20 lines high? :p
01:04:57 <Taneb> lifthrasiir, yeah
01:05:00 <lifthrasiir> great
01:05:21 <Taneb> hppavilion[1], I think it would require enough changes to be not brainfuck at all any more before it's easy to use
01:05:31 <lifthrasiir> I guess I would have used a pair of cells instead, but yeah, that shouldn't really matter
01:05:34 <Taneb> I don't program in brainfuck because it's easy
01:05:40 <Taneb> I program in it because it's hard
01:05:52 <hppavilion[1]> Taneb: Not "easy", but "easier"
01:06:00 <Taneb> lifthrasiir, and then I'm doing [<<...<<] with 200 or so <s
01:06:10 <hppavilion[1]> Taneb: For example, a language for OS development based on BF
01:06:25 <lifthrasiir> Taneb: yeah that becomes a problem when you have 20 copies of them
01:06:37 <lifthrasiir> copying on demand seems better
01:06:48 <tswett> `coins
01:07:12 <lifthrasiir> is that the backquotecoin?
01:07:33 <HackEgo> No output.
01:07:34 <tswett> Sump'm like that.
01:07:34 <Taneb> hppavilion[1], an easier way to do conditionals
01:07:50 <Taneb> The [-[-[-[-[-[-[-[-[-[-[-[-[-s in my program are setting up for a form of case statement
01:08:04 <hppavilion[1]> Taneb: Ooh, yeah.
01:09:21 <tswett> I think a "brainfuck assembly language" would be nice. Some language whose purpose is to specify exact brainfuck programs.
01:09:42 <hppavilion[1]> Taneb: Perhaps something a bit JSONy? {case: code; case: code; case: code...}
01:09:54 <hppavilion[1]> tswett: I think someone did that already
01:09:59 <Taneb> That doesn't seem to me to be in the spirit of brainfuck
01:10:07 <tswett> hppavilion[1]: then I want to see it.
01:10:08 <hppavilion[1]> Taneb: I agree, but it was the best I could think of
01:10:18 <hppavilion[1]> tswett: Search the wiki
01:10:31 <hppavilion[1]> "Brainfuck assembly" or something like that
01:12:00 <Taneb> tswett, what I'd like is some sort of specification and verification system for brainfuck
01:12:11 <tswett> Say, does anyone know about that "fantasy game console"? It's like an emulator of an old video game console, except it was designed from scratch instead of actually emulating any particular console.
01:12:41 <hppavilion[1]> I'd like an IRC client with repetition protection
01:12:42 <hppavilion[1]> I'd like an IRC client with repetition protection
01:14:05 <tswett> Do what the cool kids do—say three lines just milliseconds apart.
01:14:05 <tswett> Like this.
01:14:05 <tswett> See?
01:14:07 <hppavilion[1]> Taneb: Perhaps just {...} instructions that are like [] but } doesn't jump back (essentially, a NOP that other instructions move based on)
01:14:07 -!- deltab has quit (Ping timeout: 260 seconds).
01:14:19 <hppavilion[1]> tswett: xD
01:14:34 <tswett> Anyway...
01:14:35 <hppavilion[1]> tswett: I see it took you a while to copy the newline character
01:14:38 -!- deltab has joined.
01:14:49 <tswett> hppavilion[1]: come up with a nonsense word please.
01:15:05 <hppavilion[1]> lakalrocious
01:15:17 <tswett> Great, thanks.
01:15:22 <hppavilion[1]> tswett: Why?
01:15:49 <tswett> So that I can use it to name my software project.
01:15:52 <hppavilion[1]> Ah
01:16:02 <hppavilion[1]> tswett: What does the project do?
01:16:24 <tswett> It's a bunch of mathematics written in Coq.
01:17:15 <Taneb> The feeling where you've been trying hard for a while to get something to work
01:17:17 <Taneb> And then it works
01:17:19 <hppavilion[1]> Ah
01:17:23 <Taneb> And you don't know what to do next
01:17:27 <Taneb> Is kind of frustrating
01:17:29 <hppavilion[1]> Taneb: I wish I knew that feeling...
01:17:57 <hppavilion[1]> xD
01:19:00 <hppavilion[1]> tswett: You should prove something in Thoof when it's ready
01:20:20 <hppavilion[1]> Are any of the trig functions functionally complete for the trig functions?
01:21:16 <tswett> Well, it's pretty easy to write all of them in terms of the sine function.
01:21:31 <hppavilion[1]> tswett: In a way a computer can efficiently calculate?
01:21:35 <tswett> cos(x) = sin(pi/2 - x), I think it is.
01:22:04 <Taneb> hppavilion[1], is division availabe
01:22:09 <tswett> Then tan(x), sec(x), csc(x), and cot(x) can all be written as ratios of sin(x) and cos(x).
01:22:12 <hppavilion[1]> Taneb: Maybe
01:22:22 <hppavilion[1]> I just broke a glass with my teeth, somehow...
01:22:31 <Taneb> Then sin, cos, sec, csc
01:23:07 <hppavilion[1]> tswett: Would a BF-inspired proof assistant be at all a good idea?
01:23:20 <hppavilion[1]> For the #esoteric-standard value of good idea
01:23:21 <tswett> Probably not.
01:23:33 <hppavilion[1]> tswett: Factor in that message and re-answer
01:23:40 <tswett> First, do one inspired by C.
01:23:46 <hppavilion[1]> tswett: Pfffft
01:23:55 <tswett> If that turns out to have been a good idea, go and do it for BF.
01:23:58 <hppavilion[1]> tswett: I did one inspired by Thue and it works pretty well
01:24:07 <tswett> Oh?
01:24:12 <tswett> How's it work?
01:24:29 <hppavilion[1]> tswett: Well, it wouldn't be much like BF; it'd have the tape and such, but not the imperative structure
01:24:36 <hppavilion[1]> tswett: Well, it's based on s///
01:24:47 <hppavilion[1]> tswett: And, to a lesser extent, y///
01:25:16 <Taneb> I'm heading to bed now
01:25:17 <Taneb> Goodnight!
01:25:21 <hppavilion[1]> Basically, you create a series of axioms- known strings and substitutions- then you apply the known axioms to known strings until you get a goal string
01:25:24 <hppavilion[1]> Taneb: 'night
01:25:39 <hppavilion[1]> tswett: It's PCRE more so than Thue
01:26:25 <hppavilion[1]> You can also do things like @<axiom/theorem/lemma> to apply an axiom/theorem/lemma as a fixpoint, which applies it to the string until it stops changing
01:27:16 <hppavilion[1]> And there's ?<thelemax>, which yields the set of the current string AND the current string when you apply thelemax
01:27:32 <hppavilion[1]> (thelemax is short for theorem/lemma/axiom, and is used a lot in the docs)
01:27:55 <hppavilion[1]> tswett: So you prove things by substituting using PCRE regexes on a known string, and you get new strings that represent your proof
01:28:29 <hppavilion[1]> tswett: Though future versions will support regex styles other than PCRE- e.g. Pure Kleene Regexes and standard regexes
01:28:35 <hppavilion[1]> And, of course, raw strings
01:29:28 <hppavilion[1]> tswett?
01:29:37 <tswett> Lemme see.
01:29:44 <hppavilion[1]> tswett: Best of all, I even have a Thoof interpreter working, partially
01:29:49 <hppavilion[1]> OK, one sec, let me publish it
01:30:14 <tswett> All right, I see what you're doing here.
01:30:21 <tswett> Do you know what a formal system is?
01:30:37 <oerjan> <hppavilion[1]> tswett: I think someone did that already <-- pikhq's bfm which was renamed to something else - pickle?
01:32:25 <hppavilion[1]> tswett: https://github.com/ZodiacWorkingGroup/Thoof
01:32:49 <hppavilion[1]> tswett: Yes, yes I do
01:32:51 <hppavilion[1]> I think
01:33:02 <hppavilion[1]> tswett: Note that y/// and ?<thelemax> don't yet work; I just added them today
01:33:11 <hppavilion[1]> (well, y/// might not have been today, but I think it was)
01:33:22 <hppavilion[1]> (To the docs, that is, not to the code)
01:33:57 <hppavilion[1]> tswett: construct.thoof is the file with the working, tested code in it
01:34:33 <tswett> Now, Thue is already a language for specifying formal systems.
01:34:46 <hppavilion[1]> tswett: Yes, yes it is
01:35:06 <hppavilion[1]> Semi-thue systems
01:35:31 <hppavilion[1]> tswett: Did I do something wrong? xD
01:35:41 <tswett> Nah, lemme keep typing.
01:35:46 <hppavilion[1]> OK
01:35:55 <tswett> You've taken Thue, extended it, and also built a system for specifying specific Thue derivations.
01:36:13 <tswett> So if you want to do the analogous thing for brainfuck, you'll build a system for specifying specific brainfuck derivations.
01:36:14 <hppavilion[1]> (One problem with IRC: None of the "x is typing" stuff fancy new chat things have)
01:36:22 <hppavilion[1]> tswett: Oh no...
01:36:27 <oerjan> <hppavilion[1]> (thelemax is short for theorem/lemma/axiom, and is used a lot in the docs) <-- i'm pretty sure that word belongs in the other #esoterics hth
01:36:27 <tswett> And that raises a question: what is a brainfuck derivation?
01:37:01 <hppavilion[1]> tswett: So "specific Thue derivations" means what exactly?
01:37:17 <tswett> Specific ways of following the rules with a given start string in order to end with a given end string.
01:37:18 <hppavilion[1]> tswett: Also, note that you have to call substitution rules manually; they aren't automated
01:37:30 <hppavilion[1]> Ah
01:37:30 <tswett> Right. The derivation is the sequence of calls.
01:37:48 <tswett> There are two "problems" with the idea of a brainfuck derivation.
01:37:56 <hppavilion[1]> You can still call them in Thue-like fashion, by putting the desired ruleset in a theorem and fixpointing it (@)
01:38:07 <hppavilion[1]> tswett: I'm sure one is that BF is imperative
01:38:13 <tswett> One is that brainfuck, unlike Thue, is deterministic. Given a starting state and a program, there's only one way that you can proceed.
01:38:24 <hppavilion[1]> Ah, yes
01:38:36 <hppavilion[1]> tswett: I think there's another word for that
01:38:56 <hppavilion[1]> Unless you mean Thue is probabilistic, which is implementation-defined
01:39:55 <tswett> And the other "problem" is that brainfuck code works by taking a starting tape state (or tape segment state) and ending with another tape (segment) state.
01:40:26 <tswett> Now, resolving the first "problem" seems easy, I think. Just add more instructions, which are nondeterministic.
01:40:48 <hppavilion[1]> tswett: I can't tell what you mean by "deterministic" and "nondeterministic" here, based on what I assume they mean
01:40:56 <tswett> As for the second "problem"... I'll tell you what I can tell you and I'll let you run with it.
01:41:34 <tswett> "Deterministic" means "given the state for a time step, there is at most one possible state for the following time step".
01:41:55 <hppavilion[1]> Ah
01:42:18 <hppavilion[1]> tswett: I was thinking deterministic was non-probabilistic, but a search tells me probabilistic is a subset of nondeterministic
01:42:55 <tswett> Yeah. A nondeterministic system simply says something like "proceed to either A or B". A probabilistic system, on the other hand, says something like "proceed to A with probability 0.5, B otherwise".
01:42:59 <hppavilion[1]> tswett: So in this case, nondeterministic is like Algebra where you can rewrite in multiple different ways?
01:43:18 <tswett> Yeah, I'd say algebra is an example of a nondeterministic system.
01:43:23 <hppavilion[1]> OK
01:44:01 <tswett> Thue and brainfuck both involve a concept which is ubiquitous in programming, and also elsewhere in mathematics. They both involve specifying ways of going from one state to another state.
01:44:19 <hppavilion[1]> tswett: So can you clarify the second problem? I don't quite get it
01:44:50 <tswett> In Thue, what the "states" are and what the "ways of going" are are pretty straightforward. The "states" are the various strings that you can have as... y'know, the program state.
01:44:55 <tswett> And the "ways of going" are the individual rules.
01:45:30 <hppavilion[1]> OK
01:45:33 <tswett> In brainfuck, it's a little more subtle. The "states" are states of the tape... but are they states of the entire tape, or states of just pieces of the tape?
01:45:46 <hppavilion[1]> Ah...
01:45:58 <tswett> The easiest answer is "they're states of the entire tape". And that's a totally valid answer.
01:46:07 <hppavilion[1]> So it's like how different code will use different areas of the tape?
01:46:19 <tswett> Something like that... probably.
01:46:45 <tswett> But the problem with "they're states of the entire tape" is that... well, it's that every single piece of code has to be seen as affecting the entire tape.
01:46:52 <tswett> Which might be a little inflexible.
01:47:00 <hppavilion[1]> tswett: I mean the fact that, without running code, you can't determine what cells will and will not be used
01:47:08 <hppavilion[1]> (Even if we exclude ,)
01:47:25 <hppavilion[1]> tswett: Perhaps I could do something with a 2-tape
01:47:26 <tswett> That is true...
01:47:28 <tswett> Well.
01:47:35 <tswett> Lemme work with an example.
01:47:41 <tswett> Consider the following piece of brainfuck code: +
01:48:02 <hppavilion[1]> Where you have 8 cells that each rule can use, and at the end (and only at the end) of a rule, you transition to another group of 8 cells
01:48:13 <tswett> Here's what that code does, under the "states of the entire tape" choice:
01:48:54 <hppavilion[1]> That way, you can guarantee that the code will only use those 8 cells
01:48:56 <tswett> It takes a tape, and returns a tape where the active cell is the same cell as in the original tape, and all of the cells have the same value, except that the active cell contains a value equal to one plus its prior value.
01:49:06 <tswett> Here's what that code does, under the "states of just pieces of the tape" choice:
01:49:15 <hppavilion[1]> It's not just brainfuck that lets you do math, the idea is it's something novel that is vaguely inspired by brainfuck
01:49:20 <tswett> It takes a tape cell, and returns a cell containing a value equal to one plus the prior value.
01:49:38 <hppavilion[1]> tswett: Yes, I get it. I think that's what I said earlier
01:49:52 <tswett> The latter style is easier to talk about because it just doesn't mention the rest of the tape at all.
01:50:53 <tswett> So, here's how I think it's going to look.
01:50:54 <hppavilion[1]> With BF\IO, you pretty much can't determine what cells a fragment of code will modify (given the current active cell number and the fragment) short of running the code
01:51:10 <hppavilion[1]> And especially if the area of the tape has potentially been modified before
01:51:10 <HackEgo> [wiki] [[Dis]] https://esolangs.org/w/index.php?diff=46482&oldid=30820 * 94.12.170.129 * (-2) fixed the wayback link
01:51:13 <tswett> Axioms are pieces of extended-brainfuck code.
01:51:18 <hppavilion[1]> OK
01:51:23 <hppavilion[1]> That's what I was thinking
01:51:25 <tswett> Theorems have three pieces.
01:51:31 <hppavilion[1]> Listening
01:51:59 <tswett> First, the starting state of the tape segment. Second, the ending state of the tape segment. Third, a way of using axioms to get from the starting state to the ending state.
01:52:12 <hppavilion[1]> Yep?
01:52:27 <tswett> And that's pretty much that.
01:52:30 <hppavilion[1]> Starting state and ending state?
01:52:38 <tswett> What about them?
01:52:40 <hppavilion[1]> One sec
01:52:56 <hppavilion[1]> Let me read back, I may have accidentally expunged crucial information from my short-term memory
01:53:12 <tswett> Now, there are two ways of taking theorems and getting new theorems. First, you can take a theorem with a given ending state, and another theorem whose starting state is the same, and string those two theorems together.
01:53:34 <hppavilion[1]> tswett: The "state" is the values on a tape fragment, correct?
01:53:39 <tswett> Second, you can take a theorem and add additional cells to the beginning and/or end of the starting and ending states.
01:53:40 <tswett> Right.
01:53:56 <tswett> So if (0) -> (3) is a theorem, then (0,42) -> (3,42) is also a theorem.
01:53:57 <hppavilion[1]> Interesting...
01:54:29 <hppavilion[1]> tswett: So the start -> end part isn't stored, because of the large number of possible transitions?
01:54:59 -!- FreeFull has quit (Remote host closed the connection).
01:55:15 <tswett> Well, like I said, a theorem has those three pieces: starting state, ending state, and sequence of... steps. Storing the theorem means storing all three of those pieces.
01:55:26 <hppavilion[1]> Oh
01:56:09 <hppavilion[1]> tswett: So a theorem stores a relation between two values and a list of thelemax references?
01:56:21 <tswett> Sounds right.
01:56:32 <hppavilion[1]> Basically, a constrained in value and an equation that you run on that value to calculate the out value
01:57:06 <tswett> Right, except I don't think the word "equation" is the right word there.
01:57:12 <hppavilion[1]> tswett: Formula?
01:57:29 <tswett> It'll be a program, or a sequence of programs, where you specify choices for all of the nondeterministic bits of the program.
01:57:32 <hppavilion[1]> tswett: That message just referred to the relation
01:57:49 <tswett> Ah.
01:57:57 <hppavilion[1]> Not to the list of axioms
01:58:00 <tswett> In that case, yeah, exactly.
01:58:13 <tswett> You're actually getting ahead of what I was saying—which is good.
01:58:26 <hppavilion[1]> Yay!
01:58:37 <hppavilion[1]> tswett: Also, do you have any suggestions for things to make Thoof better (based on what you've heard), or any other languages that could be made into proof assistants after I do this?
01:58:39 <tswett> So far I'd only mentioned theorems with one specific in value and one specific out value. But it makes sense to extend that as much as you like.
01:58:52 <tswett> Thoof is the proof system inspired by Thue?
01:59:01 <hppavilion[1]> tswett: Yes, forgot to mention that
01:59:26 <tswett> Hmm. Not sure about Thoof, but let me think about other languages to make into proof assistants.
01:59:36 <tswett> If you're insane, try ///.
01:59:53 <tswett> Whose wiki page is, of course: http://esolangs.org/wiki////
02:00:18 -!- AlexR42 has joined.
02:00:24 <hppavilion[1]> tswett: Isn't that what I did? Or is /// self-modifying?
02:00:27 <tswett> Consider doing it for Unlambda.
02:00:32 <tswett> /// is self-modifying.
02:00:58 <tswett> Unlambda and /// are both deterministic. But, as always, it's easy to make a deterministic language non-deterministic: just add additional instructions.
02:01:22 <tswett> Or, here's how I'd suggest making /// nondeterministic.
02:01:32 <hppavilion[1]> tswett: I'm definitely making an Unlambda one xD
02:01:46 <tswett> Currently, the specification says that when you're performing a substitution, you find the first instance of the pattern string and replace it with the replacement string.
02:01:46 <hppavilion[1]> Then again, unlambda practically already /is/ a proof assistant
02:02:05 <tswett> Here's the nondeterministic version: find *any* instance of the pattern string and replace it with the replacement string.
02:02:16 <hppavilion[1]> Oooh...
02:02:30 <hppavilion[1]> And let the mathgrammer choose which instance it is?
02:02:38 <tswett> So the program "/***/zebra/*****" could output "zebra**", "*zebra*", or "**zebra".
02:02:40 <tswett> Exactly.
02:02:57 <tswett> In /// as it is, there's only one possible output: "zebra**".
02:03:01 <hppavilion[1]> tswett: Perhaps I should just put that in Thoof? For simplicity?
02:03:11 <hppavilion[1]> tswett: I mean, thoof isn't meant to be uber-minimal
02:03:20 <hppavilion[1]> It's meant to be usable, but non-conventional
02:03:24 <tswett> Put what in Thoof?
02:03:33 <hppavilion[1]> tswett: The ability to choose which is replace
02:03:34 <hppavilion[1]> d
02:03:47 <tswett> I assumed that you already had that as a feature, actually.
02:03:59 <hppavilion[1]> tswett: As it is, thoof just replaces the first instance of the regex with its substitution when it's called
02:04:02 <hppavilion[1]> Ah
02:04:12 <hppavilion[1]> Well, when an axiom is called/applied
02:04:31 <tswett> So what do you do if you want to replace a different instance instead?
02:04:48 <hppavilion[1]> tswett: You make sure the regexes and strings are set up so that you don't xD
02:04:55 <hppavilion[1]> tswett: But that's a good point that I didn't think of
02:05:03 <hppavilion[1]> tswett: I was already considering a {} notation
02:05:15 <tswett> Yeah, I'd definitely put that in Thoof for simplicity.
02:05:20 <hppavilion[1]> OK
02:05:33 <tswett> Unless, of course, you like the complications produced by not having that in Thoof.
02:05:40 <hppavilion[1]> I don't xD
02:05:42 <hppavilion[1]> Not completely
02:06:07 <hppavilion[1]> thelemax{n} replaces the nth instance, thelemax{:n} replaces all up to the nth instance, thelemax{n:} replaces all starting with the nth instance, and thelemax{n} replaces the nth instance, thelemax{:n} replaces all up to the nth instance, thelemax{n:m} replaces all starting at n and ending at m?
02:06:22 <hppavilion[1]> All :x are not inclusive, and x: are inclusive
02:07:11 <hppavilion[1]> tswett: That syntax look good?
02:07:45 <tswett> I think I like that. Also allow the user to specify multiple non-contiguous instances: {1,6,7,10000}
02:07:50 <hppavilion[1]> tswett: Ah, yes
02:07:56 <hppavilion[1]> tswett: And, of course, specify from the end
02:08:00 <tswett> Here's a question: how many instances of "***" are there in "******"?
02:08:04 <tswett> In my opinion, there are four.
02:08:11 <hppavilion[1]> tswett: 4
02:08:38 <tswett> Likewise, three instances of "abba" in "abbabbabba".
02:08:43 <hppavilion[1]> tswett: The thing will go with overlapping matches, for generality
02:09:08 <tswett> If the user tries to replace two overlapping instances simultaneously, that's probably an error.
02:09:21 <hppavilion[1]> tswett: I thought of letting Thoof use a small unix-like filesystem to store data too xD
02:09:33 <hppavilion[1]> (And, while we're at it, possibly thelemaxes)
02:09:44 <hppavilion[1]> tswett: Yeah, probably
02:10:09 <tswett> Now, what happens if, in the string "abbabbabbabbabbabbabbabbabbabbabbabbabbabbabbabba", I use thelemax{3:5}, where my thelemax turns "abba" into "jonsi"?
02:10:17 <oerjan> replace what thou wilt shall be the whole of the instance
02:10:32 <tswett> Is that an error, since instances 3 and 4, and likewise 4 and 5, are overlapping?
02:11:27 <hppavilion[1]> tswett: The third and fourth instances of abba are replaced with jonsi. What else would happen?
02:11:37 <hppavilion[1]> Oh, right
02:11:39 <hppavilion[1]> Overlap
02:11:56 <hppavilion[1]> tswett: Note that it terminates one instance early, like in Python
02:11:58 <hppavilion[1]> Actually, no
02:12:09 <hppavilion[1]> I should make it index from 1 for logic's sake
02:12:22 <tswett> You could say it's an error. You could also say that, going from left to right, it chooses all of the instances that don't overlap with a previously chosen instance.
02:12:35 <tswett> In which case you could have syntax for deciding whether you want to go from left to right, or from right to left.
02:12:56 <hppavilion[1]> tswett: negative numbers work from the right, like in Python
02:13:07 <hppavilion[1]> Because it makes sense and there's no reason not to
02:13:44 <hppavilion[1]> (There's no confusion because you can't use a variable or anything in {}, as the only variables are theorems/lemmas/axioms, which can't be numbers)
02:14:17 <hppavilion[1]> tswett: That idea's good too...
02:14:23 <tswett> I guess it could just be a matter of {3:5} versus {5:3}.
02:14:35 <hppavilion[1]> Perhaps [] should be non-overlapping, while- oh, yeah, good point
02:14:56 <hppavilion[1]> Wait, no, that was unrelated, wasn't it
02:15:04 <hppavilion[1]> [] will not overlap, but {} will
02:15:14 <hppavilion[1]> {} will raise an error on overlaps
02:22:08 <boily> . o O ( banananananananana... )
02:22:29 <hppavilion[1]> boily: I once wrote a program with the express purpose of doing that
02:27:31 <boily> Mr. Hppavilion[1]'s Patented Banana Proliferaton Programme, Enhanced With the Purest of Potassiums. Guaranteed to Cure your Personal Ailments!
02:28:05 -!- andrew_ has joined.
02:28:35 <oerjan> surely that should be Dr. Hppavilion[1]
02:28:53 <boily> hppavilion[1]: are you a doctor? are you even a mister?
02:29:10 <oerjan> he does look misterious
02:29:18 * boily lightly prods hppavilion[1] with his mapole, just to make sure
02:29:33 * boily thwacks oerjan
02:30:18 <oerjan> how brutal
02:30:58 <boily> that pun registered at least 0.8 shachafs.
02:36:47 <boily> I think hppavilion[1]'s secret is now uncovered. he isn't human, or at least appröximatively human.
02:37:25 -!- boily has quit (Quit: CYCLOPEAN CHICKEN).
02:48:07 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
02:50:38 -!- andrew_ has quit (Ping timeout: 248 seconds).
03:00:36 -!- bender|_ has joined.
03:04:07 -!- andrew_ has joined.
03:14:01 -!- hppavilion[1] has joined.
03:14:48 <hppavilion[1]> tswett: I'm back
03:17:34 <tswett> `unidecode ḧ
03:17:45 <HackEgo> ​[U+1E27 LATIN SMALL LETTER H WITH DIAERESIS]
03:18:35 <tswett> Ḧëllö, ḧppävïlïön[1].
03:18:55 -!- AlexR42 has quit (Ping timeout: 252 seconds).
03:23:58 -!- FreeFull has joined.
03:33:19 <hppavilion[1]> tswett: Hi
03:33:24 <hppavilion[1]> tswett: Forgot to respond xD
03:47:52 -!- augur has quit (Remote host closed the connection).
04:08:00 -!- oerjan has quit (Quit: leaving).
04:12:33 <prooftechnique> helloerjan, helloily, tswello, heppavellolion[1] :)
04:41:38 -!- augur has joined.
04:49:24 -!- bender|_ has changed nick to bender.
04:49:33 -!- bender has quit (Changing host).
04:49:33 -!- bender has joined.
04:50:44 <bender> It's been a long time since I did esoteric stuff
04:51:08 <shachaf> `welcome bender
04:51:13 <HackEgo> bender: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
04:56:49 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
04:58:40 <zzo38> Which one did you do in past (if any)?
04:59:09 <shachaf> zzhello38
04:59:36 <shachaf> Do you have any tricks for linear logic?
05:01:35 <zzo38> I don't think so
05:04:40 <zzo38> I would want to add into JavaScript a goto command which can implement a kind of "evasive exception", for example: function test() { again: xyzzy(()=>{goto again;}); return 1; } It cannot be caught by "catch" blocks, but "finally" can still partially catch it. What is your opinion of this?
05:05:27 <shachaf> Seems dubious to me.
05:05:31 <zzo38> (Of course it won't work if the that function that does goto again is called after test function returns; it such case it is error and is caught by a catch block.)
05:05:54 <shachaf> Why not make it work the second time, so you get a continuation thing?
05:07:28 <zzo38> I think JavaScript does not use continuations? But if it can be made to do so, then it might. However, then there is the case if a different part of the program does not want it to work a second time.
05:09:27 <zzo38> For generator functions it is a bit more easily though
05:12:44 <zzo38> (Jumping into any block is also going to be error, but depending how it is written it may be a syntax error which is seen before the program is executed.)
05:15:13 <zzo38> Anyways, "return" means the function is finished and is not allowed to continue, isn't it?
05:18:33 <zzo38> Note that in the example given, the "again" is local to the instance of the function call, as if it was "var x" and it passed a function that mentions "x", it is the "x" of this function call, too (but that is a variable and doesn't need the function to continue after it returns in order to use that variable)
05:19:28 <zzo38> If you would write "goto again;" outside of the function definition then the label called "again" is not in scope so it is an error.
05:19:36 -!- impomatic has quit (Ping timeout: 246 seconds).
05:20:39 <zzo38> Having "goto" would also make it easier for a JavaScript program to compile other stuff into a JavaScript program (such as with "new Function").
05:21:34 -!- impomatic_ has quit (Ping timeout: 248 seconds).
05:22:09 <zzo38> How else would you do it? One idea would be to first convert the other code into basic blocks, but and then what?
05:25:37 -!- augur has quit (Remote host closed the connection).
05:30:42 -!- augur has joined.
05:35:31 -!- hppavilion[1] has joined.
05:37:11 <shachaf> oerjan: whoa whoa whoa, the whole !A -o B and !A -o ?B thing makes perfect sense
05:37:23 <shachaf> and also presumably A -o ?B for dual intuitionistic logic
05:38:12 <hppavilion[1]> I want to start implementing software in abstract machines...
05:45:53 <zzo38> What kind of abstract machines?
05:49:08 -!- andrew__ has joined.
05:50:51 <hppavilion[1]> zzo38: Tag systems, for example
05:51:11 <hppavilion[1]> Perhaps in some way augmented, but it's doubtful
05:52:09 -!- andrew_ has quit (Ping timeout: 246 seconds).
05:58:31 <hppavilion[1]> Perhaps a programming language for constructing pseudo-operating systems where various components are first-class objects?
05:58:39 <hppavilion[1]> Nah, that's stupid and I don't understand OSes
06:12:34 -!- pdxleif has joined.
06:20:19 -!- MoALTz has joined.
06:21:39 <hppavilion[1]> tswett: You're still online. Is this because you never log off but are currently sleeping, or are you actually on?
06:34:31 -!- AnotherTest has joined.
06:34:50 <hppavilion[1]> Ugh, with my current setup it'll be a huge pain in the ass to properly make Thoof work
06:41:45 -!- AnotherTest has quit (Ping timeout: 276 seconds).
06:50:50 -!- augur has quit (Remote host closed the connection).
06:53:33 <b_jonas> Taneb: do you properly do unicode CNF normalization on the string before you get the glyphs from the font?
06:55:44 -!- heroux has quit (Ping timeout: 260 seconds).
06:57:50 -!- heroux has joined.
06:58:54 -!- lambda-11235 has quit (Quit: Bye).
07:05:59 <b_jonas> zzo38: re evasive exceptions: perl has exactly that. there are some compications if you want to exit through xs functions (depending on how exactly they call back to perl), sort blocks, regex code blocks, and other strange constructs. You may be able to leave with an exception, a goto, both, or neither, depending on the construct and the version of perl.
07:06:49 <b_jonas> zzo38: ruby also sort of has something like this, in that there are more things than exceptions that you can throw, and a catch catches only exceptions, but I'm not sure there's a finally construct that catches all the others. There's no full-powered goto though.
07:10:26 <b_jonas> zzo38: specifically, things you can throw are exceptions, four loop control statements which act on the function that got passed the lexically curretn ruby-like yield callback block as a yield argument (break (=perl's last), next, redo, retry (jumps to before the function call)), function return, plus internal fatal error thingies like out of memory that you can't catch.
07:11:15 -!- lynn has joined.
07:13:05 <b_jonas> zzo38: there's also a callcc, which is nastier. I think it makes a copy of the C stack or something. I think it still tries to run some finalize blocks, but I'm not sure if there's a corresponding scheme-like on-enter block too.
07:13:20 <b_jonas> For search, finally is called ensure in ruby.
07:14:07 <b_jonas> Ruby's non-exact gc (at least in ruby 1.8, I don't know if they replaced it) helps this sort of thing of course.
07:40:23 <prooftechnique> b_jonas: Taneb mentioned your font, and I was curious to see it
07:40:40 <prooftechnique> If you don't mind :)
07:44:49 -!- earendel has quit (Ping timeout: 248 seconds).
07:44:49 -!- staffehn has quit (Ping timeout: 248 seconds).
07:45:43 -!- staffehn has joined.
07:47:21 -!- tromp has quit (Remote host closed the connection).
07:51:46 -!- earendel has joined.
07:53:22 <zzo38> OK
07:54:01 -!- bender has quit (Ping timeout: 250 seconds).
07:54:28 -!- mroman has joined.
07:57:52 <hppavilion[1]> prooftechnique: It's jsut the font in the program
08:10:13 -!- bender has joined.
08:10:23 -!- bender has quit (Changing host).
08:10:23 -!- bender has joined.
08:11:07 -!- lynn has quit (Read error: Connection reset by peer).
08:15:36 <hppavilion[1]> prooftechnique: Do you do a lot of stuff with Proof Assistants? Your name implies you might
08:16:42 <prooftechnique> prooftechnique: I wouldn't say a lot. I do like to play with them, though.
08:17:18 <prooftechnique> I actually work at a design firm, right now, so the use case for proof assistants rarely comes up. :|
08:31:31 <prooftechnique> Though if GSS were a little more ready, I could conceivably make use of a constraint solver :D
08:33:38 <hppavilion[1]> prooftechnique: GSS?
08:33:56 <hppavilion[1]> Sorry, you didn't ping me so I missed the messages xD
08:43:51 <prooftechnique> hppavilion[1]: http://gridstylesheets.org/
08:44:02 <hppavilion[1]> Oooh
08:44:04 <hppavilion[1]> Sounds fancy
08:45:08 <Taneb> b_jonas, hell no, I just take the first 256 glyphs in the font and hope they're in the right order
08:46:16 <hppavilion[1]> prooftechnique: I'm looking for something novel to prove with, I was just seeing if you could help xD
08:47:49 -!- tromp has joined.
08:52:34 <prooftechnique> hppavilion[1]: I'm still kind of fascinated by Lemuridae, to be honest.
08:53:03 -!- tromp has quit (Ping timeout: 276 seconds).
08:56:04 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
09:16:27 -!- FreeFull has quit (Ping timeout: 276 seconds).
09:46:49 -!- AnotherTest has joined.
09:59:20 -!- jaboja64 has joined.
10:15:11 -!- hppavilion[1] has joined.
10:22:58 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
10:41:46 -!- primo has joined.
10:48:33 -!- tromp has joined.
10:52:51 -!- tromp has quit (Ping timeout: 248 seconds).
10:57:35 -!- lynn has joined.
11:25:07 -!- J_Arcane has quit (Ping timeout: 252 seconds).
11:25:23 -!- boily has joined.
11:39:02 <boily> @massages-loud
11:39:02 <lambdabot> You don't have any messages
11:39:33 <boily> question of the day: if I don't have any massages, did shachaf write anything?
11:41:11 <Taneb> @tell boily yes
11:41:11 <lambdabot> Consider it noted.
11:41:19 <boily> Tanelle
11:41:26 <boily> @massages-quiet
11:41:26 <lambdabot> Unknown command, try @list
11:41:29 <boily> @massages
11:44:31 -!- primo has left ("Leaving").
11:49:21 -!- tromp has joined.
11:53:43 -!- tromp has quit (Ping timeout: 252 seconds).
11:54:41 -!- mtve has joined.
11:56:41 -!- bender has quit (Ping timeout: 250 seconds).
11:59:01 -!- ais523 has joined.
12:02:50 -!- jaboja has joined.
12:05:18 -!- jaboja64 has quit (Ping timeout: 248 seconds).
12:14:14 -!- jaboja has quit (Ping timeout: 260 seconds).
12:22:01 -!- boily has quit (Quit: PACKET CHICKEN).
12:28:31 -!- bender has joined.
12:46:28 -!- jaboja has joined.
12:47:26 -!- andrew__ has quit (Remote host closed the connection).
12:51:28 -!- AnotherTest has quit (Ping timeout: 252 seconds).
13:02:46 -!- ais523 has quit (Ping timeout: 244 seconds).
13:19:37 -!- bender has quit (Ping timeout: 240 seconds).
13:20:32 -!- bender has joined.
13:45:13 -!- tromp has joined.
13:57:22 -!- tromp has quit (Remote host closed the connection).
14:00:05 <HackEgo> [wiki] [[Special:Log/newusers]] create * RaHorakhti * New user account
14:10:47 -!- p34k has joined.
14:13:53 -!- FreeFull has joined.
14:17:41 -!- jaboja has quit (Ping timeout: 244 seconds).
14:35:05 <Taneb> I think that brainfuck program I shared in the early hours of this morning may be one of the longest ones in existence
14:47:56 <FreeFull> Taneb: Was it generated?
14:49:15 -!- `^_^v has joined.
14:56:05 -!- bender has quit (Ping timeout: 250 seconds).
14:57:51 -!- tromp has joined.
15:02:22 -!- tromp has quit (Ping timeout: 252 seconds).
15:03:31 -!- oerjan has joined.
15:08:33 <Elronnd> Taneb: what did it do?
15:13:42 -!- MaskedFox has joined.
15:21:07 -!- spiette has joined.
15:27:00 -!- MaskedFox has quit (Ping timeout: 252 seconds).
15:27:06 <lifthrasiir> Taneb: https://arin.ga/FQLSPy/ ? it is just over 200K, which is not really the biggest
15:27:24 <lifthrasiir> Lost Kingdom BF edition is about 2MB
15:28:03 <oerjan> <shachaf> oerjan: whoa whoa whoa, the whole !A -o B and !A -o ?B thing makes perfect sense <-- i fear that we have lost shachaf
15:28:27 <HackEgo> [wiki] [[Q]] N https://esolangs.org/w/index.php?oldid=46483 * RaHorakhti * (+2813) Created page with "The Qabalah language ('''Q''') is not only an esoteric programming language, but it is also an [[Category:Occult languages|occult programming language]]. The first version of..."
15:29:19 <izabera> oooh, an esoteric esoteric programming language
15:30:34 <izabera> ...which only looks esoteric, not esoteric esoteric
15:31:30 <lifthrasiir> what is esoteric esoteric?
15:31:34 <HackEgo> [wiki] [[Q]] https://esolangs.org/w/index.php?diff=46484&oldid=46483 * RaHorakhti * (+1)
15:32:26 <izabera> like, esoteric in both senses
15:33:07 <HackEgo> [wiki] [[Category:Occult languages]] N https://esolangs.org/w/index.php?oldid=46485 * RaHorakhti * (+83) Created page with "Occult languages are esoteric languages that also has an occult focus of some kind."
15:33:51 -!- idris-bot has joined.
15:34:52 <HackEgo> [wiki] [[Special:Log/delete]] delete * Oerjan * deleted "[[Category:Occult languages]]": Creating category without discussion against [[Esolang:Policy]]
15:35:02 <oerjan> the foot, it came down hth
15:35:39 <HackEgo> [wiki] [[Language list]] https://esolangs.org/w/index.php?diff=46486&oldid=46472 * RaHorakhti * (+8)
15:42:00 <HackEgo> [wiki] [[Q]] https://esolangs.org/w/index.php?diff=46487&oldid=46484 * RaHorakhti * (-1)
15:44:59 <tswett> @tell hppavilion[1] I never log off (if I can help it).
15:45:00 <lambdabot> Consider it noted.
15:45:42 <HackEgo> [wiki] [[User:RaHorakhti]] N https://esolangs.org/w/index.php?oldid=46488 * RaHorakhti * (+135) Created page with "My name is Per Löwgren, you can find some of my work at [https://bitbucket.org/perlowgren BitBucket]. I've created the language [[Q]]."
15:46:27 -!- earendel has quit (Ping timeout: 246 seconds).
15:50:57 -!- lambda-11235 has joined.
16:06:54 -!- mroman has quit (Quit: Lost terminal).
16:07:16 -!- spiette_ has joined.
16:07:55 -!- p34k has quit.
16:08:03 <HackEgo> [wiki] [[Q]] https://esolangs.org/w/index.php?diff=46489&oldid=46487 * RaHorakhti * (-62)
16:08:04 -!- spiette has quit (Disconnected by services).
16:08:12 -!- spiette_ has changed nick to spiette.
16:11:55 -!- p34k has joined.
16:12:50 -!- haavardp has joined.
16:14:06 -!- shikhin_ has joined.
16:14:28 -!- sewilton_ has joined.
16:15:32 -!- sewilton has quit (Ping timeout: 264 seconds).
16:15:33 -!- lambdabot has quit (Read error: Connection reset by peer).
16:15:33 -!- zgrep has quit (Ping timeout: 264 seconds).
16:15:34 -!- shikhin has quit (Read error: Connection reset by peer).
16:15:34 -!- Elronnd has quit (Ping timeout: 264 seconds).
16:15:34 -!- haavard has quit (Ping timeout: 264 seconds).
16:15:34 -!- zgrep has joined.
16:15:43 -!- zgrep has quit (Changing host).
16:15:43 -!- zgrep has joined.
16:17:19 -!- sewilton_ has changed nick to sewilton.
16:17:54 -!- Elronnd has joined.
16:18:40 -!- lambdabot has joined.
16:33:33 <HackEgo> [wiki] [[Esolang:Policy]] https://esolangs.org/w/index.php?diff=46490&oldid=43620 * Oerjan * (+8) Make it clearer this points to where discussions should happen
16:34:34 -!- augur has joined.
16:47:30 -!- oerjan has quit (Quit: Later).
16:55:25 -!- augur has quit (Remote host closed the connection).
16:56:00 -!- augur has joined.
16:57:40 -!- augur has quit (Read error: Connection reset by peer).
16:58:01 -!- tromp has joined.
16:58:15 -!- augur has joined.
16:58:25 -!- augur has quit (Remote host closed the connection).
17:02:24 -!- tromp has quit (Ping timeout: 246 seconds).
17:25:50 -!- AnotherTest has joined.
17:29:00 -!- Sprocklem has quit (Ping timeout: 246 seconds).
17:40:45 -!- Opodeldoc has quit (Ping timeout: 250 seconds).
17:43:34 -!- jaboja has joined.
18:02:36 -!- hppavilion[1] has joined.
18:11:04 -!- earendel has joined.
18:20:55 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
18:22:47 -!- spiette has quit (Ping timeout: 250 seconds).
18:23:25 -!- spiette has joined.
18:24:11 -!- Opodeldoc has joined.
18:50:34 -!- zadock has joined.
19:05:26 -!- hppavilion[1] has joined.
19:10:23 <hppavilion[1]> tswett: Greetings
19:10:30 <hppavilion[1]> @messages-lud
19:10:30 <lambdabot> tswett said 3h 25m 30s ago: I never log off (if I can help it).
19:12:56 -!- augur has joined.
19:18:40 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
19:30:31 -!- hppavilion[1] has joined.
19:33:44 <hppavilion[1]> Are there any x/// expressions other than s and y?
19:35:02 <hppavilion[1]> tswett?
19:37:51 -!- augur has quit (Ping timeout: 276 seconds).
19:38:49 -!- augur has joined.
19:41:18 -!- Sprocklem has joined.
20:04:19 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
20:11:28 -!- Nithogg has joined.
20:11:33 -!- shikhin_ has changed nick to shikhin.
20:11:59 -!- jaboja has quit (Ping timeout: 250 seconds).
20:16:04 -!- jaboja has joined.
20:20:21 -!- Sprocklem has quit (Ping timeout: 244 seconds).
20:22:27 -!- jaboja has quit (Ping timeout: 248 seconds).
20:27:06 <prooftechnique> Did anyone else just have the whole ban list dumped to channel?
20:27:14 <prooftechnique> And by just, I mean two hours ago?
20:27:33 <prooftechnique> Maybe irssi's just being weird
20:30:22 -!- lambda-11235 has quit (Quit: Bye).
20:30:56 <coppro> prooftechnique: you probably sent /mode #esoteric +b
20:31:45 <prooftechnique> I wonder why I'd have done that :|
20:32:00 <prooftechnique> My whole status buffer was full of /who lists at that time, too
20:32:21 <prooftechnique> I hope my poor ZNC didn't have a seizure
20:35:11 -!- jaboja has joined.
20:36:39 -!- hppavilion[1] has joined.
20:39:29 -!- jaboja has quit (Ping timeout: 244 seconds).
20:39:58 <zzo38> Now what else I should need to add into my JavaScript Xlib?
20:40:44 <hppavilion[1]> zzo38: What does it do?
20:40:50 <hppavilion[1]> zzo38: Is Xlib for X?
20:40:54 <zzo38> Would it need a command to draw a stack of pictures?
20:40:56 <hppavilion[1]> (The windowing system)?
20:41:00 <zzo38> Yes Xlib for X window system
20:41:11 <int-e> Meh I HATE pulseaudio.
20:41:22 <hppavilion[1]> zzo38: Is this on the desktop for JS, or is it an emulator that runs in-browser?
20:41:37 <zzo38> It is a JavaScript program to access Xlib (and also the C program)
20:41:42 <zzo38> hppavilion[1]: It is for use with Node.js
20:41:45 <hppavilion[1]> zzo38: OK
20:41:54 <hppavilion[1]> zzo38: What do you mean by "A stack of pictures"?
20:42:01 <hppavilion[1]> zzo38: Do you mean like save() and restore()?
20:42:45 <zzo38> There is a function X.Drawable.prototype.drawPicture but I would mean, a command to draw multiple pictures in the same place all at once (if it doesn't have it you can still just use drawPicture multiple times, but as a single command might be more efficient?)
20:43:01 <int-e> Just wasted 3 hours of my life on figuring out a) that I need it b) how to start it (it was stumbling over a leftover socket file in /var/run... but of course I got a descriptive error message: bind(): socket already in use) and c) why I need it... to play videos with sound in Firefox.
20:43:51 <int-e> (the answer to c) is that the HTML5 stuff uses libpulse to play audio, which will only talk to a pulseaudio server)
20:44:17 <int-e> (but apparently isn't smart enough to start one when none is running)
20:44:52 <zzo38> I do not really like pulseaudio either, although it is already set up in my computer anyways so I do not need to do anything.
20:45:15 <int-e> to me it's cruft that solves a non-problem
20:45:25 <zzo38> int-e: I agree
20:45:26 <int-e> (playing sound from different sources simultaneously)
20:45:42 <zzo38> Other commands I would be planning to add are X.Drawable.prototype.pushGC, X.Drawable.prototype.popGC, and X.Drawable.prototype.drawMacro
20:56:13 <b_jonas> ARGH! In HTML webpages, why don't people use images with alt text versus images with empty alt text versus background images the semantically right way?
20:56:21 <b_jonas> It's just so stupid.
20:57:16 <shachaf> `wisdom
20:57:21 <HackEgo> ​ /The final frontier.
20:58:05 <shachaf> wisdom
20:58:07 <shachaf> scow
20:58:13 <shachaf> `wisdom
20:58:13 <shachaf> `wisdom
20:58:14 <shachaf> `wisdom
20:58:40 <HackEgo> irc/IRC is short for "Internet Relay Chat". It is named so because all the servers are constructed from relays.
20:58:40 <HackEgo> btw/btw is short for "bury the weasel"
20:58:41 <HackEgo> cpressey/cpressey invented the esolang, the pipe cleaner and the electrical mousse.
20:59:13 <int-e> would mousse be a sharp rodent?
21:00:57 <int-e> `? mousse
21:00:59 <HackEgo> mousse? ¯\(°​_o)/¯
21:02:40 <int-e> And ratatouille could be a stuttering rodent.
21:07:57 -!- augur has quit (Remote host closed the connection).
21:09:12 <zzo38> They say dash (in Magic: the Gathering) can only go on creatures, but it is untrue; cards could be made that are not creatures and have dash (as long as it is not an instant, sorcery, or land). The haste is mostly meaningless in such case but still has it and in some cases can be used.
21:11:56 <zzo38> (The same is true of megamorph, although the +1/+1 counter in such case would ordinarily do nothing, when combined with undying, graft, and/or modular, it can do such thing even though it is not a creature.)
21:13:57 <zzo38> Exploit also does not have to go only on creatures
21:15:37 <shachaf> zzo38: Is that also true of super haste?
21:18:28 <zzo38> I suppose so, although it is irrelevant since super haste is not a standard rule for the normal game and is only for Un-cards.
21:19:44 <shachaf> If a card isn't a creature can you still put it on the battlefield with super haste?
21:20:48 <zzo38> There is no such rule as super haste.
21:22:23 <shachaf> http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=74324 has it.
21:22:41 <shachaf> Do you refuse to play with Un-cards?
21:24:49 <zzo38> Not necessarily, although people would need to agree a different kind of game, sometimes it is necessary to argue about the rules, etc.
21:25:26 <shachaf> Necessary to argue about the rules?
21:25:38 <shachaf> That makes it completely different from a regular Magic: The Gathering game.
21:25:43 <zzo38> Consider a card such as: {3} Artifact ;; Undying ;; Megamorph {1} ;; {T}, Sacrifice ~: Target player gains 2 life.
21:25:50 <zzo38> shachaf: I know!
21:25:59 <zzo38> But I said "sometimes"!
21:28:58 -!- zadock has quit (Quit: Leaving).
21:29:09 <zzo38> For example, my own ideas about how R&D's Secret Lair is working is different than what other people say (and they are also different from each other), but there is no rule to make such an effect work, so you have to argue about it.
21:30:58 <zzo38> (My own opinion that the old Lightning Bolt with R&D's Secret Lair allows you to target any player, object, or zone; if the object is not a permanent, or is a permanent that isn't a creature or planeswalker, or is a zone other than the battlefield, nothing happens; if the target is the battlefield, each non-token creature and non-token planeswalker (including ones with shroud/hexproof, but not if it has protection from red) takes 3 points of damag
21:33:58 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
21:34:43 -!- Sprocklem has joined.
21:35:34 -!- zzo38 has quit (Remote host closed the connection).
21:36:06 -!- hppavilion[1] has joined.
21:37:22 <hppavilion[1]> relation
21:37:26 <hppavilion[1]> Whoops
21:37:29 <hppavilion[1]> Meant to ctrl+f
21:42:39 <int-e> *reads about the ending phase* ... could there be an infinite loop of cleanup steps...
21:44:40 -!- J_Arcane has joined.
21:47:50 -!- ais523 has joined.
21:48:51 <hppavilion[1]> tswett: Ugh, trying to figure out BrainProof
21:58:36 -!- AnotherTest has quit (Quit: ZNC - http://znc.in).
22:16:16 -!- `^_^v has quit (Quit: This computer has gone to sleep).
22:20:44 -!- spiette has quit (Ping timeout: 244 seconds).
22:25:48 -!- jaboja has joined.
22:26:19 -!- Sprocklem has quit (Quit: [).
22:30:27 -!- jaboja has quit (Ping timeout: 248 seconds).
22:36:55 -!- spiette has joined.
22:45:42 -!- Opodeldoc has quit (Quit: Leaving).
22:53:03 -!- oerjan has joined.
22:59:36 -!- spiette has quit (Quit: :qa!).
23:00:19 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
23:02:42 -!- lambda-11235 has joined.
23:07:44 <oerjan> `? mousse
23:07:50 <HackEgo> mousse? ¯\(°​_o)/¯
23:08:32 <oerjan> <int-e> would mousse be a sharp rodent? <-- i'm not quite sure where you get "sharp" twh
23:09:23 <oerjan> oh hm
23:09:50 -!- boily has joined.
23:10:21 <int-e> I guess you got it, but anyway: a mousssse would be super extra sharp.
23:10:43 <boily> int-ello. sharp mousse?
23:11:08 <int-e> check the logss
23:12:40 <oerjan> `learn A mousse is a sharp rodent. "A mousse once bit my sister."
23:12:49 <boily> I logsschecked. I still don't grok it.
23:12:49 <HackEgo> Learned 'mousse': A mousse is a sharp rodent. "A mousse once bit my sister."
23:12:56 <oerjan> i hope the quote is accurate twh
23:13:05 <boily> hellørjan. you seem to be having understood it.
23:13:24 <int-e> it's a pun on ß, often written "ss".
23:14:05 <oerjan> it's really just an s with a scarf
23:14:23 <int-e> I'll readily admit that it wasn't very inspired
23:14:34 * boily lightly thwacks int-e
23:14:38 <boily> 0.3 shachafs.
23:14:48 <oerjan> `? ß
23:14:50 <HackEgo> ​ß? ¯\(°​_o)/¯
23:14:59 <int-e> `learn ß is not a beta.
23:15:02 <HackEgo> Learned 'ß': ß is not a beta.
23:15:08 <oerjan> darn
23:16:16 <oerjan> `learn_append ß It's a "scharfes S", aka s with a scarf.
23:16:21 <HackEgo> Learned 'ß': ß is not a beta. It's a "scharfes S", aka s with a scarf.
23:16:49 <zgrep> Err... with a scharf.
23:17:06 <boily> with a schacharf.
23:17:14 <oerjan> int-e: also, i didn't actually get it, i just got a different idea.
23:17:16 <int-e> Would omegpsi be a co-alphabet?
23:17:34 <shachaf> int-e: i got it hth
23:17:58 <int-e> shachaf: thanks, always a pleasure to drag people down to my level
23:18:10 <oerjan> zgrep: no, we have to consider the sk -> sch sound change in german hth
23:18:21 <zgrep> Ah.
23:18:43 <shachaf> schlerosis?
23:19:17 <boily> int-e: what's an omegpsi?
23:19:26 <zgrep> I do not Deutsch sprechen.
23:20:15 <int-e> boily: just musing about the etymology of "alphabet"
23:20:32 <int-e> boily: I mean I don't even know what a co-alphabet would be.
23:20:44 <shachaf> coal phab et al.
23:21:12 <oerjan> shachaf: it may be a little older than the borrowing of that medical term hth
23:21:34 <boily> int-e: oh. makes sense. tdh
23:22:11 <boily> moi neither, je speake not le Deutsch.
23:22:12 <shachaf> boily: hoily
23:22:17 <boily> shachaf: hellochaf.
23:22:23 <oerjan> `? ratatouille
23:22:26 <HackEgo> ratatouille? ¯\(°​_o)/¯
23:22:30 <shachaf> eye of newt and toe of frog / wing of bat and pooch of dog
23:22:33 <shachaf> hmm
23:22:36 <shachaf> eye of newt and toe of frog / wool of bat and pooch of dog
23:23:01 <oerjan> `learn A ratatouille is a stuttering rodent.
23:23:05 <HackEgo> Learned 'ratatouille': A ratatouille is a stuttering rodent.
23:23:34 <oerjan> int-e: you can add your own wisdom you know hth
23:24:04 <shachaf> In the game Lost Vikings 2, you collect a wing of bat to give to the witch to bring you home.
23:24:29 <int-e> `? til
23:24:32 <HackEgo> TIL that TIL means Today I Learned
23:24:35 <boily> wait. you give a wing to bring back a bat???
23:25:01 <boily> til is also the most confusingest Norwegian word.
23:25:24 <oerjan> it's cognate to german "Ziel", which means goal, iirc
23:25:43 <oerjan> but somehow it got press ganged into a preposition.
23:26:17 <shachaf> `translatefromto en no wisdom/til | sponge wisdom/til
23:26:23 <shachaf> that doesn't even make sense
23:26:31 <oerjan> (for a while it thus governed the genitive case, while our prepositions still did that sort of thing.)
23:26:55 <oerjan> and a few stock phrases still do that. "til sjøs" = at sea
23:27:13 <boily> «tille cheusse».
23:27:15 <oerjan> or to the sea
23:27:24 <oerjan> it can mean both, i think.
23:27:28 <oerjan> or wait
23:27:35 <shachaf> `? norwegian
23:27:37 <HackEgo> norwegian? ¯\(°​_o)/¯
23:29:13 <oerjan> i may be confusing it with "til lands og til vanns" (a stock phrased used about a magical boat in a fairy tale that could sail on the ground or on the water, or even fly)
23:29:17 <oerjan> *phrase
23:29:43 <shachaf> `? shachaf
23:29:44 <HackEgo> shachaf sprø som selleri and cosplays Nepeta Leijon on weekends. He hates bell peppers with a passion.
23:29:57 <shachaf> spr/o som selleri
23:30:07 <shachaf> spr(/)
23:30:08 <oerjan> oh and "til fots", by foot
23:30:28 <shachaf> oerjan: have you considered that english is simpler than norwegian
23:30:29 <boily> shachaf: your wisdom lacks pooches hth
23:30:46 <shachaf> boily; then it reflects me
23:31:07 <shachaf> :
23:33:00 <oerjan> <boily> «tille cheusse». <-- that's pretty accurate pronunciationwise, i think
23:33:44 -!- Lord_of_Life has quit (Excess Flood).
23:33:52 <oerjan> shachaf: i think that's debatable.
23:34:32 <oerjan> the spelling isn't quite as insane as english, anyway
23:34:49 <oerjan> although still not exactly a bijection
23:35:24 <oerjan> the genders don't help, i guess. otoh we have less verb inflection.
23:35:37 -!- Lord_of_Life has joined.
23:36:10 <oerjan> (no pesky progressive, and no person/number suffixes)
23:36:29 <nzt-fish> oh my god, your language suck so hard!
23:36:32 <nzt-fish> it's not even useful
23:36:37 <nzt-fish> delete irc please
23:36:51 <oerjan> `welcome nzt-fish
23:36:52 <HackEgo> nzt-fish: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
23:37:15 <nzt-fish> oerjan: I'm homosexual. Is that okay?
23:37:28 <oerjan> nzt-fish: you seem confused. and yes, that's okay.
23:37:45 <nzt-fish> I suck a lot of dicks. If you ban me, you're a homophobe
23:38:03 <int-e> but trolling is not okay.
23:38:16 <oerjan> indeed.
23:38:27 <shachaf> oerjan: What about when you do it?
23:38:41 <oerjan> shachaf: i mean boring trolling of course, duh
23:38:45 <shachaf> Oh.
23:38:50 <shachaf> Sure, no one wants that.
23:40:13 -!- hppavilion[1] has joined.
23:40:54 <boily> hppavellon[1].
23:40:58 <int-e> @metar LOWI
23:40:58 <lambdabot> LOWI 022320Z AUTO VRB02KT 9999 FEW007 BKN010 02/01 Q1003
23:41:11 <shachaf> @@ @@ (@where weather) LOWI
23:41:12 <lambdabot> LOWI 022320Z AUTO VRB02KT 9999 FEW007 BKN010 02/01 Q1003
23:41:15 <shachaf> much better tdh
23:41:27 <oerjan> `learn_append shachaf The unit of bad punnery is named after him.
23:41:31 <HackEgo> Learned 'shachaf': shachaf sprø som selleri and cosplays Nepeta Leijon on weekends. He hates bell peppers with a passion. The unit of bad punnery is named after him.
23:41:38 <hppavilion[1]> ahoily, boily
23:41:46 <shachaf> oerjan: Is there a wisdom entry for the unit of bad punnery?
23:42:02 <shachaf> oerjan: Hey, you never made the temperature thing for lambdabot work.
23:42:17 -!- Phantom_Hoover has joined.
23:42:22 <oerjan> shachaf: well given that the unit is named "shachaf"...
23:42:38 <int-e> `? schaf
23:42:40 <HackEgo> schaf? ¯\(°​_o)/¯
23:42:51 <shachaf> Oh, I thought it was "shachafs".
23:43:28 <shachaf> `` cd wisdom; for f in *; do [ -e "$f"s ] && echo "$f"; done
23:43:29 <HackEgo> log \ math \ monad \ monoid \ the u
23:43:32 <shachaf> `? log
23:43:34 <HackEgo> I think you might mean !logs
23:43:35 <shachaf> `? logs
23:43:37 <HackEgo> I think you might mean !logs
23:43:40 <shachaf> `? math
23:43:42 <HackEgo> Math class is tough!
23:43:43 <shachaf> `? maths
23:43:44 <HackEgo> Maths stands for Mathematical Anti-Telharsic Harfatum Septomin.
23:43:46 <oerjan> shachaf: hm maybe
23:43:49 <shachaf> `? monad
23:43:50 <HackEgo> Monads are just monoids in the category of endofunctors.
23:43:53 <shachaf> `? monads
23:43:54 <HackEgo> Monads are just free monad monad monad algebras.
23:43:58 <shachaf> `? the u
23:44:00 <HackEgo> The U are a very mad people.
23:44:01 <shachaf> `? the us
23:44:03 <HackEgo> The US is the country opposed to the THEM.
23:44:22 <int-e> that's way too accurate
23:44:31 <boily> oerjan: it's shachafs hth
23:44:37 <oerjan> shachaf: well it would 1 shachaf, anyway.
23:44:55 <shachaf> oerjan: no, it's like flops
23:44:57 <shachaf> 1 flops
23:45:00 <shachaf> 10 flops
23:45:05 <oerjan> boily: that doesn't sound like a proper SI unit
23:45:12 <oerjan> you don't pluralize those
23:45:16 <boily> shachaf isn't very standard hth
23:45:44 <oerjan> or wait, maybe english does
23:45:56 <oerjan> is it 2.3 newton or newtons
23:45:58 <int-e> `le/rn schaf/"Schaf" is german for "sheep". There is absolutely no relation to shachaf.
23:46:03 <HackEgo> Learned «schaf»
23:46:13 <shachaf> int-e: why didn't you use `learn tdnh hth
23:46:22 <int-e> shachaf: because of the quotes
23:47:02 <int-e> `learn " is a double quote, added to wisdom as a test.
23:47:08 <HackEgo> Learned '"': " is a double quote, added to wisdom as a test.
23:47:12 <int-e> `revert
23:47:13 <shachaf> Oh, I thought `learn handled those.
23:47:18 <shachaf> I guess not.
23:47:20 <HackEgo> rm: cannot remove `/home/hackbot/hackbot.hg/multibot_cmds/env/.hg/store/data/canary.orig': Is a directory \ Done.
23:47:27 <shachaf> oerjan: See, that's why no one trusts `learn.
23:47:50 <hppavilion[1]> In the category of numbers, what are the morphisms? Does such a category even make sense (I have a feeling it might not)?
23:48:07 <shachaf> That's up to you.
23:48:16 <hppavilion[1]> shachaf: Me?
23:48:27 <shachaf> There are lots of categories where the objects are numbers, but you don't specify a category by specifying the objects.
23:48:31 <oerjan> int-e: you cannot use `revert to remove files hth
23:48:37 <shachaf> There are also categories where the arrows are numbers.
23:48:39 <shachaf> `? "
23:48:40 <HackEgo> ​"? ¯\(°​_o)/¯
23:48:45 <boily> numbers are scalars, AKA 1×1 matrices, so you're in the Mat category.
23:48:47 <hppavilion[1]> shachaf: Thought that might be the case
23:48:51 <oerjan> `touch test2
23:48:53 <HackEgo> No output.
23:48:54 <hppavilion[1]> boily: Good point
23:48:55 <oerjan> `cat test2
23:48:56 <HackEgo> No output.
23:48:57 <shachaf> But you need to talk about which one you're talking about.
23:49:00 <oerjan> `? "
23:49:02 <HackEgo> ​" is a double quote, added to wisdom as a test.
23:49:06 <oerjan> shachaf: hth
23:49:15 <int-e> `rm wisdom/"
23:49:15 <nzt-fish> no op in here?
23:49:16 <hppavilion[1]> shachaf: What are some examples of common morphisms in categories with numbers as the elements?
23:49:17 <int-e> pah
23:49:18 <HackEgo> No output.
23:49:25 <shachaf> hppavilion[1]: That's up to you.
23:49:31 <boily> nzt-fish: it's up to you to guess who's a chanop.
23:49:36 <hppavilion[1]> And while we're at it, what about where the arrows are numbers
23:49:38 <oerjan> int-e: it's particularly insidious in that it seems to work until the next repository change (iiuc)
23:49:38 <shachaf> hppavilion[1]: I'll give you three examples and then you go figure them out and tell me things about them.
23:49:53 <shachaf> All of these categories have natural numbers as objects.
23:49:54 <int-e> `rm test2
23:49:55 <hppavilion[1]> nzt-fish: We have ops, but they have to make ChanServ op themselves to be ops
23:49:56 <HackEgo> No output.
23:50:00 <hppavilion[1]> nzt-fish: THen they deop
23:50:03 <oerjan> i'm a chanop and so is my wife
23:50:09 <oerjan> or wait, was that spartacus
23:50:13 <shachaf> A: There's an arrow between X and Y iff X <= Y
23:50:15 <nzt-fish> okay, how about this
23:50:28 * nzt-fish pulls out his huge donger and dicks every single one of you, you and you and you.
23:50:31 <shachaf> B: An arrow between N and M is an NxM matrix. Composition is matrix multiplcation.
23:50:45 <int-e> nzt-fish: surely you can be more creative than that
23:50:50 <boily> oerjan: can I be op momentarily and mapole the fish into oblivion? pretty please?
23:50:57 <oerjan> <shachaf> oerjan: See, that's why no one trusts `learn. <-- well i added documentation.
23:50:58 <shachaf> C: An arrow : N -> M is an M-tuple of numbers smaller than N. Composition is pointwise indexing.
23:51:01 <nzt-fish> int-e: yes, but it's enough to get banned. now where are the ops
23:51:06 <shachaf> `learn
23:51:07 <HackEgo> ​/hackenv/bin/learn: line 3: wisdom/: Is a directory \ Learned '':
23:51:16 <boily> shachaf: heh, nice one :D
23:51:31 <shachaf> boily: ?
23:51:50 <boily> did you just `learn the empty file with an empty name?
23:51:53 <shachaf> hppavilion[1]: Now go figure out what those categories are and tell oerjan when you're done.
23:51:56 <boily> or am I grossly mistaken...
23:51:59 <shachaf> I was trying to see oerjan's documentation.
23:52:12 <hppavilion[1]> shachaf: Yep, working on that
23:52:13 <int-e> `le/rn /foo
23:52:14 <HackEgo> No output.
23:52:32 <shachaf> `` le/rn '/foo'; echo $?
23:52:32 <HackEgo> 1
23:52:38 <int-e> I guess it checks that.
23:53:09 * boily rolls a d20 for a charm/diplomacy check against oerjan
23:53:30 <boily> I got 18.
23:53:54 <int-e> @dice d20
23:53:54 <lambdabot> int-e: 1
23:53:57 <int-e> hah!
23:54:03 <hppavilion[1]> shachaf: What kind of matrix is the NxM matrix?
23:54:23 <hppavilion[1]> shachaf: As in, is it N^nxm?
23:54:26 <hppavilion[1]> Or R^nxm
23:54:31 <hppavilion[1]> Or I^nxm
23:54:36 <int-e> so what would a critical charm/diplomacy failure look like...
23:54:43 <boily> int-e fumbles, grips hppavilion[1] by the arm and they both tumble down a sudden cliff that materialized out of nowhere
23:55:00 <int-e> a, straight to hell? convenient...
23:55:17 <shachaf> hppavilion[1]: Let's say reals.
23:55:24 <hppavilion[1]> shachaf: OK
23:55:37 <int-e> boily: personally I was thinking of bursting mirrors
23:55:42 -!- ChanServ has set channel mode: +o boily.
23:55:52 <boily> thoerjan ^^
23:55:57 <oerjan> got to respect the dice
23:56:20 <shachaf> d20
23:56:21 <lambdabot> shachaf: 18
23:56:25 <shachaf> oh man
23:56:37 <int-e> damn, that contextual match is still there?
23:56:42 -!- boily has set channel mode: +b *!~nzt@unaffiliated/nzt.
23:56:44 -!- boily has kicked nzt-fish *THWACK* too doo doo doo doo doooo ♪ IT'S A HOMERUN!.
23:56:50 -!- boily has set channel mode: -o boily.
23:57:51 <shachaf> hppavilion[1]: The real point of this exercise is to realize that the objects of a category are pretty irrelevant.
23:58:08 <hppavilion[1]> shachaf: Yes, but now I'm invested
23:58:32 <shachaf> That third category is a very obscure one you've probably never heard of.
23:58:38 <int-e> so you can have completely pointless categories and the theory will still work just as well as before
23:58:52 <shachaf> It has the property that products are products and sums are sums.
23:59:08 <shachaf> You can probably figure out some more properties.
23:59:11 <oerjan> `? learn
23:59:13 <HackEgo> ​`learn creates a wisdom entry and tries to guess which word is the key. Syntax (case insensitive): `learn [a|an|the] <keyword>[s][punctuation] [...]
←2016-03-01 2016-03-02 2016-03-03→ ↑2016 ↑all