00:26:02 -!- tromp has quit (Read error: Connection reset by peer). 00:26:39 -!- tromp has joined. 01:51:28 poor, poor elvish warrior 02:52:11 -!- adu has joined. 03:24:19 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)). 03:27:25 -!- MDude has joined. 04:03:25 -!- sprocklem has quit (Ping timeout: 240 seconds). 04:04:16 -!- adu has quit (Quit: adu). 06:05:01 -!- ocharles has quit (*.net *.split). 06:05:02 -!- Soni has quit (*.net *.split). 06:05:02 -!- spruit11 has quit (*.net *.split). 06:05:02 -!- izabera has quit (*.net *.split). 06:05:02 -!- paul2520 has quit (*.net *.split). 06:05:12 -!- Soni has joined. 06:05:15 -!- ocharles has joined. 06:10:12 -!- spruit11 has joined. 06:10:12 -!- izabera has joined. 06:10:12 -!- paul2520 has joined. 06:40:04 [[SCREAMCODE]] M https://esolangs.org/w/index.php?diff=77845&oldid=77814 * Rdebath * (+411) Add TBI link 06:43:19 [[SCREAMCODE]] M https://esolangs.org/w/index.php?diff=77846&oldid=77845 * Rdebath * (+14) Links at top of page 07:55:54 -!- Sgeo_ has quit (Read error: Connection reset by peer). 08:08:52 -!- hendursa1 has joined. 08:11:23 -!- hendursaga has quit (Ping timeout: 240 seconds). 08:23:23 -!- imode has quit (Ping timeout: 240 seconds). 08:24:00 -!- cpressey has joined. 08:26:08 [[Pxem]] https://esolangs.org/w/index.php?diff=77847&oldid=75428 * YamTokTpaFa * (+36) 09:45:25 -!- b_jonas has quit (Ping timeout: 240 seconds). 09:51:55 -!- Lord_of_Life has quit (Ping timeout: 240 seconds). 09:52:02 -!- Lord_of_Life_ has joined. 09:53:16 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 09:58:39 int-e: I was playing around with your solitaire game again. I still can't wrap my head around all the parts. 09:58:59 I remember asking if prompt requires that what you give it is a GADT, in order for it to be correct by construction. 09:59:15 I think the answer is "no", because you can always make a GADT that just behaves like a plain ADT anyway. 10:01:27 I had to hunt to find out what "|" in a type class definition means, apparently it introduces a "functional dependency", which seems straightforward, at least on the surface, but maybe it's far more powerful than its most common use cases suggest 10:06:37 What is this thing? 10:07:40 shachaf: https://hackage.haskell.org/package/MonadPrompt-1.0.0.5/docs/Control-Monad-Prompt.html 10:08:13 I know that one. 10:08:32 Hmm, is the question about the Prompt part or the type class part? 10:09:03 FunctionalDependencies are famously tricky in some cases, but this particular use is used by all the monad type classes, like MonadState. 10:09:48 "You can construct a monad very simply with prompt, by putting all of its effects as terms in a GADT, like the following example:" -- my question is basically, does it have to be a GADT? 10:10:54 It can be anything. 10:11:27 Prompt f is a monad for any type constructor f. 10:11:55 Yeah, I vaguely remember going over this now. 10:12:15 In Haskell, "GADT" means a particular syntax, but everything written with the GADT can also be written without, using a couple of extensions (existential quantifiers and type equality). 10:12:32 So it's just that GADTs are really useful for this sort of application, is why they're mentioned specifically? 10:12:34 (And in fact GHC represents GADTs as if you'd written them as regular data types with those features.) 10:15:35 I don't know what this solitaire context is, but I usually think of this Prompt thing as being Free (Coyoneda f). 10:16:06 Oh, they CPS-encode it too, so there are three mostly orthogonal layers to untangle here. 10:33:14 -!- Soni has quit (*.net *.split). 10:33:24 Anyway, you have data Free f a = Leaf a | Branch (f (Free f a)), which is the free monad on a functor f, and also a kind of tree with f-shaped branches. 10:33:57 And you have Coyoneda f a = exists x. (x, x -> f a), which is the free (or cofree? Free, I think) functor on a type constructor. 10:34:39 -!- Soni has joined. 10:34:48 And if you combine them you get data Prompt f a = Leaf a | forall x. Branch x (x -> f (Prompt f a)) 10:35:22 And if you Church-or-whatever-encode that you get the type in that file. 10:52:45 -!- wib_jonas has joined. 11:02:31 -!- LKoen has joined. 11:17:53 -!- cpressey has quit (Quit: WeeChat 1.9.1). 11:32:19 There's a lot of propaganda against functional dependencies ever since type families entered the arena. 11:33:22 It's also worth noting that MonadPrompt is so old that type families didn't exist. 11:33:41 (I think.) 11:34:27 I think the propaganda has been there since before type families. 11:34:47 Anyway people tried type families for mtl and no one used it, right? 11:35:46 I think because MonadState s m => ...s... is better than MonadState m => ...(StateType m)..., or something. 11:37:00 -!- arseniiv has joined. 11:37:18 fungot how’s the weather? 11:37:18 arseniiv: john, it appears we have reached an impasse make a man feel totally justified in sporting an unnecessarily elaborate assortment of game setup. he's usually got a lot 11:37:18 Yeah I think in the particular case that is a single associated type family, fundeps are more convenient. 11:37:40 ^style ukparl 11:37:40 Selected style: ukparl (UK Parliament debates from brexit referendum to late 2018) 11:38:34 hi! type families are cool in all their kinds 11:42:01 What did I say? Propaganda. 11:49:18 I’ll need to read the logs it seems :D 11:50:59 but how could one live a plentiful life without type families 11:51:55 when I try to write something typing-nontrivial in usual languages I constantly stumble on their absense 11:53:23 You'll never appreciate the elegance and frugality of a fundep life, I suppose. 11:53:32 but how often do you actually write something typing-nontrivial? 11:53:50 * int-e is writing shellscripts right now. 11:53:54 next question! 11:54:04 I like that all of fundeps and type families and data families are available, but I don't actually use them all that often 11:54:08 oh, wait, negations 11:54:39 But I still kind of agree with the sentiment. 11:54:49 It's odd :) 11:55:34 admittedly I use Eigen to do numeric computations with vectors and matrixes, and it involves what would require rather complicated types if it was written in a typed language 11:55:56 wib_jonas: But I imagine an Enterprise Haskell developer will *have* to deal with advanced type system features like type families, constraints a lot simply because many libraries adopt them. 11:57:05 (I don't think "Enterprise Haskell" is an established term, but I believe we have long reached the point where it has become applicable.) 11:57:24 Or how about "Myopic Haskell" for lens-centric code. 11:57:27 Eigen involves a lot of rather weird magic by the way, and you actually have to be careful with it because it's easy to misuse accidentally 11:58:07 I've played with Eigen once and it wasn't easy to coerce it into doing what I wanted. 12:00:02 (Though my problem wasn't correctness, it was to avoid allocations (through template instantiations) and get the compiler to elide some arithmetic that had no effect. I forgot the details, as usual.) 12:03:12 the most tricky part is that if you build it multiple times with different instruction set extensions targeted by the compiler options (most commonly one for AVX and one for SSE2), the different copies can be binary incompatible with each other, unless you define the internal representation explicitly with preprocessor macros. 12:03:29 You'll never appreciate the elegance and frugality of a fundep life, I suppose. => fundeps are okay I guess. I wrote with them a bit 12:03:59 This is partly documented in http://eigen.tuxfamily.org/dox/TopicPreprocessorDirectives.html but not all details are documented well. 12:04:40 Plus you can sometimes get errors if you use certain older Eigen versions with certain compilers. 12:04:44 but how often do you actually write something typing-nontrivial? => yes. I mean, I usually find a way to interesting typing questions to perfectly bland code, or maybe not perfectly bland 12:05:43 (Am I the only one who has been intimidated by `lens` for years and never touched it as a result?) 12:08:39 int-e: no, there are fables about its great looming height, and personally I used lens once when tried to make a simple Scheme-like interpreter and I was glad for a bunch of operators there, but I never knew all of lens and now I forgot even those bits 12:09:27 though I want basic lens functionality in mainstream languages, again. They start adopting immutable data but don’t include “immutable setters” and ways to compose all that 12:11:14 so I think basic `lens` usage is not hard to achieve, but maybe newer lens libraries give even easier life? I haven’t used them; is there a comparison somewhere, from a user’s practical standpoint? 12:19:02 isn't "basic lens functionality" stuff like map and reduce? 12:19:31 many mainstream languages already have stuff like that 12:45:03 -!- 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.”). 12:55:33 -!- cpressey has joined. 13:06:13 -!- hendursa1 has quit (Quit: hendursa1). 13:06:30 -!- hendursaga has joined. 13:09:41 oops 13:10:33 I made an incorrect change to my program, and suddenly I was getting weird errors from later down the line 13:11:17 nondeterministic ones 13:31:29 [[User talk:PythonshellDebugwindow]] https://esolangs.org/w/index.php?diff=77848&oldid=77771 * OsmineYT * (+196) /* Discord account */ new section 13:36:49 [[Language list]] https://esolangs.org/w/index.php?diff=77849&oldid=77799 * JWinslow23 * (+13) Added Poetic 13:48:48 -!- Lord_of_Life has quit (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine). 13:51:55 -!- Sgeo has joined. 13:53:08 -!- Lord_of_Life has joined. 14:09:27 My latest compiler project (in Haskell) has stalled because it is clear that it will need to generate better error messages; and in order to do that it will need to keep track of some context, i.e. the current function; and in order to do that it will need to do something more sophisticated than just use the Either monad everywhere. 14:09:50 I could use a monad transformer. I don't want to do that. 14:10:55 What do you want to do 14:11:13 I could maybe use applicative functors; compose a writer applicative with a may-fail applicative. I'd kind of like to do that, but it would mean re-writing all the monadic code I've written so far. 14:12:23 Or I could "roll my own monad" with MonadPrompt (or Operational or Free), which is why I was talking about it this morning. 14:13:14 Leaning towards the latter. 14:15:01 Follow your heart! 14:20:07 -!- arseniiv has quit (Ping timeout: 240 seconds). 14:20:40 -!- Arcorann_ has quit (Read error: Connection reset by peer). 14:42:15 -!- arseniiv has joined. 14:59:49 eww 15:00:35 (Usually, when your heart is in front of you, things have gone seriously wrong.) 15:05:14 Mwhahaha. "There is no NAT with IPv6." 15:14:11 -!- cpressey has quit (Quit: WeeChat 1.9.1). 15:15:24 (source: a random person on the internet who felt confident enough to answer a question on serverfault (stackexchange)) 15:17:01 -!- arseniiv has quit (Ping timeout: 264 seconds). 15:17:20 Source: an optimist. 15:17:57 well, technically, you don't _need_ NAT with ipv6 15:18:06 -!- cpressey has joined. 15:34:23 -!- Lord_of_Life has quit (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine). 15:37:42 [[Computerdeutsch]] https://esolangs.org/w/index.php?diff=77850&oldid=76633 * Orangeyy * (+0) 15:40:02 I looked into NAT with IPv6 briefly, when I had an ISP that just assigned a single /64 for non-business subscribers as their "native IPv6 support". Instead, I think I ended up with something even weirder, like proxy neighbor discovery to claim the addresses. But it was pretty awkward to need separate IPv4 network segments (since there was just the one public IPv4 address) while IPv6 was flat. 15:40:17 [[Computerdeutsch]] M https://esolangs.org/w/index.php?diff=77851&oldid=77850 * Orangeyy * (+4) 15:41:44 [[EWagon]] M https://esolangs.org/w/index.php?diff=77852&oldid=76629 * Orangeyy * (-10) 15:42:24 Fortunately the next two ISPs did assign a /48 (I think) and a /56, respectively. 15:43:15 why isn't a /64 enough? 15:43:44 that's big enough to subdivide, it's larger than the whole ipv4 space, isn't it? 15:43:52 You can't subdivide a /64. 15:43:57 Or you're not supposed to, anyway. 15:44:13 And the standard autoconfiguration won't work for segments smaller than /64. 15:44:34 ah 15:44:48 so that's why you nated multiple segments into that? 15:45:55 Further, they didn't really "assign a /64" in the sense that they'd route all traffic for a /64 to you, they just expected to learn about all hosts in a /64 via neighbor discovery. 15:46:48 ah 15:47:28 So I looked into NAT because that way it'd at least have been the exact same setup for IPv4 and IPv6 (the router connected to the ISP gets a public address, the LAN uses private addresses, and NAT takes care of allowing other machines to access the public Internet). 15:47:28 I never configured ipv6, I don't know how this works 15:48:03 well, unless you count "leave everything as defaults and hope the computer and the router figures out something when they talk to each other" or "disable ipv6 on an interface" as configuring ipv6 15:49:47 -!- arseniiv has joined. 15:52:30 fizzie: I see 15:52:47 and did that work? 15:53:26 If memory serves, it did. But this was 6 years and three ISPs ago. 15:53:49 The current setup I have uses DHCPv6 prefix delegation, which I understand has become relatively common for "consumer" applications. The router is given a prefix (typically a /56), and can then allocate a /64 (or more) for any network(s) it wants to have, and let the final address assignment happen either via stateless (neighbor discovery + router advertisement) or stateful (DHCPv6) autoconfiguration. 15:56:48 Uh, actually... now that I've said that, I went to check, and after the most recent reboot, the router actually *hasn't* gotten an IPv6 address at all. Hmm. 15:57:45 Well, up until now it's been working fine, and I'm sure it'd still do if I wasn't masochistic enough to run a bleeding-edge OpenWRT just because the kind of software you get otherwise is depressing. 16:00:15 -!- cpressey has quit (Quit: WeeChat 1.9.1). 16:02:32 so that means you don't have ipv6 connection to the internet? 16:04:14 Yes. I didn't even notice. 16:06:17 Ooh, that probably also explains why the HTTP black-box monitoring I've set up for esolangs.org has been reporting the site as down. (Didn't prioritize looking into that because it seemed to be working fine.) 16:15:51 hehe 16:18:32 [[Special:Log/newusers]] create * WhyNot? * New user account 16:19:41 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=77853&oldid=77830 * WhyNot? * (+31) 16:21:26 [[User:WhyNot?]] N https://esolangs.org/w/index.php?oldid=77854 * WhyNot? * (+22) Created page with " print('Hello World!')" 16:23:58 https://paste.debian.net/1166119/ <-- see anything odd? :-) 16:25:02 int-e: there are suspiciously too few processes. other than that, no. 16:25:17 but I usually use ps -H intead of pstree 16:25:23 wib_jonas: look at the name of PID 1 16:25:44 meh, that just means someone started the machine in single user 16:26:05 Oh I guess that would do it. 16:26:21 It would also explain the lack of services :) 16:26:41 yeah 16:27:19 Anyway, this is still me playing with containers. The bash will be there, but the ultimate goal is to do some initialization and then hand things off to a proper init. 16:27:32 ok 16:28:22 But also, with sshd running this is already pretty usable. 16:28:50 So I'm somewhat elated for once. Bbl. 16:33:07 -!- FreeFull has joined. 16:34:24 `` pstree -p | paste 16:34:26 https://hack.esolangs.org/tmp/paste/paste.21095 16:35:36 Hm, well, "init" is a pretty boring name for PID 1. 16:35:53 ooh, is that perl running the rnooodl script? 16:35:59 I hate that script but I'm too lazy to fix it 16:36:58 Yeah, guess so. And the cat(49) is the cat that makes the output not a terminal. 16:38:19 There aren't *that* many processes in the container one level up either, though a bit more than in int-e's example: http://ix.io/2zUQ 16:40:07 -!- LKoen has joined. 16:45:10 -!- wib_jonas has quit (Quit: Connection closed). 17:24:38 -!- user3456 has joined. 17:29:57 -!- Sgeo_ has joined. 17:32:12 -!- Sgeo has quit (Ping timeout: 260 seconds). 17:47:29 oh, socat can fork children? hmm. 17:48:21 -!- user3456 has set topic. 17:48:35 -!- user3456 has set topic: Welcome to the multinational league for esoteric programming proliferation, protection, and protestation! | https://esolangs.org | logs: https://esolangs.org/logs/ http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D https://github.com/kspalaiologos/esologs/. 17:48:55 oops 17:49:00 (that may be easier than what I'm currently doing for lambdabot) 17:51:16 No worries... as long as the gist of it and the links to the logs and wiki are preserved and you don't spam the topic, noone will complain. 17:54:51 [[User:Orangeyy]] M https://esolangs.org/w/index.php?diff=77855&oldid=76628 * Orangeyy * (-26) 17:57:21 Does anyone know what happened to the zem.fi hill for BF Joust? 18:00:38 -!- b_jonas has joined. 18:01:09 -!- Sgeo_ has quit (Read error: Connection reset by peer). 18:06:53 -!- Sgeo has joined. 18:30:07 [[Computerdeutsch]] https://esolangs.org/w/index.php?diff=77856&oldid=77851 * Orangeyy * (+212) 19:25:00 [[Filth]] M https://esolangs.org/w/index.php?diff=77857&oldid=77554 * Bananaapple * (-4) optimized examples 19:47:14 -!- arseniiv has quit (Ping timeout: 260 seconds). 19:49:36 -!- TheLie has joined. 19:51:53 -!- sprocklem has joined. 19:53:31 [[User talk:PythonshellDebugwindow]] M https://esolangs.org/w/index.php?diff=77858&oldid=77848 * PythonshellDebugwindow * (+135) /* Discord account */ 19:54:55 -!- TheLie has quit (Remote host closed the connection). 20:51:05 [[User talk:PythonshellDebugwindow]] https://esolangs.org/w/index.php?diff=77859&oldid=77858 * OsmineYT * (+82) 20:51:20 [[User talk:PythonshellDebugwindow]] https://esolangs.org/w/index.php?diff=77860&oldid=77859 * OsmineYT * (+113) 21:52:45 -!- Frankenstein has changed nick to Frankenlime. 21:54:29 -!- Arcorann_ has joined. 21:55:00 -!- Arcorann_ has quit (Remote host closed the connection). 21:55:24 -!- Arcorann_ has joined. 22:16:39 [[User talk:SoicBR]] N https://esolangs.org/w/index.php?oldid=77861 * SoicBR * (+2) Created page with "a." 22:20:52 [[User talk:SoicBR]] https://esolangs.org/w/index.php?diff=77862&oldid=77861 * OsmineYT * (+54) /* A new topic */ new section 22:21:11 [[User talk:SoicBR]] https://esolangs.org/w/index.php?diff=77863&oldid=77862 * OsmineYT * (+113) 22:22:29 -!- FreeFull has quit. 22:30:16 -!- 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.”). 22:43:38 int-e: The canonical multibot runner script is: while true; do socat TCP4:irc.freenode.net:6667 EXEC:'./multibot '"$NAME"' '"$CHANNEL"' '"$NAME"'.log'; done 22:45:56 fizzie: upone reflection it's not applicable. My use of socat is for enabling SSL for lambdabot. 22:46:03 (Also, could not figure out the IPv6 connectivity issues. If I restart the DHCPv6 client, it starts sending solicitations on the interface, but gets no response. Monitoring suggests problems started at 3:40am in the morning, which doesn't coincide with anything I did. Complained to ISP; will see if they come up with anything other than "have you tried restarting your router?".) 22:46:16 But lambdabot wants to connect to some port somewhere, so socat is just a proxy. 22:47:14 I've had mysterious neighbour discovery problems with lambdabot's host 22:48:27 I ended up just adding a permanent neighbour because I never figured out whether the environment was misbehaving, or the local linux kernel. 22:48:53 Looking at that, I also have a fixed default route. 22:49:24 I'd do a static config but I think they actually require the DHCPv6 prefix delegation in order to actually start the traffic flowing. 22:49:49 well, this one (Ramnode) doesn't. 22:50:03 But it's a VPS. 22:50:13 So it has a fixed IP and all that. 22:50:20 Yeah, that's kind of different than someone's home. 22:50:36 Though I do in fact have a fixed IP, paying £5/month extra for it. 22:50:54 It's probably a completely different problem :) But what you said brought up some memories. 22:50:58 I just think I need to dynamically request my static IP. ;) 22:51:21 If it's dialup, the neighbours might not be fixed? 22:51:33 But for DSL they might be. 22:51:36 Tricky :) 22:52:05 Mhm. Well, it's an Ethernet hole in the wall as far as I'm concerned, I've no idea what happens to it after that. 22:52:30 There's some managed switch shouting it's proprietary management protocols over the wire every now and then. 22:53:08 FWIW, it could be something ND-related, because if I look at any IPv6 traffic, I do see neighbor discovery requests for my router's link-local address, every time repeated three times. My router sends a reply to each, but it doesn't seem to matter. 22:53:42 Normally I'd blame my nftables setup, but I haven't touched it in a while. 23:31:56 MEH. foiled by default configuration. 23:32:50 (Debian's Apache ships with Alias /icons/ "/usr/share/apache2/icons/" enabled.)