Home liberachat/#haskell: Logs Calendar

Logs on 2025-09-14 (liberachat/#haskell)

00:04:11 × acidjnk quits (~acidjnk@p200300d6e71719170df66312024318c6.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
00:07:01 × sprotte24 quits (~sprotte24@p200300d16f0c9300e4e250e3633e4aa5.dip0.t-ipconnect.de) (Quit: Leaving)
00:09:32 × poscat quits (~poscat@user/poscat) (Remote host closed the connection)
00:12:46 poscat joins (~poscat@user/poscat)
00:13:06 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
00:17:27 × otto_s quits (~user@p5de2f6d3.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
00:17:28 × Square2 quits (~Square@user/square) (Ping timeout: 248 seconds)
00:23:29 × trickard quits (~trickard@cpe-52-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
00:23:43 trickard_ joins (~trickard@cpe-52-98-47-163.wireline.com.au)
00:26:53 tromp joins (~textual@2001:1c00:3487:1b00:f91c:d27d:e5a1:1629)
00:27:12 otto_s joins (~user@p4ff27811.dip0.t-ipconnect.de)
00:27:24 × tromp quits (~textual@2001:1c00:3487:1b00:f91c:d27d:e5a1:1629) (Client Quit)
00:28:20 segfaultfizzbuzz joins (~segfaultf@12.172.219.17)
00:30:24 × segfaultfizzbuzz quits (~segfaultf@12.172.219.17) (Remote host closed the connection)
00:31:02 segfaultfizzbuzz joins (~segfaultf@12.172.219.17)
00:37:44 × fgarcia quits (~lei@user/fgarcia) (Ping timeout: 260 seconds)
01:00:39 × marinelli quits (~weechat@gateway/tor-sasl/marinelli) (Remote host closed the connection)
01:00:45 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
01:01:01 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
01:05:26 × tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in)
01:10:21 × dfg quits (~dfg@user/dfg) (Ping timeout: 250 seconds)
01:10:38 × zzz quits (~zero@user/zero) (Remote host closed the connection)
01:32:49 fgarcia joins (~lei@user/fgarcia)
01:38:19 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
01:40:12 × segfaultfizzbuzz quits (~segfaultf@12.172.219.17) (Ping timeout: 256 seconds)
01:48:40 dfg joins (~dfg@dfg.rocks)
01:48:40 × dfg quits (~dfg@dfg.rocks) (Changing host)
01:48:40 dfg joins (~dfg@user/dfg)
01:51:22 ChaiTRex joins (~ChaiTRex@user/chaitrex)
02:02:52 × ystael quits (~ystael@user/ystael) (Ping timeout: 256 seconds)
02:03:25 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
02:05:03 × op_4 quits (~tslil@user/op-4/x-9116473) (Remote host closed the connection)
02:05:32 op_4 joins (~tslil@user/op-4/x-9116473)
02:15:29 segfaultfizzbuzz joins (~segfaultf@12.172.219.17)
02:15:37 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:20:33 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
02:20:42 × segfaultfizzbuzz quits (~segfaultf@12.172.219.17) (Ping timeout: 244 seconds)
02:29:07 Lycurgus joins (~juan@user/Lycurgus)
02:30:11 L29Ah joins (~L29Ah@wikipedia/L29Ah)
02:31:41 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:38:35 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
02:44:39 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
02:47:14 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
02:47:18 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
02:47:51 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
02:49:49 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:52:11 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 248 seconds)
02:56:14 × sp1ff` quits (~user@c-73-11-118-48.hsd1.wa.comcast.net) (Remote host closed the connection)
02:56:23 sp1ff joins (~user@2601:1c2:4900:8209::a41)
02:56:42 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
02:58:16 poscat0x04 joins (~poscat@user/poscat)
03:02:17 raym joins (~ray@user/raym)
03:02:24 × poscat quits (~poscat@user/poscat) (Ping timeout: 260 seconds)
03:03:32 PKDrinker joins (~PKDrinker@user/PKDrinker)
03:03:45 <PKDrinker> Hello guys
03:08:20 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
03:27:06 × Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
04:08:40 × trickard_ quits (~trickard@cpe-52-98-47-163.wireline.com.au) (Ping timeout: 256 seconds)
04:08:54 trickard_ joins (~trickard@cpe-52-98-47-163.wireline.com.au)
04:12:02 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
04:12:57 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
04:15:22 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
04:16:02 × PKDrinker quits (~PKDrinker@user/PKDrinker) (Ping timeout: 256 seconds)
04:16:22 PKDrinker joins (~PKDrinker@user/PKDrinker)
04:16:38 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
04:25:23 × trickard_ quits (~trickard@cpe-52-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
04:28:08 trickard_ joins (~trickard@cpe-52-98-47-163.wireline.com.au)
04:39:26 × trickard_ quits (~trickard@cpe-52-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
04:39:39 trickard_ joins (~trickard@cpe-52-98-47-163.wireline.com.au)
04:42:47 × Eoco quits (~ian@128.101.131.218) (Quit: WeeChat 4.4.2)
04:44:35 Eoco joins (~ian@128.101.131.218)
04:47:46 × peterbecich quits (~Thunderbi@syn-172-222-149-049.res.spectrum.com) (Ping timeout: 256 seconds)
04:57:08 Googulator96 is now known as Googulator
05:00:18 × marinelli quits (~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli)
05:07:13 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
05:11:46 trickard_ is now known as trickard
05:15:20 peterbecich joins (~Thunderbi@syn-172-222-149-049.res.spectrum.com)
05:17:40 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
05:20:38 × trickard quits (~trickard@cpe-52-98-47-163.wireline.com.au) (Ping timeout: 256 seconds)
05:20:56 trickard joins (~trickard@cpe-56-98-47-163.wireline.com.au)
05:32:32 takuan joins (~takuan@d8D86B9E9.access.telenet.be)
05:43:50 lxsameer joins (~lxsameer@Serene/lxsameer)
05:51:00 × haritz quits (~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
06:02:17 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 260 seconds)
06:08:15 × trickard quits (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
06:08:29 trickard_ joins (~trickard@cpe-56-98-47-163.wireline.com.au)
06:11:04 × chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection)
06:11:41 chiselfuse joins (~chiselfus@user/chiselfuse)
06:12:46 trickard_ is now known as trickard
06:21:15 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
06:21:40 Square2 joins (~Square@user/square)
06:34:33 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:38:09 × takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Remote host closed the connection)
06:40:23 takuan joins (~takuan@d8D86B9E9.access.telenet.be)
06:40:45 × trickard quits (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
06:40:58 trickard joins (~trickard@cpe-56-98-47-163.wireline.com.au)
06:45:04 × peterbecich quits (~Thunderbi@syn-172-222-149-049.res.spectrum.com) (Ping timeout: 256 seconds)
06:48:47 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
06:53:00 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 256 seconds)
06:53:24 × fgarcia quits (~lei@user/fgarcia) (Ping timeout: 260 seconds)
07:00:00 × caconym747 quits (~caconym@user/caconym) (Quit: bye)
07:00:40 caconym747 joins (~caconym@user/caconym)
07:01:11 fgarcia joins (~lei@user/fgarcia)
07:04:42 tt12310978324354 joins (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee)
07:18:07 tromp joins (~textual@2001:1c00:3487:1b00:f91c:d27d:e5a1:1629)
07:31:18 × lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 260 seconds)
07:40:35 × tromp quits (~textual@2001:1c00:3487:1b00:f91c:d27d:e5a1:1629) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:49:16 gmg joins (~user@user/gehmehgeh)
07:50:15 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
07:51:31 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
07:52:05 tromp joins (~textual@2001:1c00:3487:1b00:f91c:d27d:e5a1:1629)
07:55:30 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
08:13:13 × tromp quits (~textual@2001:1c00:3487:1b00:f91c:d27d:e5a1:1629) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:15:39 tromp joins (~textual@2001:1c00:3487:1b00:f91c:d27d:e5a1:1629)
08:16:47 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:17:22 Sgeo joins (~Sgeo@user/sgeo)
08:21:08 biberu joins (~biberu@user/biberu)
08:25:43 × laman quits (laman@rego.ai) (Ping timeout: 255 seconds)
08:27:40 laman joins (laman@rego.ai)
08:27:43 × tromp quits (~textual@2001:1c00:3487:1b00:f91c:d27d:e5a1:1629) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:38:19 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
08:40:53 MelodyOwO joins (~MelodyOwO@user/MelodyOwO)
08:43:08 Lycurgus joins (~juan@user/Lycurgus)
08:49:46 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
08:52:59 × poscat0x04 quits (~poscat@user/poscat) (Remote host closed the connection)
08:53:28 poscat joins (~poscat@user/poscat)
08:59:01 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
09:09:41 erizawa joins (~kazuki@user/erizawa)
09:10:14 fp joins (~Thunderbi@89-27-10-140.bb.dnainternet.fi)
09:12:51 cyphase_eviltwin joins (~cyphase@user/cyphase)
09:13:24 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 260 seconds)
09:14:22 × trickard quits (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
09:14:36 trickard_ joins (~trickard@cpe-56-98-47-163.wireline.com.au)
09:26:34 × PKDrinker quits (~PKDrinker@user/PKDrinker) (Ping timeout: 256 seconds)
09:26:37 ljdarj joins (~Thunderbi@user/ljdarj)
09:26:56 PKDrinker joins (~PKDrinker@user/PKDrinker)
09:29:51 × PKDrinker quits (~PKDrinker@user/PKDrinker) (Remote host closed the connection)
09:31:51 segfaultfizzbuzz joins (~segfaultf@12.172.219.17)
09:42:00 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
09:43:13 trickard_ is now known as trickard
09:53:46 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
09:56:01 × segfaultfizzbuzz quits (~segfaultf@12.172.219.17) (Ping timeout: 256 seconds)
10:00:03 __monty__ joins (~toonn@user/toonn)
10:01:01 vanishingideal joins (~vanishing@user/vanishingideal)
10:05:56 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
10:06:50 × Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
10:08:24 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 248 seconds)
10:09:25 chromoblob joins (~chromoblo@user/chromob1ot1c)
10:11:37 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
10:12:02 chromoblob joins (~chromoblo@user/chromob1ot1c)
10:13:31 acidjnk joins (~acidjnk@p200300d6e7171917d8d62854256e96a7.dip0.t-ipconnect.de)
10:44:17 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:49:17 wootehfoot joins (~wootehfoo@user/wootehfoot)
10:57:35 Lycurgus joins (~juan@user/Lycurgus)
11:00:38 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
11:06:00 zzz joins (~zero@user/zero)
11:06:33 × zzz quits (~zero@user/zero) (Remote host closed the connection)
11:07:53 zzz joins (~zero@user/zero)
11:11:45 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
11:18:16 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
11:20:19 × zzz quits (~zero@user/zero) (Remote host closed the connection)
11:24:09 × ByronJohnson quits (~bairyn@MAIL.DIGITALKINGDOM.ORG) (Ping timeout: 256 seconds)
11:24:17 ByronJohnson joins (~bairyn@MAIL.DIGITALKINGDOM.ORG)
11:26:58 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
11:29:21 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
11:29:46 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
11:30:15 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
11:30:40 Lord_of_Life_ is now known as Lord_of_Life
11:32:16 Guest67 joins (~Guest67@host-92-23-165-108.as13285.net)
11:35:08 × Guest67 quits (~Guest67@host-92-23-165-108.as13285.net) (Client Quit)
11:40:53 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 265 seconds)
11:41:21 zzz joins (~zero@user/zero)
11:41:45 chromoblob joins (~chromoblo@user/chromob1ot1c)
11:51:25 × trickard quits (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
11:51:38 trickard_ joins (~trickard@cpe-56-98-47-163.wireline.com.au)
11:54:24 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
11:56:44 × petrichor quits (~jez@user/petrichor) (Ping timeout: 256 seconds)
12:05:56 petrichor joins (~jez@user/petrichor)
12:08:35 trickard_ is now known as trickard
12:10:50 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
12:12:17 × zzz quits (~zero@user/zero) (Remote host closed the connection)
12:13:13 haritz joins (~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8)
12:13:14 × haritz quits (~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) (Changing host)
12:13:14 haritz joins (~hrtz@user/haritz)
12:16:40 zzz joins (~zero@user/zero)
12:17:23 × zzz quits (~zero@user/zero) (Remote host closed the connection)
12:17:40 zzz joins (~zero@user/zero)
12:18:01 × zzz quits (~zero@user/zero) (Remote host closed the connection)
12:18:17 zzz joins (~zero@user/zero)
12:19:28 × zzz quits (~zero@user/zero) (Remote host closed the connection)
12:19:43 zzz joins (~zero@user/zero)
12:34:32 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
12:38:53 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
12:43:41 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
12:54:40 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
13:01:33 × petrichor quits (~jez@user/petrichor) (Ping timeout: 252 seconds)
13:30:01 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
13:31:33 tremon joins (~tremon@83.80.159.219)
13:31:48 × mulk quits (~mulk@pd95144c3.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
13:32:16 mulk joins (~mulk@pd95144c3.dip0.t-ipconnect.de)
13:32:32 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
13:33:00 petrichor joins (~jez@user/petrichor)
13:33:07 marinelli parts (~weechat@gateway/tor-sasl/marinelli) ()
13:34:10 chromoblob joins (~chromoblo@user/chromob1ot1c)
13:42:08 michals joins (~michals@ip-109-40-49-74.web.vodafone.de)
13:43:29 × michals quits (~michals@ip-109-40-49-74.web.vodafone.de) (Client Quit)
13:45:03 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
13:45:22 chromoblob joins (~chromoblo@user/chromob1ot1c)
13:45:47 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
13:49:35 laxmik joins (~user@ip-109-40-49-74.web.vodafone.de)
13:54:40 segfaultfizzbuzz joins (~segfaultf@12.172.219.17)
13:56:10 sajenim joins (~sajenim@user/sajenim)
13:59:08 × segfaultfizzbuzz quits (~segfaultf@12.172.219.17) (Ping timeout: 256 seconds)
14:00:24 × MelodyOwO quits (~MelodyOwO@user/MelodyOwO) (Ping timeout: 252 seconds)
14:00:24 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
14:07:07 karenw_ joins (~karenw@user/karenw)
14:12:01 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
14:17:32 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
14:24:54 × karenw_ quits (~karenw@user/karenw) (Quit: Deep into that darkness peering...)
14:25:28 × laxmik quits (~user@ip-109-40-49-74.web.vodafone.de) (Ping timeout: 248 seconds)
14:28:02 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
14:45:07 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
14:51:45 tbahne joins (~tbahne@user/tbahne)
15:10:49 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving)
15:19:53 tbahne parts (~tbahne@user/tbahne) ()
15:20:36 × trickard quits (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
15:20:49 trickard_ joins (~trickard@cpe-56-98-47-163.wireline.com.au)
15:24:59 tbahne joins (~tbahne@user/tbahne)
15:25:33 × tbahne quits (~tbahne@user/tbahne) (Client Quit)
15:33:26 × qqe quits (~qqq@185.54.23.100) (Remote host closed the connection)
15:33:40 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
15:34:39 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
15:35:54 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Client Quit)
15:39:18 segfaultfizzbuzz joins (~segfaultf@12.172.219.17)
15:39:54 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
15:44:49 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
15:49:30 lxsameer joins (~lxsameer@Serene/lxsameer)
15:51:08 mreh joins (~matthew@host86-146-25-35.range86-146.btcentralplus.com)
15:53:11 <mreh> data B' = forall a. B' (B a)
15:53:19 <mreh> instance Eq B' where (B' a) == (B' b) = ???
15:53:34 <mreh> ^ can I do this legitimately with unsafeCoerce?
15:55:28 <mreh> that type parameter `a` in `B a` is just a phantom type
15:55:41 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
15:57:41 <geekosaur> doesn't look like one to me? although I'd have to see the definition of B to know for certain
15:57:58 <geekosaur> if it is phantom, then unsafeCoerce is fine
15:58:18 <Leary> mreh: If you control `B`, expose `sameB :: B a -> B b -> Bool` and use that. Otherwise, `unsafeCoerce` may be the only choice.
15:58:47 <mreh> Yeah, I've defined B, and it is a true phantom type
15:59:15 <mreh> Leary, I could define sameB, but I want to derive the definition where possible
16:00:03 <Leary> If `type role B phantom`, you can also just use regular safe `coerce`.
16:00:46 <mreh> really...
16:02:57 <mreh> is that some GHC magic?
16:03:47 <geekosaur> just the rules for implicit `Coercible` constraints. Phantom types are automatically compatible
16:05:16 <c_wraith> technically, Coercible is magic
16:05:23 <c_wraith> it doesn't have real instances
16:05:40 <mreh> well, it works
16:06:16 <mreh> (type checks)
16:06:38 <c_wraith> the nice thing about Coercible is that it's conservative. If coerce works, it's safe.
16:08:06 <c_wraith> ... at least from the type system POV. It may break internal invariants.
16:08:39 <monochrom> The type system is also very conservative. :)
16:09:31 <monochrom> OK, coerce is also conservative dynamically: in-memory representations are guaranteed to be identical.
16:09:55 <mreh> neat
16:13:47 × segfaultfizzbuzz quits (~segfaultf@12.172.219.17) (Ping timeout: 248 seconds)
16:21:40 × trickard_ quits (~trickard@cpe-56-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
16:21:53 trickard_ joins (~trickard@cpe-56-98-47-163.wireline.com.au)
16:27:50 × lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 245 seconds)
16:30:06 × petrichor quits (~jez@user/petrichor) (Ping timeout: 244 seconds)
16:35:49 sprotte24 joins (~sprotte24@p200300d16f0fa90034a8f8dc2eadcbb1.dip0.t-ipconnect.de)
16:57:56 × EvanR quits (~EvanR@user/evanr) (Quit: Leaving)
17:07:52 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
17:10:12 AndreiDuma joins (~AndreiDum@user/AndreiDuma)
17:18:49 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
17:30:30 × trickard_ quits (~trickard@cpe-56-98-47-163.wireline.com.au) (Ping timeout: 256 seconds)
17:32:55 trickard_ joins (~trickard@cpe-56-98-47-163.wireline.com.au)
17:47:23 × zzz quits (~zero@user/zero) (Remote host closed the connection)
17:47:39 zzz joins (~zero@user/zero)
17:48:19 trickard_ is now known as trickard
17:48:38 <tomsmeding> c_wraith: which means that if coerce can break your internal invariants, one should assign stricter roles with explicit role signatures :)
17:49:35 <tomsmeding> the tricky thing being that many people don't know about this so they don't do it so you can't really rely on being able to `coerce` safely
17:52:55 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
17:56:41 × AndreiDuma quits (~AndreiDum@user/AndreiDuma) (Quit: My Mac has gone to sleep. ZZZzzz…)
17:57:39 AndreiDuma joins (~AndreiDum@user/AndreiDuma)
18:03:49 zzz is now known as yin
18:10:51 petrichor joins (~jez@user/petrichor)
18:22:25 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
18:24:29 × divlamir quits (~divlamir@user/divlamir) (Read error: Connection reset by peer)
18:24:42 divlamir joins (~divlamir@user/divlamir)
18:33:46 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
18:34:23 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
18:36:37 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 272 seconds)
18:38:05 ChaiTRex joins (~ChaiTRex@user/chaitrex)
18:39:23 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
18:41:01 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
18:44:11 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: sdbcjks)
18:46:14 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
18:50:11 weary-traveler joins (~user@user/user363627)
18:56:41 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
18:57:48 target_i joins (~target_i@user/target-i/x-6023099)
19:00:03 × caconym747 quits (~caconym@user/caconym) (Quit: bye)
19:00:43 caconym747 joins (~caconym@user/caconym)
19:12:10 ystael joins (~ystael@user/ystael)
19:15:35 × Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
19:15:45 tromp joins (~textual@2001:1c00:3487:1b00:f91c:d27d:e5a1:1629)
19:18:55 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
19:19:18 × AndreiDuma quits (~AndreiDum@user/AndreiDuma) (Quit: My Mac has gone to sleep. ZZZzzz…)
19:20:01 Sgeo joins (~Sgeo@user/sgeo)
19:24:52 lxsameer joins (~lxsameer@Serene/lxsameer)
19:33:07 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 260 seconds)
19:34:23 chromoblob joins (~chromoblo@user/chromob1ot1c)
19:41:10 × Raito_Bezarius quits (~Raito@libera/contributor/wireguard.tunneler.raito-bezarius) (Quit: free())
19:45:03 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
19:45:20 chromoblob joins (~chromoblo@user/chromob1ot1c)
19:48:00 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
20:00:29 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
20:04:32 × erizawa quits (~kazuki@user/erizawa) (Quit: Leaving)
20:07:23 Raito_Bezarius joins (~Raito@libera/contributor/wireguard.tunneler.raito-bezarius)
20:12:08 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
20:13:09 × fp quits (~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 260 seconds)
20:17:13 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
20:19:14 × yin quits (~zero@user/zero) (Remote host closed the connection)
20:21:57 yin joins (~zero@user/zero)
20:25:13 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
20:26:28 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
20:27:29 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
20:28:10 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
20:28:46 img joins (~img@user/img)
20:30:08 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 256 seconds)
20:31:14 × Square2 quits (~Square@user/square) (Ping timeout: 260 seconds)
20:32:19 <c_wraith> Yeah. I did say "may". You can prevent it, but you need to know to do so
20:32:38 fp joins (~Thunderbi@89-27-10-140.bb.dnainternet.fi)
20:33:08 <c_wraith> It's sort of the inverse of the "I can make this a Functor but it will break my invariants" problem. You need to know to do something extra, instead of knowing to avoid the issue.
20:34:58 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
20:38:50 × Pozyomka quits (~pyon@user/pyon) (Quit: brb)
20:39:01 Pozyomka joins (~pyon@user/pyon)
20:46:11 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
20:50:04 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
20:50:18 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Read error: Connection reset by peer)
20:50:30 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
20:50:37 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
20:54:41 × fp quits (~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 248 seconds)
20:58:15 × lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 244 seconds)
21:03:24 Lycurgus joins (~juan@user/Lycurgus)
21:07:00 × swistak quits (~swistak@185.21.216.141) (Ping timeout: 245 seconds)
21:14:46 × jreicher quits (~user@user/jreicher) (Quit: In transit)
21:15:15 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
21:15:40 chexum joins (~quassel@gateway/tor-sasl/chexum)
21:29:48 <haskellbridge> <magic_rb> int-e: you seem to familiar with this, so uh, https://paste.tomsmeding.com/eKx5j0WP is my STG representation
21:30:11 <haskellbridge> <magic_rb> you were wondering whats an expression and whats a heap object, i didnt even know there was a distinction
21:30:15 <haskellbridge> <magic_rb> i must have missed something serios
21:33:50 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Read error: Connection reset by peer)
21:34:17 ChaiTRex joins (~ChaiTRex@user/chaitrex)
21:34:35 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
21:38:18 <int-e> Look at Figure 1? `THUNK e` uses `e` which refers to an expression. `PAP(f a1 ... an)` refers to `f` and `a`, `f` being a variable (a heap reference) that, as the comment says, has to be a FUN, and `a` being an atom, either a variable or an unboxed value.
21:42:31 <int-e> I'm not that familiar actually. Expressions are quite restricted; the function calls are restricted such that the arguments are atoms. So if you want to translate f (g x), you first have to flatten it to let y = THUNK (g x) in f y
21:42:44 swistak joins (~swistak@185.21.216.141)
21:44:34 <int-e> The `map` example in Section 3.2 does this, among other things.
21:48:34 <int-e> (the actual implementation in GHC will not store expressions in thunks; instead, thunks have pointers to compiled expressions, i.e., code that performs the corresponding evaluations steps)
21:49:55 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
21:54:32 × Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
21:59:05 × swistak quits (~swistak@185.21.216.141) (Ping timeout: 256 seconds)
22:02:11 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
22:03:21 × takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Remote host closed the connection)
22:08:32 Ezic joins (~Ezic@2a02:a31c:2d8:4400:7591:97d9:8a76:62ce)
22:09:18 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
22:15:58 yin is now known as zzz
22:16:27 <haskellbridge> <magic_rb> Youre the first person to give me any kind of feedback. So its greatly appreciated. I see that my whole IR is wrong :(
22:17:21 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
22:18:21 <haskellbridge> <magic_rb> Though i still dont understand how moving the arguments into let bindings would help me. Since im having issues with the function bodies, not let bindings
22:18:24 <haskellbridge> <magic_rb> I mean
22:19:53 <haskellbridge> <magic_rb> Say i have "let f = (\y \x -> x) 5; in f 4" this should return 4 if im doing brain eval right. This would end up being something like
22:20:25 zzz is now known as tilde
22:20:25 × sprotte24 quits (~sprotte24@p200300d16f0fa90034a8f8dc2eadcbb1.dip0.t-ipconnect.de) (Quit: Leaving)
22:21:14 × Ezic quits (~Ezic@2a02:a31c:2d8:4400:7591:97d9:8a76:62ce) (Quit: Client closed)
22:21:35 <haskellbridge> <magic_rb> (apply f [ 4 ]) where f is itself a thunk pointing to (apply (FUN (y) (FUN (x) x)) [ 5 ])
22:22:14 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
22:22:28 <haskellbridge> <magic_rb> But again, i get into the situation that there is not rule for applying onto an application, so i have to have a thunk there. But then the thunk gets immediately erased and a second call to f will fail
22:23:40 <haskellbridge> <magic_rb> I think the actual bit that im doing wrong is in the UPDATE rule. They say "if H[y] is a value" do they mean atom AND function? Or what do they mean?
22:26:00 <int-e> With the notation of the paper I think you'd have let f = THUNK (let g = FUN (y -> FUN (x -> x)) in g 5) in f 4
22:26:02 <haskellbridge> <magic_rb> Ah wait, ig if they meant value or function, it would actually work
22:26:28 <haskellbridge> <magic_rb> Yep okay that notation makes sense, i do that, except for the let
22:26:43 <haskellbridge> <magic_rb> I dont think the let is important for semantics, just performance probably.
22:28:25 swistak joins (~swistak@185.21.216.141)
22:28:35 <int-e> You can't have (g 5) 4 in that syntax, so the (g 5) must be constructed with a `let`.
22:30:51 × tromp quits (~textual@2001:1c00:3487:1b00:f91c:d27d:e5a1:1629) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:34:15 jreicher joins (~user@user/jreicher)
22:34:31 <haskellbridge> <magic_rb> right, in that syntax no
22:34:34 <haskellbridge> <magic_rb> in my syntax yes
22:35:03 <haskellbridge> <magic_rb> and it works when i only apply UPDATE when the H[y] is a PAP, FUN, or value (think i32, f32, String)
22:35:52 <haskellbridge> <magic_rb> i need to figure out how closely do i need to follow the paper, because my thing is interpreting an untyped language and is also not a compiler, but a interpreter/VM
22:36:01 <haskellbridge> <magic_rb> so i think im stretching this a bit
22:36:32 <int-e> well, the function call rules rely on those restrictions; there's no rule that applies to (g 5) 4; ... because (g 5) is not a variable. You can modify those but then you're on your own and things that work fine with the original rules may go wrong.
22:37:08 <haskellbridge> <magic_rb> i dont have (g 5) 4
22:37:20 <haskellbridge> <magic_rb> i have (THUNK (g 5)) 4 and that works
22:37:39 <haskellbridge> <magic_rb> whether the THUNK is inline or bound through a let is implementation details, it shouldnt affect semantics
22:38:08 <haskellbridge> <magic_rb> but i do agree that my STG type being able to represent an invalid tree is problematic
22:38:43 <jreicher> What do you mean by an "invalid tree"? (Sorry, coming into this a bit late)
22:39:15 <int-e> Right, you have (FUN (y -> FUN (x -> x))) 5, but basically the same comment applies: (FUN ...) is not a variable.
22:39:29 <int-e> (as the expression in that thunk)
22:40:48 <int-e> And to overcome this within the rules of the paper, you have to let-bind that function.
22:41:05 <int-e> hence let g = FUN (y -> FUN (x -> x)) in g
22:44:05 <int-e> and actually that's still wrong, because FUN ... is a heap object, and only the rhs of let-s are heap objects. So it'll actually be let g = FUN (y -> let h = FUN (x -> x) in h) in g.
22:46:51 tilde is now known as zzz
22:47:23 <int-e> the final `in g` is supposed to be `in g 5` both times
22:48:13 <haskellbridge> <magic_rb> yes because within the rules of that paper, let bindings create thunks?
22:48:25 <haskellbridge> <magic_rb> in the current constraints of my think, i can insert thunks anywhere
22:48:32 <haskellbridge> <magic_rb> so that alleviates that problem
22:48:33 <int-e> let bindings create new heap objects
22:48:39 <haskellbridge> <magic_rb> yep
22:48:39 <haskellbridge> <magic_rb> okay
22:48:43 <jreicher> And they're not necessarily thunks
22:49:17 <int-e> right
22:49:22 <haskellbridge> <magic_rb> when can they be not thunks?
22:49:31 <jreicher> When they're functions
22:49:44 <int-e> or fully saturated constructors
22:49:58 <haskellbridge> <magic_rb> i dont have constructors in my thing, and probably wont, nix doesnt have them
22:49:59 <haskellbridge> <magic_rb> but uh
22:50:05 <haskellbridge> <magic_rb> as for the function thing
22:50:14 <haskellbridge> <magic_rb> oh right
22:50:14 <haskellbridge> <magic_rb> yes
22:50:33 <haskellbridge> <magic_rb> okay, so we have let f = \x -> x in f 4
22:51:13 <haskellbridge> <magic_rb> but f = THUNK ( let g = (\y \x -> x) in g 5 ) in f 4
22:51:29 <haskellbridge> <magic_rb> right? the inner one doesnt have to be thunk
22:51:36 <haskellbridge> <magic_rb> because its a FUN
22:52:00 <haskellbridge> <magic_rb> the outer one is neither a let, as such it needs a thunk
22:52:15 <int-e> you /can/ have let f = THUNK (let g = FUN (y x -> x) in g 5) in f 4
22:52:34 <haskellbridge> <magic_rb> isnt that exactly what i typed
22:52:55 <haskellbridge> <magic_rb> jreicher im implementing my own version of the STG, or at least trying to, then building a Nix frontend on top
22:53:06 <int-e> let f = THUNK (let g = FUN (y -> let h = FUN (x -> x) in h) in g 5) in f 4 was me being faithful to the distinction betwenn \y -> \x -> x and \y x -> x that is occasionally relevant
22:53:19 <int-e> I know that it's different from what you wrote; I corrected it
22:53:25 <haskellbridge> <magic_rb> ah sorry
22:53:37 × cyphase_eviltwin quits (~cyphase@user/cyphase) (Ping timeout: 248 seconds)
22:53:40 <int-e> (\y \x -> x) isn't a heap object
22:53:46 <haskellbridge> <magic_rb> im a bit too sleepy for this, but i think you unblocked me, because the thing seems to work, so thanks
22:55:20 <haskellbridge> <magic_rb> ill go to bed now, my let bindings are wrong still i think, they dont get updated properly (they dont have thunks, so obviously they dont)
22:56:44 <jreicher> int-e: OK, but I'm not sure what's "invalid" here? (I'm probably missing something)
23:00:10 <int-e> jreicher: this is in reference to https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/eval-apply.pdf , which describes an STG-like language. And the expression syntax there has let x = obj in e, where `obj` must be a heap object, which starts with FUN, PAP, CON, THUNK, or BLACKHOLE... (\y \x -> x) is none of these.
23:00:58 cyphase joins (~cyphase@user/cyphase)
23:03:31 <jreicher> int-e: yep know the paper well. Ironically I last read it too long ago to have everything fresh in my memory.
23:03:56 <haskellbridge> <magic_rb> Right i actually have that in my huge match statement lol, the body of an application must be a heap object, which is exactly what i was struggling with, makes sense
23:04:18 <haskellbridge> <magic_rb> But yeah, im writing an interpreter so im taking a lot of liberties
23:05:07 <haskellbridge> <magic_rb> I will bring this closer to what the paper is describing just for consistency, though ill use a lisp like syntax, im not writing a parser for the stg syntax presented in the paper
23:05:44 <haskellbridge> <magic_rb> Then ill expand the nix frontend and then see what needs optimizing. Since i was told that microbenchmarking nix is impossible ....
23:08:22 mange joins (~mange@user/mange)
23:21:08 pavonia joins (~user@user/siracusa)
23:27:24 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
23:38:42 × mreh quits (~matthew@host86-146-25-35.range86-146.btcentralplus.com) (Ping timeout: 260 seconds)
23:38:44 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
23:43:55 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
23:47:34 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
23:53:37 × Alleria quits (~Alleria@user/alleria) (Read error: Connection reset by peer)
23:53:53 segfaultfizzbuzz joins (~segfaultf@12.172.219.17)
23:57:07 Alleria joins (~Alleria@user/alleria)
23:57:15 × acidjnk quits (~acidjnk@p200300d6e7171917d8d62854256e96a7.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)

All times are in UTC on 2025-09-14.