Logs on 2024-02-28 (liberachat/#haskell)
| 00:05:25 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 255 seconds) |
| 00:11:35 | × | Typedfern quits (~Typedfern@82.red-83-37-31.dynamicip.rima-tde.net) (Ping timeout: 252 seconds) |
| 00:14:36 | × | Square2 quits (~Square4@user/square) (Ping timeout: 268 seconds) |
| 00:14:47 | → | rvalue joins (~rvalue@user/rvalue) |
| 00:20:23 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 00:25:57 | → | Typedfern joins (~Typedfern@237.red-83-37-37.dynamicip.rima-tde.net) |
| 00:29:57 | → | yoo joins (~yo0O0o@104.28.194.104) |
| 00:42:00 | → | janus joins (janus@anubis.0x90.dk) |
| 00:42:34 | <janus> | can I, in Haskell pass an IO function that only takes stuff like CInt, Ptr CChar and so on, as a FunPtr argument to a C function? |
| 00:43:29 | × | fryguybob quits (~fryguybob@024-094-050-022.inf.spectrum.com) (Ping timeout: 252 seconds) |
| 00:43:56 | × | mud quits (~mud@user/kadoban) (Quit: quit) |
| 00:46:37 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 264 seconds) |
| 00:50:12 | → | fryguybob joins (~fryguybob@024-094-050-022.inf.spectrum.com) |
| 00:54:04 | <glguy> | janus: yes, you can |
| 00:54:57 | <glguy> | (looking for a URL to give you) |
| 00:55:49 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 00:56:31 | <glguy> | https://www.haskell.org/onlinereport/haskell2010/haskellch8.html#x15-1610008.5 and look for "dynamic wrapper" |
| 00:57:25 | <glguy> | and when you're done with the FunPtr https://hackage.haskell.org/package/base-4.19.1.0/docs/Foreign-Ptr.html#v:freeHaskellFunPtr |
| 01:01:05 | × | Typedfern quits (~Typedfern@237.red-83-37-37.dynamicip.rima-tde.net) (Ping timeout: 252 seconds) |
| 01:03:33 | <janus> | oh perfect! hadn't considered that this would be in the report |
| 01:14:03 | → | Typedfern joins (~Typedfern@82.red-83-37-24.dynamicip.rima-tde.net) |
| 01:16:37 | × | yoo quits (~yo0O0o@104.28.194.104) (Ping timeout: 264 seconds) |
| 01:28:01 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:28:36 | → | yoo joins (~yo0O0o@104.28.194.105) |
| 01:32:28 | × | thegeekinside quits (~thegeekin@189.217.83.221) (Read error: Connection reset by peer) |
| 01:36:57 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 01:46:46 | × | yoo quits (~yo0O0o@104.28.194.105) (Ping timeout: 246 seconds) |
| 01:55:22 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
| 01:55:38 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 02:02:24 | × | pointlessslippe1 quits (~pointless@212.82.82.3) (Ping timeout: 255 seconds) |
| 02:06:45 | → | pointlessslippe1 joins (~pointless@212.82.82.3) |
| 02:07:36 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 02:10:01 | × | bontaq quits (~user@ool-45779c03.dyn.optonline.net) (Ping timeout: 264 seconds) |
| 02:19:13 | × | Fijxu quits (~Fijxu@user/fijxu) (Quit: XD!!) |
| 02:21:25 | × | xff0x quits (~xff0x@ai082039.d.east.v6connect.net) (Ping timeout: 264 seconds) |
| 02:22:55 | → | Fijxu joins (~Fijxu@user/fijxu) |
| 02:27:01 | × | puke quits (~puke@user/puke) (Remote host closed the connection) |
| 02:29:27 | → | puke joins (~puke@user/puke) |
| 02:37:56 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 02:40:01 | × | puke quits (~puke@user/puke) (Ping timeout: 264 seconds) |
| 02:44:20 | × | sroso quits (~sroso@user/SrOso) (Quit: Leaving :)) |
| 02:45:31 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 02:47:34 | → | sroso joins (~sroso@user/SrOso) |
| 02:50:00 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 268 seconds) |
| 02:54:49 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:56:13 | × | otto_s quits (~user@p5b044e86.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 02:57:12 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 02:57:42 | → | otto_s joins (~user@p4ff27821.dip0.t-ipconnect.de) |
| 03:05:57 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 03:13:34 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 03:14:13 | × | td_ quits (~td@i53870934.versanet.de) (Ping timeout: 264 seconds) |
| 03:14:22 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds) |
| 03:16:00 | → | td_ joins (~td@i5387090D.versanet.de) |
| 03:19:01 | × | aforemny quits (~aforemny@2001:9e8:6cef:7500:df27:86b4:bafb:ef5b) (Ping timeout: 264 seconds) |
| 03:19:10 | → | aforemny_ joins (~aforemny@2001:9e8:6cce:d000:eabb:a6cd:24c6:a0ff) |
| 03:27:40 | → | jargon joins (~jargon@111.sub-174-205-228.myvzw.com) |
| 03:35:17 | × | shapr` quits (~user@c-24-218-186-89.hsd1.ma.comcast.net) (Ping timeout: 240 seconds) |
| 03:37:56 | × | malte quits (~malte@mal.tc) (Ping timeout: 256 seconds) |
| 03:40:47 | → | falafel joins (~falafel@wsip-98-160-52-184.dc.dc.cox.net) |
| 03:42:13 | → | malte joins (~malte@mal.tc) |
| 03:47:25 | × | sroso quits (~sroso@user/SrOso) (Quit: Leaving :)) |
| 03:48:23 | → | sroso joins (~sroso@user/SrOso) |
| 03:54:47 | × | Luj quits (~Luj@2a01:e0a:5f9:9681:535f:4048:fd0:e283) (Quit: Ping timeout (120 seconds)) |
| 03:55:07 | → | Luj joins (~Luj@2a01:e0a:5f9:9681:5718:f097:e277:c029) |
| 04:03:39 | × | falafel quits (~falafel@wsip-98-160-52-184.dc.dc.cox.net) (Remote host closed the connection) |
| 04:17:10 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 04:17:34 | × | lisq quits (~quassel@lis.moe) (Ping timeout: 268 seconds) |
| 04:19:04 | → | lisq joins (~quassel@lis.moe) |
| 04:24:03 | → | gorignak joins (~gorignak@user/gorignak) |
| 04:35:17 | × | jargon quits (~jargon@111.sub-174-205-228.myvzw.com) (Remote host closed the connection) |
| 04:48:08 | × | gorignak quits (~gorignak@user/gorignak) (Quit: quit) |
| 04:48:49 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 04:50:42 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection) |
| 04:50:54 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 04:53:00 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Read error: Connection reset by peer) |
| 04:53:21 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 04:55:34 | → | aforemny joins (~aforemny@i59F516CF.versanet.de) |
| 04:55:40 | × | aforemny_ quits (~aforemny@2001:9e8:6cce:d000:eabb:a6cd:24c6:a0ff) (Ping timeout: 255 seconds) |
| 04:56:13 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 264 seconds) |
| 05:10:23 | → | jrm2 joins (~jrm@user/jrm) |
| 05:10:57 | × | jrm quits (~jrm@user/jrm) (Ping timeout: 256 seconds) |
| 05:12:02 | jrm2 | is now known as jrm |
| 05:12:15 | × | euleritian quits (~euleritia@dynamic-176-006-177-152.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 05:12:32 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 05:16:14 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 260 seconds) |
| 05:20:29 | → | igemnace joins (~ian@user/igemnace) |
| 05:27:39 | → | defanor_ joins (~defanor@tart.uberspace.net) |
| 05:31:51 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection) |
| 05:39:02 | → | julie_pilgrim joins (~julie_pil@user/julie-pilgrim/x-1240752) |
| 05:39:48 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 05:43:38 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 05:55:11 | × | lockywolf quits (~lockywolf@public.lockywolf.net) (Killed (ozone (No Spam))) |
| 05:55:28 | → | lockywolf joins (~lockywolf@public.lockywolf.net) |
| 05:58:40 | × | sroso quits (~sroso@user/SrOso) (Quit: Leaving :)) |
| 06:00:19 | → | sroso joins (~sroso@user/SrOso) |
| 06:06:30 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 06:11:07 | → | michalz joins (~michalz@185.246.207.222) |
| 06:13:57 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 06:17:24 | → | zetef joins (~quassel@95.77.17.251) |
| 06:17:24 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:22:17 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds) |
| 06:30:00 | × | michalz quits (~michalz@185.246.207.222) (Quit: ZNC 1.8.2 - https://znc.in) |
| 06:32:18 | × | julie_pilgrim quits (~julie_pil@user/julie-pilgrim/x-1240752) (Remote host closed the connection) |
| 06:32:49 | → | michalz joins (~michalz@185.246.207.197) |
| 06:38:15 | × | zetef quits (~quassel@95.77.17.251) (Ping timeout: 255 seconds) |
| 06:38:36 | → | danza joins (~francesco@ba-19-155-200.service.infuturo.it) |
| 06:39:38 | × | echoreply quits (~echoreply@45.32.163.16) (Quit: WeeChat 2.8) |
| 06:40:34 | → | echoreply joins (~echoreply@45.32.163.16) |
| 06:59:29 | → | acidjnk joins (~acidjnk@p200300d6e737e7563c535b90a1f52aa7.dip0.t-ipconnect.de) |
| 07:04:22 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds) |
| 07:06:18 | × | Flow quits (~none@gentoo/developer/flow) (Quit: WeeChat 4.1.2) |
| 07:07:02 | → | Flow joins (~none@gentoo/developer/flow) |
| 07:08:51 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection) |
| 07:09:23 | × | m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 256 seconds) |
| 07:09:26 | → | euleritian joins (~euleritia@dynamic-176-006-177-152.176.6.pool.telefonica.de) |
| 07:09:31 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 07:14:14 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 268 seconds) |
| 07:22:16 | → | m5zs7k joins (aquares@web10.mydevil.net) |
| 07:23:11 | × | danza quits (~francesco@ba-19-155-200.service.infuturo.it) (Ping timeout: 268 seconds) |
| 07:27:44 | × | down200 quits (~down200@shell.lug.mtu.edu) (Ping timeout: 252 seconds) |
| 07:31:10 | → | down200 joins (~down200@shell.lug.mtu.edu) |
| 07:34:08 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 07:35:34 | → | oneeyedalien joins (~oneeyedal@user/oneeyedalien) |
| 07:37:10 | × | jle` quits (~jle`@2603-8001-3b02-84d4-a02d-ef9e-4d2d-943a.res6.spectrum.com) (Quit: WeeChat 4.2.1) |
| 07:39:34 | → | jle` joins (~jle`@2603-8001-3b02-84d4-9b67-becf-c72f-15e3.res6.spectrum.com) |
| 07:47:19 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 08:02:37 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
| 08:03:02 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 08:03:03 | × | sroso quits (~sroso@user/SrOso) (Read error: Connection reset by peer) |
| 08:03:35 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 08:06:23 | → | oo_miguel joins (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) |
| 08:06:37 | → | sroso joins (~sroso@user/SrOso) |
| 08:07:42 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:16:33 | → | Miroboru joins (~myrvoll@178-164-114.82.3p.ntebredband.no) |
| 08:17:32 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 08:18:05 | → | CiaoSen joins (~Jura@2a05:5800:2d6:e700:e6b9:7aff:fe80:3d03) |
| 08:18:29 | → | kuribas joins (~user@2a02:1808:8c:525f:3605:2624:9302:ebf4) |
| 08:21:20 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:25:04 | × | sam113101 quits (~sam@modemcable146.137-200-24.mc.videotron.ca) (Remote host closed the connection) |
| 08:25:13 | → | sam113101 joins (~sam@modemcable146.137-200-24.mc.videotron.ca) |
| 08:26:07 | → | acidjnk_new joins (~acidjnk@p200300d6e737e7563c535b90a1f52aa7.dip0.t-ipconnect.de) |
| 08:26:16 | × | acidjnk quits (~acidjnk@p200300d6e737e7563c535b90a1f52aa7.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 08:34:48 | → | fronzl joins (~user@p5b0f33a3.dip0.t-ipconnect.de) |
| 08:38:37 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:44:32 | × | euleritian quits (~euleritia@dynamic-176-006-177-152.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 08:44:50 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 08:48:04 | × | kuribas quits (~user@2a02:1808:8c:525f:3605:2624:9302:ebf4) (Remote host closed the connection) |
| 08:49:47 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 08:52:40 | → | danse-nr3 joins (~danse@ba-19-155-200.service.infuturo.it) |
| 08:54:55 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 272 seconds) |
| 08:56:35 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 08:57:13 | × | _xor quits (~xor@ip-208-102-243-175.dynamic.fuse.net) (Read error: Connection reset by peer) |
| 08:57:56 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 252 seconds) |
| 08:59:43 | → | _xor joins (~xor@ip-208-102-243-175.dynamic.fuse.net) |
| 09:03:39 | × | danse-nr3 quits (~danse@ba-19-155-200.service.infuturo.it) (Remote host closed the connection) |
| 09:04:01 | → | danse-nr3 joins (~danse@ba-19-155-200.service.infuturo.it) |
| 09:04:20 | × | sroso quits (~sroso@user/SrOso) (Quit: Leaving :)) |
| 09:04:49 | → | sroso joins (~sroso@user/SrOso) |
| 09:06:42 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 09:08:13 | × | dsrt^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Ping timeout: 264 seconds) |
| 09:10:02 | × | Benzi-Junior quits (~BenziJuni@232-148-209-31.dynamic.hringdu.is) (Ping timeout: 252 seconds) |
| 09:10:57 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 09:18:29 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 09:23:53 | × | danse-nr3 quits (~danse@ba-19-155-200.service.infuturo.it) (Remote host closed the connection) |
| 09:24:18 | → | drdo3 joins (~drdo@bl14-14-49.dsl.telepac.pt) |
| 09:25:32 | → | gmg joins (~user@user/gehmehgeh) |
| 09:25:35 | × | drdo quits (~drdo@bl14-14-49.dsl.telepac.pt) (Ping timeout: 268 seconds) |
| 09:25:35 | drdo3 | is now known as drdo |
| 09:27:39 | → | chele joins (~chele@user/chele) |
| 09:29:49 | × | sroso quits (~sroso@user/SrOso) (Quit: Leaving :)) |
| 09:30:11 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 09:30:23 | → | danse-nr3 joins (~danse@ba-19-155-200.service.infuturo.it) |
| 09:30:49 | × | tzh quits (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz) |
| 09:30:58 | → | gmg joins (~user@user/gehmehgeh) |
| 09:33:50 | × | average quits (uid473595@user/average) (Quit: Connection closed for inactivity) |
| 09:42:12 | × | ft quits (~ft@p508db2e6.dip0.t-ipconnect.de) (Quit: leaving) |
| 09:43:52 | → | sroso joins (~sroso@user/SrOso) |
| 09:49:13 | × | mjacob_ quits (~mjacob@adrastea.uberspace.de) (Read error: Connection reset by peer) |
| 09:54:54 | → | mjacob joins (~mjacob@adrastea.uberspace.de) |
| 09:56:25 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 246 seconds) |
| 10:00:41 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 10:04:16 | × | fronzl quits (~user@p5b0f33a3.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 10:05:22 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 268 seconds) |
| 10:05:38 | → | __monty__ joins (~toonn@user/toonn) |
| 10:06:53 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 240 seconds) |
| 10:15:10 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 10:24:48 | × | zer0bitz quits (~zer0bitz@user/zer0bitz) (Ping timeout: 256 seconds) |
| 10:27:09 | → | zer0bitz joins (~zer0bitz@user/zer0bitz) |
| 10:29:43 | × | danse-nr3 quits (~danse@ba-19-155-200.service.infuturo.it) (Read error: Connection reset by peer) |
| 10:30:22 | → | danse-nr3 joins (~danse@an-19-162-127.service.infuturo.it) |
| 10:33:12 | × | mulk quits (~mulk@pd9514745.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 10:36:15 | × | Nikopol quits (nikopol@user/astrorigin) (Ping timeout: 272 seconds) |
| 10:36:55 | → | mulk joins (~mulk@pd9514e24.dip0.t-ipconnect.de) |
| 10:37:00 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 10:40:12 | → | Nikopol joins (nikopol@user/astrorigin) |
| 10:40:31 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 268 seconds) |
| 10:46:30 | → | Square2 joins (~Square4@user/square) |
| 10:46:37 | × | ubert quits (~Thunderbi@2a02:8109:ab8a:5a00:d931:6fb2:1f6f:56aa) (Ping timeout: 264 seconds) |
| 10:47:47 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 10:48:59 | <danse-nr3> | a code formatter like ourmolu collapses all inputs to a single output. Is this a type of morphism? |
| 10:50:09 | <danse-nr3> | hmm not "all" technically ... |
| 10:50:55 | <probie> | Are you looking for the word "idempotent", or something else? |
| 10:51:15 | → | ubert joins (~Thunderbi@2a02:8109:ab8a:5a00:4142:543a:fbbd:3f06) |
| 10:51:43 | <danse-nr3> | that's what i came from, but someone said idempotent does not state anything about different inputs bringing same output |
| 10:52:22 | × | oneeyedalien quits (~oneeyedal@user/oneeyedalien) (Quit: Leaving) |
| 10:52:48 | <danse-nr3> | this reminds me of a non-surjective function, but i do not know whether is there a more specific concept |
| 10:54:33 | <danse-nr3> | huh non-injective maybe ... multitasking does not help with recalling math concepts ): |
| 10:55:15 | <danse-nr3> | not bijective for sure XD |
| 10:55:26 | <dminuoso> | non-surjective and non-injective. |
| 10:55:42 | <dminuoso> | (Im not aware of any specific term for that combination) |
| 10:55:45 | <probie> | A stable code formatter like Ormolu is non-injective (two source files can map the same result) non-surjective (there are source files that can't be produced) idempotent (running it twice is the same as running it once) function. But "most" functions are both non-injective and non-surjective, so it's not particularly note-worthy |
| 10:55:57 | <danse-nr3> | non-injective, thanks probie |
| 10:56:38 | <dminuoso> | The closest notion of somehow tossing away information I know of is forgetful functors in category theory. |
| 10:56:51 | × | ubert quits (~Thunderbi@2a02:8109:ab8a:5a00:4142:543a:fbbd:3f06) (Ping timeout: 268 seconds) |
| 10:56:52 | <dminuoso> | But that's not even mildly useful if we dont start out with categories to begin with |
| 10:57:07 | <danse-nr3> | interesting i will look that up when i will have time, cheers |
| 10:58:07 | <dminuoso> | danse-nr3: Perhaps the better description is not that it "throws away information", but rather that it "preserves" information. |
| 10:59:09 | <danse-nr3> | noted |
| 10:59:21 | → | ubert joins (~Thunderbi@2a02:8109:ab8a:5a00:4142:543a:fbbd:3f06) |
| 11:01:46 | <opqdonut> | a formatter is a projection: it is an idempotent mapping to a subset |
| 11:02:47 | <danse-nr3> | well spotted ... a projection is probably what clicked to me |
| 11:06:10 | <ncf> | "retraction" also comes to mind |
| 11:06:36 | <danse-nr3> | huh? Looking that up... |
| 11:06:55 | × | kronicmage quits (~kronicmag@neotame.csclub.uwaterloo.ca) (Ping timeout: 255 seconds) |
| 11:07:09 | <danse-nr3> | this https://en.wikipedia.org/wiki/Section_(category_theory) ? |
| 11:07:20 | <ncf> | yes |
| 11:07:33 | <danse-nr3> | interesting, thanks |
| 11:08:06 | <ncf> | with X := String and Y := AST-with-comments or something |
| 11:08:44 | → | kronicmage joins (~kronicmag@neotame.csclub.uwaterloo.ca) |
| 11:09:34 | <ncf> | (in fancy terms, this is a splitting of the idempotent formatting function) |
| 11:09:53 | <danse-nr3> | o.o |
| 11:09:56 | → | xff0x joins (~xff0x@ai082039.d.east.v6connect.net) |
| 11:10:13 | <danse-nr3> | if i add that to the stash of stuff to study, surely some day it will make any sense to me |
| 11:10:31 | <ncf> | https://ncatlab.org/nlab/show/idempotent |
| 11:14:59 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 264 seconds) |
| 11:16:14 | × | sroso quits (~sroso@user/SrOso) (Quit: Leaving :)) |
| 11:17:22 | × | ubert quits (~Thunderbi@2a02:8109:ab8a:5a00:4142:543a:fbbd:3f06) (Quit: ubert) |
| 11:26:15 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 255 seconds) |
| 11:35:51 | → | ph88^ joins (~ph88@2a02:8109:9e26:c800:b36c:4250:a2e0:f38d) |
| 11:37:51 | → | teo joins (~teo@user/teo) |
| 11:37:57 | <ph88^> | does anyone have an idea how to solve this issue with using the type constraint? https://github.com/haskell-effectful/effectful/discussions/204 |
| 11:46:04 | → | puke joins (~puke@user/puke) |
| 11:53:08 | → | ph88_ joins (~ph88@2a02:8109:9e26:c800:2e55:526f:a486:95bf) |
| 11:56:49 | × | ph88^ quits (~ph88@2a02:8109:9e26:c800:b36c:4250:a2e0:f38d) (Ping timeout: 264 seconds) |
| 11:57:40 | → | ph88^ joins (~ph88@2a02:8109:9e26:c800:8a14:b17:1b0c:ea92) |
| 11:57:42 | <probie> | ph88^: what do you expect to happen if `es` contains another `State`? |
| 11:58:19 | → | alexherbo2 joins (~alexherbo@2a02-8440-3241-a025-1d43-7b36-43f5-0bad.rev.sfr.net) |
| 11:58:34 | × | ph88_ quits (~ph88@2a02:8109:9e26:c800:2e55:526f:a486:95bf) (Ping timeout: 246 seconds) |
| 11:59:19 | → | ph88_ joins (~ph88@2a02:8109:9e26:c800:16fb:846f:303b:b33f) |
| 11:59:51 | × | CiaoSen quits (~Jura@2a05:5800:2d6:e700:e6b9:7aff:fe80:3d03) (Ping timeout: 272 seconds) |
| 12:00:11 | <ph88_> | probie, match on the inner type of State |
| 12:00:35 | <ph88_> | probie, and in case there are two State with the same inner type i don't know enough about effectful on how that should be handled |
| 12:01:31 | <probie> | but it can't do the first, because it doesn't know that the `v` in your call to `bar` is meant to be `Double` |
| 12:01:56 | <probie> | you might be able to resolve this if you change the type of `bar` to `forall v e es a. (State v :> es, Error e :> es) => Eff es a` and then `baz = foo 0.0 (bar @Double @String)` |
| 12:02:13 | × | ph88^ quits (~ph88@2a02:8109:9e26:c800:8a14:b17:1b0c:ea92) (Ping timeout: 256 seconds) |
| 12:08:27 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 12:10:46 | <Heffalump> | jackdk: yeah, I struggled to figure out how to override it with a custom manager - in principle you can use defaultClientParams but just switching to that without making any other changes went wrong anyway |
| 12:11:06 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 260 seconds) |
| 12:11:34 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
| 12:11:34 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds) |
| 12:11:34 | × | pastly quits (~pastly@gateway/tor-sasl/pastly) (Ping timeout: 260 seconds) |
| 12:12:02 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 260 seconds) |
| 12:12:16 | × | alexherbo2 quits (~alexherbo@2a02-8440-3241-a025-1d43-7b36-43f5-0bad.rev.sfr.net) (Remote host closed the connection) |
| 12:12:17 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 12:13:14 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 12:13:48 | → | gmg joins (~user@user/gehmehgeh) |
| 12:16:39 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 12:18:47 | → | pastly joins (~pastly@gateway/tor-sasl/pastly) |
| 12:19:46 | → | ubert joins (~Thunderbi@2a02:8109:ab8a:5a00:ddb0:cba8:992d:fa6b) |
| 12:21:01 | → | alexherbo2 joins (~alexherbo@2a02-8440-3241-a025-1d43-7b36-43f5-0bad.rev.sfr.net) |
| 12:22:11 | × | danse-nr3 quits (~danse@an-19-162-127.service.infuturo.it) (Ping timeout: 264 seconds) |
| 12:23:24 | → | Guest9 joins (~Guest9@165.225.106.173) |
| 12:24:56 | × | alexherbo2 quits (~alexherbo@2a02-8440-3241-a025-1d43-7b36-43f5-0bad.rev.sfr.net) (Remote host closed the connection) |
| 12:25:15 | → | alexherbo2 joins (~alexherbo@2a02-8440-3241-a025-1d43-7b36-43f5-0bad.rev.sfr.net) |
| 12:25:55 | × | igemnace quits (~ian@user/igemnace) (Read error: Connection reset by peer) |
| 12:26:00 | <leah2> | very random question maybe: when you write code with lots of $ or ., do you write(!) it from left to right? |
| 12:27:20 | → | ph88^ joins (~ph88@2a02:8109:9e26:c800:db68:7ede:746b:23cf) |
| 12:28:08 | × | jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 12:28:09 | <jackdk> | . and $, unless the expression gets big and >>= is involved, in which case I like to try and maintain a unidirectional data flow |
| 12:28:42 | <Guest9> | If you have cabal, and have the source code for a cabal package, how do you install it? |
| 12:28:43 | <Guest9> | The package I'm talking about is : https://hackage.haskell.org/package/fast-tags-2.0.2/src/ |
| 12:29:01 | <leah2> | jackdk: my question aims how you write the code, not which construct you use |
| 12:29:35 | <ph88^> | probie, https://pastebin.com/38UXgMM9 |
| 12:29:59 | → | jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
| 12:30:54 | × | ph88_ quits (~ph88@2a02:8109:9e26:c800:16fb:846f:303b:b33f) (Ping timeout: 268 seconds) |
| 12:30:54 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 12:30:59 | <jackdk> | ah hm. Unless it's so simple that it can come straight from my brain to my fingers, I tend to write it right-to-left. I write down what I have like `_ $ foo` and work my way through, narrowing the type in the hole as I go: `f . _ $ foo` -> `f . _ . h $ foo` -> `f . g . h $ foo` -> ` f .g $ h foo` etc |
| 12:31:46 | → | gmg joins (~user@user/gehmehgeh) |
| 12:33:10 | × | jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Client Quit) |
| 12:33:36 | → | jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
| 12:38:39 | <ncf> | i write code inside-out and counterclockwise |
| 12:42:11 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 12:43:04 | → | igemnace joins (~ian@user/igemnace) |
| 12:44:10 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 12:44:10 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Read error: Connection reset by peer) |
| 12:44:10 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 12:44:10 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 12:44:25 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 12:44:50 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 12:44:57 | → | gmg joins (~user@user/gehmehgeh) |
| 12:46:02 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 12:55:57 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 12:56:43 | × | ph88 quits (~ph88@2a02:8109:9e26:c800:8ede:73b0:bb5c:daa3) (Remote host closed the connection) |
| 12:57:01 | → | ph88 joins (~ph88@2a02:8109:9e26:c800:6088:3c01:97a2:ea63) |
| 12:58:00 | → | bontaq joins (~user@ool-45779c03.dyn.optonline.net) |
| 12:59:38 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds) |
| 12:59:56 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 13:00:26 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 13:04:16 | → | danse-nr3 joins (~danse@151.35.185.185) |
| 13:04:43 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 246 seconds) |
| 13:07:36 | × | Guest9 quits (~Guest9@165.225.106.173) (Quit: Client closed) |
| 13:16:01 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds) |
| 13:17:30 | → | euleritian joins (~euleritia@dynamic-176-006-186-165.176.6.pool.telefonica.de) |
| 13:18:42 | × | noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Quit: Leaving) |
| 13:23:21 | → | Silver_X joins (~Silver_X@182.178.140.49) |
| 13:27:19 | × | destituion quits (~destituio@2a02:2121:34a:61a6:4e6d:b1ea:af4:eb36) (Ping timeout: 255 seconds) |
| 13:27:49 | → | destituion joins (~destituio@85.221.111.174) |
| 13:37:57 | → | RedNifre joins (~RedNifre@dslb-002-206-059-238.002.206.pools.vodafone-ip.de) |
| 13:38:01 | <RedNifre> | Hello! |
| 13:38:21 | <danse-nr3> | o/ |
| 13:38:22 | <RedNifre> | What would be a good name for a function that kinda maps ALL values of a variable sized tuple? |
| 13:38:37 | <danse-nr3> | might still exist |
| 13:38:41 | <RedNifre> | It can't be map, since map would only map one value, to make it monadic, right? |
| 13:38:47 | <danse-nr3> | oh, variable sized |
| 13:38:53 | <RedNifre> | maybe multiMap? |
| 13:39:02 | <RedNifre> | It's not really a Haskell question, more like an FP question. |
| 13:39:17 | × | Silver_X quits (~Silver_X@182.178.140.49) (Read error: Connection reset by peer) |
| 13:39:21 | <danse-nr3> | still sounds like an fmap to me, but someone else might know better |
| 13:39:22 | <RedNifre> | Basically, I have this variable sized tuple with values of different types, since they are the arguments for a database query. |
| 13:39:36 | <RedNifre> | And I now want to make sure that all passed values of type YearMonth fall into a specified range. |
| 13:39:48 | <danse-nr3> | different types? |
| 13:40:08 | <RedNifre> | So something like args.multiMap { when(it) { is yearMonth -> clamp(it); else -> it }} |
| 13:40:33 | <RedNifre> | Yeah, different types. I would inspect the type at runtime and only clamp the YearMonth values and leave the rest. |
| 13:40:34 | <danse-nr3> | could you write the type signature? Or you want to discuss it in an untyped language? |
| 13:41:58 | <RedNifre> | The type signature is kinda Tuple* ( ?* ) -> (? -> same or modified YearMonth) -> Tuple* (?* same types, except the YearMonths now have a different value) |
| 13:42:27 | <RedNifre> | For example ("Hello", 2080-10) -> ("Hello", 2024-2) |
| 13:42:57 | <danse-nr3> | does this have anything to do with haskell? |
| 13:43:09 | <RedNifre> | Or also ("Some more args", 123, 2090-3, 999, 2040-2) -> ("Some more args", 123, 2024-2, 999, 2024-2) |
| 13:43:28 | <danse-nr3> | i am not familiar with Tuple* (?*) syntax |
| 13:43:33 | <RedNifre> | No, as I said, it's more of an FP or naming question. It's a bit like mapping the values of the tuple, but it's not a strict monadic map. |
| 13:44:15 | <sshine> | sounds like something you might do with sum types, or instances of a type class, or record types. |
| 13:44:18 | <RedNifre> | Basically, I'm asking about a good name for a function that would take a tuple and a "mapping" function and returns a tuple of the same type, where some of the values in the tuple are now changed, but still have the same type |
| 13:44:39 | <sshine> | RedNifre, have you investigated record types? |
| 13:45:42 | <RedNifre> | Sure, but that's not what this is about, since I'm dealing with tuples here. |
| 13:45:47 | × | alexherbo2 quits (~alexherbo@2a02-8440-3241-a025-1d43-7b36-43f5-0bad.rev.sfr.net) (Remote host closed the connection) |
| 13:46:08 | <danse-nr3> | in haskell i guess it would probably be record types and a class as sshine mentioned. In general functional programming, i am not aware of any related concept |
| 13:46:09 | → | alexherbo2 joins (~alexherbo@220.12.23.93.rev.sfr.net) |
| 13:46:35 | <RedNifre> | So I have some tuples and a function of type YearMonth -> YearMonth and I'm looking for what you would call it if you applied that function to all the values in the Tuple of type YearMonth and got a modified Tuple back. |
| 13:47:02 | <RedNifre> | Hm, how about calling it multiMap? partialMap? crazyMap? |
| 13:47:27 | <danse-nr3> | well a map usually refers to an exposed parameter |
| 13:47:40 | <danse-nr3> | and a functor |
| 13:48:02 | <RedNifre> | Right, map is wrong here, because when mapping a tuple, it can only affect one value in the tuple or it would not be correct. |
| 13:50:09 | <dminuoso> | RedNifre: We have a notion of Bifunctor (and accordingly bimap). |
| 13:50:10 | <RedNifre> | Hm, in Ramda it's something like "adjust", maybe I just name it that. |
| 13:50:20 | <dminuoso> | I guess you could generalize this into N-functor and n-map? |
| 13:50:32 | <RedNifre> | Is there also TriFunctor and VariableSizeFunctor with variableSizeMap? |
| 13:50:37 | <RedNifre> | hm! |
| 13:50:47 | <RedNifre> | nMap sounds interesting. |
| 13:51:04 | <danse-nr3> | code that abstracts over map size is very rare in haskell |
| 13:51:19 | <danse-nr3> | sorry, tuple size |
| 13:51:41 | × | __monty__ quits (~toonn@user/toonn) (Ping timeout: 268 seconds) |
| 13:54:49 | <dminuoso> | RedNifre: Writing an a typeclass Multifunctor might be a fun excercise. |
| 13:55:37 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 13:56:15 | <lortabac> | RedNifre: I'd call it 'tmap', 'mapT' or 'mapTuple' |
| 13:58:03 | <danse-nr3> | can it even work without something more encapsulated than a tuple though? |
| 14:02:51 | <lortabac> | danse-nr3: I remember seeing different n-ary functor proposals, they were all quite complex |
| 14:05:02 | <sshine> | RedNifre, you say records are irrelevant because you're dealing with tuples. but you know that tuples are just records with numbers instead of names? |
| 14:05:31 | → | Guest50 joins (~Guest15@105.112.248.197) |
| 14:06:45 | <jackdk> | check out Control.Lens.Each from package lens |
| 14:07:01 | <sshine> | sounds lensy actually, yes |
| 14:08:37 | <sshine> | RedNifre, sometimes when you traverse syntax trees, you may want a specialised map function that addresses each node of some kind in arbitrary places of a tree. here's an example: https://hackage.haskell.org/package/futhark-0.25.13/docs/Futhark-IR-Traversals.html -- and a smaller derivation of that strategy: https://github.com/sshine/evm-opcodes/blob/main/src/EVM/Opcode/Traversal.hs |
| 14:09:37 | <jackdk> | uniplate and friends are worth looking at too |
| 14:09:43 | <sshine> | RedNifre, if you're not looking for a generalised map function that works for any type in any position in any structured type, then you could go with a specialised map function that works for a concrete type in any position. |
| 14:10:14 | <danse-nr3> | i think we lost RedNifre already |
| 14:10:22 | → | Guest62 joins (~Guest62@2406:7400:56:348a:945b:9e1e:cc22:9187) |
| 14:11:23 | × | mulk quits (~mulk@pd9514e24.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 14:11:43 | <sshine> | RedNifre, you can achieve this flexibility a lot easier in loosely typed languages. "feed it anything and let a run-time check iterate over the different options". for example, you wouldn't loop over a variable amount of tuple fields in Haskell, but you might in Python. |
| 14:13:12 | <jackdk> | You can build all sorts of cool stuff out of generics, Typeable, etc, but it's rarely the best option |
| 14:13:24 | <Guest50> | Hello everyone, |
| 14:13:24 | <Guest50> | I hope this message finds you well. My name is Jesse Amos, and I'm thrilled to share that I've successfully completed the Haskell course! I'm now embarking on a personal project and am eager to find a mentor and friend who wouldn't mind me reaching out with questions as I navigate through challenges. Your guidance and insights would mean a lot to |
| 14:13:25 | <Guest50> | me. Looking forward to connecting with someone willing to share their expertise. Thanks a bunch! |
| 14:14:11 | → | shapr joins (~user@c-24-218-186-89.hsd1.ma.comcast.net) |
| 14:14:26 | <danse-nr3> | "the" haskell course? |
| 14:15:23 | <Guest50> | not really i finish "Haskell MOOC" course |
| 14:15:48 | <Guest50> | and i want to embark on build a personal project |
| 14:16:01 | <Guest50> | before starting an internship |
| 14:16:22 | → | mulk joins (~mulk@pd9514e24.dip0.t-ipconnect.de) |
| 14:19:41 | <danse-nr3> | welcome to haskell then. About your personal project, i suggest to start small |
| 14:20:26 | <shapr> | hi! I like Haskell! |
| 14:23:24 | → | thegeekinside joins (~thegeekin@189.217.83.221) |
| 14:24:23 | <Guest50> | I'm also looking for a mentor and a friend that can guide me through my journey of Haskell. someone that i can ask questions and will be patient with me as i grow into a more proficient developer in Haskell |
| 14:25:01 | <danse-nr3> | well you can hang around here. Maybe get a libera user name so that we can recognize you easier |
| 14:25:11 | → | dsrt^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
| 14:25:49 | <darkling> | Guest50: I don't think anybody is going to agree to that kind of commitment as a "named contact" for you, but if you just ask any questions you have in here, then you'll usually get an answer from someone knowledgable. |
| 14:27:23 | <Guest50> | I'm also wondering if they is a what app group consist with Haskell developer that i could join since i'm more active on What app social media :] |
| 14:28:03 | <Guest50> | I totally agree with you darkling |
| 14:33:01 | <danse-nr3> | not aware of any whatsapp group, but there is reddit and, i think, discord, which might work easier on your phone |
| 14:34:59 | <Guest50> | okay it totally cool danse-nr3 can you send a link to me or something i will actually really appreciate it |
| 14:35:28 | <danse-nr3> | oh they are easy to find |
| 14:40:17 | <Guest50> | Okay danse-nr3 i found one already on reddit |
| 14:40:24 | <danse-nr3> | v |
| 14:41:10 | → | tri joins (~tri@ool-18bbef1a.static.optonline.net) |
| 14:43:14 | → | __monty__ joins (~toonn@user/toonn) |
| 14:44:44 | → | billchenchina joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) |
| 14:44:52 | × | billchenchina quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Remote host closed the connection) |
| 14:46:01 | × | tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 264 seconds) |
| 14:48:44 | × | euleritian quits (~euleritia@dynamic-176-006-186-165.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 14:49:01 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 14:50:13 | × | __monty__ quits (~toonn@user/toonn) (Ping timeout: 264 seconds) |
| 14:59:44 | × | teo quits (~teo@user/teo) () |
| 15:09:15 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:09:38 | → | CiaoSen joins (~Jura@2a05:5800:2d6:e700:e6b9:7aff:fe80:3d03) |
| 15:10:47 | × | Guest62 quits (~Guest62@2406:7400:56:348a:945b:9e1e:cc22:9187) (Ping timeout: 250 seconds) |
| 15:10:52 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 15:11:19 | → | tri joins (~tri@ool-18bbef1a.static.optonline.net) |
| 15:12:10 | × | danse-nr3 quits (~danse@151.35.185.185) (Ping timeout: 255 seconds) |
| 15:12:29 | → | euleritian joins (~euleritia@dynamic-176-006-186-165.176.6.pool.telefonica.de) |
| 15:14:37 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 15:18:07 | × | tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 260 seconds) |
| 15:20:44 | → | haftl joins (~user@user/haftl) |
| 15:23:16 | → | [[PSYCHIATRIST joins (~PSYCHIAT@46.197.13.252) |
| 15:25:20 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 260 seconds) |
| 15:26:34 | → | danza joins (~francesco@151.35.185.185) |
| 15:29:22 | → | zmt00 joins (~zmt00@user/zmt00) |
| 15:30:26 | <kuribas> | There is "Functional Programming" on discord |
| 15:30:30 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish) |
| 15:34:23 | → | kupi joins (uid212005@id-212005.hampstead.irccloud.com) |
| 15:39:27 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.1.1) |
| 15:41:23 | → | tri joins (~tri@ool-18bbef1a.static.optonline.net) |
| 15:44:50 | × | vulpine quits (xfnw@tilde.team) (Quit: Connection reset by purr) |
| 15:46:04 | × | tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 268 seconds) |
| 15:46:12 | × | bontaq quits (~user@ool-45779c03.dyn.optonline.net) (Remote host closed the connection) |
| 15:49:36 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 15:51:17 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 15:53:34 | → | tri joins (~tri@ool-18bbef1a.static.optonline.net) |
| 15:55:55 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 15:58:17 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 16:00:42 | <juri_> | you could also join some haskell project. most people are willing to tolerate a lot for another developer. |
| 16:01:59 | × | danza quits (~francesco@151.35.185.185) (Ping timeout: 252 seconds) |
| 16:02:21 | × | Guest50 quits (~Guest15@105.112.248.197) (Ping timeout: 250 seconds) |
| 16:03:35 | × | destituion quits (~destituio@85.221.111.174) (Ping timeout: 264 seconds) |
| 16:07:06 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 16:11:26 | → | destituion joins (~destituio@2a02:2121:34a:61a6:3256:75da:727b:1921) |
| 16:12:22 | → | danza joins (~francesco@151.35.185.185) |
| 16:20:56 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 16:25:57 | → | bontaq joins (~user@ool-45779c03.dyn.optonline.net) |
| 16:26:49 | → | Guest58 joins (~Guest58@188.120.100.237) |
| 16:32:45 | <RedNifre> | No, you didn't lose me. |
| 16:35:09 | <RedNifre> | It's just that Kotlin has a function called "copy" for records, where you specify which fields you want to "modify" as in Person.copy(lastName = "Smith"). Since my usecase for creating a modified copy of a tuple is very similar, I went with calling it "copy", but instead of naming fields, you provide a function that will be executed for every value in the tuple and hopefully returns the correct |
| 16:35:11 | <RedNifre> | type (this is not type checked automatically, since I think it's impossible, at least in Kotlin). |
| 16:36:05 | × | danza quits (~francesco@151.35.185.185) (Ping timeout: 252 seconds) |
| 16:36:15 | → | Silver_X joins (~Silver_X@182.178.140.49) |
| 16:37:45 | <Guest58> | What's currently considered the best tool for (semi-)automating the job of interfacing a C library through the FFI, I've tried c2hs, c2hsc and HSFFIG, but they all seem severely bit-rotten to the point where I can't even seem to build them |
| 16:37:46 | <EvanR> | if every component of the tuple has the same type, you can use a Vector or V2 V3 V4 etc from linear package |
| 16:37:50 | <RedNifre> | So in pseudo Kotlin, the code now reads fixedQuery = brokenQuery.copy( args = brokenQuery.args.copy(fixTime) ). The second copy is the weird "map tuple" part, but it reads okayish, at least in my opinion. |
| 16:37:57 | <EvanR> | then you can fmap the components |
| 16:38:17 | → | Guest30 joins (~Guest58@188.120.100.237) |
| 16:38:29 | <RedNifre> | The tuples are variable width and variable type and I want to limit all values of type YearMonth to not be in the future. |
| 16:38:38 | <RedNifre> | And it's done already, so it's all good :) |
| 16:38:47 | <RedNifre> | Thank you to everyone who chimed in! |
| 16:39:44 | <Guest30> | What's currently considered the best tool for (semi-)automating the job of interfacing a C library through the FFI? I've tried c2hs, c2hsc and HSFFIG, but they all seem severely bit-rotten to the point where I can't even seem to build them |
| 16:39:56 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 252 seconds) |
| 16:41:14 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 16:41:30 | × | Guest30 quits (~Guest58@188.120.100.237) (Client Quit) |
| 16:41:47 | × | [[PSYCHIATRIST quits (~PSYCHIAT@46.197.13.252) (Ping timeout: 250 seconds) |
| 16:42:13 | × | Guest58 quits (~Guest58@188.120.100.237) (Ping timeout: 250 seconds) |
| 16:42:37 | <cheater> | Haskell Developers Announce Discovery of Industry Programmer Who Gives a Shit |
| 16:43:26 | <cheater> | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaand he's gone |
| 16:43:36 | <cheater> | back to sulking, everyone |
| 16:45:13 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 16:47:37 | <Silver_X> | That was a good read |
| 16:48:11 | × | CiaoSen quits (~Jura@2a05:5800:2d6:e700:e6b9:7aff:fe80:3d03) (Ping timeout: 260 seconds) |
| 16:51:36 | → | danse-nr3 joins (~danse@151.35.185.185) |
| 16:52:25 | → | Guest58 joins (~Guest58@188.120.100.237) |
| 16:52:38 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 16:53:11 | × | Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving) |
| 16:54:17 | × | alexherbo2 quits (~alexherbo@220.12.23.93.rev.sfr.net) (Remote host closed the connection) |
| 16:54:38 | → | alexherbo2 joins (~alexherbo@2a02-8440-3241-a025-503a-5ce6-b6b2-07fb.rev.sfr.net) |
| 16:56:58 | × | carbolymer quits (~carbolyme@dropacid.net) (Remote host closed the connection) |
| 16:58:03 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 17:02:49 | × | danse-nr3 quits (~danse@151.35.185.185) (Ping timeout: 264 seconds) |
| 17:03:19 | → | danse-nr3 joins (~danse@151.35.204.200) |
| 17:07:14 | × | glguy quits (g@libera/staff/glguy) (Quit: Quit) |
| 17:09:14 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 17:12:33 | → | glguy joins (g@libera/staff/glguy) |
| 17:17:45 | × | Silver_X quits (~Silver_X@182.178.140.49) (Quit: Leaving) |
| 17:19:57 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 255 seconds) |
| 17:25:33 | × | Guest58 quits (~Guest58@188.120.100.237) (Ping timeout: 250 seconds) |
| 17:26:49 | × | danse-nr3 quits (~danse@151.35.204.200) (Ping timeout: 264 seconds) |
| 17:27:36 | × | g quits (g@libera/staff/glguy) (Remote host closed the connection) |
| 17:30:36 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1)) |
| 17:32:29 | → | __monty__ joins (~toonn@user/toonn) |
| 17:33:34 | → | ak-1 joins (~ak-1@ip-037-201-198-027.um10.pools.vodafone-ip.de) |
| 17:34:18 | × | alexherbo2 quits (~alexherbo@2a02-8440-3241-a025-503a-5ce6-b6b2-07fb.rev.sfr.net) (Remote host closed the connection) |
| 17:36:19 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 17:37:06 | × | tri quits (~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection) |
| 17:41:24 | → | tri joins (~tri@ool-18bbef1a.static.optonline.net) |
| 17:41:35 | → | g joins (glguy@libera/staff/glguy) |
| 17:41:51 | × | notzmv quits (~daniel@user/notzmv) (Ping timeout: 272 seconds) |
| 17:41:53 | ← | g parts (glguy@libera/staff/glguy) () |
| 17:42:19 | × | ubert quits (~Thunderbi@2a02:8109:ab8a:5a00:ddb0:cba8:992d:fa6b) (Remote host closed the connection) |
| 17:43:40 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 246 seconds) |
| 17:44:51 | → | euphores joins (~SASL_euph@user/euphores) |
| 17:46:55 | → | danse-nr3 joins (~danse@151.35.204.200) |
| 17:46:55 | × | tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 272 seconds) |
| 17:49:22 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 17:49:31 | × | euleritian quits (~euleritia@dynamic-176-006-186-165.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 17:49:47 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 17:49:52 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 17:50:23 | → | tzh joins (~tzh@c-73-164-206-160.hsd1.or.comcast.net) |
| 17:50:31 | → | rvalue joins (~rvalue@user/rvalue) |
| 17:53:37 | → | Guest62 joins (~Guest62@2406:7400:56:348a:945b:9e1e:cc22:9187) |
| 17:53:53 | × | Guest62 quits (~Guest62@2406:7400:56:348a:945b:9e1e:cc22:9187) (Client Quit) |
| 17:55:27 | × | ak-1 quits (~ak-1@ip-037-201-198-027.um10.pools.vodafone-ip.de) (Quit: Client closed) |
| 18:05:14 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 18:08:41 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 18:11:38 | → | tri joins (~tri@ool-18bbef1a.static.optonline.net) |
| 18:12:22 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 18:13:26 | × | igemnace quits (~ian@user/igemnace) (Quit: WeeChat 4.2.1) |
| 18:13:30 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Remote host closed the connection) |
| 18:14:03 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 18:16:52 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:17:19 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Client Quit) |
| 18:18:29 | × | Square2 quits (~Square4@user/square) (Ping timeout: 256 seconds) |
| 18:18:54 | × | tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 255 seconds) |
| 18:31:30 | → | sadie-sorceress joins (~sadie-sor@199.96.191.158) |
| 18:32:31 | infinity0 | is now known as Guest2606 |
| 18:32:32 | × | Guest2606 quits (~infinity0@pwned.gg) (Killed (iridium.libera.chat (Nickname regained by services))) |
| 18:32:41 | → | infinity0 joins (~infinity0@pwned.gg) |
| 18:39:14 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 18:39:39 | × | sadie-sorceress quits (~sadie-sor@199.96.191.158) (Ping timeout: 250 seconds) |
| 18:41:19 | × | infinity0 quits (~infinity0@pwned.gg) (Remote host closed the connection) |
| 18:41:43 | → | tri joins (~tri@ool-18bbef1a.static.optonline.net) |
| 18:42:27 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Client Quit) |
| 18:42:31 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:43:14 | × | kupi quits (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 18:43:26 | → | infinity0 joins (~infinity0@pwned.gg) |
| 18:47:43 | × | danse-nr3 quits (~danse@151.35.204.200) (Ping timeout: 272 seconds) |
| 18:48:44 | → | notzmv joins (~daniel@user/notzmv) |
| 18:51:36 | → | target_i joins (~target_i@217.175.14.39) |
| 18:51:56 | × | tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 252 seconds) |
| 18:53:01 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 18:57:30 | → | sadie-sorceress joins (~sadie-sor@199.96.191.158) |
| 19:02:22 | × | sadie-sorceress quits (~sadie-sor@199.96.191.158) (Client Quit) |
| 19:06:41 | × | phma quits (~phma@host-67-44-208-86.hnremote.net) (Read error: Connection reset by peer) |
| 19:06:53 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 19:07:44 | → | phma joins (~phma@host-67-44-208-71.hnremote.net) |
| 19:08:12 | → | tri joins (~tri@ool-18bbef1a.static.optonline.net) |
| 19:11:49 | → | tri_ joins (~tri@ool-18bbef1a.static.optonline.net) |
| 19:13:03 | × | tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 272 seconds) |
| 19:13:28 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 19:16:31 | × | tri_ quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 255 seconds) |
| 19:25:31 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 19:26:20 | × | thegeekinside quits (~thegeekin@189.217.83.221) (Remote host closed the connection) |
| 19:37:37 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 19:39:48 | × | ph88^ quits (~ph88@2a02:8109:9e26:c800:db68:7ede:746b:23cf) (Remote host closed the connection) |
| 19:41:54 | → | tri joins (~tri@ool-18bbef1a.static.optonline.net) |
| 19:42:25 | × | ski quits (~ski@ext-1-033.eduroam.chalmers.se) (Ping timeout: 264 seconds) |
| 19:43:49 | → | ski joins (~ski@ext-1-033.eduroam.chalmers.se) |
| 19:44:08 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 19:44:17 | × | tri quits (~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection) |
| 19:44:30 | → | tri joins (~tri@ool-18bbef1a.static.optonline.net) |
| 19:46:04 | → | [[PSYCHIATRIST joins (~PSYCHIAT@46.197.13.252) |
| 19:53:28 | → | jargon joins (~jargon@111.sub-174-205-228.myvzw.com) |
| 19:57:07 | × | [[PSYCHIATRIST quits (~PSYCHIAT@46.197.13.252) (Quit: Client closed) |
| 20:03:53 | → | [[PSYCHIATRIST joins (~PSYCHIAT@46.197.13.252) |
| 20:04:52 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 20:17:48 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 20:29:44 | → | vulpine joins (xfnw@tilde.team) |
| 20:39:51 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 20:51:55 | → | pyooque joins (~puke@user/puke) |
| 20:51:55 | puke | is now known as Guest2325 |
| 20:51:55 | pyooque | is now known as puke |
| 20:53:29 | × | oo_miguel quits (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 252 seconds) |
| 20:54:19 | × | Guest2325 quits (~puke@user/puke) (Ping timeout: 256 seconds) |
| 20:55:22 | → | zetef joins (~quassel@95.77.17.251) |
| 20:58:36 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 21:01:53 | → | ft joins (~ft@p508db2e6.dip0.t-ipconnect.de) |
| 21:05:49 | <energizer> | the higher-order-function way of writing a for loop is foldr/foldl. what is the higher-order-function way of writing `while x < 1000 { x = x * 2 }`? |
| 21:06:31 | <glguy> | > until (>= 1000) (*2) 1 |
| 21:06:32 | <lambdabot> | 1024 |
| 21:07:19 | → | euphores joins (~SASL_euph@user/euphores) |
| 21:08:19 | <energizer> | ah nice |
| 21:08:57 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds) |
| 21:09:10 | → | euleritian joins (~euleritia@dynamic-176-006-186-165.176.6.pool.telefonica.de) |
| 21:09:48 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 21:09:51 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 21:12:01 | <energizer> | what about the scan version of that, returning the list of intermediate results? |
| 21:12:47 | <int-e> | > takeWhile (< 1000) $ iterate (*2) 1 |
| 21:12:48 | <lambdabot> | [1,2,4,8,16,32,64,128,256,512] |
| 21:13:11 | × | Katarushisu1 quits (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Ping timeout: 264 seconds) |
| 21:13:12 | <int-e> | (not quite right, I know) |
| 21:13:21 | <int-e> | :t unfoldr |
| 21:13:22 | <lambdabot> | (b -> Maybe (a, b)) -> b -> [a] |
| 21:13:39 | <int-e> | (unfoldr is so unwieldy) |
| 21:14:31 | × | target_i quits (~target_i@217.175.14.39) (Quit: leaving) |
| 21:15:03 | × | zetef quits (~quassel@95.77.17.251) (Remote host closed the connection) |
| 21:15:35 | <Rembane> | :i until |
| 21:15:56 | <Rembane> | Hm... nope. I need to alias unfoldr with unwieldr though. |
| 21:16:17 | <c_wraith> | unfoldr is a demonstration of how anamorphisms can be a lot more awkward than catmorphisms |
| 21:16:20 | → | gmg joins (~user@user/gehmehgeh) |
| 21:17:40 | <c_wraith> | a catamorphism can deconstruct a sum type just by using multiple parameters. an anamorphism requires an argument that produces sums to build a sum type. |
| 21:18:09 | <energizer> | i think scanuntil would be `(a -> Bool) -> (a -> a) -> a -> [a]` ? |
| 21:19:22 | <Rembane> | c_wraith: Is that why the hof in unfoldr gives Maybe (a, b)? |
| 21:19:30 | <c_wraith> | yes |
| 21:19:32 | × | [[PSYCHIATRIST quits (~PSYCHIAT@46.197.13.252) (Quit: Client closed) |
| 21:19:50 | <Rembane> | Got it. |
| 21:19:53 | <c_wraith> | I suppose you could CPS it. |
| 21:20:12 | <c_wraith> | But then the type would look... uh... even more unwieldy |
| 21:22:05 | <int-e> | we should all remember that explicit recursion is always an option |
| 21:22:08 | <Rembane> | There's a certain allure with a maximum cursed anamorphism |
| 21:22:44 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 21:25:14 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 21:25:48 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection) |
| 21:25:59 | → | gmg joins (~user@user/gehmehgeh) |
| 21:26:35 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 21:31:43 | <c_wraith> | > let ana :: (forall r. b -> r -> (a -> b -> r) -> r) -> b -> [a]; ana f x = f x [] (\a b -> a : ana f b) in ana (\x nil cons -> if x > 5 then nil else cons x (x + 1)) 0 |
| 21:31:44 | <lambdabot> | [0,1,2,3,4,5] |
| 21:32:19 | <c_wraith> | the type is only a little impenetrable |
| 21:33:32 | <c_wraith> | huh. I'm like one step away from rediscovering fodlr/build fusion |
| 21:33:38 | <c_wraith> | *foldr/build |
| 21:34:43 | → | Katarushisu1 joins (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) |
| 21:35:56 | <int-e> | :t GHC.Base.build |
| 21:35:57 | <lambdabot> | (forall b. (a -> b -> b) -> b -> b) -> [a] |
| 21:37:27 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 272 seconds) |
| 21:37:29 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:39:57 | × | Katarushisu1 quits (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat) |
| 21:41:30 | × | turlando quits (~turlando@user/turlando) (Remote host closed the connection) |
| 21:42:04 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 21:42:45 | → | turlando joins (~turlando@user/turlando) |
| 21:43:35 | × | hiredman quits (~hiredman@frontier1.downey.family) (Ping timeout: 260 seconds) |
| 21:43:57 | → | Katarushisu1 joins (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) |
| 21:48:10 | <c_wraith> | foldr/build is sort of a specific example of a hylomorphism. So it makes sense that you end up sort of close to it when you're playing with list cata/ana |
| 21:52:43 | → | pavonia joins (~user@user/siracusa) |
| 21:53:06 | × | michalz quits (~michalz@185.246.207.197) (Quit: ZNC 1.8.2 - https://znc.in) |
| 21:53:36 | → | Lycurgus joins (~georg@user/Lycurgus) |
| 21:53:42 | → | thegeekinside joins (~thegeekin@189.217.83.221) |
| 21:56:35 | → | noumenon joins (~noumenon@113.51-175-156.customer.lyse.net) |
| 22:12:00 | → | hiredman joins (~hiredman@frontier1.downey.family) |
| 22:21:25 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 264 seconds) |
| 22:24:53 | × | haftl quits (~user@user/haftl) (Remote host closed the connection) |
| 22:25:11 | → | dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 22:35:33 | → | Square2 joins (~Square4@user/square) |
| 22:43:07 | × | acidjnk_new quits (~acidjnk@p200300d6e737e7563c535b90a1f52aa7.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 22:43:30 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 22:46:34 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:54:33 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 22:55:28 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:00:09 | → | julie_pilgrim joins (~julie_pil@user/julie-pilgrim/x-1240752) |
| 23:05:06 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:06:57 | × | glguy quits (g@libera/staff/glguy) (Quit: Quit) |
| 23:08:02 | → | glguy joins (g@libera/staff/glguy) |
| 23:16:01 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:21:57 | × | bontaq quits (~user@ool-45779c03.dyn.optonline.net) (Ping timeout: 272 seconds) |
| 23:23:47 | × | julie_pilgrim quits (~julie_pil@user/julie-pilgrim/x-1240752) (Remote host closed the connection) |
| 23:23:52 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 23:24:08 | → | julie_pilgrim joins (~julie_pil@user/julie-pilgrim/x-1240752) |
| 23:26:00 | → | fraznel joins (~fuag1@c-73-221-56-19.hsd1.wa.comcast.net) |
| 23:27:07 | <fraznel> | hey all, i've been digging into the ghc alternatives and its very cool! I'm going off of haskell_ghc_illustrated for ghc 9 and it's mostly clicking but unclear around the stm data structure and atomically |
| 23:28:20 | <fraznel> | during an atomically box with multiple TVars, where do the intermediary thunks get stored and how is the Invariant check queue handled so that its an atomic commit on all at once, is there a lock per atomically block that itself aquires all locks of all tvars before commiting a block otherwise goes into a retry? Are tvar thunks evaluated fully before a commit? etc |
| 23:29:14 | <fraznel> | i see trec entries being added but its unclear how the multiple potential futures of those vars are represented or how the final invariant check is resolved. It's fine if the answer is "go look at the data structure source" but thought maybe there was a quicker answer here |
| 23:29:47 | <fraznel> | s/ghc alternatives/ghc internals/g |
| 23:30:50 | <fraznel> | actually it looks like the trecentries are those temporaries and it looks like possible the atomically box can be pre-empted into a retry by involved tvars changing maybe... Just not clear how the final commit is done atomically across all tvars involved |
| 23:32:45 | × | julie_pilgrim quits (~julie_pil@user/julie-pilgrim/x-1240752) (Remote host closed the connection) |
| 23:35:17 | × | tri quits (~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection) |
| 23:40:18 | <glguy> | fraznel: are you basically looking for a paper that describes how STM is implemented? |
| 23:41:59 | → | tri joins (~tri@ool-18bbef1a.static.optonline.net) |
| 23:46:23 | <fraznel> | no, just thought someone here might be like. oh yeah, they do take locks on all tvars prior to commits |
| 23:46:36 | <fraznel> | but like i said, comfy reading the source if thats the best place to find things out too |
| 23:48:11 | <fraznel> | happy to read a paper if there is one as well. But thought it was worth a shot asking in the channel before digging through the implementation |
| 23:49:18 | <EvanR> | I think transactions which don't overlap in any way won't block each other, one of the whole points of STM |
| 23:49:39 | <EvanR> | so no taking all locks on all TVars ever |
| 23:49:47 | × | tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 264 seconds) |
| 23:51:44 | <fraznel> | Yes but there has to be a reconciliation on multiple tvar atomically blocks on final commit still in some form, whether its with something like barriers / fences etc or locks. From what I understand now its an optimistic work model where they check if vars have been modified on final commit and rerun if needed with a possible pre-emption on involved vars changing during work |
| 23:56:47 | → | bontaq joins (~user@ool-45779c03.dyn.optonline.net) |
All times are in UTC on 2024-02-28.