Home liberachat/#haskell: Logs Calendar

Logs on 2024-04-30 (liberachat/#haskell)

00:06:18 dolio joins (~dolio@130.44.134.54)
00:06:21 cashew joins (~cashewsta@65.17.175.150)
00:11:12 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
00:11:31 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 272 seconds)
00:15:57 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 272 seconds)
00:24:17 cashew joins (~cashewsta@65.17.175.150)
00:27:37 finsternis joins (~X@23.226.237.192)
00:28:59 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 260 seconds)
00:31:01 cashew joins (~cashewsta@65.17.175.150)
00:33:05 YuutaW joins (~YuutaW@mail.yuuta.moe)
00:36:43 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 256 seconds)
00:38:50 cashew joins (~cashewsta@65.17.175.150)
00:41:32 <Axman6> very
00:46:07 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 268 seconds)
00:52:02 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
00:52:08 jorj joins (~jorj@user/jorj)
00:52:51 cashew joins (~cashewsta@65.17.175.150)
00:56:10 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
00:57:31 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 246 seconds)
01:03:20 TonyStone joins (~TonyStone@user/TonyStone)
01:07:54 dsrt^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net)
01:09:42 × shapr quits (~user@c-24-218-186-89.hsd1.ma.comcast.net) (Remote host closed the connection)
01:10:38 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds)
01:11:42 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
01:15:45 × Square3 quits (~Square4@user/square) (Ping timeout: 245 seconds)
01:20:06 cashew joins (~cashewsta@65.17.175.150)
01:22:01 cheater_ joins (~Username@user/cheater)
01:23:40 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
01:23:46 cheater_ is now known as cheater
01:29:25 × otto_s quits (~user@p5de2f4e6.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
01:30:30 otto_s joins (~user@p4ff27e40.dip0.t-ipconnect.de)
01:34:37 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
01:35:23 cashew joins (~cashewsta@65.17.175.150)
01:36:32 tri joins (~tri@2607:fb90:ad06:c188:4cd3:9cb3:a1f9:52b3)
01:40:02 × chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 260 seconds)
01:40:57 chiselfuse joins (~chiselfus@user/chiselfuse)
01:50:27 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 252 seconds)
01:51:22 × tzh quits (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz)
01:58:49 × phma quits (~phma@host-67-44-208-75.hnremote.net) (Read error: Connection reset by peer)
02:00:15 phma joins (phma@2001:5b0:2172:9258:5c6c:8366:4239:d1fd)
02:02:04 madeleine-sydney joins (~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
02:06:18 tri_ joins (~tri@ool-18bc2e74.dyn.optonline.net)
02:06:46 tri__ joins (~tri@2607:fb91:d8d:8428:8d98:5850:5d68:328f)
02:09:36 tri___ joins (~tri@ool-18bc2e74.dyn.optonline.net)
02:09:55 × tri quits (~tri@2607:fb90:ad06:c188:4cd3:9cb3:a1f9:52b3) (Ping timeout: 245 seconds)
02:10:30 × tri_ quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 255 seconds)
02:12:23 × tri___ quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
02:12:50 × tri__ quits (~tri@2607:fb91:d8d:8428:8d98:5850:5d68:328f) (Ping timeout: 245 seconds)
02:22:15 × mei quits (~mei@user/mei) (Remote host closed the connection)
02:24:39 mei joins (~mei@user/mei)
02:25:33 × causal quits (~eric@50.35.88.207) (Quit: WeeChat 4.1.1)
02:27:15 × foul_owl quits (~kerry@174-21-71-155.tukw.qwest.net) (Ping timeout: 268 seconds)
02:29:25 × td_ quits (~td@i5387093D.versanet.de) (Ping timeout: 255 seconds)
02:30:03 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
02:30:59 td_ joins (~td@i53870902.versanet.de)
02:36:53 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
02:39:07 foul_owl joins (~kerry@185.216.231.179)
02:41:26 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 268 seconds)
02:46:11 ddellacosta joins (~ddellacos@ool-44c73d29.dyn.optonline.net)
02:53:37 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
02:54:06 rvalue joins (~rvalue@user/rvalue)
02:58:00 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:07:11 × ski quits (~ski@ext-1-033.eduroam.chalmers.se) (Ping timeout: 264 seconds)
03:08:17 aforemny_ joins (~aforemny@i59F516CA.versanet.de)
03:08:51 ski joins (~ski@ext-1-033.eduroam.chalmers.se)
03:08:59 × aforemny quits (~aforemny@i59F516F8.versanet.de) (Ping timeout: 264 seconds)
03:21:03 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
03:21:44 cashew joins (~cashewsta@65.17.175.150)
03:27:13 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 272 seconds)
03:32:45 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 252 seconds)
03:34:50 × mei quits (~mei@user/mei) (Remote host closed the connection)
03:37:14 mei joins (~mei@user/mei)
03:40:18 cashew joins (~cashewsta@65.17.175.150)
03:44:21 × madeleine-sydney quits (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!)
03:45:17 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 256 seconds)
03:57:51 cashew joins (~cashewsta@65.17.175.150)
04:01:12 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
04:03:15 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 245 seconds)
04:09:24 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
04:16:15 tri_ joins (~tri@2607:fb90:b10f:47a3:51d7:cdf1:c1a7:3d00)
04:17:49 tri__ joins (~tri@2607:fb90:b1ab:4243:713b:b2d:b4c9:5170)
04:20:06 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 268 seconds)
04:21:27 × tri_ quits (~tri@2607:fb90:b10f:47a3:51d7:cdf1:c1a7:3d00) (Ping timeout: 255 seconds)
04:32:01 cashew joins (~cashewsta@65.17.175.150)
04:36:45 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 268 seconds)
04:36:46 causal joins (~eric@50.35.88.207)
04:38:46 × phma quits (phma@2001:5b0:2172:9258:5c6c:8366:4239:d1fd) (Read error: Connection reset by peer)
04:39:15 phma joins (~phma@2001:5b0:2172:9258:5c6c:8366:4239:d1fd)
04:46:10 × peterbecich quits (~Thunderbi@47.229.123.186) (Ping timeout: 245 seconds)
04:46:42 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 260 seconds)
04:47:29 chexum joins (~quassel@gateway/tor-sasl/chexum)
05:05:07 cashew joins (~cashewsta@65.17.175.150)
05:11:10 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 245 seconds)
05:14:08 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
05:17:06 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:19:05 × tri__ quits (~tri@2607:fb90:b1ab:4243:713b:b2d:b4c9:5170) (Remote host closed the connection)
05:23:38 × Rodney_ quits (~Rodney@176.254.244.83) (Read error: Connection reset by peer)
05:29:16 ACuriousMoose7 joins (~ACuriousM@142.68.181.38)
05:30:02 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
05:30:29 × ACuriousMoose quits (~ACuriousM@142.68.181.38) (Ping timeout: 240 seconds)
05:30:30 ACuriousMoose7 is now known as ACuriousMoose
05:39:20 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
05:42:55 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
05:43:59 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 260 seconds)
05:51:09 michalz joins (~michalz@185.246.207.193)
05:54:35 × krei-se quits (~krei-se@p5085d49b.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
05:58:57 cashew joins (~cashewsta@65.17.175.150)
05:59:25 × steew quits (~steew@user/steew) (Remote host closed the connection)
06:10:20 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 260 seconds)
06:13:51 Rodney_ joins (~Rodney@176.254.244.83)
06:16:39 × dtman34 quits (~dtman34@2601:447:d001:ed50:e2b0:b15b:8890:6869) (Ping timeout: 268 seconds)
06:19:12 krei-se joins (~krei-se@p57af22bf.dip0.t-ipconnect.de)
06:24:16 cashew joins (~cashewsta@65.17.175.150)
06:26:27 dtman34 joins (~dtman34@c-75-72-163-222.hsd1.mn.comcast.net)
06:27:43 × jle` quits (~jle`@2603:8001:3b02:84d4:99e7:4463:681a:66ac) (Ping timeout: 272 seconds)
06:28:22 jle` joins (~jle`@2603:8001:3b02:84d4:2ec9:5672:626b:934d)
06:29:23 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 264 seconds)
06:32:50 × philopsos quits (~caecilius@user/philopsos) (Ping timeout: 245 seconds)
06:35:20 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
06:38:28 kuribas joins (~user@2a02:1808:85:df78:ebd1:2ca1:ec6f:f34e)
06:39:58 sord937 joins (~sord937@gateway/tor-sasl/sord937)
06:42:38 cashew joins (~cashewsta@65.17.175.150)
06:49:39 × malte quits (~malte@mal.tc) (Ping timeout: 252 seconds)
06:50:58 malte joins (~malte@mal.tc)
06:52:20 mima joins (~mmh@aftr-62-216-211-48.dynamic.mnet-online.de)
06:52:53 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 240 seconds)
06:56:20 oo_miguel joins (~Thunderbi@78-11-181-16.static.ip.netia.com.pl)
07:02:07 × kuribas quits (~user@2a02:1808:85:df78:ebd1:2ca1:ec6f:f34e) (Ping timeout: 255 seconds)
07:04:12 cashew joins (~cashewsta@65.17.175.150)
07:09:45 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 255 seconds)
07:22:50 cashew joins (~cashewsta@65.17.175.150)
07:28:31 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 260 seconds)
07:31:35 × Yumemi quits (~Yumemi@2001:bc8:47a0:1b14::1) (Ping timeout: 245 seconds)
07:31:50 Yumemi joins (~Yumemi@chamoin.net)
07:32:00 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 256 seconds)
07:32:16 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
07:37:02 × tolt quits (~weechat-h@li219-154.members.linode.com) (Quit: WeeChat 2.9)
07:37:07 gmg joins (~user@user/gehmehgeh)
07:38:00 × califax quits (~califax@user/califx) (Remote host closed the connection)
07:39:29 califax joins (~califax@user/califx)
07:42:06 cashew joins (~cashewsta@65.17.175.150)
07:44:48 × califax quits (~califax@user/califx) (Remote host closed the connection)
07:45:28 califax joins (~califax@user/califx)
07:45:44 target_i joins (~target_i@user/target-i/x-6023099)
07:46:43 × sand-witch quits (~m-mzmz6l@vmi833741.contaboserver.net) (Ping timeout: 260 seconds)
07:50:16 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 255 seconds)
07:56:04 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
08:06:40 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
08:18:20 cashew joins (~cashewsta@65.17.175.150)
08:19:01 sand-witch joins (~m-mzmz6l@vmi833741.contaboserver.net)
08:19:01 mreh joins (~matthew@host86-160-168-68.range86-160.btcentralplus.com)
08:21:47 zetef joins (~quassel@2a02:2f00:5202:1200:2128:605:71c4:66a4)
08:28:15 × JimL quits (~quassel@89.162.16.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
08:28:33 JimL joins (~quassel@89.162.16.26)
08:29:52 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 255 seconds)
08:29:58 × ft quits (~ft@p4fc2a1f9.dip0.t-ipconnect.de) (Quit: leaving)
08:35:03 × JimL quits (~quassel@89.162.16.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
08:35:21 JimL joins (~quassel@89.162.16.26)
08:37:10 × JimL quits (~quassel@89.162.16.26) (Client Quit)
08:37:29 JimL joins (~quassel@89.162.16.26)
08:40:40 chele joins (~chele@user/chele)
08:42:49 califax_ joins (~califax@user/califx)
08:42:50 × califax quits (~califax@user/califx) (Ping timeout: 260 seconds)
08:44:08 califax_ is now known as califax
08:45:49 danza joins (~francesco@151.57.154.79)
08:47:28 noumenon joins (~noumenon@113.51-175-156.customer.lyse.net)
08:47:56 × noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Remote host closed the connection)
08:48:54 <ski> tomsmeding : `/topic' ?
08:53:35 <tomsmeding> ski: hm?
09:04:19 <tomsmeding> :q
09:04:24 <tomsmeding> ... oops
09:07:01 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:07:58 × califax quits (~califax@user/califx) (Remote host closed the connection)
09:10:28 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 260 seconds)
09:18:55 <ski> tomsmeding : it doesn't display topic for you, in weechat ?
09:18:57 califax joins (~califax@user/califx)
09:20:21 <tomsmeding> it does
09:20:29 <tomsmeding> what made you think that?
09:21:06 tolt joins (~kevin@li219-154.members.linode.com)
09:21:33 <ski> <tomsmeding> I've learned to read it -- it took me an embarrassingly long time to figure out how to scroll to the end in weechat
09:21:41 <tomsmeding> oh
09:21:51 <tomsmeding> I see the first screenwidth of the topic above the channel buffer
09:22:03 <dminuoso> tomsmeding: And how do you scroll to the end in weechat?
09:22:08 <tomsmeding> (and also the whole thing on join, but I don't often first-time-join a channel ;) )
09:22:23 <tomsmeding> dminuoso: by using the mouse scroll wheel when the mouse is on that line in the terminal (!)
09:22:25 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 245 seconds)
09:22:38 <tomsmeding> there's also a bizarrely obscure keybind for it iirc
09:22:46 <dminuoso> Oh I have mouse mode turned off, because I cant deal with it.
09:22:47 <ncf> /set weechat.bar.title.size_max 3
09:22:56 <ski> yea, just saying you can, at least in Irssi, repeat the whole topic, with `/topic', and i'd imagine also in weechat
09:22:56 <dminuoso> It just does.. things and confuses me
09:23:03 <tomsmeding> and have it take up more than 1 line of my screen? no thanks :)
09:23:17 <tomsmeding> ski: right, /topic indeed also repeats it
09:23:25 <dminuoso> But yeah, I just use /topic
09:23:41 ski bound `C-home' and `C-end' to scroll to top and bottom of scrollback buffer
09:24:29 qqq joins (~qqq@92.43.167.61)
09:24:46 tolt_ joins (~kevin@li219-154.members.linode.com)
09:25:38 <tomsmeding> dminuoso: F10 to scroll forward, F9 to scroll back
09:25:48 <tomsmeding> (found by spelunking in /key list)
09:27:00 cashew joins (~cashewsta@65.17.175.150)
09:27:08 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
09:27:44 × tolt quits (~kevin@li219-154.members.linode.com) (Ping timeout: 260 seconds)
09:30:19 <tomsmeding> I have a (haskell) function that allocates a whole bunch of data on the heap, and another function that consumes it all again. I know that all data in that particular data structure will be live until the second function consumes it, and the data ought to be kept live as long as the second function is live (it has a pointer to it in its closure); it's pointless for the GC to traverse the data
09:30:20 × tolt_ quits (~kevin@li219-154.members.linode.com) (Quit: WeeChat 4.2.2)
09:30:21 <tomsmeding> structure while the second function is still live
09:30:51 <tomsmeding> and because the structure is large, the GC actually takes a long time to traverse it, and repeatedly does so while it's being constructed -- lots of wasted cpu cycles
09:31:11 <tomsmeding> the thing is, 1. I'm allocating that structure in parallel, and 2. it has lots of internal sharing
09:31:25 tolt joins (~kevin@li219-154.members.linode.com)
09:31:37 <tomsmeding> I'd like to use a compact region, but that doesn't apply here because of (1.) and (2.), right?
09:32:40 <tomsmeding> (GC is really taking up a significant percentage of the runtime here, like >60%, so it really matters)
09:32:42 zmt00 joins (~zmt00@user/zmt00)
09:33:45 swamp_ joins (~zmt00@user/zmt00)
09:34:53 × tolt quits (~kevin@li219-154.members.linode.com) (Client Quit)
09:35:11 × zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 272 seconds)
09:35:40 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 260 seconds)
09:37:11 Guest27 joins (~Guest27@50.47.204.13)
09:37:45 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 256 seconds)
09:43:49 euleritian joins (~euleritia@77.22.252.56)
09:44:49 × chele quits (~chele@user/chele) (Remote host closed the connection)
09:46:14 demon-cat joins (~demon-cat@82-132-225-207.dab.02.net)
09:46:56 tolt joins (~weechat-h@li219-154.members.linode.com)
09:47:03 chele joins (~chele@user/chele)
09:47:42 × danza quits (~francesco@151.57.154.79) (Ping timeout: 255 seconds)
09:48:59 × zetef quits (~quassel@2a02:2f00:5202:1200:2128:605:71c4:66a4) (Ping timeout: 260 seconds)
09:49:21 cashew joins (~cashewsta@65.17.175.150)
09:51:35 × AlexNoo quits (~AlexNoo@94.233.241.102) (Ping timeout: 245 seconds)
09:52:00 danza joins (~francesco@151.57.154.79)
09:52:11 × AlexZenon quits (~alzenon@94.233.241.102) (Ping timeout: 264 seconds)
09:55:10 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 260 seconds)
09:55:36 chexum joins (~quassel@gateway/tor-sasl/chexum)
09:56:05 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 272 seconds)
10:05:07 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
10:06:08 __monty__ joins (~toonn@user/toonn)
10:08:39 cashew joins (~cashewsta@65.17.175.150)
10:12:07 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
10:12:35 __monty__ joins (~toonn@user/toonn)
10:13:40 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 245 seconds)
10:14:16 × danza quits (~francesco@151.57.154.79) (Remote host closed the connection)
10:14:38 danza joins (~francesco@151.57.154.79)
10:17:21 × causal quits (~eric@50.35.88.207) (Quit: WeeChat 4.1.1)
10:19:39 × danza quits (~francesco@151.57.154.79) (Ping timeout: 255 seconds)
10:20:07 ski is now known as ski_
10:20:20 × mwnaylor quits (~user@2601:5cf:837e:2bb0::f472) (Ping timeout: 245 seconds)
10:20:22 × Guest27 quits (~Guest27@50.47.204.13) (Quit: Client closed)
10:20:54 ski joins (~ski@remote11.chalmers.se)
10:25:36 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 260 seconds)
10:26:59 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 264 seconds)
10:38:16 kritzefitz joins (~kritzefit@debian/kritzefitz)
10:41:55 <probie> Does anyone have strong opinions where test data should go? Should it go under /test and coexist with source files, or should it live somewhere else?
10:43:21 cashew joins (~cashewsta@65.17.175.150)
10:48:26 Square3 joins (~Square4@user/square)
10:49:52 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 260 seconds)
10:50:35 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:51:10 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
10:53:31 Lord_of_Life_ is now known as Lord_of_Life
10:54:57 cashew joins (~cashewsta@65.17.175.150)
10:58:10 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds)
10:59:05 × demon-cat quits (~demon-cat@82-132-225-207.dab.02.net) (Read error: Connection reset by peer)
10:59:08 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
10:59:26 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
10:59:55 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 260 seconds)
11:00:53 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
11:08:49 × jorj quits (~jorj@user/jorj) (Quit: jorj)
11:09:38 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
11:09:48 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 252 seconds)
11:10:29 euleritian joins (~euleritia@dynamic-176-006-191-139.176.6.pool.telefonica.de)
11:12:04 cashew joins (~cashewsta@65.17.175.150)
11:12:43 <[exa]> probie: tbh best to have them generated with some program in test/ because it gives others a chance to generate harsher test data
11:15:04 <[exa]> but other than that good question, I only see cabal specifying the actual data files (like the ones that would get installed and sourced with `getDataFileName`
11:16:21 × mima quits (~mmh@aftr-62-216-211-48.dynamic.mnet-online.de) (Ping timeout: 256 seconds)
11:18:25 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 246 seconds)
11:19:19 × euleritian quits (~euleritia@dynamic-176-006-191-139.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
11:19:38 euleritian joins (~euleritia@77.22.252.56)
11:20:03 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:34:50 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Quit: Gateway shutdown)
11:38:23 × byte quits (~byte@149.28.222.189) (Ping timeout: 264 seconds)
11:39:35 L29Ah joins (~L29Ah@wikipedia/L29Ah)
11:41:23 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 264 seconds)
11:41:41 euleritian joins (~euleritia@dynamic-176-006-191-139.176.6.pool.telefonica.de)
11:42:13 byte joins (~byte@149.28.222.189)
11:46:59 cashew joins (~cashewsta@65.17.175.150)
11:54:27 zetef joins (~quassel@2a02:2f00:5202:1200:2128:605:71c4:66a4)
11:58:29 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 240 seconds)
11:59:09 <haskellbridge> <m​aralorn> Dear Lens experts: Can you please tell me how to implement an indexedAdjoin for indexedtraversals in the lens library? I thought maybe it isn’t possible, but optics has iadjoin and I also see no reason for it to be impossible.
12:01:10 <haskellbridge> <m​aralorn> Huh, maybe I can just copy the implementation from optics. It seems to go via van Laarhoven lenses anyway.
12:01:49 × zetef quits (~quassel@2a02:2f00:5202:1200:2128:605:71c4:66a4) (Ping timeout: 256 seconds)
12:08:10 × euleritian quits (~euleritia@dynamic-176-006-191-139.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
12:09:23 × ddellacosta quits (~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 268 seconds)
12:09:57 euleritian joins (~euleritia@77.22.252.56)
12:12:33 cashew joins (~cashewsta@65.17.175.150)
12:16:40 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 260 seconds)
12:16:41 yin joins (~yin@user/zero)
12:17:10 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
12:17:50 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 245 seconds)
12:18:23 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
12:19:35 kritzefitz joins (~kritzefit@debian/kritzefitz)
12:21:33 danza joins (~francesco@151.57.205.242)
12:22:38 <Axman6> what're the types you're looking for?
12:23:35 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.1)
12:24:08 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
12:24:58 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 260 seconds)
12:25:22 chexum joins (~quassel@gateway/tor-sasl/chexum)
12:26:32 rosco joins (~rosco@yp-146-6.tm.net.my)
12:26:58 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
12:30:10 <haskellbridge> <m​aralorn> Axman6: IndexedTraversal' i s a -> IndexedTraversal' i s a -> IndexedTraversal' i s a?
12:31:19 <ncf> maybe you can start by defining an indexed lensProduct and then mimic the definition from Control.Lens.Unsound?
12:35:05 AlexNoo joins (~AlexNoo@94.233.240.47)
12:41:23 <haskellbridge> <m​aralorn> I think I got something.
12:41:35 × yin quits (~yin@user/zero) (Ping timeout: 245 seconds)
12:41:45 <haskellbridge> <m​aralorn> iadjoin tv1 tv2 = lensProduct (partsOf (tv1 . withIndex)) (partsOf (tv2 . withIndex)) . both . each . itraversed
12:43:20 <ncf> heh, i guess that works
12:47:00 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 268 seconds)
12:47:11 cashew joins (~cashewsta@65.17.175.150)
12:48:37 yin joins (~yin@user/zero)
12:49:07 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:51:46 mima joins (~mmh@dhcp-138-246-3-52.dynamic.eduroam.mwn.de)
12:54:29 × AlexNoo quits (~AlexNoo@94.233.240.47) (Quit: Leaving)
12:54:54 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
12:55:06 cashew joins (~cashewsta@65.17.175.150)
12:55:46 acidjnk joins (~acidjnk@p200300d6e714dc3178eb6b7df1157d0e.dip0.t-ipconnect.de)
13:02:33 Pixi` joins (~Pixi@user/pixi)
13:05:08 × danza quits (~francesco@151.57.205.242) (Read error: Connection reset by peer)
13:06:24 × Pixi quits (~Pixi@user/pixi) (Ping timeout: 252 seconds)
13:07:45 Rodney_ is now known as MinceR
13:08:15 MinceR is now known as Guest4005
13:08:59 Guest4005 is now known as Rodney_
13:11:25 danza joins (~francesco@151.57.187.43)
13:20:16 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
13:23:03 AlexNoo joins (~AlexNoo@94.233.240.47)
13:27:40 AlexZenon joins (~alzenon@94.233.240.47)
13:29:43 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 260 seconds)
13:30:03 danza_ joins (~francesco@151.43.202.238)
13:30:30 × danza quits (~francesco@151.57.187.43) (Read error: Connection reset by peer)
13:30:51 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
13:35:23 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
13:36:24 euleritian joins (~euleritia@dynamic-176-001-019-076.176.1.pool.telefonica.de)
13:46:48 × qqq quits (~qqq@92.43.167.61) (Remote host closed the connection)
13:49:19 cashew joins (~cashewsta@65.17.175.150)
13:51:40 × yin quits (~yin@user/zero) (Ping timeout: 256 seconds)
13:53:07 tri joins (~tri@ool-18bbef1a.static.optonline.net)
13:59:52 × michalz quits (~michalz@185.246.207.193) (Remote host closed the connection)
14:00:09 michalz joins (~michalz@185.246.207.201)
14:00:33 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 272 seconds)
14:01:14 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
14:01:39 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.1)
14:03:12 cashew joins (~cashewsta@65.17.175.150)
14:12:21 kritzefitz joins (~kritzefit@debian/kritzefitz)
14:17:53 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:18:55 × todi quits (~todi@p57803331.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
14:25:51 tri joins (~tri@ool-18bbef1a.static.optonline.net)
14:30:19 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 255 seconds)
14:30:29 × euleritian quits (~euleritia@dynamic-176-001-019-076.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
14:31:00 euleritian joins (~euleritia@77.22.252.56)
14:31:40 yin joins (~yin@user/zero)
14:32:00 × Square3 quits (~Square4@user/square) (Ping timeout: 245 seconds)
14:39:14 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:46:30 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds)
14:48:09 × mima quits (~mmh@dhcp-138-246-3-52.dynamic.eduroam.mwn.de) (Ping timeout: 252 seconds)
14:48:48 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 268 seconds)
14:55:33 raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
15:04:10 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
15:08:05 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 240 seconds)
15:08:29 justsomeguy joins (~justsomeg@user/justsomeguy)
15:08:43 × justsomeguy quits (~justsomeg@user/justsomeguy) (Read error: Connection reset by peer)
15:11:04 mzschr joins (~mzschr@2a07-a880-4603-1035-18b5-1e9f-f698-63a6.pool6.ovpn.com)
15:11:48 shapr joins (~user@c-24-218-186-89.hsd1.ma.comcast.net)
15:14:43 justsomeguy joins (~justsomeg@user/justsomeguy)
15:15:07 × justsomeguy quits (~justsomeg@user/justsomeguy) (Read error: Connection reset by peer)
15:15:12 × famubu quits (~julinuser@user/famubu) (Quit: leaving)
15:21:11 danza_ is now known as danza
15:21:30 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
15:29:25 peterbecich joins (~Thunderbi@47.229.123.186)
15:30:31 × gorignak quits (~gorignak@user/gorignak) (Quit: quit)
15:32:39 cashew joins (~cashewsta@65.17.175.150)
15:39:29 motherfsck joins (~motherfsc@user/motherfsck)
15:40:16 kritzefitz joins (~kritzefit@debian/kritzefitz)
15:40:28 × peterbecich quits (~Thunderbi@47.229.123.186) (Ping timeout: 256 seconds)
15:47:25 barak joins (~barak@2a0d:6fc2:68c1:7200:3cf2:a87d:a02b:3e21)
15:49:34 × nschoe quits (~nschoe@2a01:e0a:8e:a190:f3a1:c501:e8bd:2571) (Quit: ZNC 1.8.2 - https://znc.in)
15:49:51 nschoe joins (~nschoe@2a01:e0a:8e:a190:6f57:1144:3b82:7ce1)
15:50:11 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
15:50:47 ec joins (~ec@gateway/tor-sasl/ec)
15:52:02 zmt01 joins (~zmt00@user/zmt00)
15:52:11 lol_ joins (~lol@2603:3016:1e01:b940:e453:9e02:8346:816a)
15:52:55 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
15:53:14 × yin quits (~yin@user/zero) (Ping timeout: 268 seconds)
15:53:19 dagit9841 joins (~dagit@2001:558:6025:38:71c6:9d58:7252:8976)
15:53:42 tri joins (~tri@ool-18bbef1a.static.optonline.net)
15:53:55 × yandere quits (sid467876@id-467876.ilkley.irccloud.com) (Ping timeout: 260 seconds)
15:54:34 yin joins (~yin@user/zero)
15:54:51 × Pozyomka quits (~pyon@user/pyon) (Ping timeout: 260 seconds)
15:55:19 × swamp_ quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds)
15:55:24 × dagit quits (~dagit@2001:558:6025:38:71c6:9d58:7252:8976) (Remote host closed the connection)
15:55:27 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
15:55:47 × jcarpenter2 quits (~lol@2603:3016:1e01:b940:2575:1903:5fc2:ed7c) (Ping timeout: 260 seconds)
15:56:36 Pozyomka joins (~pyon@user/pyon)
15:57:17 × Aleksejs quits (~Aleksejs@107.170.21.106) (Ping timeout: 240 seconds)
15:58:07 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 260 seconds)
15:58:30 yandere joins (sid467876@id-467876.ilkley.irccloud.com)
16:00:52 × thaumavorio quits (~thaumavor@thaumavor.io) (Ping timeout: 256 seconds)
16:03:27 mikess joins (~mikess@user/mikess)
16:05:26 <shapr> @quote
16:05:26 <lambdabot> Ezla says: Why does Haskell need so many thunks?
16:07:25 thaumavorio joins (~thaumavor@thaumavor.io)
16:07:30 × xal quits (~xal@mx1.xal.systems) (Quit: No Ping reply in 180 seconds.)
16:08:41 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
16:08:45 xal joins (~xal@mx1.xal.systems)
16:09:39 cashew joins (~cashewsta@65.17.175.150)
16:10:40 Aleksejs joins (~Aleksejs@107.170.21.106)
16:14:40 <danza> @quote again
16:14:41 <lambdabot> Baughn says: From my point of view, anyone who understands everything ghc can do is /scary/. I'm sure that will change once I reach that level myself, but then again, there's also the possibility
16:14:41 <lambdabot> that I'll be in a permanent state of autophobia.
16:15:06 <danza> :D
16:18:07 peterbecich joins (~Thunderbi@47.229.123.186)
16:19:26 tzh joins (~tzh@c-73-164-206-160.hsd1.or.comcast.net)
16:20:04 × motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit)
16:21:24 mima joins (~mmh@dhcp-138-246-3-42.dynamic.eduroam.mwn.de)
16:21:46 <yin> TIL about autophobia
16:22:02 motherfsck joins (~motherfsc@user/motherfsck)
16:28:01 madeleine-sydney joins (~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
16:29:18 × destituion quits (~destituio@2a02:2121:340:2456:fffe:d0f:7737:dd1) (Read error: Connection reset by peer)
16:29:20 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
16:29:35 destituion joins (~destituio@85.221.111.174)
16:31:56 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:33:44 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 256 seconds)
16:34:49 <dminuoso> Haskell - where indenting a type signature lifts.. it well to the value level.
16:35:12 <dminuoso> Not just that, but in my specific code example, it altered the code, and type checked too.
16:35:32 <dminuoso> What a strange experience.
16:36:02 <danza> sounds like consistent design...
16:36:28 <yin> dminuoso: how?
16:36:34 <danza> but what you mean by "it altered the code"?
16:36:37 × dsrt^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
16:40:40 <yin> i am not a fan of the layout rules but i can't picture such a case
16:42:05 × mima quits (~mmh@dhcp-138-246-3-42.dynamic.eduroam.mwn.de) (Ping timeout: 240 seconds)
16:43:05 <dminuoso> Oh yeah let me try and derive a motivating example that I can share
16:47:01 <dminuoso> Okay this is a bit more elaborate, but basically I had a polyvariadic typeclass trick going on, and indending the subsequent top level type signature placed it as an argument into the last (nested) where binding
16:50:19 <dminuoso> Though its conceivable that bindings of type `(t -> t) -> t -> t` (without an explicit type signature) could fall into this trap as well
16:50:19 × euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer)
16:50:41 <dminuoso> Or `t -> t` even, stuff of that shape
16:51:33 × raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 272 seconds)
16:51:40 euleritian joins (~euleritia@77.22.252.56)
16:57:24 Square joins (~Square@user/square)
16:57:35 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:57:52 × rosco quits (~rosco@yp-146-6.tm.net.my) (Quit: Lost terminal)
17:00:08 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:02:42 ft joins (~ft@p3e9bc1bf.dip0.t-ipconnect.de)
17:02:42 × euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer)
17:02:50 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:08:49 × yin quits (~yin@user/zero) (Ping timeout: 256 seconds)
17:10:21 yin joins (~yin@user/zero)
17:15:13 <yin> ah i see
17:15:26 <yin> multiline signatures i'm guessing
17:20:35 <yin> or maybe i'm misunderstanding
17:23:58 tri joins (~tri@ool-18bbef1a.static.optonline.net)
17:24:35 × danza quits (~francesco@151.43.202.238) (Ping timeout: 264 seconds)
17:28:05 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 240 seconds)
17:31:14 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
17:32:25 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 245 seconds)
17:35:52 todi joins (~todi@p57803331.dip0.t-ipconnect.de)
17:42:13 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
17:43:35 euleritian joins (~euleritia@77.22.252.56)
17:45:24 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
17:45:24 × euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer)
17:45:50 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:48:28 × destituion quits (~destituio@85.221.111.174) (Ping timeout: 260 seconds)
17:48:33 × raym quits (~ray@user/raym) (Ping timeout: 268 seconds)
17:51:34 × glguy quits (g@libera/staff/glguy) (Quit: Quit)
17:52:49 glguy joins (g@libera/staff/glguy)
17:55:07 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
17:55:37 rvalue joins (~rvalue@user/rvalue)
17:56:13 destituion joins (~destituio@2a02:2121:340:2456:fffe:d0f:7737:dd1)
17:57:35 × peterbecich quits (~Thunderbi@47.229.123.186) (Ping timeout: 264 seconds)
17:58:17 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
17:59:02 euleritian joins (~euleritia@77.22.252.56)
17:59:02 × mzschr quits (~mzschr@2a07-a880-4603-1035-18b5-1e9f-f698-63a6.pool6.ovpn.com) (Quit: Client closed)
18:02:33 justsomeguy joins (~justsomeg@user/justsomeguy)
18:09:39 <justsomeguy> Can someone help me understand how fmap can be implemented in terms of (\f xs -> xs >>= return . f)?
18:10:22 <monochrom> I don't understand the question. You already have an implementation right there. :)
18:10:49 <monochrom> But if the question is why it is correct, then the answer is it is one of the monad laws.
18:11:04 <geekosaur> in category theory >>= is join + fmap. by applying an identity to one of those operations, you can reconstruct the other; so `return`/`pure` lets you recover `fmap` and `id` lets you recover `join`
18:11:46 <geekosaur> (well, in CT >>= doesn't exist; more correctly, that's how you woulddefine it in CT)
18:12:17 <yin> something something lawful instances
18:12:45 <geekosaur> the monad laws document the relationship that makes this work
18:12:54 <c_wraith> I'm pretty sure that law is free if the other laws are followed.
18:13:01 <int-e> join (fmap (return . f) xs) = join (fmap return (fmap f xs)) = fmap f xs
18:16:41 peterbecich joins (~Thunderbi@47.229.123.186)
18:21:14 × tomboy64 quits (~tomboy64@user/tomboy64) (Read error: Connection reset by peer)
18:21:27 <justsomeguy> I'm just thinking out loud here.. Since return wraps the argument to f, then f must operate on an unwrapped type.
18:21:37 tomboy64 joins (~tomboy64@user/tomboy64)
18:22:41 <monochrom> Oh, how it type-checks? That's much easier. :)
18:24:03 philopsos joins (~caecilius@user/philopsos)
18:26:00 <yin> > pure . pure . pure $ 7 :: Maybe [Maybe Int] -- justsomeguy
18:26:01 <lambdabot> Just [Just 7]
18:26:51 <monochrom> Aw, that is not as fun as Maybe [IO Int] :)
18:28:01 × tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 268 seconds)
18:29:10 <EvanR> :t (Just 'c' >>=)
18:29:11 <lambdabot> (Char -> Maybe b) -> Maybe b
18:29:20 <EvanR> :t (return . ord)
18:29:21 <lambdabot> Monad m => Char -> m Int
18:30:09 <EvanR> :t (Just 'c' >>=) (return . ord)
18:30:10 <lambdabot> Maybe Int
18:30:41 <EvanR> square peg square hole
18:31:36 <yin> MTL: https://www.youtube.com/watch?v=6pDH66X3ClA
18:32:37 tomboy64 joins (~tomboy64@user/tomboy64)
18:34:19 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
18:34:24 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
18:40:37 <mauke> return wraps the result of f
18:43:00 × iteratee quits (~kyle@162.218.222.207) (Ping timeout: 252 seconds)
18:47:42 × chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection)
18:49:12 chiselfuse joins (~chiselfus@user/chiselfuse)
18:54:12 tri joins (~tri@ool-18bbef1a.static.optonline.net)
18:54:32 × peterbecich quits (~Thunderbi@47.229.123.186) (Ping timeout: 268 seconds)
18:55:48 × chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection)
18:56:50 chiselfuse joins (~chiselfus@user/chiselfuse)
18:58:30 TheOneWhoFuncts joins (~Thunderbi@14.98.244.193)
18:58:43 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 260 seconds)
18:58:43 × yin quits (~yin@user/zero) (Ping timeout: 260 seconds)
18:59:47 × TheOneWhoFuncts quits (~Thunderbi@14.98.244.193) (Client Quit)
19:00:35 yin joins (~yin@user/zero)
19:02:36 peterbecich joins (~Thunderbi@47.229.123.186)
19:03:24 <tomsmeding> is t here a compact region like thing that you can add to in parallel?
19:04:16 × infinity0 quits (~infinity0@pwned.gg) (Remote host closed the connection)
19:04:17 <tomsmeding> I have a program that, while in its "construction phase", builds up a large data structure in parallel; it's only added to, no part of the data structure can ever be collected by the GC in this program phase
19:04:28 <tomsmeding> the structure has lots of internal sharing
19:04:44 <tomsmeding> then in the second phase of the program I consume this entire data structure, and afterwards the GC can collect it
19:05:23 × yin quits (~yin@user/zero) (Ping timeout: 264 seconds)
19:05:24 <tomsmeding> as-is, if I don't set the GC nursery size obscenely high (like 4GB), during construction phase the GC repeatedly traverses the whole thing uselessly, and ends up taking >60% of the total program runtime
19:05:29 <tomsmeding> can I prevent that?
19:06:22 infinity0 joins (~infinity0@pwned.gg)
19:06:33 <monochrom> Does the current compact region already works under parallelism?
19:06:45 <tomsmeding> `compactAdd` takes a lock on the compact region
19:06:51 <tomsmeding> so it's not really suitable for me
19:07:04 <tomsmeding> there's literally an MVar there in the API in `ghc-compact`
19:07:10 yin joins (~yin@user/zero)
19:07:35 rvalue- joins (~rvalue@user/rvalue)
19:08:07 <tomsmeding> perhaps this is just something that would be hard to design an API for
19:08:31 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 256 seconds)
19:09:09 × xal quits (~xal@mx1.xal.systems) ()
19:09:29 <tomsmeding> I know pretty well from what points this data structure is reachable, so if there was some technique I could use to mark certain GC roots as "don't traverse from here, just assume this live", there's a decent chance I could make that work
19:10:01 <tomsmeding> but exactly what values are GC roots does not really reflect well to the haskell source world, I guess
19:10:21 <sm> probie I like to have test code as close to tested code as possible without obscuring the latter too much. These things are in tension, at least with typical tools. Currently I have three tiers: a little bit of doctest code in function haddocks; a bit more HUnit test code at the bottom of each module; and more extensive functional tests under test/*
19:11:15 <sm> you want the friction of writing and updating tests to be as low as possible, obviously
19:11:40 rvalue- is now known as rvalue
19:11:45 xal joins (~xal@mx1.xal.systems)
19:13:55 L29Ah joins (~L29Ah@wikipedia/L29Ah)
19:14:33 × peterbecich quits (~Thunderbi@47.229.123.186) (Quit: peterbecich)
19:14:50 peterbecich joins (~Thunderbi@47.229.123.186)
19:15:13 <mauke> tomsmeding: if you make a StablePtr to your structure, does that affect GC behavior?
19:15:41 × yin quits (~yin@user/zero) (Ping timeout: 240 seconds)
19:15:47 <tomsmeding> mauke: I'm adding to my structure "at the top" all the time, so the root of the data structure changes all the time
19:15:54 <tomsmeding> so I'd have to create new StablePtrs all the time
19:15:58 <tomsmeding> would that be a good idea?
19:16:29 <mauke> honestly, no idea :-)
19:17:13 <tomsmeding> I think I recall from somewhere that StablePtrs are kept in a list somewhere in the RTS
19:17:16 <tomsmeding> so you shouldn't make tons of them
19:17:52 yin joins (~yin@user/zero)
19:18:50 <mauke> could make a StablePtr (IORef a), I guess. but I'm not sure if that even does anything
19:19:23 <tomsmeding> I could try having each thread have its own StablePtr (IORef a) to its "head" of the structure
19:19:35 <tomsmeding> it's clever, let's see if that does anything
19:20:45 <mauke> as a last resort, write the whole thing using manually allocated memory :-)
19:20:47 <c_wraith> Does StablePtr do anything there? my impression was that it just wraps an arbitrary value in a way that lets you send it via a void* in the FFI
19:21:08 <tomsmeding> > A stable pointer is a reference to a Haskell expression that is guaranteed not to be affected by garbage collection, i.e., it will neither be deallocated nor will the value of the stable pointer itself change during garbage collection
19:21:39 <c_wraith> (and the mechanism is that it picks a number that can be cast to a void*, then throws it into a hash table in the RTS...)
19:21:51 <tomsmeding> maybe this would make only the IORef not move, and still make the GC copy the whole data structure every time :)
19:22:19 <tomsmeding> oh I see
19:22:32 <tomsmeding> I was deluded by castStablePtrToPtr's existence, but that doesn't return a pointer that actually means anything
19:22:39 <tomsmeding> yeah no this is unlikely to work
19:23:03 <tomsmeding> meh and this would be an annoying refactor
19:23:55 <c_wraith> compact regions really don't help during construction, unless things can be done in phases.
19:24:18 <tomsmeding> the construction phase of my program frankly does little else than add lots of stuff to this structure
19:24:30 <tomsmeding> (the structure gets pretty large)
19:25:08 × madeleine-sydney quits (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!)
19:25:15 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
19:25:20 <c_wraith> is there no way to all to make the data structure constructed from the top down, so that it isn't created until it's consumed? that's the easiest way to control memory use.
19:25:40 <tomsmeding> unfortunately not
19:25:46 <tomsmeding> this really must be constructed from the bottom up
19:26:12 <tomsmeding> (it's a kind of "tape"/"log" of a computation that is performed; the second phase of the program interprets this tape in reverse)
19:26:23 <tomsmeding> (this is reverse-mode automatic differentiation, in case you're curious)
19:26:38 <c_wraith> well, then... making the nursery huge isn't terrible. that's why the option exists.
19:27:22 <tomsmeding> and hope that the GC doesn't trigger too often
19:27:38 <tomsmeding> unsatisfying but probably the best answer
19:28:19 L29Ah joins (~L29Ah@wikipedia/L29Ah)
19:37:47 <monochrom> I don't think top-down reduces fruitless GC anyway. It just changes data to thunks.
19:38:05 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
19:38:07 <tomsmeding> it would reduce the peak heap size a lot
19:40:24 <monochrom> I wonder if "diff list but for snoc list" helps.
19:40:29 × yin quits (~yin@user/zero) (Ping timeout: 240 seconds)
19:41:02 <tomsmeding> if you replace the nodes of the data structure by closures, you don't make the heap size any smaller
19:41:09 <tomsmeding> you just create indirection
19:41:25 <tomsmeding> you just get a network of closures with the exact same structure as the original data structure :)
19:42:46 × benjaminl quits (~benjaminl@user/benjaminl) (Ping timeout: 246 seconds)
19:42:55 <monochrom> That would be what I said about "just changes data to thunks".
19:43:26 <monochrom> But changing to thunks can be worthwhile if it enables streaming.
19:46:22 <EvanR> data is definitely data while closures might contain a bunch of closures, or thunks. So closures are the better bet xD
19:46:33 <tomsmeding> monochrom: I'm not exactly sure what you mean; the problem that I have is that the GC uselessly traverses my huge data structure that is live anyway
19:47:01 <tomsmeding> I don't see how making things thunks, or doing the difference-list thing, etc. helps there
19:49:04 <int-e> sometimes laziness makes the live data smaller
19:49:21 <int-e> presumably this is not one of those cases
19:49:31 <tomsmeding> I mean, the whole structure _is_ lazy
19:49:40 <tomsmeding> so it's all thunks anyway
19:49:44 <tomsmeding> maybe I should try changing that
19:49:45 <monochrom> In the sense that "[m..n] = m : [m+1 .. n]" is a thunk that generates a little data and a new thunk, and although you still have to GC, it fruitfully collects dead data, and the surviving new thunk is still small, so the overall memory footprint stays small..
19:50:03 <tomsmeding> monochrom: there is no dead data in my application
19:50:06 <tomsmeding> at least not in this structure
19:50:10 <monochrom> :(
19:50:18 <tomsmeding> everything that I add to it stays until the second phase of the program
19:50:31 <tomsmeding> that's why I want the GC to ignore this thing, it's absolutely pointless to traverse it!
19:51:15 <EvanR> rewrite it in rust
19:51:41 × peterbecich quits (~Thunderbi@47.229.123.186) (Ping timeout: 240 seconds)
19:51:57 <tomsmeding> my problem is, this is a reference implementation for a paper
19:52:04 <mauke> https://marcopeg.com/content/images/size/w2000/2021/11/everything-not-saved-will-be-lost.png
19:52:24 <EvanR> lol
19:52:26 <tomsmeding> the last optimisation step for the algorithm in the paper is to make the whole thing imperative, which for the implementation would mean that this big data structure just becomes a huge unboxable array
19:52:37 <tomsmeding> destroying all problems in one fell swoop
19:52:57 <tomsmeding> but I don't want to implement that version because then, in context of the paper, the implementation is completely uninteresting because it's something that already exists
19:53:05 <tomsmeding> but >.<
19:53:29 benjaminl joins (~benjaminl@user/benjaminl)
19:53:35 <mauke> by which I mean that under a copying collector, anything not traversed (and copied) will be collected implicitly
19:54:24 <tomsmeding> mauke: that's a neat quote for that
19:54:41 <EvanR> worrying about the performance of adding to a compact region seems like,
19:54:58 <tomsmeding> my structure doesn't even have any cycles, you could reference count GC it and all would be good!
19:55:00 <EvanR> you already know that's 1. the slow part and 2. going to be too slow
19:55:03 <monochrom> Um ideally a paper is not supposed to contrive things just for the sake of "interesting" and "new". At least, one can hope...
19:55:32 <tomsmeding> monochrom: the point of the paper is that it optimises a really crappy algorithm from theory to a known fast thing
19:55:53 <tomsmeding> the reference implementation is there to show that the essence of the algorithm that we get halfway is not nonsense
19:56:09 <tomsmeding> I could also just not write the implementation and the paper would not be much weaker
19:56:28 sawilagar joins (~sawilagar@user/sawilagar)
19:56:31 <monochrom> OK, but the reference implementation is allowed to be slow. :)
19:56:32 <tomsmeding> it would just make it harder to believe that the claims we're making about how the algorithms work actually work in practice
19:56:36 <int-e> does -G 3 ever help with this kind of repeated GC?
19:56:53 <int-e> (RTS option to set the number of generations)
19:58:12 <mauke> https://downloads.haskell.org/ghc/latest/docs/users_guide/runtime_control.html#rts-options-to-control-the-garbage-collector
19:59:14 <tomsmeding> int-e: at least for the program in question, -G3 doesn't help
20:00:11 <int-e> Increasing -F is also a possibility I guess, but it feels like a rather blunt tool.
20:07:59 <mauke> > 2024 `div` 88
20:08:00 <lambdabot> 23
20:15:17 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
20:17:15 mwnaylor joins (~user@2601:5cf:837e:2bb0::f472)
20:18:04 <tomsmeding> > 23 * 88
20:18:05 <lambdabot> 2024
20:20:07 <EvanR> > 17 & 119
20:20:08 <lambdabot> error:
20:20:08 <lambdabot> • Could not deduce (Num a0)
20:20:08 <lambdabot> from the context: (Num a, Num (a -> b))
20:20:12 <EvanR> > 17 * 119
20:20:14 <lambdabot> 2023
20:20:22 <EvanR> must be hotter than I thought outside today
20:20:42 tomsmeding is confused
20:21:38 <EvanR> I thought we were doing prime factors of calendar years
20:22:02 <tomsmeding> 1. 88 is not prime, 2. what does the temperature have to do with prime factors
20:22:26 <EvanR> 23... 17... which are also reasonable temperatures C
20:23:13 <mauke> > 17 .&. 119
20:23:14 <lambdabot> 17
20:23:34 <tomsmeding> if the other number was supposed to be fahrenheit then 88 is also kind of on the hot side :p
20:23:58 <EvanR> 23 C times 88 F equals
20:24:09 <EvanR> 2024 CF
20:24:29 tri joins (~tri@ool-18bbef1a.static.optonline.net)
20:24:44 × philopsos quits (~caecilius@user/philopsos) (Ping timeout: 252 seconds)
20:24:52 <mauke> we did it. we solved coldfusion
20:25:35 <EvanR> that would be cool
20:26:11 <monochrom> cool fusion
20:26:34 <tomsmeding> > factor 2024
20:26:35 <lambdabot> [2,2,2,11,23]
20:27:12 <EvanR> :t factor
20:27:13 <lambdabot> Integral a => a -> [a]
20:27:29 × mreh quits (~matthew@host86-160-168-68.range86-160.btcentralplus.com) (Ping timeout: 252 seconds)
20:29:09 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 252 seconds)
20:31:11 <ncf> is there a factoring :: Iso' a [a]
20:32:09 <ncf> or Integral a => Iso' a (Set a)
20:32:27 <ncf> well, still needs type level primes
20:33:01 <mwnaylor> ghc.SlackBuild fails during document phase. https://pastebin.com/n6HLzFwa
20:36:57 <int-e> > let c n 0 = 1; c n k = c (n-1) (k-1) * n `div` k in c 24 3
20:36:58 <lambdabot> 2024
20:44:05 <xerox> > let f n = n*(n+1)*(n+2)`div`6 in f 22
20:44:07 <lambdabot> 2024
20:44:15 <dminuoso> I am so tempted to take Haxl and write a mail spam classification engine with it...
20:44:45 <monochrom> I think that's the right thing to do :)
20:45:11 <ncf> @let fromP p = withPrism (\f g -> iso (fromRight undefined . g) f)
20:45:12 <lambdabot> /sandbox/tmp/.L.hs:165:22: error:
20:45:12 <lambdabot> • Couldn't match expected type ‘Control.Lens.Internal.Prism.Market
20:45:12 <lambdabot> a b s (Identity t)’
20:45:13 <dminuoso> Now is it. It occurs to me, that if I really wanted this to succeed, I would eventually want people to contribute.
20:45:27 <dminuoso> The overlap between mail operators and Haskell is small enough as it is.
20:45:40 <dminuoso> Facebook gets away with this by just having money to hire people.
20:45:41 <ncf> @let fromP p = withPrism p (\f g -> iso (fromRight undefined . g) f)
20:45:42 <lambdabot> Defined.
20:45:51 <monochrom> Right, I was ignoring who-has-time.
20:45:57 <ncf> > 2024 & fromP _Show %~ reverse
20:45:58 <lambdabot> error:
20:45:58 <lambdabot> • No instance for (Num String) arising from the literal ‘2024’
20:45:58 <lambdabot> • In the first argument of ‘(&)’, namely ‘2024’
20:46:17 <monochrom> Generally, no one has time to do the right things anyway. :)
20:46:30 <dminuoso> Does that make them "the right things", then?
20:46:38 <dminuoso> Or are they just ill-conveiced notions of "right things"?
20:46:45 <tomsmeding> if you have enough money you can hire a phd to do the right things
20:47:07 <dminuoso> Oh I do have ideas for that.
20:47:17 <dminuoso> A Haskell-to-P4 compiler, that would be awesome!
20:47:25 <dminuoso> tomsmeding: Got any plans? :-)
20:47:25 <monochrom> Naw I don't believe "no one has time => right thing".
20:47:31 <ncf> oh god damnit why are the arguments flipped
20:47:46 <ncf> @let fromP p = withPrism p (\f g -> iso f (fromRight undefined . g))
20:47:47 <lambdabot> /sandbox/tmp/.L.hs:166:1: error: [-Woverlapping-patterns, -Werror=overlappin...
20:47:47 <lambdabot> Pattern match is redundant
20:47:47 <lambdabot> In an equation for ‘fromP’: fromP p = ...
20:47:54 <monochrom> Sorry, what is P4?
20:47:54 <ncf> @unlet fromP
20:47:54 <lambdabot> Parse failed: TemplateHaskell language extension is not enabled. Please add ...
20:47:55 <tomsmeding> dminuoso: I'm already in a phd program, one typically cannot do a phd in the same field twice
20:48:02 <ncf> @undefine fromP
20:48:02 <lambdabot> There's currently no way to undefine just one thing. Say @undefine (with no extra words) to undefine everything.
20:48:09 <ncf> fjldmjfmsdlj
20:48:10 <tomsmeding> monochrom: DSL for writing software for networking machines
20:48:13 <ncf> @let fromP' p = withPrism p (\f g -> iso f (fromRight undefined . g))
20:48:14 <lambdabot> Defined.
20:48:20 xerox hugs ncf
20:48:20 <ncf> > 2024 & fromP' _Show %~ reverse
20:48:22 <lambdabot> 4202
20:48:24 <ncf> hurray
20:48:37 <dminuoso> monochrom: It is a domain specific language for controlling dataplanes in networking ASICs.
20:48:51 <dminuoso> Roughly it is to networking ASICs as VHDL/Verilog is to FPGAs.
20:49:02 <monochrom> dminuoso: Try again with "tomsmeding: Got any postdoc plans?" >:)
20:49:02 <tomsmeding> but higher level than VHDL, right?
20:49:14 <tomsmeding> not yet >:D
20:49:34 <dminuoso> tomsmeding: Not quite higher than VHDL, no.
20:50:05 <dminuoso> Or yeah, maybe.
20:50:22 monochrom is a great consultant on how to get people stuck in academia.
20:50:38 <tomsmeding> all I know about P4 is what Nate Foster talked about in his keynote at POPL'24 (and ICFP'22, actually)
20:50:49 <tomsmeding> (dunno why he did the thing twice)
20:50:54 <tomsmeding> (roughly)
20:51:25 <xerox> > 45^2 - 1
20:51:26 <lambdabot> 2024
20:51:28 <tomsmeding> monochrom: if it means I get to do fun things
20:51:31 <dminuoso> Or maybe a better comparison is: P4 is useful in networking for the same reason that machine code is useful in general purpose computing.b
20:51:42 <dminuoso> Being able to ship reconfigurable high performance networking equipment is great.
20:51:53 <dminuoso> And there's plenty of P4 capable targets on the market already.
20:52:03 <dminuoso> But its incredibly crude and annoying to program them directly
20:52:18 <monochrom> One time we had a great undergrad student being a great TA and we didn't want to lose them when they graduated. My colleague joked about plans to block their graduation. I was like "that's the most inefficient way. get them into our grad school instead."
20:52:20 <dminuoso> Pretty much the equivalent of having to write general purpose programs in machine code directly.
20:53:11 causal joins (~eric@50.35.88.207)
20:53:22 <tomsmeding> monochrom: if you have the money for it lying around :)
20:53:54 <dminuoso> tomsmeding: Oh I dont know about *your* university, but in some fields you can always just turn 100% positions into 50% positions.
20:54:00 <dminuoso> Same work, half the pay. It's brilliant.
20:54:15 <dminuoso> Germany lets universities do that.
20:54:16 <tomsmeding> as in, hire two people for the same money?
20:54:29 <monochrom> We have the money lying around, as long as the student is really great and therefore deserves it.
20:54:30 <dminuoso> as in hire two people for the cost of one.
20:54:44 <tomsmeding> that's a good trick
20:55:01 <tomsmeding> I wouldn't see that happening very quickly here
20:55:05 <dminuoso> Of course 50% position does not mean 50% work, it just means 50% pay. :-)
20:55:09 <tomsmeding> of course
20:55:42 <dminuoso> Yeah some institutes are really fighting for their livelihoods.
20:56:19 <tomsmeding> (the result being that we're don't have an abundance of funds)
20:56:42 tri joins (~tri@ool-18bbef1a.static.optonline.net)
20:57:02 <dminuoso> In chemistry, biology and biotech its almost the norm to get 50% PhD positions.
20:57:05 <dminuoso> In Germany.
20:57:12 <tomsmeding> that's ridiculous
20:57:17 <monochrom> :(
20:57:34 <tomsmeding> contract expected to take the same number of calendar years?
20:57:49 <dminuoso> Of course.
20:57:56 <tomsmeding> or does germany have the UK etc. model where it's indefinite instead of a fixed time period
20:57:56 <monochrom> Then again "it's not personal, it's just good business".
20:58:25 <dminuoso> tomsmeding: No, science is made intentionally harsh to sort out weak people.
20:58:45 <dminuoso> tomsmeding: So there's an upper limit to how many years you can work for a university. I think it's like 10 years total.
20:59:05 <tomsmeding> how do full professors fit into that?
20:59:14 <tomsmeding> surely they stay on longer
20:59:20 <dminuoso> Which is weird, because everywhere else, legally, you cannot be hired for 2 years before they have to extend that to an indefinite contract.
20:59:29 <monochrom> Basically the same phenomenon as: front line drug sellers and people who want to be actors and actress accept ridiculously low pay because of the prospect "there is 0.01% you will one day be a big shot, and then you will make big money".
20:59:51 × cashew quits (~cashewsta@65.17.175.150) (Remote host closed the connection)
21:00:05 <dminuoso> tomsmeding: Oh I meant: 10 years is the limit for fixed-term work contracts (in sequence) at universities.
21:00:12 <dminuoso> 2 years for the rest of the normal world here.
21:00:16 <tomsmeding> right
21:00:25 <dminuoso> After that they would have to hire you permanently, which just doesnt happen.
21:00:26 cashew joins (~cashewsta@65.17.175.150)
21:00:54 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 255 seconds)
21:01:27 <dminuoso> And that 10 year limit really makes postdoc a difficult proposition, since your future really hangs in the balance.
21:01:29 wroathe joins (~wroathe@50.205.197.50)
21:01:29 × wroathe quits (~wroathe@50.205.197.50) (Changing host)
21:01:29 wroathe joins (~wroathe@user/wroathe)
21:01:55 <tomsmeding> aren't you supposed to do a postdoc at at different university than your phd anyway
21:02:15 <dminuoso> It's more unlikely you wont get a permanent position, and getting into the private sector becomes increasingly more difficult if you're already 35 without private sector experience
21:02:31 <tomsmeding> meaning that if you reach 10 years straight at the same uni, that basically means you're assistant professor or similar
21:04:31 <dminuoso> Not sure why time alone would grant you that position.
21:04:41 <tomsmeding> not saying that
21:05:05 <tomsmeding> rather that a phd takes ~4 years and a postdoc 1-2 years, and phds and postdocs are all at different universities typically
21:05:31 <tomsmeding> the only way you're going to amass 10 years straight at the same place is when you already have assistant professor position
21:05:50 <dminuoso> So at least in Germany, postdoc positions are usually paid for through some exterior means (rather than from university funds), say some grant or a company paying for it.
21:06:07 <dminuoso> So where you get that postdoc is really dependent on which place has those funds available.
21:06:32 <dminuoso> I think its more likely you get a postdoc position in an institute where the professor (who fought for that money) knows you
21:06:41 <dminuoso> But I dont have broad experience or knowledge to really say
21:06:54 tomsmeding thought it was somewhat frowned upon to stay in the same place for a postdoc
21:06:58 <tomsmeding> but I dunno
21:07:12 <dminuoso> Might a country-specific thing, then.
21:07:20 <dminuoso> Or maybe it differs between fields?
21:07:36 <tomsmeding> probably difference in country
21:07:50 × cashew quits (~cashewsta@65.17.175.150) (Ping timeout: 245 seconds)
21:08:07 <tomsmeding> I hear that portugal is really strict in only hiring assistant professors who did a phd elsewhere
21:08:22 <dminuoso> tomsmeding: There's at least the notion that if you want a habilitation, that a postdoc in a different country would be a good idea. Maybe you were thinking of that?
21:08:25 <tomsmeding> and that here in NL that's not as strict, but you still need to have had experience elsewhere
21:08:49 <tomsmeding> I always forget what exactly a habilitation is, it's a German thing that we don't have
21:09:16 <dminuoso> It's an upgrade for your PhD. :-)
21:09:23 <tomsmeding> I always find it fascinating how much this stuff differs between countries
21:09:45 <tomsmeding> ostensibly we all share the same values about science or something, but we find room to differ on basically everything
21:09:46 <dminuoso> In Germany a habilitation is pretty much a requirement for becoming a professor
21:09:58 <tomsmeding> does not exist here :p
21:10:01 <dminuoso> Though the equivalent of an assistant professor (Junorprofessor) can be gained without habil.
21:10:08 <tomsmeding> I see
21:10:24 <dminuoso> Oh I missed an i (Juniorprofessor) there.
21:10:34 <tomsmeding> I thought so :)
21:10:38 <haskellbridge> <J​ade> what's the german word for habilitation?
21:10:42 <dminuoso> Habilitation.
21:10:50 <tomsmeding> including the capital H, because German
21:11:02 <dminuoso> :-)
21:11:31 <dminuoso> Actually, is there a capital colon in UTF8 somewhere?
21:12:01 <dminuoso> *in Unicode
21:12:11 <tomsmeding> > toUpper ':'
21:12:13 <lambdabot> ':'
21:12:19 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
21:13:58 <dminuoso> :։܃܄࠱፡፥᛬᛬
21:14:00 juri_ joins (~juri@implicitcad.org)
21:14:01 <dminuoso> So many choices
21:15:13 <tomsmeding>
21:15:20 <tomsmeding> (caveat, depends on the font)
21:16:02 <dminuoso> tomsmeding: But yeah, for context: We Germans are quite special when it comes to positions and requirements. We have this notion of anerkannte Ausbildung which is an officially recognized qualification for a particular job.
21:16:23 <dminuoso> Which to my knowledge is not something many other countries have.
21:17:00 <haskellbridge> <J​ade> ah I hadn't heard that
21:17:09 <dminuoso> A huge majority of positions that do not require a university degree will require such an anerkannte Ausbildung, and lots of career paths, retraining, etc. will require you to have one.
21:17:25 <haskellbridge> <J​ade> dmniuoso: IHK :)
21:17:31 <dminuoso> Want to become a barber? Get an Ausbildung.
21:17:37 <dminuoso> Want to lay bricks? Get an Ausbildung.
21:17:59 <tomsmeding> which basically means "study it at some school"?
21:18:05 <dminuoso> Which in itself is not bad, but when the entire system is set up that it only admits people if you follow that system, its broken.
21:18:19 <tomsmeding> right
21:18:32 <dminuoso> tomsmeding: Not quite, the process is split in half. You spend half your time in some business (officially certified to train for that position), and the other in school.
21:19:48 <mauke> apprenticeship + vocational school
21:20:01 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:20:31 pavonia joins (~user@user/siracusa)
21:20:39 <dminuoso> Ah yeah, vocational/technical school is the term.
21:21:30 <haskellbridge> <J​ade> you can also do it in uni if you have a duales studium
21:21:44 <haskellbridge> <J​ade> uni basically replaces vocational school for me
21:22:01 <haskellbridge> <J​ade> but I still do my apprenticeship
21:22:59 madeleine-sydney joins (~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
21:23:01 <dminuoso> I guess we're living in a phase of academic inflation.
21:23:25 <dminuoso> Especially in Germany, the perception and reptutation of these recognized apprenticeships has completely gone down the drain.
21:24:21 <tomsmeding> dminuoso: what should you do instead, if those apprenticeships are not "worth" as much as they did?
21:24:28 <dminuoso> Well, you go to university.
21:24:39 <dminuoso> The entire system has been setting up to send more and more people to university.
21:24:44 <tomsmeding> and then do the exact same thing afterwards to get a job?
21:24:57 <tomsmeding> or does university count as Ausbildung for a whole legion of jobs
21:25:03 <mauke> get a CS bachelor, write some websites
21:25:10 <dminuoso> Well, a university degree is - for all intends and purposes - a "recognized completion of your job training" at least.
21:25:32 <tomsmeding> but I can't become a brick layer with a CS degree?
21:25:34 <dminuoso> So all paths in your career that requires to have some piece of paper with a certification stamp on it will let you hop on.
21:25:36 <dminuoso> tomsmeding: thats right.
21:25:42 <dminuoso> But you get an Umschulung, probably.
21:25:47 <dminuoso> Which is a way to retrain.
21:25:57 <dminuoso> Might have to look into details whether that particular path is possible.
21:26:01 <tomsmeding> :D
21:26:41 <dminuoso> tomsmeding: And the thing is, plenty of these trades that require official certification, are often very heavily regulated.
21:26:48 <mauke> Quereinsteiger :-)
21:27:06 mima joins (~mmh@aftr-62-216-211-165.dynamic.mnet-online.de)
21:27:30 <dminuoso> tomsmeding: Inside that - lets call it - apprenticeship path, similar to professor there is a Meister (master) advancement, and there's often lots of regulations who can even open a trade business.
21:27:59 <dminuoso> So for example you cant just open a bakery, no matter how damn good you are at baking, if you dont have that Meister (master - not in the university sense) degree.
21:28:01 <yushyin> (so many germans here oO)
21:28:03 <tomsmeding> a guild system, but operated by the government, I guess
21:28:10 <dminuoso> tomsmeding: Not operated by the goerment.
21:28:12 <dminuoso> Who dares.
21:28:15 <tomsmeding> :D
21:28:20 <tomsmeding> the federal state, excuse me
21:28:23 <dminuoso> its government sanctioned monopolistic unions.
21:28:28 <tomsmeding> oh not even
21:28:46 <mauke> apprentice -> journeyman -> master
21:29:44 <dminuoso> tomsmeding: but yeah, the guild system is very very much alive here.
21:29:47 <tomsmeding> (Quereinsteiger is a word we also have in Dutch, if you suitably substitute for synonyms)
21:29:50 <tomsmeding> cool, TIL
21:32:33 <tomsmeding> I know guild systems from fantasy novels :p
21:33:51 <dminuoso> Here's a list of exotic jobs that have that Meister requirement (and are very regulated by their guils): glass refiner, organ and harmonium retrofitter, sign and neon sign manufacturer, pavement layer
21:34:19 <int-e> what is a neon sign? :P
21:34:31 <dminuoso> But of course lots of traditional jobs like brick layers, bakers, electricials, barbers, carpenters, mechatronics engineers are similarly dealt.
21:34:52 <dminuoso> int-e: Oh I just liberally translated it. Illuminated signs is the literal translation.
21:35:06 <tomsmeding> oh is that not a thing in English?
21:35:10 <mauke> leuchtschild?
21:35:16 <dminuoso> (And yeah, we do have an officially recognized and guild protected job as a "sign and illuminated sign manufacturer")
21:35:28 <int-e> dminuoso: fair enough, I just enjoyed the anachronism
21:35:30 int-e tunes out again
21:35:39 <tomsmeding> ah right :p
21:36:06 <mauke> also, hairdressers
21:36:09 <tomsmeding> still called "neon lighting" today (when translated literally) in Dutch
21:36:25 <int-e> (I /guess/ some new neon signs are still made and some more being maintained, but most of the signs seem to be LED based these days)
21:37:00 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 245 seconds)
21:37:06 <tomsmeding> as in, I would have no clue what Dutch word to use if not "neon lighting"
21:38:45 <geekosaur> .oO{ and the people bowed and prayed / to the neon god they'd made }
21:39:06 × michalz quits (~michalz@185.246.207.201) (Quit: ZNC 1.8.2 - https://znc.in)
21:41:08 <int-e> When my eyes were stabbed by the flash of a neon light ...one day I'll remember those lyrics
21:52:45 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:57:36 × oo_miguel quits (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 255 seconds)
21:59:19 <shapr> ik begrijp het niet
21:59:27 <shapr> probably because I don't speak Dutch, oh well
22:01:18 <mauke> ich begreif es auch nicht
22:04:16 Square3 joins (~Square4@user/square)
22:07:15 × Square quits (~Square@user/square) (Ping timeout: 260 seconds)
22:08:24 × masterbuilder quits (~quassel@user/masterbuilder) (Ping timeout: 260 seconds)
22:08:34 masterbuilder joins (~quassel@user/masterbuilder)
22:10:55 × barak quits (~barak@2a0d:6fc2:68c1:7200:3cf2:a87d:a02b:3e21) (Quit: WeeChat 4.2.2)
22:11:08 × phma quits (~phma@2001:5b0:2172:9258:5c6c:8366:4239:d1fd) (Read error: Connection reset by peer)
22:13:16 × madeleine-sydney quits (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!)
22:14:54 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:19:20 waldo joins (~waldo@user/waldo)
22:20:49 phma joins (~phma@host-67-44-208-133.hnremote.net)
22:46:06 × Nixkernal quits (~Nixkernal@240.17.194.178.dynamic.wline.res.cust.swisscom.ch) (Ping timeout: 252 seconds)
22:46:26 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
22:53:35 <EvanR> int-e, i met a guy in seattle recently who is making and selling neon signs
22:53:51 <EvanR> bars around here still have a lot of em xD
22:58:50 <waldo> you know what they will do then
22:58:59 <waldo> nuke the subduction zone
23:04:42 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
23:10:16 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
23:10:28 × acidjnk quits (~acidjnk@p200300d6e714dc3178eb6b7df1157d0e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
23:11:02 wroathe joins (~wroathe@user/wroathe)
23:12:10 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
23:19:17 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 240 seconds)
23:30:19 Sgeo joins (~Sgeo@user/sgeo)
23:43:07 <jackdk> I'm trying to find a blog post where the author (ab?)used the typeclass system to track the set of "resources" (or was it tables?) that a function needed to do its work. From memory it it involved the use of `Dict` and some evil coercions to satisfy different type classes with empty dictionaries, and may have been posted within the last year or so? Does anyone know what I'm talking about?
23:47:27 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 268 seconds)
23:49:48 <[Leary]> jackdk: I don't know it, but I recall the paper 'The Foil: Capture-Avoiding Substitution With No Sharp Edges' describes similar techniques for tracking name freshness.
23:52:36 <geekosaur> I find https://prophetlabs.de/posts/unsafeCoerceDict.html but doesn't quite sound like the same thing
23:52:41 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
23:53:37 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
23:58:08 × waldo quits (~waldo@user/waldo) (Quit: waldo)

All times are in UTC on 2024-04-30.