←2020-02-23 2020-02-24 2020-02-25→ ↑2020 ↑all
00:24:37 -!- imode has quit (Ping timeout: 258 seconds).
01:15:27 -!- imode has joined.
01:44:44 -!- arseniiv has quit (Ping timeout: 258 seconds).
02:26:11 -!- oerjan has joined.
02:34:02 <zzo38> The TeXbook mentions that sometimes you will not want to defer a \write. However, it does not mention that you might want to defer a \write without shipping out the page. But, I have figured out a way to do a similar thing anyways (with some restrictions), involving alternating marks and penalties in an insertion, and then using \vsplit to extract the marks.
02:48:29 -!- xkapastel has quit (Quit: Connection closed for inactivity).
03:09:24 -!- tromp has quit (Remote host closed the connection).
03:47:05 -!- tromp has joined.
03:51:45 -!- tromp has quit (Ping timeout: 272 seconds).
04:17:50 <zzo38> I found there is a DjVu driver for Ghostscript, and I read somewhere that it supports the pdfmark command (well, some uses of it; some pdfmarks are not supported in DjVu, which is good because I think they should not belong anyways), but the license of DjVu driver for Ghostscript is incompatible not only with Ghostscript but also with itself. Also, I don't know if it can be overridden the foreground/background mode.
04:47:54 -!- tromp has joined.
04:52:23 -!- tromp has quit (Ping timeout: 252 seconds).
05:34:37 -!- b_jonas has quit (Quit: leaving).
05:44:06 -!- FreeFull has quit.
06:10:00 -!- imode has quit (Ping timeout: 258 seconds).
06:36:03 -!- tromp has joined.
06:40:33 -!- tromp has quit (Ping timeout: 252 seconds).
07:23:49 -!- ArthurStrong has quit (Quit: leaving).
07:30:54 -!- Lord_of_Life_ has joined.
07:33:11 -!- Lord_of_Life has quit (Ping timeout: 258 seconds).
07:33:11 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
07:39:45 -!- Sgeo has quit (Read error: Connection reset by peer).
07:40:11 -!- Sgeo has joined.
07:57:32 -!- tromp has joined.
08:49:23 -!- wib_jonas has joined.
08:56:08 -!- Phantom_Hoover has joined.
09:24:51 -!- oerjan has quit (Quit: Nite).
09:33:07 -!- Phantom_Hoover has quit (Ping timeout: 272 seconds).
09:35:52 -!- ArthurStrong has joined.
09:50:45 -!- tromp has quit (Ping timeout: 240 seconds).
09:50:48 -!- spruit11 has quit (Ping timeout: 258 seconds).
09:53:21 -!- tromp has joined.
09:54:12 -!- tromp_ has joined.
09:54:12 -!- tromp has quit (Read error: Connection reset by peer).
10:03:55 -!- kritixilithos has joined.
10:14:30 -!- cpressey has joined.
10:14:36 <wib_jonas> If values of a type can have multiple possible representation of the same value, so I have a function that takes any representation to a canonical one, sometimes that's called a "canonical" value, sometimes a "normalized" value. when should I use which of those two words? and what's the verb form of "canonical", analogous to "normalize"?
10:15:38 <cpressey> I use the verb canonicalize
10:15:47 <cpressey> I don't know how many other people do
10:17:15 <wib_jonas> I'm asking because I want to name some function in a program that I'm writing of course
10:17:21 <wib_jonas> cpressey: I see
10:22:03 <int-e> Oh, -march=native makes a huge difference for Eigen, why didn't I think of that sooner.
10:23:28 <int-e> With thatr insight, lapack+openblas is still a bit faster, but only like 20% rather than by a factor of 2.
10:24:56 <wib_jonas> int-e: yes, because then you get to use more than just SSE2. but be careful, there's also a binary incompatibility issue if you link files compiled to Eigen with different optimization switches,
10:25:03 -!- ArthurStrong has quit (Quit: leaving).
10:25:27 <int-e> Yeah, not an issue here.
10:25:56 <int-e> I've just been tinkering with http://www.research.ibm.com/haifa/ponderthis/challenges/February2020.html ... it's a just a single self-contained program.
10:26:12 <wib_jonas> and if you want to avoid that, you either need to set EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES explicitly, or else be aware of which types can have different requirements depending on the switches.
10:26:15 <int-e> And the linear algebra is the boring bit.
10:26:40 <wib_jonas> int-e: try also -fno-math-errno
10:27:19 <wib_jonas> to make sure that the sqrt function doesn't try to check the flag and update errno taht is
10:27:45 <wib_jonas> ah, Markov chain stuff.
10:27:49 <int-e> Oh. But there should not be any no sqrt calls.
10:28:18 <int-e> It's just LU decomposition (that's the slow bit) and matrix multiplication.
10:29:24 <wib_jonas> int-e: ok. I didn't know your particular case, I'm just saying this for the future
10:29:47 <wib_jonas> it doesn't come up too often anyway
10:29:49 <int-e> And I can probably speed this up significantly using https://en.wikipedia.org/wiki/Sherman%E2%80%93Morrison_formula
10:30:30 <int-e> But I will focus on strategy first :)
10:30:58 <int-e> Though the stupid thing just found an eligible solution.
10:31:36 <int-e> (value: 66.97870495509361888)
10:32:05 <int-e> Well, not all of those digits are correct.
10:33:18 -!- kritixilithos has quit (Remote host closed the connection).
10:33:25 <wib_jonas> int-e: oh, and obviously, get a recent enough version of Eigen
10:33:39 <wib_jonas> and a non-ancient compiler
10:33:42 -!- kritixilithos has joined.
10:33:45 <wib_jonas> but I think you figured that out yourself
10:37:23 <int-e> I didn't pay attention to that... for most stuff Debian unstable is fairly up-to-date. Seems to have worked out in this case as well.
10:44:26 <cpressey> Suppose we have a set of functions that map syntax to syntax. (You could call these functions "macros".) Further, we want to characterize some of these functions as "hygienic" and others as "not hygienic". I propose that the difficulty of doing this depends on the data structure we choose for representing syntax.
10:47:05 <cpressey> By "syntax" I mean, a chunk of a program. So, we could represent syntax as character strings. But then this characterization is difficult.
10:47:40 <cpressey> If we represent syntax with S-expressions, it's a little less difficult. If we represent it with ASTs, it should be less difficult still.
10:50:49 <cpressey> I don't think I've said anything really earth-shattering so far. But now, I propose: if we represent syntax with ABTs, it should be even less difficult still to make this characterization.
11:06:37 <cpressey> Now, would de Bruijn indices make it even easier still? Perhaps - I don't know. But even if they do, that doesn't invalidate the chain of reasoning so far.
11:09:12 <cpressey> I'd like to treat ABTs as an abstraction, and whether that abstraction is implemented by alpha-conversion (performed as needed on demand), or by de Bruijn indices (rewritten as needed on demand), is an implementation detail.
11:18:03 -!- kritixilithos has quit (Ping timeout: 240 seconds).
11:18:37 <cpressey> int-e: ^ this is why "I like ABTs", if you care.
11:20:35 -!- rain1 has joined.
11:25:56 -!- kritixilithos has joined.
11:30:14 <cpressey> So if you think of an ABT as an abstract data type, it has operations to create primitive ABTs, and operations to build new ABTs from existing ABTs, and each one of these operations is guaranteed to preserve the binding structure.
11:31:13 <int-e> cpressey: Sure, and that's fine.
11:31:37 <int-e> cpressey: I called it a design pattern the other day, basically because of that view.
11:40:39 <cpressey> int-e: I see. I'd like to think there is a little more structure here than what I think of as a design pattern, but maybe not. "hygienic macro" feels like a design pattern though; no two hygienic macro systems seem they same, they all feel so ad-hoc. I'd like to see a better theoretical underpinning here, I think that's why I'm interested in it.
11:46:06 <rain1> hi
11:46:34 <rain1> a good theoretical basis for hygiene is the scope sets system
11:47:27 <rain1> just like you can partially reduce lambda terms under binders etc. with beta reduction. the scope sets system lets you partially expand code with macros
11:51:11 <cpressey> rain1: Thanks, I'll look into that.
12:31:03 -!- kritixilithos has quit (Ping timeout: 240 seconds).
12:32:27 <int-e> cpressey: I mean its' obviously not useless... It solves one problem that plain de Bruijn indices have: it's easy to mess up the index of a bound variable because one entered another binder.
12:39:19 <wib_jonas> also with de Bruijn indexes, it's harder to see all occurances of a variable
12:39:35 <wib_jonas> at least for humans.
12:40:22 <wib_jonas> and you have to renumber everything when you want to change the program to introduce a new binding in the middle
12:43:52 <int-e> Which is a solvable problem as well if you introduce a dual for abstraction that removes a variable from scope.
12:46:58 <int-e> (Removal works by index when working with de Bruijn indices. Say /2.t which means indices 0,1,2,3 inside t are mapped to 0,1,3,4... outside t. / is supposed to be the opposite of \.)
12:49:02 <int-e> And you have laws to push those around: /2.\t = \/3.t and /2.(t u) = (/2.t)(/2.u), or /2./5.t = /6./2.t
13:31:21 <int-e> tromp_: https://www.isa-afp.org/entries/Goodstein_Lambda.html
13:31:37 <int-e> tromp_: (I did update Goodstein.hs as well)
13:42:57 <tromp_> thx, int-e
13:51:26 -!- Frater_EST has joined.
13:54:11 -!- xkapastel has joined.
14:02:58 -!- wib_jonas has quit (Remote host closed the connection).
14:05:31 -!- sprocklem has quit (Ping timeout: 255 seconds).
14:05:33 -!- kritixilithos has joined.
14:29:13 -!- rain1 has quit (Quit: Lost terminal).
15:01:24 -!- sprocklem has joined.
15:19:48 -!- sftp has quit (Ping timeout: 260 seconds).
15:34:18 -!- kspalaiologos has joined.
15:54:25 -!- sprocklem has quit (Ping timeout: 255 seconds).
16:03:19 -!- sprocklem has joined.
16:05:37 -!- imode has joined.
16:16:34 -!- arseniiv has joined.
16:33:57 -!- xkapastel has quit (Quit: Connection closed for inactivity).
16:52:55 -!- sprocklem has quit (Ping timeout: 255 seconds).
16:58:06 -!- Frater_EST has quit (Remote host closed the connection).
17:19:12 -!- kritixilithos has quit (Quit: quit).
17:29:45 -!- cpressey has quit (Quit: WeeChat 1.4).
18:01:01 -!- LKoen has joined.
18:15:33 -!- kspalaiologos has quit (Quit: Leaving).
18:41:52 -!- sftp has joined.
18:52:06 -!- b_jonas has joined.
19:28:15 -!- sprocklem has joined.
19:32:06 -!- Lord_of_Life_ has joined.
19:33:51 -!- Lord_of_Life has quit (Ping timeout: 258 seconds).
19:33:52 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:36:55 -!- imode has quit (Ping timeout: 258 seconds).
19:42:48 -!- Melvar has quit (Ping timeout: 256 seconds).
19:55:28 -!- Melvar has joined.
20:12:55 -!- rain1 has joined.
20:27:08 -!- FreeFull has joined.
21:20:01 -!- grumble has quit (Quit: Some software updates just make me want to cURL up in a corner and sob.).
21:21:59 -!- grumble has joined.
21:23:31 -!- grumble has quit (Changing host).
21:23:31 -!- grumble has joined.
21:52:13 -!- rain1 has quit (Ping timeout: 272 seconds).
22:42:06 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
23:02:12 <b_jonas> oh and by the way, the IOCCC has closed 10 days ago
23:04:57 <int-e> Giving a whole new meaning to "March".
23:06:17 <int-e> (deadline is 2020-Mar-15 06:26:49 UTC)
23:06:56 <b_jonas> oh
23:07:03 <b_jonas> I'm stupid about time and date again
23:07:04 <b_jonas> sorry
23:07:43 <b_jonas> I blame month names. just use numbers, and write them in %02d format, not %d nor roman numerals.
23:18:23 <b_jonas> wtf there's now RAM with over 4 GB clock speed? how do they ever make that work?
23:18:51 <b_jonas> (admittedly it's expensive, but still)
23:21:07 <b_jonas> I'd like fast RAM, but I didn't know it went that high
23:27:29 <zzo38> Why is the temperature of my computer going up higher now than it usually does? Still it isn't going above the "high" (+60.0 C) number, at least.
23:38:07 -!- tromp_ has quit (Remote host closed the connection).
23:41:51 -!- tromp has joined.
23:47:38 <b_jonas> zzo38: the new flu from China
←2020-02-23 2020-02-24 2020-02-25→ ↑2020 ↑all