00:02:45 -!- uplime has quit (Quit: WeeChat 2.2).
00:50:14 -!- tromp has quit (Remote host closed the connection).
01:05:57 -!- tromp has joined.
01:10:26 -!- tromp has quit (Ping timeout: 258 seconds).
01:18:22 -!- tromp has joined.
01:22:58 -!- tromp has quit (Ping timeout: 272 seconds).
01:32:27 -!- oerjan has joined.
01:39:09 -!- arseniiv has quit (Ping timeout: 252 seconds).
01:43:56 <oerjan> Wut, I distinctly was in the query window...
01:45:19 <oerjan> @tell ais523 I found the smaller modulus 1,4,0 (mod 15). Pondering some proper searching...
01:45:46 -!- uplime has joined.
01:46:08 * oerjan slightly disturbed how mathematicians and programmers have two contradictory referents for the word "modulus"
01:52:54 <int-e> hmm https://en.wikipedia.org/wiki/Modulus has many suggestions
01:56:34 <int-e> https://en.wikipedia.org/wiki/File:Modulus_tectum.shell_001.jpg is actually quite pretty
02:07:27 -!- tromp has joined.
02:12:51 <oerjan> Darn I thought I'd found a tiny modulus in my search but I'd simply forgotten to apply mod :P
02:13:54 <oerjan> Obvious bad luck: The smallest it found now was 13.
02:14:09 <int-e> smallest modulus for what?
02:14:41 <oerjan> For the scheme to adjust ais523's simpler 2-bracket construction to avoid non-negative cells
02:17:15 <oerjan> @tell ais523 Searching say 1,4,0 (mod 13)
02:22:30 -!- xkapastel has quit (Quit: Connection closed for inactivity).
02:28:45 <oerjan> @tell ais523 I found an assumption to relax; make that 1,5,0 (mod 12)
02:30:39 <oerjan> Hm curiously I think that's the one I thought of in bed this morning but thought didn't work.
02:31:35 <oerjan> (It has the nice property that x/y == y/x (mod 12) which made it easier to think of all cases by head)
02:32:45 <shachaf> Is there a language that has things that are something like inlined functions, but that can do things that regular functions can't, since they're always inlined?
02:32:46 <oerjan> Because that makes x and y symmetrical up to a constant multiple
02:33:21 <shachaf> For example, you maybe you could pass a goto label to them, even if goto labels don't exist as a first-class thing at runtime.
02:34:30 <shachaf> hth-tdnh-shocking is the standard oerjan three-way handshake
02:36:09 <oerjan> other macros like lisp's might work too
02:42:38 <shachaf> Macros are an answer, sure.
02:42:45 <shachaf> But I'd like something more structured, I guess?
02:47:08 <oerjan> I tried another relaxed assumption and now it tries to suggest 1,4,0 (mod 5) again
02:50:51 <b_jonas> shachaf: do constexpr functions in C++ (and future rust) count? they can be invoked in places where the result must be known in compile time, mostly in template parameters and array bounds.
02:51:05 <shachaf> I don't think so, they don't give you any new capabilities over regular functions.
02:51:21 <b_jonas> shachaf: but they're still not macros, and in runtime, they behave practically the same as ordinary functions, except with a few implicit annotations that you could just put on a regular function.
02:51:22 <shachaf> Template functions might count a bit.
02:52:06 <b_jonas> shachaf: and you don't mean full macros, such as metafont macros or povray macros, right?
02:52:56 <b_jonas> you said you want something more structured than lisp-like macros, and metafont macros are _less_ structured
02:54:44 <b_jonas> shachaf: how about functions in a stack-based language like postscript or s-lang or underload, where some functions can access an unbounded and unpredictable number of args on the stack?
02:55:01 <shachaf> I want it all to be resolved at compile-time.
02:55:34 -!- copumpkin has joined.
02:56:36 <b_jonas> I dunno, maybe something like those macro assemblers, where you could pass the name of a cpu register as argument to a macro you invoke
02:58:28 <b_jonas> shachaf: you do mean functions that a programmer can define, right? not just builtins that look like a function but do something normally impossible for a function, and the programmer can't even define a function that behaves exactly the same even if he can use the builtin in the impl, right?
02:59:21 <shachaf> And I'm imagining there are a bunch of things that you could pass to one of these functions.
02:59:30 <b_jonas> then I think consider that macro assembler thing, only perhaps imagine a hypothetical more structured language that is designed to output machine code
02:59:39 <shachaf> For example goto labels or early exit labels, and block of code.
03:00:12 <b_jonas> so the functions can take the name of a register as a parameter, or even an operand that can be either a gp register or a memory address with indexing as an argument,
03:00:36 <b_jonas> and the function definition can put that parameter as operand into a machine instruction that can be emitted with those as operand,
03:00:58 <b_jonas> which is only possible at compile time, since you can't really name those things or pass them as arguments to functinos at runtime
03:01:10 <b_jonas> they can also take a label
03:01:21 <b_jonas> gcc asm sort of works like that
03:01:37 <shachaf> Sure, you can imagine something like that, but I'm imagining it at a higher level.
03:01:37 <b_jonas> I don't know any language that actually works like this, but this is possible, right?
03:01:50 <b_jonas> you want at higher level? dunno then
03:02:00 <b_jonas> at higher level there's the lisp macros and the metafont macros
03:02:08 <shachaf> I want higher-level compile-time objects than names of registers.
03:02:32 <b_jonas> but not something as macro-argument-like as identifiers or expressions?
03:02:53 <b_jonas> nor even expressions of a particular syntactic precedence level or something?
03:03:13 <shachaf> I mean, maybe sufficiently hygienic macros would do it.
03:03:20 <b_jonas> how about C macros that take parts of identifiers? non-hygienic?
03:03:27 <shachaf> Or something. I don't know.
03:03:37 <shachaf> Certainly it can always be done with a macro, but it doesn't seem that great.
03:04:24 <b_jonas> maybe you could do this with a high-level language that compiles into a low-level language, but not machine code, and lets you write your choice of entirely high level code, or low-level code precise to what bytecode or whatever it is to emit
03:04:36 <b_jonas> I think those exist, but most of them are borderline esolangs
03:05:02 <b_jonas> not really your _choice_ of high-level or low-level code
03:05:38 <b_jonas> more like your choice of how you imagine it, because the high-level code is actually treated like the low-level code with lots of compile-time abstractions over it by the compiler, but it's a good enough facade that you can ignore it most of the time
03:05:54 <shachaf> Controlling which registers things go in seems like a very niche thing to me.
03:06:16 <b_jonas> perhaps some forth-alike could work
03:06:40 <b_jonas> one that compiles down to a code made of sequences of words that are interpreted, and lets you emit words into the code
03:07:52 <b_jonas> I think it lets you call compile-time functions which can emit code into the caller, and in the simplest case, when they don't do any compile-time computations, they're just ordinary inline functions or macros, but in general they could do more
03:08:08 <shachaf> I'm confused about what you're talking about.
03:08:36 <shachaf> I think this is a b_jonasism
03:08:46 <b_jonas> you know perl, right? consider a BEGIN{...} block inside a function
03:09:36 <b_jonas> the block contents are implemented while compiling, and it can do ... interesting things, like modifying $^H and $^W, which influence compilation in that a cow-reference to the current value of $^W at compile time is saved to many opcodes
03:09:43 <b_jonas> or something close to that
03:10:00 <b_jonas> the code in the BEGIN can even modify the parser, or modify the opcodes emitted if it really wants to
03:10:05 <oerjan> @tell ais523 I think that by making the fallback cells enough closer to each other than to the other cells, and maybe removing one other cell, 1, -1, 0 (mod 5) can be made to work.
03:10:38 <b_jonas> and there are use declarations that are implicitly calling a function at compile time, so it's like compile-time functions
03:11:01 <b_jonas> the forth thing is similar, I think, but with the compiler more accessible, so the compile-time functions can manipulate it more easily
03:11:32 -!- b_jonas has quit (Quit: leaving).
03:16:30 <esowiki> [[Hell69]] https://esolangs.org/w/index.php?diff=59005&oldid=59001 * Areallycoolusername * (+949)
03:17:15 <esowiki> [[Hell69]] https://esolangs.org/w/index.php?diff=59006&oldid=59005 * Areallycoolusername * (+20) /* Hello World Program */
03:18:52 <esowiki> [[Joke language list]] https://esolangs.org/w/index.php?diff=59007&oldid=58970 * Areallycoolusername * (+51)
03:39:03 -!- S_Gautam has quit (Quit: Connection closed for inactivity).
03:49:12 -!- newbie has quit (Quit: Qutting).
03:52:35 -!- Lord_of_Life has quit (Ping timeout: 258 seconds).
03:54:13 -!- Lord_of_Life has joined.
04:02:23 -!- FreeFull has quit.
04:35:09 -!- copumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…).
05:04:12 -!- copumpkin has joined.
05:22:43 <oerjan> @tell ais523 I think a working cell placement should be: 5g(0)+1,5g(1)-1,5g(2),...,5g(c+1) where g(0)<g(1)<... is a Golomb ruler such that 3g(1)-2g(0) is not a member.
05:42:02 <oerjan> Hm that exception cell is wrong
05:49:51 <imode> I think I'm starting to understand why the connection machine used hypercube routing.
05:58:01 <oerjan> @tell ais523 * 3g(1)-2g(0)-1 is not a member.
06:05:27 <oerjan> @tell ais523 (Fallback cell 2 decrementing the latter causes a chain of decrements/repairs that munges cell 2 itself.)
06:10:00 <oerjan> That's a bit off by one numbering but I'm spamming...
06:25:38 <imode> if you had to connect some processors up, would you choose a static or dynamic topology. if the first, why, and what topology would it be and why? if the second, why, and what would the "infrastructure" look like to support that?
06:28:34 <imode> my issue with 1 is that depending on the topology you choose, embedding arbitrary graphs/connections gets difficult if not (from what I can see) impossible.
06:35:52 * oerjan is reminded of the D-wave "quantum computers"
06:36:08 <oerjan> Which use a fixed graph because it has to be done in hardware
06:36:27 <imode> the connection machine used a crazy hybrid between a lattice and a hypercube routing mechanism.
06:36:35 <imode> the second one used a 12D hypercube.
06:37:43 <imode> the kicker is finding the right "universal" topology. naively it'd be the complete graph.
06:40:03 <imode> the problem with that is that if you increase or decrease the computational power of a node, things get very easy or very hard depending on what you're doing. for instance, the game of life on a complete graph is.. I mean considering the entire rest of the graph is included in your neighbor relation, the combinatorial blowup is insane.
06:41:22 <imode> something like hamming graphs, which are cartesian products of complete graphs, might actually be better, because you can still embed complete graphs pretty trivially up to a point (considering you build up to complete graphs).
06:42:09 <oerjan> Presumably at some scale a complete graph gets too much cable compared to nodes
06:43:15 <imode> like if I had to specify a set of rewrite rules for a CA over a complete graph, I couldn't without specifying each "frame" of the CA as it evolves over time, because from any given cell I can see any other cell.
06:44:07 <imode> unless you defined something that's positionally agnostic, i.e the cell you're evaluating just knows how many of its neighbors are white or black.
06:44:55 <oerjan> that's going to be pretty trivial on a complete graph
06:46:53 <oerjan> (although there's this logic puzzle where you don't know your own color and have to deduce it, which would work)
06:47:15 <imode> heh, yeah. honestly it's so connected it can't be used for much.
06:47:27 <imode> so figuring out the next step "down" is the key.
07:38:16 -!- tromp has quit (Remote host closed the connection).
07:38:29 -!- tromp has joined.
07:42:55 <zzo38> How to know what suit is trump in Arabian whist cards?
07:44:07 -!- imode has quit (Ping timeout: 258 seconds).
07:45:11 <zzo38> O, wait never mind I found it
07:58:06 -!- moei has joined.
07:59:20 -!- yaewa has quit (Ping timeout: 250 seconds).
08:07:15 -!- AnotherTest has joined.
08:19:37 -!- uplime has quit (Quit: WeeChat 2.2).
08:21:08 -!- oerjan has quit (Quit: Nite).
08:29:32 -!- xkapastel has joined.
08:31:50 -!- sftp has quit (Ping timeout: 250 seconds).
08:38:51 -!- sftp has joined.
08:43:55 <int-e> . o O ( Why would POTUS feature in Whist... oh never mind. )
08:44:10 * int-e sighs. (That was basically an actual brain dump.)
09:14:44 <zzo38> Do you like to play whist?
09:15:01 <zzo38> (Or do you prefer to play bridge?)
09:21:42 <Taneb> I've never played bridge but apparently my grandfather was great at it
09:21:45 <Taneb> He was taught by nuns
09:29:27 <Taneb> On a completely unrelated note, is there a term for, like, eventually idempotent? A function f is what I'm calling eventually idempotent if for all x in its domain there's a natural n such that f^n(x) = f^(n+1)(x)
09:30:56 <Taneb> myname: that doesn't feel right, to me that sounds like it just has to converge in the limit, which is a weaker condition
09:31:47 <myname> you want every input to have a fix point
09:32:14 <Taneb> Examples include the digital root function
09:32:31 <Taneb> And something I half remember from Lie algebra
09:34:08 <myname> presumable this 3n+1-thing i always fail to remember by name
09:35:14 <Taneb> Collatz sequence is a non-example, it ends up in a cycle 1-4-2-1 according to the conjecture
09:35:45 <Taneb> More examples: the parent function of nodes in a rooted forest
09:37:15 <myname> you could loosen the definition to allow f^n(x) = f^(n+k)(x) for some k and every x to include collatz :p
09:38:28 <Taneb> I guess, but that's not what I wanted :P
10:04:18 -!- nfd9001 has joined.
10:49:38 -!- AnotherTest has quit (Ping timeout: 250 seconds).
12:57:40 -!- AnotherTest has joined.
13:02:14 -!- AnotherTest has quit (Ping timeout: 250 seconds).
13:24:19 -!- wob_jonas has joined.
13:25:30 <wob_jonas> shachaf: your question yesterday was interesting and made me wonder. now I'm trying to invent an esolang that's made of potentiall infinitely many languages, each of them just being a preprocessor that compiles to a similar language with a lower index,
13:26:18 <wob_jonas> sort of like http://math.bme.hu/~ambrus/pu/git-extensions , and that much is not even hard, but I'd like to give it interesting enough semantisc.
13:27:31 <wob_jonas> I don't think I even need a different language at the bottom, it can just be identical effectful preprocessors that you keep preprocessing until either you get an error or an empty program (a program made of only comments and whitespace and similar).
13:30:14 <fizzie> Taneb: I don't know if there's a standard term, but according to a quick search "attractive function" might still be free to describe that, and I think sort of appropriate.
13:48:57 -!- arseniiv has joined.
13:58:45 -!- AnotherTest has joined.
14:02:21 -!- Essadon has joined.
14:02:38 -!- Essadon has quit (Max SendQ exceeded).
14:02:53 -!- sleepnap has joined.
14:15:57 -!- AnotherTest has quit (Ping timeout: 252 seconds).
14:50:49 -!- AnotherTest has joined.
15:02:16 -!- AnotherTest has quit (Ping timeout: 250 seconds).
15:10:31 -!- Essadon has joined.
15:15:37 <fizzie> An attractive function is one where the union of the basins of attraction of all its fixed points is equal to the domain of the function. You heard it here first.
15:15:57 <HackEso> attractive function? ¯\(°_o)/¯
15:52:14 -!- Lord_of_Life_ has joined.
15:53:48 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
15:53:48 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:00:37 <arseniiv> we need to define what’s a distractive function, too!
16:01:18 <arseniiv> if it’s something remotely dual, it would be strange, as attractive things tend to distract people also
16:01:52 <wob_jonas> arseniiv: I think the opposite of attractive is repulsive
16:03:00 <myname> i'd say, x*sin(x) is pretty repulsive
16:03:28 <arseniiv> (then, what is x in attractive : distractive = repulsive : x?)
16:06:28 <arseniiv> (it even resembles a bad joke: re[al] and im[aginary parts])
16:07:43 <myname> that re/im thing seems a bit far-fetched
16:10:00 <HackEso> AGDQ is Awesome Games Done Quick, an annual video games speedrunning event for charity every winter, see http://gamesdonequick.com and https://gamesdonequick.com/tracker/events/
16:37:02 <esowiki> [[Ummm...]] https://esolangs.org/w/index.php?diff=59008&oldid=58850 * Areallycoolusername * (+0)
16:38:02 -!- AnotherTest has joined.
16:38:09 <esowiki> [[Dunke!]] https://esolangs.org/w/index.php?diff=59009&oldid=58859 * Areallycoolusername * (+0)
16:38:21 <esowiki> [[Special:Log/move]] move * Areallycoolusername * moved [[Dunke!]] to [[Dunka!]]: stuff
16:39:31 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=59012&oldid=58995 * Areallycoolusername * (+0) /* D */
16:42:03 <esowiki> [[User:Areallycoolusername]] https://esolangs.org/w/index.php?diff=59013&oldid=58965 * Areallycoolusername * (+0)
16:46:21 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
17:01:30 -!- AnotherTest has quit (Ping timeout: 252 seconds).
17:05:51 -!- imode has joined.
17:11:56 -!- AnotherTest has joined.
17:22:42 -!- AnotherTest has quit (Ping timeout: 252 seconds).
17:26:50 <esowiki> [[J--]] https://esolangs.org/w/index.php?diff=59014&oldid=44822 * Areallycoolusername * (-8)
18:04:39 -!- ais523 has joined.
18:15:45 <esowiki> [[NEGATOR]] N https://esolangs.org/w/index.php?oldid=59015 * Areallycoolusername * (+882) Created page with "[[NEGATOR]] is a language where you can only decrement a value. It was made by [[Areallycoolusername]]. == Commands == {| class="wikitable" |- ! NEGATOR Command !! Function..."
18:16:18 <esowiki> [[NEGATOR]] https://esolangs.org/w/index.php?diff=59016&oldid=59015 * Areallycoolusername * (+6)
18:17:46 -!- kolontaev has joined.
18:24:25 -!- imode has quit (Ping timeout: 246 seconds).
18:43:34 -!- Phantom_Hoover has joined.
18:43:34 -!- Phantom_Hoover has quit (Changing host).
18:43:34 -!- Phantom_Hoover has joined.
18:52:16 <oren> perl -le 'print join("",map({chr(33+rand 93)}1..40));'
18:52:23 <oren> about how insecure is this
19:02:58 <myname> what is this considered to do?
19:05:55 <fizzie> Just as a guess, it's intended to create crumbtographically secure random IDs.
19:06:28 <fizzie> (That's the sort of ID that, on a cursory inspection, is not distinguistable from a cryptographically secure one.)
19:07:42 <ais523> oren: it's possible that someone else is doing the same thing, giving the risk of a collision if you both start in the same second (I think Perl probably seeds with current time, not sure though)
19:07:54 -!- b_jonas has joined.
19:08:03 <ais523> in any case, generating 40 characters is pointless as you only have 32 bits of collision resistance (again assuming a 32-bit RNG seed)
19:08:34 <b_jonas> ais523: the glibc rand actually has a bit larger seed than that, I think, but still it's a bad idea
19:09:01 <ais523> I'm not convinced Perl is using libc rand either
19:09:06 <b_jonas> it's rather silly of perl to map its rand builtin to the libc rand function really
19:09:14 <b_jonas> ais523: last I checked, some years ago, it was
19:09:29 <fizzie> There's an explicit frowning-on in the rand perldoc, FWIW.
19:09:31 <b_jonas> it reinvents all the good parts of libc, but uses the bad parts, including rand
19:09:47 <fizzie> ""rand" is not cryptographically secure. You should not rely on it in security-sensitive situations. As of this writing, a number of third-party CPAN modules offer random number generators intended by their authors to be cryptographically secure, including: Data::Entropy, Crypt::Random, Math::Random::Secure, and Math::TrulyRandom."
19:09:50 <ais523> the documentation implies that it uses libc rand in some sort of nonstandard wrapper
19:09:52 <fizzie> It's even in bold type.
19:09:56 <ais523> presumably because it doesn't trust the reported version of RAND_MAX
19:11:33 <ais523> @tell oerjan it'd be possible for only one of the fallback cells to decrement the waterclocks (so the only decrements are fallbacks of each other, and one fallback of the waterclocks); that seems like it might make the modular math easier
19:12:17 -!- AnotherTest has joined.
19:15:58 -!- FreeFull has joined.
19:18:27 -!- AnotherTest has quit (Ping timeout: 252 seconds).
19:44:00 -!- imode has joined.
19:44:22 -!- AnotherTest has joined.
19:48:18 -!- heroux has quit (Ping timeout: 246 seconds).
19:48:28 -!- heroux has joined.
20:27:43 -!- AnotherTest has quit (Ping timeout: 258 seconds).
21:07:40 -!- AnotherTest has joined.
21:26:21 -!- AnotherTest has quit (Ping timeout: 252 seconds).
21:29:28 -!- sleepnap has quit (Ping timeout: 264 seconds).
21:42:17 -!- sleepnap has joined.
21:43:12 -!- imode has quit (Ping timeout: 252 seconds).
21:58:37 -!- kolontaev has quit (Quit: leaving).
22:52:52 -!- ais523 has quit (Remote host closed the connection).
22:54:06 -!- ais523 has joined.
22:56:20 -!- MDude has quit (Ping timeout: 250 seconds).
23:12:21 -!- ais523 has quit (Quit: quit).
23:13:25 -!- MDude has joined.
23:43:28 <esowiki> [[Hell69]] https://esolangs.org/w/index.php?diff=59017&oldid=59006 * Areallycoolusername * (+71) /* Instructions */
23:53:43 <esowiki> [[Hell69]] https://esolangs.org/w/index.php?diff=59018&oldid=59017 * Areallycoolusername * (+81) /* Hello World Program */
23:55:14 <esowiki> [[Hell69]] https://esolangs.org/w/index.php?diff=59019&oldid=59018 * Areallycoolusername * (+8) /* Hello World Program */