2024/08/09

2024-08-09 00:01:56 +0000nunggu(~q@user/nunggu) (Ping timeout: 260 seconds)
2024-08-09 00:07:50 +0000xff0x(~xff0x@2405:6580:b080:900:465e:7eef:8460:d9d2) (Quit: xff0x)
2024-08-09 00:13:33 +0000spew(~spew@201.141.102.132)
2024-08-09 00:16:55 +0000g00gler(uid125351@id-125351.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2024-08-09 00:39:50 +0000 <probie> zzz: That's also not really an argument over names though. It's about not wanting to have something which is a monadic operator (for those unfamiliar with APL, that has nothing to do with monads) and a dyadic function
2024-08-09 00:45:33 +0000 <zero> probie: aren't all APL symbols monadic and dyadic depending on context?
2024-08-09 00:47:45 +0000 <zero> wait what do you mean by operator vs function?
2024-08-09 00:47:52 +0000 <Axman6> raehik: Where does the "etc" come from in your second example on https://github.com/raehik/symparsec?tab=readme-ov-file?
2024-08-09 00:48:53 +0000 <Axman6> Also that package is so tempting... but I know I would only do horrible, awful things with it
2024-08-09 00:49:03 +0000 <probie> zero: A monadic operator is written to the right of its its argument, whilst a monadic function goes to the left of it
2024-08-09 00:49:20 +0000 <zero> probie: oh i see
2024-08-09 00:51:05 +0000 <zero> i like J syntax
2024-08-09 00:51:45 +0000 <zero> they ironed out much of the creases
2024-08-09 00:51:56 +0000 <probie> most (but not all) operators take functions as arguments, but there are some (like `⍨`) which is an operator that can take data. Most APLs treat functions and data separately
2024-08-09 00:52:51 +0000 <raehik> Axman6: oops that's a typo from rewriting. it's meant to be ""
2024-08-09 00:54:29 +0000 <probie> The "APL" I think has the best syntax is BQN (also, BQN will let you have arrays of functions, which is something most APLs don't)
2024-08-09 00:54:30 +0000 <raehik> I still think symparsec is excellent for making generics even safer. like I straight up promoted a runtime check to compile time in a lib of mine
2024-08-09 00:54:42 +0000 <Axman6> Great, I thought so. I can make a PR if you like =) (I actually thing making the input "xFF_etc" is better here)
2024-08-09 00:56:45 +0000 <raehik> I just pushed the fix sorry to steal your PR chance xd
2024-08-09 00:57:02 +0000 <Axman6> D:
2024-08-09 00:57:05 +0000 <Axman6> Rude
2024-08-09 00:57:12 +0000 <raehik> good call, I considered that and made another change to have a suffix instead of empty
2024-08-09 00:58:23 +0000 <Axman6> Also the next example doesn't make sense any more right?
2024-08-09 00:58:39 +0000 <Axman6> oh it doesew
2024-08-09 00:59:15 +0000 <raehik> I don't explain the return kind shape so it's not completely clear
2024-08-09 00:59:17 +0000 <Axman6> How hard would a JSON parser be? I don't want this, but I would love to see it
2024-08-09 01:00:18 +0000 <Axman6> Also, is Literal necessary? Could you just have Symbols?
2024-08-09 01:00:43 +0000 <raehik> the current problem with symparsec is the minimal parser choice functionality (no backtracking, only certain choice "types" permitted)
2024-08-09 01:01:07 +0000 <raehik> and probably no mutually recursive parsers (I can't figure them out)
2024-08-09 01:01:47 +0000 <Axman6> I can't see any reason why recursive types could ever cause any problems =)
2024-08-09 01:02:25 +0000 <raehik> I'm not sure the Or parser would work with a complex schema like JSON (I don't think so)
2024-08-09 01:02:48 +0000 <raehik> regarding Literal: we need it for the bookkeeping
2024-08-09 01:03:42 +0000 <raehik> you can't connect a `sym :: Symbol` together with another type-level parser because of how parser sequencing works
2024-08-09 01:05:09 +0000 <Axman6> Fair enough
2024-08-09 01:08:22 +0000 <raehik> symparsec is kind of designed for simple parsers and to be simple itself. I think if you were clever you could put backtracking directly in the parser runner
2024-08-09 01:09:01 +0000 <raehik> but it would be scary and rolling my own singletons was enough for me to pause the project for now! :)
2024-08-09 01:09:55 +0000ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net)
2024-08-09 01:11:26 +0000TonyStone(~TonyStone@user/TonyStone) (Remote host closed the connection)
2024-08-09 01:12:42 +0000spew(~spew@201.141.102.132) (Read error: Connection reset by peer)
2024-08-09 01:13:00 +0000ticat(~ticat@156.251.248.134)
2024-08-09 01:22:14 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-08-09 01:26:59 +0000ticat(~ticat@156.251.248.134) (Quit: Client closed)
2024-08-09 01:43:27 +0000ZharMeny(~user@user/ZharMeny) (Quit: No Space Left on Device)
2024-08-09 01:45:58 +0000bilegeek(~bilegeek@2600:1008:b047:89f7:6723:6fe8:c1e7:6c2d)
2024-08-09 01:46:24 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2024-08-09 01:49:37 +0000ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Quit: Lost terminal)
2024-08-09 01:54:22 +0000ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2024-08-09 01:57:16 +0000starburst(~starburst@2601:602:480:9390::707d)
2024-08-09 01:57:18 +0000 <starburst> ayaya
2024-08-09 01:58:45 +0000dolio(~dolio@130.44.140.168) (Quit: ZNC 1.8.2 - https://znc.in)
2024-08-09 02:00:16 +0000dolio(~dolio@130.44.140.168)
2024-08-09 02:00:24 +0000JuanDaugherty(~juan@user/JuanDaugherty)
2024-08-09 02:03:57 +0000dolio(~dolio@130.44.140.168) (Client Quit)
2024-08-09 02:07:11 +0000dolio(~dolio@130.44.140.168)
2024-08-09 02:08:45 +0000nadja(~dequbed@banana-new.kilobyte22.de) (Ping timeout: 252 seconds)
2024-08-09 02:09:15 +0000nadja(~dequbed@banana-new.kilobyte22.de)
2024-08-09 02:19:22 +0000 <albet70> whats the functions name to let [1..9] [11..19] [21..29] ... to be [[1,11,21..], [2,12,22..]...]?
2024-08-09 02:19:54 +0000 <albet70> zip?
2024-08-09 02:20:21 +0000 <albet70> or just use list comprehension?
2024-08-09 02:21:28 +0000starburst(~starburst@2601:602:480:9390::707d) (Quit: Client closed)
2024-08-09 02:26:02 +0000 <mauke> > transpose [[1..9], [11..19], [21..29]]
2024-08-09 02:26:04 +0000 <lambdabot> [[1,11,21],[2,12,22],[3,13,23],[4,14,24],[5,15,25],[6,16,26],[7,17,27],[8,18...
2024-08-09 02:26:27 +0000 <mauke> zipN = transpose
2024-08-09 02:27:27 +0000 <edwardk> :t Data.List.transpose
2024-08-09 02:27:28 +0000 <lambdabot> [[a]] -> [[a]]
2024-08-09 02:27:39 +0000 <edwardk> that's your friend here
2024-08-09 02:29:09 +0000td_(~td@i53870904.versanet.de) (Ping timeout: 248 seconds)
2024-08-09 02:30:47 +0000td_(~td@i53870929.versanet.de)
2024-08-09 02:32:54 +0000 <edwardk> raehik: what is driving you to symparsec?
2024-08-09 02:32:54 +0000 <albet70> thanks :)
2024-08-09 02:33:29 +0000 <edwardk> raehik: e.g. does it _actually_ have to map from Symbol -> Type? or would using an actual parsing combinator library at compile time via template haskell be easier for what you want to do?
2024-08-09 02:34:07 +0000 <edwardk> usually i go quasi-quote -> edsl, build what i want, and then generate haskell rather than go into singleton typing hell
2024-08-09 02:35:50 +0000 <raehik> edwardk: I was writing some generics that want to operate on field names
2024-08-09 02:36:04 +0000 <edwardk> er wait, you're writing this library, not using this library. misparsed
2024-08-09 02:36:14 +0000 <raehik> I am also using the library :)
2024-08-09 02:36:21 +0000 <edwardk> hah
2024-08-09 02:36:44 +0000 <raehik> the singletons aren't necessary at all but once I figured they were possible, I wanted to have a go
2024-08-09 02:37:04 +0000 <edwardk> ok, so that leaves you with much less palatable fallbacks. e.g. custom plugin to generate instances that do what you want
2024-08-09 02:38:42 +0000 <raehik> I did manage to do what I want with symparsec
2024-08-09 02:39:30 +0000 <raehik> It suffers from poor ergonomics but it all works and in Haskell land. (I don't know how to do TH or GHC plugins)
2024-08-09 02:39:32 +0000 <raehik> https://hackage.haskell.org/package/generic-data-functions-0.6.0/docs/Generic-Data-Function-FoldMa…
2024-08-09 02:39:40 +0000 <edwardk> general purpose recursion is probably the sort of thing that would need you to build a letrec equivalent and/or extend an environment of parsers
2024-08-09 02:42:52 +0000 <raehik> kinda waiting for someone to take a look at symparsec and be like "oh you can do much better in like 50 lines" :D
2024-08-09 02:43:19 +0000 <raehik> just like I did with csongor's symbol library (which was made before we could deconstruct Symbols)
2024-08-09 02:44:09 +0000 <raehik> (oops I mean symbols library)
2024-08-09 02:46:23 +0000 <edwardk> hah
2024-08-09 02:46:42 +0000ell(~ellie@user/ellie) (Quit: Leaving)
2024-08-09 02:46:57 +0000 <edwardk> i mean, you could use my variant on singletons maybe. https://github.com/ekmett/haskell/tree/master/types
2024-08-09 02:47:31 +0000 <edwardk> that transforms symbols into very introspectable things by making them equivalent to type level strings
2024-08-09 02:47:35 +0000ell(~ellie@user/ellie)
2024-08-09 02:47:52 +0000 <edwardk> as in lists of type level chars
2024-08-09 02:51:04 +0000 <raehik> I wrote my own explicit singletons that doesn't hide kind in a Sing type family (because it was hard to troubleshoot what I was doing wrong) instead https://hackage.haskell.org/package/singleraeh
2024-08-09 02:53:10 +0000 <raehik> I wondered if there was another way to design a type-level parser lib that doesn't require writing the same thing twice for type and term level... but my approach is easiest for type-level hijinks and that's what I wanted most
2024-08-09 02:54:43 +0000 <edwardk> fair nuff
2024-08-09 02:55:07 +0000 <edwardk> mostly i just abuse reflection and little scoping tricks to fabricate the types i need with the instances i need
2024-08-09 02:56:04 +0000 <edwardk> that's generally been enough for me to generate code that depends on terms that needs to manifest as types by bringing into scope reflection'ed dictionaries and unsafeCoerced type equalities
2024-08-09 02:56:25 +0000 <edwardk> but i am willing to cheat my butt off to get around haskell's non-dependently typed nature
2024-08-09 02:57:36 +0000 <raehik> I have read the reflection lib docs enough to know that about you haha :)
2024-08-09 03:11:50 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
2024-08-09 03:12:45 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2024-08-09 03:16:28 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-08-09 03:22:42 +0000xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2024-08-09 03:36:30 +0000 <edwardk> hahahahha
2024-08-09 03:47:30 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2024-08-09 03:49:23 +0000JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-08-09 04:01:18 +0000aforemny(~aforemny@2001:9e8:6ccc:fd00:728:dd11:4e8c:d31a)
2024-08-09 04:02:52 +0000aforemny_(~aforemny@2001:9e8:6cec:9200:56df:dd94:8882:31ea) (Ping timeout: 265 seconds)
2024-08-09 04:02:56 +0000kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2024-08-09 04:29:32 +0000RedFlamingos(~RedFlamin@user/RedFlamingos) (Quit: RedFlamingos)
2024-08-09 04:40:44 +0000thailigur(~thailigur@172.86.68.44)
2024-08-09 04:42:14 +0000thailigur(~thailigur@172.86.68.44) (Remote host closed the connection)
2024-08-09 04:42:29 +0000thailigur(~thailigur@5.211.73.48)
2024-08-09 05:02:29 +0000monochrom(trebla@216.138.220.146) (Quit: ZNC 1.9.0+deb2build3 - https://znc.in)
2024-08-09 05:03:42 +0000tabaqui(~root@87.200.123.114) (Quit: WeeChat 4.3.5)
2024-08-09 05:05:57 +0000RedFlamingos(~RedFlamin@user/RedFlamingos)
2024-08-09 05:08:57 +0000monochrom(trebla@216.138.220.146)
2024-08-09 05:11:32 +0000itaipu(~itaipu@168.121.98.135) (Ping timeout: 255 seconds)
2024-08-09 05:30:05 +0000Sgeo_(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-08-09 05:34:22 +0000michalz(~michalz@185.246.207.193)
2024-08-09 05:34:27 +0000bilegeek(~bilegeek@2600:1008:b047:89f7:6723:6fe8:c1e7:6c2d) (Quit: Leaving)
2024-08-09 05:35:03 +0000euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
2024-08-09 05:35:11 +0000thailigur(~thailigur@5.211.73.48) (Ping timeout: 252 seconds)
2024-08-09 05:36:02 +0000thailigur(~thailigur@31.2.130.189)
2024-08-09 05:36:08 +0000euleritian(~euleritia@dynamic-176-006-128-242.176.6.pool.telefonica.de)
2024-08-09 05:49:49 +0000ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2024-08-09 05:50:15 +0000ChaiTRex(~ChaiTRex@user/chaitrex)
2024-08-09 05:57:54 +0000danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-09 06:02:37 +0000xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Quit: xff0x)
2024-08-09 06:12:39 +0000sawilagar(~sawilagar@user/sawilagar)
2024-08-09 06:14:53 +0000euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-08-09 06:17:43 +0000jinsunGuest876
2024-08-09 06:17:43 +0000jinsun_(~jinsun@user/jinsun)
2024-08-09 06:17:43 +0000Guest876(~jinsun@user/jinsun) (Killed (molybdenum.libera.chat (Nickname regained by services)))
2024-08-09 06:17:43 +0000jinsun_jinsun
2024-08-09 06:21:09 +0000euphores(~SASL_euph@user/euphores)
2024-08-09 06:21:54 +0000ft(~ft@p4fc2aa15.dip0.t-ipconnect.de) (Quit: leaving)
2024-08-09 06:22:55 +0000raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 264 seconds)
2024-08-09 06:22:56 +0000echoreply(~echoreply@45.32.163.16) (Quit: WeeChat 2.8)
2024-08-09 06:24:17 +0000echoreply(~echoreply@45.32.163.16)
2024-08-09 06:25:16 +0000Digitteknohippie(~user@user/digit)
2024-08-09 06:25:48 +0000Digit(~user@user/digit) (Ping timeout: 245 seconds)
2024-08-09 06:27:41 +0000euleritian(~euleritia@dynamic-176-006-128-242.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-08-09 06:27:59 +0000euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-08-09 06:29:23 +0000CiaoSen(~Jura@2a05:5800:2da:c00:e6b9:7aff:fe80:3d03)
2024-08-09 06:35:25 +0000rosco(~rosco@175.136.158.234)
2024-08-09 06:38:30 +0000alexherbo2(~alexherbo@2a02-8440-3317-c12e-59ca-c9f6-a2c0-ca17.rev.sfr.net)
2024-08-09 06:42:19 +0000sord937(~sord937@gateway/tor-sasl/sord937)
2024-08-09 06:49:19 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-08-09 07:05:13 +0000cfricke(~cfricke@user/cfricke)
2024-08-09 07:06:24 +0000acidjnk_new3(~acidjnk@p200300d6e72cfb71e8c7be36caf04b72.dip0.t-ipconnect.de)
2024-08-09 07:13:24 +0000FragByte(~christian@user/fragbyte)
2024-08-09 07:14:51 +0000thailigur(~thailigur@31.2.130.189) (Ping timeout: 252 seconds)
2024-08-09 07:15:03 +0000thailigur(~thailigur@5.211.226.57)
2024-08-09 07:15:25 +0000cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.2.2)
2024-08-09 07:17:15 +0000alexherbo2(~alexherbo@2a02-8440-3317-c12e-59ca-c9f6-a2c0-ca17.rev.sfr.net) (Remote host closed the connection)
2024-08-09 07:17:37 +0000alexherbo2(~alexherbo@2a02-8440-3317-c12e-7182-1a68-9319-87e9.rev.sfr.net)
2024-08-09 07:20:36 +0000cfricke(~cfricke@user/cfricke)
2024-08-09 07:20:55 +0000alexherbo2(~alexherbo@2a02-8440-3317-c12e-7182-1a68-9319-87e9.rev.sfr.net) (Remote host closed the connection)
2024-08-09 07:21:49 +0000thailigur(~thailigur@5.211.226.57) (Read error: Connection reset by peer)
2024-08-09 07:22:30 +0000thailigur(~thailigur@151.240.87.209)
2024-08-09 07:24:40 +0000kuribas(~user@2a02:1810:2825:6000:22f5:5d2b:a63a:1884)
2024-08-09 07:26:18 +0000vpan(~vpan@212.117.1.172)
2024-08-09 07:26:36 +0000vpanGuest6458
2024-08-09 07:27:27 +0000Guest6458vpan
2024-08-09 07:32:11 +0000cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.2.2)
2024-08-09 07:47:46 +0000thailigur(~thailigur@151.240.87.209) (Read error: Connection reset by peer)
2024-08-09 07:48:03 +0000thailigur(~thailigur@172.86.68.44)
2024-08-09 07:55:25 +0000DigitteknohippieDigit
2024-08-09 07:58:09 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-09 08:00:31 +0000thailigur(~thailigur@172.86.68.44) (Remote host closed the connection)
2024-08-09 08:00:57 +0000thailigur(~thailigur@172.86.68.44)
2024-08-09 08:01:49 +0000ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2024-08-09 08:02:14 +0000ChaiTRex(~ChaiTRex@user/chaitrex)
2024-08-09 08:03:38 +0000danse-nr3(~danse-nr3@user/danse-nr3) (Quit: on the move)
2024-08-09 08:05:31 +0000thailigur(~thailigur@172.86.68.44) (Ping timeout: 264 seconds)
2024-08-09 08:06:08 +0000thailigur(~thailigur@172.86.68.44)
2024-08-09 08:11:41 +0000JuanDaugherty(~juan@user/JuanDaugherty)
2024-08-09 08:13:19 +0000thailigur(~thailigur@172.86.68.44) (Ping timeout: 264 seconds)
2024-08-09 08:14:33 +0000thailigur(~thailigur@172.86.68.44)
2024-08-09 08:15:44 +0000danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-09 08:18:44 +0000thailigur(~thailigur@172.86.68.44) (Ping timeout: 252 seconds)
2024-08-09 08:19:08 +0000thailigur(~thailigur@172.86.68.44)
2024-08-09 08:26:45 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-08-09 08:31:34 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-09 08:38:23 +0000abyxq(~abyxq@user/abyxq)
2024-08-09 08:52:22 +0000econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-08-09 08:52:47 +0000ubert(~Thunderbi@178.165.184.113.wireless.dyn.drei.com)
2024-08-09 08:56:45 +0000Inst(~Inst@user/Inst) (Read error: Connection reset by peer)
2024-08-09 08:57:45 +0000thailigur(~thailigur@172.86.68.44) (Quit: Quit)
2024-08-09 08:58:51 +0000danse-nr3(~danse-nr3@user/danse-nr3) (Quit: oops)
2024-08-09 09:01:00 +0000Inst(~Inst@user/Inst)
2024-08-09 09:03:19 +0000gehmehgeh(~user@user/gehmehgeh)
2024-08-09 09:03:52 +0000gehmehgehgmg
2024-08-09 09:11:31 +0000abyxq(~abyxq@user/abyxq) (Ping timeout: 252 seconds)
2024-08-09 09:12:32 +0000abyxq(~abyxq@185.238.219.55)
2024-08-09 09:14:19 +0000falafel(~falafel@2a0c:5a87:3104:4c01::aa34)
2024-08-09 09:14:21 +0000cpressey(~weechat@176.254.71.203)
2024-08-09 09:15:20 +0000abyxq(~abyxq@185.238.219.55) (Changing host)
2024-08-09 09:15:20 +0000abyxq(~abyxq@user/abyxq)
2024-08-09 09:22:48 +0000danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-09 09:26:34 +0000monochrom(trebla@216.138.220.146) (Ping timeout: 252 seconds)
2024-08-09 09:26:36 +0000monochrm(trebla@216.138.220.146)
2024-08-09 09:27:01 +0000monochrmmonochrom
2024-08-09 09:31:11 +0000cfricke(~cfricke@user/cfricke)
2024-08-09 09:36:51 +0000falafel(~falafel@2a0c:5a87:3104:4c01::aa34) (Ping timeout: 265 seconds)
2024-08-09 09:37:31 +0000tcard_(~tcard@2400:4051:5801:7500:1e90:74c3:2754:ce8a) (Quit: Leaving)
2024-08-09 09:45:00 +0000ThePenguin(~ThePengui@cust-95-80-24-166.csbnet.se) (Remote host closed the connection)
2024-08-09 09:45:16 +0000tcard(~tcard@2400:4051:5801:7500:1e90:74c3:2754:ce8a)
2024-08-09 09:45:35 +0000ThePenguin(~ThePengui@cust-95-80-24-166.csbnet.se)
2024-08-09 09:47:03 +0000cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.2.2)
2024-08-09 09:48:28 +0000dans37269(~danse-nr3@user/danse-nr3)
2024-08-09 09:49:30 +0000thyriaen(~thyriaen@2001:4bc9:1fb8:12d1:6245:cbff:fe9f:48b1)
2024-08-09 09:50:34 +0000danse-nr3(~danse-nr3@user/danse-nr3) (Ping timeout: 260 seconds)
2024-08-09 09:53:32 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-09 09:57:45 +0000driib3(~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
2024-08-09 09:58:23 +0000driib3(~driib@vmi931078.contaboserver.net)
2024-08-09 10:04:30 +0000sp1ff(~user@c-73-11-70-111.hsd1.wa.comcast.net) (Remote host closed the connection)
2024-08-09 10:04:55 +0000CiaoSen(~Jura@2a05:5800:2da:c00:e6b9:7aff:fe80:3d03) (Ping timeout: 264 seconds)
2024-08-09 10:05:05 +0000thyriaen(~thyriaen@2001:4bc9:1fb8:12d1:6245:cbff:fe9f:48b1) (Remote host closed the connection)
2024-08-09 10:08:49 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 248 seconds)
2024-08-09 10:11:08 +0000cfricke(~cfricke@user/cfricke)
2024-08-09 10:12:42 +0000vpan(~vpan@212.117.1.172) (Quit: Leaving.)
2024-08-09 10:12:48 +0000Digit(~user@user/digit) (Ping timeout: 276 seconds)
2024-08-09 10:15:22 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-08-09 10:27:47 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2)
2024-08-09 10:39:19 +0000JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-08-09 10:41:09 +0000zero(~z@user/zero) (Quit: quit)
2024-08-09 10:42:32 +0000zero(~z@user/zero)
2024-08-09 10:46:50 +0000alexherbo2(~alexherbo@2a02-8440-3317-c12e-1d26-3004-5564-597a.rev.sfr.net)
2024-08-09 10:49:19 +0000Digit(~user@179.67.90.146.dyn.plus.net)
2024-08-09 10:49:35 +0000falafel(~falafel@2a0c:5a87:3104:4c01::aa34)
2024-08-09 10:54:58 +0000Digitteknohippie(~user@179.67.90.146.dyn.plus.net)
2024-08-09 10:57:08 +0000Digit(~user@179.67.90.146.dyn.plus.net) (Ping timeout: 255 seconds)
2024-08-09 10:58:32 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-08-09 11:09:31 +0000Digitteknohippie(~user@179.67.90.146.dyn.plus.net) (Changing host)
2024-08-09 11:09:31 +0000Digitteknohippie(~user@user/digit)
2024-08-09 11:09:55 +0000DigitteknohippieDigit
2024-08-09 11:11:18 +0000abyxq(~abyxq@user/abyxq) (Ping timeout: 276 seconds)
2024-08-09 11:13:06 +0000abyxq(~abyxq@user/abyxq)
2024-08-09 11:21:20 +0000alexherbo2(~alexherbo@2a02-8440-3317-c12e-1d26-3004-5564-597a.rev.sfr.net) (Remote host closed the connection)
2024-08-09 11:31:44 +0000CiaoSen(~Jura@2a05:5800:2da:c00:e6b9:7aff:fe80:3d03)
2024-08-09 11:46:21 +0000alexherbo2(~alexherbo@2a02-8440-3317-c12e-6155-3ef4-109a-60a1.rev.sfr.net)
2024-08-09 11:51:26 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-09 11:53:46 +0000falafel(~falafel@2a0c:5a87:3104:4c01::aa34) (Ping timeout: 244 seconds)
2024-08-09 12:02:07 +0000Unhammer(~Unhammer@user/unhammer) (WeeChat 2.3)
2024-08-09 12:05:50 +0000waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-08-09 12:06:12 +0000cpressey(~weechat@176.254.71.203) (Ping timeout: 265 seconds)
2024-08-09 12:15:27 +0000dans37269(~danse-nr3@user/danse-nr3) (Quit: meal)
2024-08-09 12:15:54 +0000jvml(~user@172.56.70.56)
2024-08-09 12:19:16 +0000waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 252 seconds)
2024-08-09 12:29:29 +0000Achylles(~Achylles@45.182.57.106)
2024-08-09 12:30:55 +0000abyxq(~abyxq@user/abyxq) (Quit: leaving)
2024-08-09 12:31:57 +0000alexherbo2(~alexherbo@2a02-8440-3317-c12e-6155-3ef4-109a-60a1.rev.sfr.net) (Remote host closed the connection)
2024-08-09 12:32:04 +0000falafel(~falafel@2a0c:5a87:3104:4c01::aa34)
2024-08-09 12:33:14 +0000danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-09 12:33:30 +0000machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net)
2024-08-09 12:35:12 +0000krei-se(~krei-se@p57af2d39.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2024-08-09 12:36:51 +0000euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-08-09 12:37:58 +0000falafel(~falafel@2a0c:5a87:3104:4c01::aa34) (Ping timeout: 272 seconds)
2024-08-09 12:39:18 +0000krei-se(~krei-se@p57af2d39.dip0.t-ipconnect.de)
2024-08-09 12:44:02 +0000euphores(~SASL_euph@user/euphores)
2024-08-09 12:44:26 +0000Achylles(~Achylles@45.182.57.106) (Quit: Leaving)
2024-08-09 12:46:45 +0000ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 248 seconds)
2024-08-09 12:56:23 +0000jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 255 seconds)
2024-08-09 12:58:08 +0000jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
2024-08-09 12:59:49 +0000hseg(~gesh@46.120.21.97)
2024-08-09 13:05:56 +0000jvml(~user@172.56.70.56) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.2))
2024-08-09 13:07:19 +0000cpressey(~weechat@176.254.71.203)
2024-08-09 13:11:37 +0000cpressey(~weechat@176.254.71.203) (Client Quit)
2024-08-09 13:18:25 +0000abyxq(~abyxq@user/abyxq)
2024-08-09 13:22:18 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-09 13:26:55 +0000 <Athas> I have been working on some Haskell exercises: https://github.com/diku-dk/ap-e2024-pub/tree/main/week1
2024-08-09 13:27:00 +0000rosco(~rosco@175.136.158.234) (Quit: Lost terminal)
2024-08-09 13:27:06 +0000 <Athas> I think this is actually the first time I have written didactic material for Haskell.
2024-08-09 13:31:14 +0000CiaoSen(~Jura@2a05:5800:2da:c00:e6b9:7aff:fe80:3d03) (Ping timeout: 260 seconds)
2024-08-09 13:31:45 +0000pointlessslippe1(~pointless@212.82.82.3) (Ping timeout: 265 seconds)
2024-08-09 13:38:38 +0000pointlessslippe1(~pointless@212.82.82.3)
2024-08-09 13:40:02 +0000ystael(~ystael@user/ystael)
2024-08-09 13:40:04 +0000 <danse-nr3> nice stuff
2024-08-09 13:40:14 +0000 <danse-nr3> in a meeting will read better later
2024-08-09 13:46:31 +0000pointlessslippe1(~pointless@212.82.82.3) (Ping timeout: 252 seconds)
2024-08-09 13:48:15 +0000dans77453(~danse-nr3@user/danse-nr3)
2024-08-09 13:50:09 +0000danse-nr3(~danse-nr3@user/danse-nr3) (Ping timeout: 248 seconds)
2024-08-09 13:50:24 +0000 <dans77453> so, what's the plan about those Athas?
2024-08-09 13:50:28 +0000 <dans77453> organized by weeks, they seem to hint at a course
2024-08-09 13:50:34 +0000skyesoss(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net)
2024-08-09 13:50:38 +0000 <Athas> dans77453: yes, it's a course.
2024-08-09 13:51:13 +0000 <Athas> The didactive vision is that the students will do tutorial-style exercises (with solutions) where they write code from scratch, and then do take-home assignments where they have to add more functionality.
2024-08-09 13:51:53 +0000 <Athas> I am trying to take a very concrete, code-oriented perspective, since my experience is that most students cannot understand the abstract principles in isolation.
2024-08-09 13:53:30 +0000 <dans77453> maybe not for me but good initiative
2024-08-09 14:01:14 +0000 <sprout> you should run the exercises through chatgpt :)
2024-08-09 14:04:39 +0000 <dans77453> -.-
2024-08-09 14:05:15 +0000pointlessslippe1(~pointless@212.82.82.3)
2024-08-09 14:05:21 +0000 <dans77453> well actually, not a bad idea. Some student is definitely gonna do that
2024-08-09 14:08:15 +0000 <EvanR> Athas, you haven't written a monad tutorial??
2024-08-09 14:10:32 +0000 <Athas> EvanR: I felt there were enough already.
2024-08-09 14:10:38 +0000AlexNoo_AlexNoo
2024-08-09 14:10:41 +0000 <Athas> sprout: why? They're exercises?
2024-08-09 14:10:55 +0000zerozzz
2024-08-09 14:11:00 +0000 <sprout> Athas: because students are going to do that?
2024-08-09 14:11:13 +0000 <Athas> They can also just not do the exercises. They're not mandatory.
2024-08-09 14:11:16 +0000 <Athas> That's even easier.
2024-08-09 14:11:47 +0000 <sprout> I would be interested anyway
2024-08-09 14:11:51 +0000 <sprout> but ah well
2024-08-09 14:12:28 +0000Sgeo(~Sgeo@user/sgeo)
2024-08-09 14:12:47 +0000 <EvanR> sprout, you do it
2024-08-09 14:12:53 +0000 <sprout> nah
2024-08-09 14:12:56 +0000 <EvanR> lol
2024-08-09 14:13:08 +0000 <sprout> I've got my own shitty interpreter to work on
2024-08-09 14:13:27 +0000 <EvanR> I asked chat-gpt to make a shitty interpreter. It did
2024-08-09 14:14:29 +0000 <dans77453> what's the interpreter about sprout?
2024-08-09 14:14:47 +0000 <sprout> https://egel-lang.github.io/
2024-08-09 14:14:57 +0000 <sprout> cheap and dirty fuctional programs
2024-08-09 14:15:07 +0000 <sprout> or small and dirty
2024-08-09 14:15:20 +0000 <dans77453> i thought that was called javascript. But lemme peek
2024-08-09 14:15:50 +0000 <sprout> this is the best example I have so far of what I want: https://egel.dev/self
2024-08-09 14:16:07 +0000 <sprout> (fingers crossed that loads)
2024-08-09 14:16:14 +0000 <dans77453> nice syntax
2024-08-09 14:16:23 +0000 <dans77453> what's the 'import System' about?
2024-08-09 14:16:27 +0000 <sprout> a gopher/www server in a few untidy lines
2024-08-09 14:16:36 +0000 <sprout> dans77453: pull in the system namespace
2024-08-09 14:17:01 +0000 <sprout> stuff like + and print
2024-08-09 14:17:04 +0000 <dans77453> hmm pulling a namespace in a specific scope is cool
2024-08-09 14:17:25 +0000 <sprout> it's probably overkill but for the moment I like to keep stuff clean
2024-08-09 14:17:42 +0000 <sprout> users probably would want that namespace by default
2024-08-09 14:18:18 +0000 <sprout> there's about a dozen lines of decorum I could cut by making it all more friendly
2024-08-09 14:18:25 +0000 <sprout> but ah well
2024-08-09 14:18:40 +0000 <dans77453> heh
2024-08-09 14:19:48 +0000euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
2024-08-09 14:20:03 +0000euleritian(~euleritia@dynamic-176-006-130-193.176.6.pool.telefonica.de)
2024-08-09 14:24:49 +0000 <dans77453> some other day someone in #emacs was arguing devs like to keep bugs around in order to keep their jobs. Nonsense
2024-08-09 14:25:29 +0000 <dans77453> for each development project there is an infinitely forking tree with infinite branches of stuff to be done
2024-08-09 14:25:52 +0000 <dans77453> like an hydra :P
2024-08-09 14:26:58 +0000 <sprout> it's just time management
2024-08-09 14:27:21 +0000 <sprout> a lot of writing software or compilers boils down to: this will do for the moment
2024-08-09 14:28:19 +0000hseg(~gesh@46.120.21.97) (Ping timeout: 264 seconds)
2024-08-09 14:28:20 +0000 <dans77453> of course, i've long learned minimalism, but... we all know there is so much more we would like to do
2024-08-09 14:28:55 +0000 <EvanR> that conspiratorial thinking is so gross
2024-08-09 14:31:36 +0000abyxq(~abyxq@user/abyxq) (Quit: leaving)
2024-08-09 14:31:38 +0000 <dans77453> i am more concerned about the "elitism" label to be honest
2024-08-09 14:33:09 +0000 <EvanR> yeah wtf
2024-08-09 14:33:58 +0000 <EvanR> we should select and promote people who are most qualified to do the job in question, but make sure they're not elite? lol
2024-08-09 14:34:11 +0000 <EvanR> don't trust experts
2024-08-09 14:35:11 +0000 <dans77453> you are talking meritocracy, but i saw that attached to free software devs in general, which are a chaotic crowd. Anyways, getting too offtopic i'm afraid
2024-08-09 14:36:10 +0000 <EvanR> a common hottake against haskell is the people who know it are elitist which is bad
2024-08-09 14:36:15 +0000BitByte(~BitByte@2804:880:130e:5700:b184:6405:971d:7d3d)
2024-08-09 14:37:53 +0000 <zzz> who holds that opinion? people who know haskell?
2024-08-09 14:38:25 +0000 <EvanR> usually not xD
2024-08-09 14:39:03 +0000 <EvanR> that would place you in your own crosshairs
2024-08-09 14:39:19 +0000 <zzz> why should the opinion of people who don't know something count?
2024-08-09 14:39:50 +0000 <EvanR> should not but often does anyway
2024-08-09 14:39:53 +0000 <sprout> 'don't discuss the ignorant, people observing might not know the difference'
2024-08-09 14:40:05 +0000 <sprout> Twain I think
2024-08-09 14:40:08 +0000itaipu(~itaipu@168.121.98.114)
2024-08-09 14:40:36 +0000 <dans77453> i was trying to deepen the matter in #emacs but we didn't get too far. Someone pulled in generational divides, having "weird and uncommon" ways... i don't recall what else
2024-08-09 14:40:43 +0000 <dans77453> good points zzz, sprout
2024-08-09 14:41:14 +0000 <EvanR> conform to the common ways, it's safer. Use emacs!
2024-08-09 14:41:27 +0000 <dans77453> that would be vscode actually
2024-08-09 14:41:33 +0000 <EvanR> lol
2024-08-09 14:41:44 +0000 <zzz> :wq!
2024-08-09 14:42:12 +0000 <dans77453> but well, i think it matters how a community is perceived by the rest of the society
2024-08-09 14:43:29 +0000raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-08-09 14:44:03 +0000 <EvanR> https://www.wired.com/story/inside-the-cult-of-the-haskell-programmer/
2024-08-09 14:44:20 +0000 <zzz> here's a wonderful phrase from http://ereserve.library.utah.edu/Annual/SOC/3568/Bench/myth.pdf : "Although I am tempted to give this response, I never do. This is because, although true, it never persuades."
2024-08-09 14:44:34 +0000 <dans77453> =D
2024-08-09 14:44:35 +0000 <dans77453> although facts shows the efforts haskellers make to increase the accessibility of their knowledge, i think haskell's values make it harder to fight "elitism" back. On the other hand i am concerned by seeing that applied to /all/ free dev
2024-08-09 14:45:12 +0000jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Quit: My Mac has gone to sleep. ZZZzzz…)
2024-08-09 14:46:40 +0000 <EvanR> haskell's values make it hard to mutate them
2024-08-09 14:46:51 +0000 <zzz> i just got here and may be missing some context. in which ways is haskell being accused of elitism?
2024-08-09 14:47:07 +0000 <dans77453> not haskell, free software development in general
2024-08-09 14:47:23 +0000 <dans77453> #emacs, #linux
2024-08-09 14:47:32 +0000 <zzz> can't anyone develop FOSS?
2024-08-09 14:48:04 +0000 <dans77453> huh... i assume who comes from proprietary tech finds that harder
2024-08-09 14:48:18 +0000 <zzz> why would that be?
2024-08-09 14:48:29 +0000 <dans77453> just because they are used differently
2024-08-09 14:48:39 +0000 <dans77453> *accustomed
2024-08-09 14:49:17 +0000 <zzz> proprietary tech is less elitist than foss?
2024-08-09 14:49:35 +0000 <dans77453> it's more ... statistically common for sure
2024-08-09 14:49:58 +0000 <zzz> you think proprietary tech is more common? i seriously doubt that
2024-08-09 14:50:03 +0000 <EvanR> yes, windows was always workingclass man's platform
2024-08-09 14:50:17 +0000 <EvanR> regardless of how widely deployed
2024-08-09 14:50:49 +0000dans77453(~danse-nr3@user/danse-nr3) (Remote host closed the connection)
2024-08-09 14:50:59 +0000 <EvanR> linux was european communism cancer (according to steve ballmer)
2024-08-09 14:51:03 +0000danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-09 14:51:12 +0000 <Rembane> EvanR: I need that on a t-shirt!
2024-08-09 14:51:32 +0000 <EvanR> nevermind that contradiction
2024-08-09 14:52:28 +0000 <zzz> i think we need to define our terms. what does elitist mean? what does beomg more common mean? the *vast* majority of servers in the world are running linux. the phone i'm writing this in is running linux
2024-08-09 14:52:31 +0000 <Rembane> That the first slide in the Wired article isn't typeset with Comic Sans MS is just wrong
2024-08-09 14:52:35 +0000 <EvanR> if you ever heard free software explained as, use this to really understand computing. Well that may come off as elitist. You actually know what you're doing? Leet
2024-08-09 14:52:37 +0000 <raehik> I'm doing some low level bytestring manip where I poke bytes to a fresh ForeignPtr buffer which will eventually become a ByteString-- but it's failable, and if so we should free the buffer. Can I safely assume the garbage collector will do this for me if I simply discard the ForeignPtr?
2024-08-09 14:53:14 +0000 <danse-nr3> hm i assume even communism can be considered elitist somehow...
2024-08-09 14:53:26 +0000BitBitotabit5(~BitBitota@2804:880:130e:5700:b184:6405:971d:7d3d)
2024-08-09 14:53:30 +0000 <EvanR> raehik, not unless you attached a finalizer
2024-08-09 14:53:41 +0000 <EvanR> whcih explicitly frees the buffer
2024-08-09 14:53:47 +0000 <EvanR> or used a bracket pattern which does it
2024-08-09 14:54:14 +0000BitBitotabit5(~BitBitota@2804:880:130e:5700:b184:6405:971d:7d3d) (Write error: Broken pipe)
2024-08-09 14:54:21 +0000 <zzz> danse-nr3: communist regimes tend to create elites, yes
2024-08-09 14:54:29 +0000 <zzz> famously so
2024-08-09 14:54:37 +0000 <danse-nr3> isn't that a contradiction in terms?
2024-08-09 14:54:42 +0000 <EvanR> yes :)
2024-08-09 14:54:42 +0000 <zzz> not at all
2024-08-09 14:54:55 +0000 <danse-nr3> oligarchies, possibly. It's slightly different
2024-08-09 14:55:30 +0000 <danse-nr3> 'cause some communism is very centralised
2024-08-09 14:56:17 +0000 <zzz> communism is generally against class-based elitism, but because it's class based, not because it's elitism
2024-08-09 14:56:30 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2)
2024-08-09 14:56:30 +0000 <danse-nr3> hmm
2024-08-09 14:57:01 +0000 <danse-nr3> aren't you collapsing meritocracy and elitism again?
2024-08-09 14:57:01 +0000 <raehik> EvanR: right I think I see, finalizeForeignPtr and withForeignPtr exist. thanks
2024-08-09 14:57:02 +0000 <EvanR> raehik, a ForeignPtr points to something outside the haskell runtime, the gc doesn't know what to do with the foreign object. But there is a facility of finalizers
2024-08-09 14:57:27 +0000 <EvanR> which let you specify
2024-08-09 14:58:06 +0000 <zzz> danse-nr3: no
2024-08-09 14:58:13 +0000Cbit(~Cbit@2804:880:130e:5700:b184:6405:971d:7d3d)
2024-08-09 14:58:25 +0000 <danse-nr3> i'll move to -offtopic
2024-08-09 14:59:07 +0000 <zzz> i see how it can cause ambiguity though
2024-08-09 14:59:47 +0000 <zzz> yes, better
2024-08-09 15:02:20 +0000 <EvanR> one thing I heard about programming is that is it hard coming up with so many variable names. This was in context of an imperative language which encouraged a lot of local variables to hold the temporary results before doing the next action
2024-08-09 15:02:36 +0000 <EvanR> do you find that this is more, less, or the same size problem in haskell
2024-08-09 15:02:44 +0000 <EvanR> if any
2024-08-09 15:03:01 +0000 <int-e> just know your a, b, c, and x, y, z and you'll be fine 80% of the time.
2024-08-09 15:03:09 +0000 <int-e> f, g, h are also handy
2024-08-09 15:03:38 +0000 <EvanR> great you don't need to name local variables lol
2024-08-09 15:04:05 +0000 <EvanR> but what about top level bindings
2024-08-09 15:04:21 +0000 <int-e> those are hard
2024-08-09 15:05:57 +0000 <int-e> Unless you subscribe to the HT school of naming: Mod.f, Mod.T
2024-08-09 15:06:03 +0000 <EvanR> lol
2024-08-09 15:06:12 +0000 <EvanR> leverage hard the module names?
2024-08-09 15:06:21 +0000 <zzz> what's in a name? would a rose by any other name not smell as sweet?
2024-08-09 15:06:28 +0000 <zzz> paraphrasing the bard
2024-08-09 15:06:43 +0000 <EvanR> I am inspired to great several cool and useful tools on hackage with that naming convention
2024-08-09 15:07:33 +0000 <int-e> zzz: I'm sure a flumphrobble would not smell as sweet
2024-08-09 15:08:19 +0000 <danse-nr3> after a bit working in haskell, i came to the conclusion that meaningless names stress me more than meaningful ones. And in haskell, often, i can avoid meaningless names
2024-08-09 15:09:50 +0000 <zzz> danse-nr3: haskell is *very* good at letting you know what a function is, independently of which name you give it
2024-08-09 15:10:21 +0000 <danse-nr3> well that depends how it's written i guess
2024-08-09 15:10:22 +0000 <EvanR> by reading the source code? xD
2024-08-09 15:10:29 +0000 <int-e> EvanR: actually this reminds me of one of the better bugs I've seen on haskell-cafe (ages ago): somebody produced a recursive binding because they had both a,b,c and r,g,b as variable names.
2024-08-09 15:10:45 +0000 <danse-nr3> :P
2024-08-09 15:10:46 +0000 <zzz> EvanR: yes but not only
2024-08-09 15:10:55 +0000 <zzz> referential transparency is great
2024-08-09 15:11:02 +0000 <danse-nr3> yeah i get what you mean zzz
2024-08-09 15:11:09 +0000 <danse-nr3> but expressive types are not everywhere
2024-08-09 15:11:15 +0000 <EvanR> I have been confused by binding the same variable multiple times xD
2024-08-09 15:11:18 +0000 <zzz> navigating hoogle is a breeze compared to other languages
2024-08-09 15:11:24 +0000 <EvanR> usually gets caught by the compiler because types don't match
2024-08-09 15:11:27 +0000 <danse-nr3> (nor safe functions are)
2024-08-09 15:11:59 +0000 <danse-nr3> i think a beginner could have a different opinion zzz
2024-08-09 15:12:12 +0000 <danse-nr3> (about navigating hoogle or hackage)
2024-08-09 15:12:19 +0000 <zzz> EvanR: overloading is discouraged, and ghc warns you about it
2024-08-09 15:12:31 +0000 <EvanR> ?
2024-08-09 15:12:37 +0000 <danse-nr3> yea we've got that as an error
2024-08-09 15:12:47 +0000 <danse-nr3> and i'm glad about that
2024-08-09 15:12:49 +0000 <zzz> danse-nr3: that applies to a beginner in anything
2024-08-09 15:13:08 +0000 <danse-nr3> hmm... some are friendlier than others
2024-08-09 15:13:10 +0000 <zzz> it's a poor argument
2024-08-09 15:13:15 +0000 <zzz> danse-nr3: how so?
2024-08-09 15:13:26 +0000 <EvanR> typeclasses is overloading, and multiple definitions with the wrong type is just wrong
2024-08-09 15:13:57 +0000 <danse-nr3> zzz meant shadowing
2024-08-09 15:14:01 +0000 <EvanR> oh yeah
2024-08-09 15:14:15 +0000 <EvanR> call me the shadowmaster
2024-08-09 15:14:21 +0000 <danse-nr3> XD
2024-08-09 15:14:26 +0000 <zzz> EvanR: it's a mistake to equate class instances with overloading imo
2024-08-09 15:14:44 +0000 <EvanR> sure
2024-08-09 15:14:55 +0000 <EvanR> but you can undiscouragedly overload + in haskell
2024-08-09 15:15:02 +0000 <danse-nr3> sure, one is derivation, the other is overloading
2024-08-09 15:15:06 +0000 <EvanR> via some mechanism that's obviously not equated
2024-08-09 15:16:03 +0000 <EvanR> meanwhile many languages actively discourage you from wanting to overload +
2024-08-09 15:16:10 +0000 <zzz> EvanR: you can create a sum function in most languages and overload it
2024-08-09 15:16:17 +0000 <EvanR> by not having that feature, or otherwise
2024-08-09 15:16:38 +0000 <EvanR> creating a function called sum and overloading + isn't the same thing
2024-08-09 15:16:46 +0000 <zzz> yes it is
2024-08-09 15:16:47 +0000 <EvanR> no
2024-08-09 15:16:56 +0000 <zzz> it just happens to be called + in haskell
2024-08-09 15:16:57 +0000ft(~ft@p4fc2aa15.dip0.t-ipconnect.de)
2024-08-09 15:17:32 +0000 <EvanR> you were talking about shadowing anyway so this is a timeline which needs to get purged
2024-08-09 15:18:12 +0000 <zzz> fair enough
2024-08-09 15:26:29 +0000 <EvanR> and I think we were talking about this rogue phenomenon which isn't really shadowing because recursive bindings don't really have a seniority https://paste.tomsmeding.com/a43p42FI
2024-08-09 15:36:51 +0000 <zzz> ah, i missed that
2024-08-09 15:37:38 +0000cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.2.2)
2024-08-09 15:38:34 +0000 <zzz> my mind keeps going back to this idea https://www.unison-lang.org/docs/the-big-idea/
2024-08-09 15:39:26 +0000 <zzz> i understand it's tangential to this discussion but still
2024-08-09 15:39:50 +0000 <danse-nr3> no worries, discussion is dead anyways
2024-08-09 15:39:57 +0000 <zzz> the less names matter in a language the happier i am
2024-08-09 15:43:25 +0000 <haskellbridge> <mauke> This is why I only code in Brainfuck
2024-08-09 15:44:47 +0000JuanDaugherty(~juan@user/JuanDaugherty)
2024-08-09 15:45:05 +0000ZharMeny(~user@user/ZharMeny)
2024-08-09 15:47:45 +0000euleritian(~euleritia@dynamic-176-006-130-193.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-08-09 15:47:54 +0000 <EvanR> "naming things is hard", clearly the code should make reference using glowing strands of graphics. That don't get tangled up somehow
2024-08-09 15:48:03 +0000euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-08-09 15:48:14 +0000 <raehik> bytestring's createFpAndTrim can potentially malloc 2 buffers and return the smaller one. I don't see an explicit free/finalizer call/bracketing for the larger buffer in such a case. How does this work? https://hackage.haskell.org/package/bytestring-0.12.1.0/docs/src/Data.ByteString.Internal.Type.htm…
2024-08-09 15:49:16 +0000 <raehik> I ask because I've effectively reimplemented createFpAndTrim with a custom action and it works, but I wonder if I've aimed a gun at a foot
2024-08-09 15:50:06 +0000 <EvanR> createFpAndTrim seems to be so low level that it has no guardrails at all
2024-08-09 15:50:16 +0000 <c_wraith> It's using a ForeignPtr, not a Ptr
2024-08-09 15:50:22 +0000 <c_wraith> that means there's a finalizer attached
2024-08-09 15:50:23 +0000 <EvanR> if the thread crashes during or after, you leak the buffers
2024-08-09 15:50:51 +0000 <EvanR> oh foreignpointer to malloc automatically has finalizers?
2024-08-09 15:51:12 +0000 <c_wraith> You only use a ForeignPtr if you've got finalizers to attach
2024-08-09 15:51:34 +0000 <EvanR> I don't see where it is attached in this case
2024-08-09 15:51:34 +0000 <c_wraith> But you'd need to find an inspect mallocPlainForeignPtrBytes to be sure
2024-08-09 15:52:04 +0000jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
2024-08-09 15:52:34 +0000 <c_wraith> Oh dear. "an optimised ForeignPtr representation with no finalizer is used. Attempts to add a finalizer will cause an exception to be thrown."
2024-08-09 15:53:13 +0000 <haskellbridge> <mauke> https://hackage.haskell.org/package/base-4.20.0.1/docs/GHC-ForeignPtr.html#v:mallocForeignPtr
2024-08-09 15:53:21 +0000 <raehik> mallocByteString creates ForeignPtrs with PlainPtr
2024-08-09 15:53:33 +0000 <EvanR> ok I'm wrong about "no guardrails" xD
2024-08-09 15:53:51 +0000 <EvanR> mallocPlainForeignPtrBytes stops you from adding a finalizer
2024-08-09 15:55:23 +0000 <raehik> mauke: looks like I can't select the buffer size there, it's down to the Storable instance
2024-08-09 15:55:24 +0000 <c_wraith> Interestingly, PlainPtr looks like it still gets garbage collected - you just can't hook in a finalizer to run native code
2024-08-09 15:55:49 +0000 <c_wraith> So there is no bracket to clean up the larger buffer immediately, but it's part of GHC's heap
2024-08-09 15:55:56 +0000 <c_wraith> it gets cleaned up eventually.
2024-08-09 15:55:58 +0000 <haskellbridge> <mauke> ? This is just for documentation
2024-08-09 15:56:04 +0000 <raehik> I see! I wondered if that was the case
2024-08-09 15:56:16 +0000 <raehik> mauke: oh apologies, I thought you were suggesting a different approach
2024-08-09 15:56:59 +0000 <haskellbridge> <mauke> This is the function that the other variants are described as being similar to
2024-08-09 15:57:00 +0000 <raehik> another thing, bytestring uses withForeignPtr instead of unsafeWithForeignPtr. that figures because the user passes in the IO action, which could fail
2024-08-09 15:57:24 +0000 <EvanR> PlainForeignPtr or MallocPtr would do what you want, but it's not
2024-08-09 15:57:35 +0000 <raehik> if I write an action that's just Haskell (no FFI) and can't obviously fail, am I clear to use unsafeWithForeignPtr?
2024-08-09 15:57:49 +0000 <haskellbridge> <mauke> Where similar to = automatic memory management
2024-08-09 15:58:17 +0000 <EvanR> can't obviously fail = obviously can't fail? xD
2024-08-09 15:58:32 +0000 <haskellbridge> <mauke> Can I throwTo your thread?
2024-08-09 15:59:09 +0000andrewchawk(~andrewcha@170.52.55.98)
2024-08-09 15:59:23 +0000 <raehik> mauke: I don't know of that function. if you can find the thread ID I imagine so
2024-08-09 15:59:26 +0000jespada_(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
2024-08-09 16:00:09 +0000 <c_wraith> raehik: throwTo only can introduce exceptions at specific points - those points being when an allocation happens
2024-08-09 16:00:14 +0000 <andrewchawk> Good God. I just joined, and I already see a bit of activity. IRC really must still be alive. :-)
2024-08-09 16:00:16 +0000 <zzz> raehik: you can. doesn't mean that you should
2024-08-09 16:00:33 +0000 <EvanR> IRC never dies it just stands in the back
2024-08-09 16:00:39 +0000jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 252 seconds)
2024-08-09 16:00:45 +0000 <haskellbridge> <mauke> throwTo lets other people inject arbitrary exceptions into otherwise harmless IO actions
2024-08-09 16:00:48 +0000 <c_wraith> You could safely use unsafeWithForeignPtr if the haskell code never allocates.
2024-08-09 16:01:00 +0000JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-08-09 16:01:18 +0000 <raehik> I see. thanks c_wraith , it's a lot more finicky than I thought
2024-08-09 16:01:23 +0000 <EvanR> I think raehik is trying to write to most unsafe haskell imaginable
2024-08-09 16:01:36 +0000 <EvanR> because unsafe = speed
2024-08-09 16:01:43 +0000kuribas(~user@2a02:1810:2825:6000:22f5:5d2b:a63a:1884) (Quit: ERC (IRC client for Emacs 27.1))
2024-08-09 16:02:01 +0000 <haskellbridge> <mauke> Is that true even in the threaded runtime? The only at allocations part
2024-08-09 16:02:05 +0000 <c_wraith> they haven't asked about accursedUnutterablePerformIO yet!
2024-08-09 16:02:40 +0000 <raehik> EvanR: these libraries have exposed these functions, and I simply wish to understand them :)
2024-08-09 16:03:09 +0000 <andrewchawk> EvanR: :-)
2024-08-09 16:03:12 +0000 <EvanR> famous last words in lovecraft
2024-08-09 16:03:18 +0000 <c_wraith> mauke: yes. Even the GC can't interrupt code that doesn't allocate. You can hang a program on the threaded runtime by starting a thread that runs forever and does no allocation
2024-08-09 16:03:35 +0000 <zzz> pure $ unsafePerformIO $ peek nullPtr
2024-08-09 16:04:13 +0000 <EvanR> that doesn't obviously fail depending on what pure means
2024-08-09 16:04:22 +0000 <zzz> :: IO ()
2024-08-09 16:04:45 +0000 <c_wraith> so it's a segfault only if you force the () value
2024-08-09 16:05:12 +0000 <raehik> the docs for unsafeWithForeignPtr seem lacking perhaps. no mention of how thread interrupts and allocations can impact soundness
2024-08-09 16:06:08 +0000 <EvanR> that's documented in Control.Exception docs? And or Control.Concurrent
2024-08-09 16:06:59 +0000 <EvanR> and or the paper on haskell's asynchronous exception system
2024-08-09 16:07:08 +0000alexherbo2(~alexherbo@2a02-8440-3317-c12e-b11a-79e1-1830-8594.rev.sfr.net)
2024-08-09 16:09:12 +0000 <zzz> vs :: IO Word
2024-08-09 16:09:31 +0000dsrt^(dsrt@c-98-242-74-66.hsd1.ga.comcast.net) (Ping timeout: 244 seconds)
2024-08-09 16:15:00 +0000andrewchawk(~andrewcha@170.52.55.98) (Changing host)
2024-08-09 16:15:00 +0000andrewchawk(~andrewcha@user/andrewchawk)
2024-08-09 16:21:06 +0000machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 248 seconds)
2024-08-09 16:30:17 +0000JuanDaugherty(~juan@user/JuanDaugherty)
2024-08-09 16:33:17 +0000 <raehik> I wonder if a library that assists buffer updates in ST-land would be work & be handy. my buffer filling action only calls writeXOffPtr which could be placed into IO. and if this helps me use unsafeWithForeignPtr safely (can't allocate in ST, as far as I understand?) it'd be useful
2024-08-09 16:34:03 +0000 <raehik> s/which could be placed into IO/which could be placed into ST (currently in IO)
2024-08-09 16:36:08 +0000 <raehik> wait maybe primitive already does this :o
2024-08-09 16:36:53 +0000 <geekosaur> the alternative is something might allow local allocation in ST by tagging the result with the existential? not sure how safe that is
2024-08-09 16:37:53 +0000spew(~spew@201.141.102.132)
2024-08-09 16:38:00 +0000 <raehik> being able to do both seems useful
2024-08-09 16:38:45 +0000danse-nr3(~danse-nr3@user/danse-nr3) (Ping timeout: 248 seconds)
2024-08-09 16:39:07 +0000 <EvanR> can't you allocate a buffer of unboxed Word8 in ST
2024-08-09 16:39:10 +0000 <raehik> I think primitive does a lot of this, but the interfacing with bytestring is so messy because of the arbitrary internals exporting. some high-level things just, don't get exported
2024-08-09 16:40:20 +0000Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
2024-08-09 16:41:02 +0000 <raehik> EvanR: not sure how to allocate in ST at all. all the malloc-likes I can find need IO
2024-08-09 16:41:32 +0000 <raehik> I'm not _completely_ clear on what "allocate" refers to so might be looking in the wrong place
2024-08-09 16:42:20 +0000 <EvanR> the Array and unboxed array library is parameterized on the prim monad either IO or ST
2024-08-09 16:42:28 +0000 <EvanR> so it's the same API
2024-08-09 16:43:01 +0000 <raehik> oh yup, you're right
2024-08-09 16:43:23 +0000alexherbo2(~alexherbo@2a02-8440-3317-c12e-b11a-79e1-1830-8594.rev.sfr.net) (Remote host closed the connection)
2024-08-09 16:43:28 +0000 <EvanR> but an unboxed array is not what constitutes a ByteString so to get a ByteString in the end you need to make a copy, probably.
2024-08-09 16:44:55 +0000 <raehik> ok, assuming that counts as an interruptible allocation I suppose unsafeWithForeignPtr should only be applied with the utmost caution
2024-08-09 16:47:19 +0000alexherbo2(~alexherbo@2a02-8440-3317-c12e-51f5-a487-8417-dd3a.rev.sfr.net)
2024-08-09 16:47:43 +0000 <raehik> then really all I want is a library on top of Data.ByteString.Internal that makes it easier to initialize and manipulate bytestring buffers :)
2024-08-09 16:48:47 +0000 <EvanR> there is malloc, peek and poke
2024-08-09 16:48:48 +0000JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-08-09 16:48:53 +0000 <EvanR> go to town
2024-08-09 16:50:03 +0000 <EvanR> you can't literally manipulate the buffer backing a ByteString because that type is supposed to be immutable
2024-08-09 16:50:25 +0000 <EvanR> but when you're done you can logically "freeze" the buffer you were working with as long as it's not within the garbage collector
2024-08-09 16:50:46 +0000 <EvanR> and wrap it in the ByteString secret constructors
2024-08-09 16:50:49 +0000 <raehik> right I mean manipulating a buffer that will become a bytestring later
2024-08-09 16:51:08 +0000 <raehik> primitive has tons of tools for manipulating regular buffers
2024-08-09 16:51:27 +0000 <EvanR> regular buffer?
2024-08-09 16:51:41 +0000 <raehik> arbitrary buffers
2024-08-09 16:51:48 +0000noumenon(~noumenon@113.51-175-156.customer.lyse.net) (Read error: Connection reset by peer)
2024-08-09 16:52:00 +0000 <EvanR> malloced buffer? haskell managed buffers?
2024-08-09 16:52:17 +0000 <EvanR> foreign buffer
2024-08-09 16:52:18 +0000 <raehik> primitive mostly deals in Ptr and that's it
2024-08-09 16:52:21 +0000 <raehik> (I think)
2024-08-09 16:52:40 +0000 <EvanR> then it deals in pointers and not buffers xD
2024-08-09 16:52:54 +0000 <raehik> oh sorry I use those interchangeably
2024-08-09 16:53:03 +0000 <raehik> Ptr Word8 is a buffer to me
2024-08-09 16:53:08 +0000 <EvanR> the C channel would have your head
2024-08-09 16:53:08 +0000spew(~spew@201.141.102.132) (Read error: Connection reset by peer)
2024-08-09 16:53:22 +0000sawilagar(~sawilagar@user/sawilagar) (Remote host closed the connection)
2024-08-09 16:53:46 +0000sawilagar(~sawilagar@user/sawilagar)
2024-08-09 16:54:52 +0000econo_(uid147250@id-147250.tinside.irccloud.com)
2024-08-09 16:55:10 +0000 <EvanR> but if your buffer is somewhere stable and not subject to GC, you can make it a bytestring via ForeignPtr, after using that library
2024-08-09 16:57:56 +0000gioyik(~gioyik@gateway/tor-sasl/gioyik)
2024-08-09 16:58:28 +0000danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-09 17:00:29 +0000 <raehik> yes my use case is these buffers will always be going to bytestrings eventually. bytestring lib has internals for this but 1/2 of them aren't exported. reimplementing unexported functions and a tiny bit of glue would greatly simplify it
2024-08-09 17:02:06 +0000bo1(~bo1@2804:880:130e:5700:b184:6405:971d:7d3d)
2024-08-09 17:02:08 +0000 <EvanR> there's been a string of packages which do 1 thing, convert an unboxed array of Word8 into ByteString using internal unsafe unstable stuff to avoid a copy
2024-08-09 17:02:13 +0000krei-se(~krei-se@p57af2d39.dip0.t-ipconnect.de) (Quit: ZNC 1.9.1 - https://znc.in)
2024-08-09 17:02:24 +0000 <EvanR> or maybe it was the other way around
2024-08-09 17:04:26 +0000 <EvanR> whatever the wisdom of wanting to do this, it seems the simplest way to cooperate with existing haskell
2024-08-09 17:06:00 +0000 <raehik> that's interesting. I don't think it would be the most performant approach
2024-08-09 17:06:51 +0000 <raehik> I'm not averse to doing safe IO work for performance & don't think it should be "frowned upon". the vector pkg is excellent in this regard
2024-08-09 17:08:41 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2024-08-09 17:11:29 +0000CiaoSen(~Jura@2a05:5800:2da:c00:e6b9:7aff:fe80:3d03)
2024-08-09 17:24:40 +0000 <geekosaur> there also used to be a patched ByteString that used unboxed vectors internally; sadly, it never caught on
2024-08-09 17:25:30 +0000andrewchawk(~andrewcha@user/andrewchawk) (Remote host closed the connection)
2024-08-09 17:25:45 +0000andrewchawk(~andrewcha@170.52.55.98)
2024-08-09 17:26:52 +0000haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection)
2024-08-09 17:27:13 +0000krei-se(~krei-se@p57af2d39.dip0.t-ipconnect.de)
2024-08-09 17:27:29 +0000haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com)
2024-08-09 17:27:29 +0000ChanServ+v haskellbridge
2024-08-09 17:30:14 +0000raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 260 seconds)
2024-08-09 17:32:02 +0000andrewchawk(~andrewcha@170.52.55.98) (Ping timeout: 252 seconds)
2024-08-09 17:33:48 +0000BitByte(~BitByte@2804:880:130e:5700:b184:6405:971d:7d3d) (Quit: Client closed)
2024-08-09 17:42:27 +0000CrunchyFlakes(~CrunchyFl@146.52.130.128) (Read error: Connection reset by peer)
2024-08-09 17:42:38 +0000andrewchawk(~andrewcha@170.52.55.98)
2024-08-09 17:43:13 +0000andrewchawk(~andrewcha@170.52.55.98) (Changing host)
2024-08-09 17:43:13 +0000andrewchawk(~andrewcha@user/andrewchawk)
2024-08-09 17:44:15 +0000raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-08-09 17:45:03 +0000CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
2024-08-09 17:45:29 +0000Cbit(~Cbit@2804:880:130e:5700:b184:6405:971d:7d3d) (Ping timeout: 256 seconds)
2024-08-09 17:46:52 +0000 <EvanR> the filepath package is an implementation of the abstract filepath proposal. Does it get any use? Is it universally used now?
2024-08-09 17:48:39 +0000dans41958(~danse-nr3@user/danse-nr3)
2024-08-09 17:50:41 +0000danse-nr3(~danse-nr3@user/danse-nr3) (Ping timeout: 248 seconds)
2024-08-09 17:51:43 +0000Buliarous(~gypsydang@46.232.210.139) (Remote host closed the connection)
2024-08-09 17:52:42 +0000 <geekosaur> the old filepath package (pre-proposal) got little use. the new one (implementing the proposal) gets a fair amount of use and more things are switching to it
2024-08-09 17:56:37 +0000CiaoSen(~Jura@2a05:5800:2da:c00:e6b9:7aff:fe80:3d03) (Ping timeout: 248 seconds)
2024-08-09 17:58:57 +0000ubert(~Thunderbi@178.165.184.113.wireless.dyn.drei.com) (Quit: ubert)
2024-08-09 17:59:10 +0000ubert(~Thunderbi@178.165.184.113.wireless.dyn.drei.com)
2024-08-09 18:00:08 +0000 <EvanR> they are both called filepath?
2024-08-09 18:00:48 +0000sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 245 seconds)
2024-08-09 18:06:03 +0000ubert(~Thunderbi@178.165.184.113.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2024-08-09 18:14:44 +0000raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 260 seconds)
2024-08-09 18:17:53 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2024-08-09 18:19:59 +0000 <geekosaur> yes. the new one bumped the minor version to 100
2024-08-09 18:20:00 +0000andrewchawk(~andrewcha@user/andrewchawk) (Remote host closed the connection)
2024-08-09 18:20:19 +0000andrewchawk(~andrewcha@170.52.55.98)
2024-08-09 18:20:25 +0000 <geekosaur> so the last old version is 1.4.2.2 and the first new one is 1.4.100.0
2024-08-09 18:20:34 +0000 <geekosaur> (they do share API)
2024-08-09 18:22:04 +0000L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-08-09 18:25:00 +0000 <EvanR> it looks cool but how do you like... open a file using an OsPath
2024-08-09 18:27:11 +0000ThePenguin(~ThePengui@cust-95-80-24-166.csbnet.se) (Remote host closed the connection)
2024-08-09 18:27:47 +0000ThePenguin(~ThePengui@cust-95-80-24-166.csbnet.se)
2024-08-09 18:31:19 +0000andrewchawk(~andrewcha@170.52.55.98) (Quit: Leaving)
2024-08-09 18:31:45 +0000Cbit(~Cbit@2804:880:130e:5700:b184:6405:971d:7d3d)
2024-08-09 18:31:49 +0000bo1(~bo1@2804:880:130e:5700:b184:6405:971d:7d3d) (Quit: Client closed)
2024-08-09 18:32:15 +0000Cbit(~Cbit@2804:880:130e:5700:b184:6405:971d:7d3d) (Client Quit)
2024-08-09 18:39:05 +0000skyesoss1(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net)
2024-08-09 18:45:17 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-09 18:46:42 +0000skyesoss1(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net) (Quit: skyesoss1)
2024-08-09 18:49:00 +0000Ellenor(ellenor@callbox.trd.is)
2024-08-09 18:54:59 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-09 19:00:32 +0000mesaoptimizer(~mesaoptim@user/PapuaHardyNet) (Ping timeout: 244 seconds)
2024-08-09 19:04:49 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-09 19:05:08 +0000sawilagar(~sawilagar@user/sawilagar)
2024-08-09 19:10:10 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-08-09 19:12:08 +0000mesaoptimizer(~mesaoptim@user/PapuaHardyNet)
2024-08-09 19:19:44 +0000thaumavorio(~thaumavor@thaumavor.io) (Quit: ZNC 1.8.2 - https://znc.in)
2024-08-09 19:21:00 +0000thaumavorio(~thaumavor@thaumavor.io)
2024-08-09 19:22:22 +0000raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-08-09 19:25:55 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds)
2024-08-09 19:30:20 +0000kupi(uid212005@id-212005.hampstead.irccloud.com)
2024-08-09 19:35:39 +0000alexherbo2(~alexherbo@2a02-8440-3317-c12e-51f5-a487-8417-dd3a.rev.sfr.net) (Remote host closed the connection)
2024-08-09 19:47:43 +0000dans41958(~danse-nr3@user/danse-nr3) (Quit: good night)
2024-08-09 19:52:33 +0000L29Ah(~L29Ah@wikipedia/L29Ah)
2024-08-09 19:56:01 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-09 20:02:49 +0000ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net)
2024-08-09 20:03:31 +0000falafel(~falafel@2a0c:5a87:3104:4c01::aa34)
2024-08-09 20:06:19 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-09 20:09:37 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-09 20:13:38 +0000skyesoss(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net) (Quit: skyesoss)
2024-08-09 20:19:56 +0000 <probie> EvanR: https://hackage.haskell.org/package/file-io
2024-08-09 20:21:15 +0000 <EvanR> noice
2024-08-09 20:24:27 +0000falafel(~falafel@2a0c:5a87:3104:4c01::aa34) (Ping timeout: 276 seconds)
2024-08-09 20:27:47 +0000euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-08-09 20:28:38 +0000machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net)
2024-08-09 20:33:05 +0000ubert(~Thunderbi@178.165.184.113.wireless.dyn.drei.com)
2024-08-09 20:33:06 +0000spew(~spew@201.141.102.132)
2024-08-09 20:33:23 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-08-09 20:33:45 +0000spew(~spew@201.141.102.132) (Client Quit)
2024-08-09 20:40:46 +0000raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 244 seconds)
2024-08-09 20:42:15 +0000peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2024-08-09 20:43:18 +0000ubert(~Thunderbi@178.165.184.113.wireless.dyn.drei.com) (Ping timeout: 276 seconds)
2024-08-09 20:43:41 +0000waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-08-09 20:44:01 +0000hueso(~root@user/hueso) (Quit: No Ping reply in 180 seconds.)
2024-08-09 20:45:20 +0000hueso(~root@user/hueso)
2024-08-09 20:45:59 +0000euphores(~SASL_euph@user/euphores)
2024-08-09 20:48:26 +0000gioyik(~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 4.3.5)
2024-08-09 20:56:51 +0000hueso(~root@user/hueso) (Quit: No Ping reply in 180 seconds.)
2024-08-09 20:58:00 +0000hueso(~root@user/hueso)
2024-08-09 20:58:53 +0000L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-08-09 21:02:21 +0000kimiamania(~65804703@user/kimiamania) (Quit: PegeLinux)
2024-08-09 21:02:44 +0000kimiamania(~65804703@user/kimiamania)
2024-08-09 21:13:49 +0000ZharMeny`(~user@user/ZharMeny)
2024-08-09 21:17:19 +0000ZharMeny(~user@user/ZharMeny) (Ping timeout: 260 seconds)
2024-08-09 21:18:10 +0000ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 248 seconds)
2024-08-09 21:24:49 +0000michalz(~michalz@185.246.207.193) (Remote host closed the connection)
2024-08-09 21:40:36 +0000sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2024-08-09 21:47:26 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-09 21:53:16 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-09 22:05:31 +0000sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 264 seconds)
2024-08-09 22:06:29 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-09 22:28:00 +0000L29Ah(~L29Ah@wikipedia/L29Ah)
2024-08-09 22:35:51 +0000raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-08-09 22:39:37 +0000dsrt^(dsrt@c-98-242-74-66.hsd1.ga.comcast.net)
2024-08-09 22:45:30 +0000JuanDaugherty(~juan@user/JuanDaugherty)
2024-08-09 22:48:17 +0000raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 248 seconds)
2024-08-09 22:50:45 +0000pavonia(~user@user/siracusa)
2024-08-09 23:01:26 +0000JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-08-09 23:15:48 +0000oo_miguel(~Thunderbi@78.10.207.46) (Ping timeout: 245 seconds)
2024-08-09 23:36:44 +0000machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 260 seconds)
2024-08-09 23:38:41 +0000acidjnk_new3(~acidjnk@p200300d6e72cfb71e8c7be36caf04b72.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2024-08-09 23:47:51 +0000Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-08-09 23:52:57 +0000terrorjack4(~terrorjac@static.163.82.63.178.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat)
2024-08-09 23:55:03 +0000terrorjack4(~terrorjac@static.163.82.63.178.clients.your-server.de)
2024-08-09 23:56:37 +0000dsrt^(dsrt@c-98-242-74-66.hsd1.ga.comcast.net) (Ping timeout: 248 seconds)
2024-08-09 23:56:48 +0000dsrt^(~dsrt@c-98-242-74-66.hsd1.ga.comcast.net)