Logs on 2024-03-31 (liberachat/#haskell)
| 00:11:06 | × | qqq quits (~qqq@92.43.167.61) (Quit: Lost terminal) |
| 00:16:11 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 264 seconds) |
| 00:17:10 | × | random-jellyfish quits (~developer@user/random-jellyfish) (Ping timeout: 268 seconds) |
| 00:19:59 | × | sadie_ quits (~sadie@c-76-155-235-153.hsd1.co.comcast.net) (Remote host closed the connection) |
| 00:22:05 | → | Batzy joins (~quassel@user/batzy) |
| 00:25:09 | → | rvalue joins (~rvalue@user/rvalue) |
| 00:36:12 | → | ddellacosta joins (~ddellacos@172.58.109.152) |
| 00:41:00 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 00:46:51 | → | hallucinagen joins (~prodmezha@138.199.53.244) |
| 00:49:28 | × | rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
| 00:49:50 | → | igemnace joins (~ian@user/igemnace) |
| 00:49:56 | → | rvalue joins (~rvalue@user/rvalue) |
| 00:56:29 | × | ddellacosta quits (~ddellacos@172.58.109.152) (Quit: WeeChat 4.2.1) |
| 01:16:47 | × | hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Ping timeout: 264 seconds) |
| 01:22:50 | → | fererrorocher joins (fererroroc@gateway/vpn/protonvpn/fererrorocher) |
| 01:34:31 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 01:51:35 | × | otto_s quits (~user@p4ff277a3.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 01:52:39 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 01:53:03 | → | otto_s joins (~user@p4ff27abc.dip0.t-ipconnect.de) |
| 01:58:31 | → | hughjfchen joins (~hughjfche@vmi556545.contaboserver.net) |
| 01:59:23 | × | hallucinagen quits (~prodmezha@138.199.53.244) (Ping timeout: 264 seconds) |
| 02:04:28 | × | td_ quits (~td@i53870929.versanet.de) (Ping timeout: 268 seconds) |
| 02:05:04 | × | op_4 quits (~tslil@user/op-4/x-9116473) (Remote host closed the connection) |
| 02:05:35 | → | op_4 joins (~tslil@user/op-4/x-9116473) |
| 02:05:58 | → | td_ joins (~td@i53870915.versanet.de) |
| 02:11:27 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Quit: peterbecich) |
| 02:11:39 | × | superbil quits (~superbil@1-34-176-171.hinet-ip.hinet.net) (*.net *.split) |
| 02:15:40 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 02:16:42 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
| 02:17:21 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 02:18:13 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Remote host closed the connection) |
| 02:19:09 | → | superbil joins (~superbil@1-34-176-171.hinet-ip.hinet.net) |
| 02:20:07 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 02:20:07 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 02:20:07 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 02:20:19 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 02:20:32 | → | califax joins (~califax@user/califx) |
| 02:20:33 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 02:20:35 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 02:20:40 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:22:20 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 02:22:21 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 02:22:42 | → | califax joins (~califax@user/califx) |
| 02:22:56 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:48:51 | × | pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer) |
| 02:49:12 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 02:49:17 | → | pavonia joins (~user@user/siracusa) |
| 02:54:18 | → | tri_ joins (~tri@172.59.8.159) |
| 02:57:35 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 264 seconds) |
| 03:03:29 | × | td_ quits (~td@i53870915.versanet.de) (Ping timeout: 272 seconds) |
| 03:05:04 | → | td_ joins (~td@i53870929.versanet.de) |
| 03:15:25 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 03:19:19 | × | tri_ quits (~tri@172.59.8.159) (Ping timeout: 272 seconds) |
| 03:24:48 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 03:27:14 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Remote host closed the connection) |
| 03:32:37 | → | aforemny_ joins (~aforemny@2001:9e8:6cf4:d100:2036:993f:679a:6cf6) |
| 03:32:51 | × | mmhat quits (~mmh@p200300f1c706a275ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.2.1) |
| 03:33:54 | × | phma quits (phma@2001:5b0:215d:ba58:a61a:48b0:3e33:afde) (Read error: Connection reset by peer) |
| 03:33:59 | × | aforemny quits (~aforemny@2001:9e8:6cd3:b600:153d:d7c7:d668:8838) (Ping timeout: 260 seconds) |
| 03:34:47 | → | phma joins (phma@2001:5b0:215a:b318:a23a:3f03:dc96:3e6d) |
| 03:49:44 | → | hallucinagen joins (~prodmezha@149.102.244.68) |
| 03:50:23 | × | fererrorocher quits (fererroroc@gateway/vpn/protonvpn/fererrorocher) (Quit: WeeChat 4.2.1) |
| 04:05:04 | × | zetef quits (~quassel@5.2.182.99) (Remote host closed the connection) |
| 04:05:36 | → | califax_ joins (~califax@user/califx) |
| 04:05:39 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 04:06:53 | califax_ | is now known as califax |
| 04:08:44 | → | tri_ joins (~tri@172.59.9.163) |
| 04:12:00 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 255 seconds) |
| 04:29:26 | × | igemnace quits (~ian@user/igemnace) (Quit: WeeChat 4.2.1) |
| 04:43:51 | → | falafel joins (~falafel@185.156.46.159) |
| 04:45:05 | × | falafel quits (~falafel@185.156.46.159) (Remote host closed the connection) |
| 04:45:30 | → | falafel joins (~falafel@185.156.46.159) |
| 04:54:16 | × | nisstyre quits (wes@user/nisstyre) (Quit: WeeChat 3.7.1) |
| 05:10:31 | → | falafel_ joins (~falafel@162.83.249.190) |
| 05:12:53 | × | falafel quits (~falafel@185.156.46.159) (Ping timeout: 240 seconds) |
| 05:15:05 | × | otlesfenrtf^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection) |
| 05:18:56 | → | Lycurgus joins (~georg@user/Lycurgus) |
| 05:20:13 | × | Pozyomka quits (~pyon@user/pyon) (Ping timeout: 246 seconds) |
| 05:25:17 | × | bilegeek quits (~bilegeek@2600:1008:b09d:de0f:4083:7125:d524:fe72) (Ping timeout: 240 seconds) |
| 05:27:28 | akspecs_ | is now known as akspecs |
| 05:27:55 | × | akspecs quits (00cc8321af@2a03:6000:1812:100::11a) (Changing host) |
| 05:27:55 | → | akspecs joins (00cc8321af@sourcehut/user/akspecs) |
| 05:30:03 | × | akspecs quits (00cc8321af@sourcehut/user/akspecs) (Remote host closed the connection) |
| 05:30:12 | → | akspecs_ joins (00cc8321af@2a03:6000:1812:100::11a) |
| 05:30:55 | → | Pozyomka joins (~pyon@user/pyon) |
| 05:31:09 | × | akspecs_ quits (00cc8321af@2a03:6000:1812:100::11a) (Remote host closed the connection) |
| 05:31:17 | → | akspecs joins (00cc8321af@sourcehut/user/akspecs) |
| 05:33:56 | → | qqq joins (~qqq@92.43.167.61) |
| 05:36:54 | → | Patternmaster joins (~georg@user/Patternmaster) |
| 05:39:03 | × | Patternmaster quits (~georg@user/Patternmaster) (Client Quit) |
| 05:40:36 | → | Patternmaster joins (~georg@user/Patternmaster) |
| 05:53:39 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 05:53:57 | → | califax joins (~califax@user/califx) |
| 05:55:00 | × | Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving) |
| 06:00:08 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 06:03:03 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 06:09:20 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 06:13:02 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 06:13:38 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 06:16:40 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 06:17:07 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 06:26:24 | × | hallucinagen quits (~prodmezha@149.102.244.68) (Read error: Connection reset by peer) |
| 06:29:48 | × | tri_ quits (~tri@172.59.9.163) (Remote host closed the connection) |
| 06:30:24 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 06:30:45 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 06:32:34 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit) |
| 06:48:14 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 06:55:08 | → | nisstyre joins (wes@user/nisstyre) |
| 07:00:01 | × | tt12310 quits (~tt1231@2603-6010-8700-4a81-219f-50d3-618a-a6ee.res6.spectrum.com) (Quit: The Lounge - https://thelounge.chat) |
| 07:02:23 | × | falafel_ quits (~falafel@162.83.249.190) (Ping timeout: 264 seconds) |
| 07:02:31 | → | tt12310 joins (~tt1231@2603-6010-8700-4a81-219f-50d3-618a-a6ee.res6.spectrum.com) |
| 07:08:51 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 07:25:14 | → | jorj joins (~jorj@user/jorj) |
| 07:42:49 | × | jorj quits (~jorj@user/jorj) (Quit: jorj) |
| 07:47:19 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:11:18 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 08:22:17 | → | dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 08:38:51 | → | gmg joins (~user@user/gehmehgeh) |
| 08:48:59 | × | fedorafan quits (~fedorafan@user/fedorafan) (Ping timeout: 260 seconds) |
| 08:59:43 | × | tzh quits (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz) |
| 09:13:44 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Remote host closed the connection) |
| 09:14:07 | → | dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 09:20:53 | → | jespada_ joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
| 09:24:27 | × | jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 260 seconds) |
| 09:24:27 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 252 seconds) |
| 09:39:29 | <Inst> | hmmm |
| 09:39:47 | <Inst> | i hope this isn't too stupid for you, but is it possible to build a nix... actually, if you have nix, you don't really need Haskell :) |
| 09:40:06 | <Inst> | the idea of using Nixlang as a basis for an eDSL for web pages |
| 09:58:27 | → | jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
| 10:00:32 | <srk> | Inst: https://code.tvl.fyi/tree/users/sterni/nix/html/README.md :) |
| 10:01:18 | × | jespada_ quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 252 seconds) |
| 10:01:46 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 10:02:59 | <ncf> | #haskell-offtopic |
| 10:04:51 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 268 seconds) |
| 10:05:36 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 10:09:27 | <Inst> | well it wasn't off-topic, I was planning to have it done via Haskell, and jeez |
| 10:16:22 | <ncf> | this is a channel about the haskell programming language, not a place to discuss your personal projects that may or may not involve haskell |
| 10:18:14 | → | jinsun_ joins (~jinsun@user/jinsun) |
| 10:18:14 | jinsun | is now known as Guest148 |
| 10:18:14 | × | Guest148 quits (~jinsun@user/jinsun) (Killed (copper.libera.chat (Nickname regained by services))) |
| 10:18:14 | jinsun_ | is now known as jinsun |
| 10:28:15 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 10:29:12 | <hammond> | yeah Inst, you went too far this time. |
| 10:29:32 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds) |
| 10:29:34 | <Inst> | okay, i'll be less irritating then |
| 10:29:37 | Lord_of_Life_ | is now known as Lord_of_Life |
| 10:29:39 | <hammond> | xD |
| 10:34:49 | → | jamesmartinez joins (uid6451@id-6451.helmsley.irccloud.com) |
| 10:50:58 | × | paul_j quits (~user@8.190.187.81.in-addr.arpa) (Remote host closed the connection) |
| 10:51:37 | → | tri_ joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 10:52:03 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 255 seconds) |
| 10:58:49 | × | Square2 quits (~Square@user/square) (Ping timeout: 255 seconds) |
| 11:03:22 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 11:07:39 | → | mechap joins (~mechap@user/mechap) |
| 11:11:08 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
| 11:23:48 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 11:41:00 | → | kuribas joins (~user@ptr-17d51eo5ejgrzwny9lg.18120a2.ip6.access.telenet.be) |
| 11:41:56 | × | son0p quits (~ff@152.203.72.114) (Remote host closed the connection) |
| 11:42:24 | → | mmhat joins (~mmh@p200300f1c706a275ee086bfffe095315.dip0.t-ipconnect.de) |
| 11:44:20 | × | kuribas quits (~user@ptr-17d51eo5ejgrzwny9lg.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
| 11:45:49 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:57:11 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 11:57:13 | → | kuribas joins (~user@ptr-17d51eo5ejgrzwny9lg.18120a2.ip6.access.telenet.be) |
| 11:57:39 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 11:59:01 | → | son0p joins (~ff@152.203.72.114) |
| 12:09:27 | → | __monty__ joins (~toonn@user/toonn) |
| 12:12:08 | → | dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 12:16:49 | × | mjs2600 quits (~mjs2600@c-174-169-225-239.hsd1.vt.comcast.net) (Ping timeout: 268 seconds) |
| 12:20:43 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 12:44:29 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 12:55:05 | <kuribas> | I cannot call wreq without doing any redirects? |
| 12:58:27 | <kuribas> | Well, I can set a redirectCount limit, then catch the exception, that's rather ugly. |
| 13:10:11 | <jackdk> | these days I stick with http-conduit. It's already in the depgraph of basically everything anyway |
| 13:16:42 | × | mmhat quits (~mmh@p200300f1c706a275ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 13:17:04 | → | mmhat joins (~mmh@p200300f1c706a26eee086bfffe095315.dip0.t-ipconnect.de) |
| 13:21:44 | → | acidjnk_new joins (~acidjnk@p200300d6e714dc446d52a2431789bf32.dip0.t-ipconnect.de) |
| 13:23:25 | × | tri_ quits (~tri@ool-18bc2e74.dyn.optonline.net) (Read error: Connection reset by peer) |
| 13:23:57 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 13:27:03 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 13:44:39 | → | fererrorocher joins (fererroroc@gateway/vpn/protonvpn/fererrorocher) |
| 13:46:08 | × | FragByte quits (~christian@user/fragbyte) (Ping timeout: 256 seconds) |
| 13:46:59 | → | FragByte joins (~christian@user/fragbyte) |
| 13:55:42 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds) |
| 13:55:49 | → | naso joins (~naso@202.115.218.139.sta.wbroadband.net.au) |
| 13:57:30 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 13:57:40 | × | naso quits (~naso@202.115.218.139.sta.wbroadband.net.au) (Changing host) |
| 13:57:40 | → | naso joins (~naso@user/naso) |
| 13:57:49 | → | Achylles joins (~Achylles_@45.182.57.45) |
| 14:00:14 | × | naso quits (~naso@user/naso) (Remote host closed the connection) |
| 14:00:35 | → | naso joins (~naso@user/naso) |
| 14:02:40 | × | naso quits (~naso@user/naso) (Remote host closed the connection) |
| 14:05:32 | → | halloy6709 joins (~halloy670@202.115.218.139.sta.wbroadband.net.au) |
| 14:05:42 | × | halloy6709 quits (~halloy670@202.115.218.139.sta.wbroadband.net.au) (Remote host closed the connection) |
| 14:06:25 | → | naso joins (~naso@202.115.218.139.sta.wbroadband.net.au) |
| 14:06:25 | × | naso quits (~naso@202.115.218.139.sta.wbroadband.net.au) (Changing host) |
| 14:06:25 | → | naso joins (~naso@user/naso) |
| 14:06:49 | × | naso quits (~naso@user/naso) (Remote host closed the connection) |
| 14:07:21 | → | nilradical joins (~nilradica@user/naso) |
| 14:07:49 | × | Etabeta1 quits (~Etabeta1@176.207.241.56) (Changing host) |
| 14:07:49 | → | Etabeta1 joins (~Etabeta1@user/Etabeta1) |
| 14:08:23 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 14:14:45 | Achylles | is now known as Achylles_ |
| 14:15:00 | Achylles_ | is now known as GROUP |
| 14:16:10 | GROUP | is now known as Achylles_ |
| 14:16:35 | → | chexum_ joins (~quassel@gateway/tor-sasl/chexum) |
| 14:17:28 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
| 14:18:50 | Achylles_ | is now known as Achylles |
| 14:32:31 | <haskellbridge> | <eldritchcookie> people that use stack why? |
| 14:51:15 | → | nilradical joins (~nilradica@user/naso) |
| 14:52:05 | → | jespada_ joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
| 14:52:23 | <duncan> | pinned package versions is great |
| 14:54:04 | × | jespada_ quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Client Quit) |
| 14:55:57 | × | jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 255 seconds) |
| 14:57:18 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 260 seconds) |
| 14:57:23 | → | jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
| 15:04:20 | → | jespada_ joins (~jespada@85.255.232.146) |
| 15:05:19 | → | r5c4571lh01987 joins (~rscastilh@179.221.142.8) |
| 15:07:04 | → | Ram-Z joins (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) |
| 15:07:35 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 15:08:01 | × | jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 272 seconds) |
| 15:08:02 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds) |
| 15:08:23 | × | op_4 quits (~tslil@user/op-4/x-9116473) (Remote host closed the connection) |
| 15:08:57 | → | op_4 joins (~tslil@user/op-4/x-9116473) |
| 15:09:51 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 15:12:37 | → | igemnace joins (~ian@user/igemnace) |
| 15:15:38 | × | doyougnu quits (~doyougnu@045-046-170-068.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 15:15:55 | → | doyougnu joins (~doyougnu@045-046-170-068.res.spectrum.com) |
| 15:16:38 | <geekosaur> | eldritchcookie, there are advantages to starting from a known-good set of package versions, as duncan commented. cabal's answer to this is freeze files, but they can go a bit too far as your code may work with multiple stackage snapshots but a freeze file locks you to a single version of every dependency |
| 15:17:52 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 15:17:53 | <int-e> | plus there's history |
| 15:18:16 | <haskellbridge> | <eldritchcookie> cool |
| 15:19:00 | <int-e> | (cabal-install is pretty different from what it was when stack came around) |
| 15:25:49 | <geekosaur> | (thankfully) |
| 15:26:04 | <geekosaur> | cabal 1.x was a mess |
| 15:26:14 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 15:26:46 | × | jespada_ quits (~jespada@85.255.232.146) (Read error: Connection reset by peer) |
| 15:27:32 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 15:28:34 | → | gmg joins (~user@user/gehmehgeh) |
| 15:29:21 | → | jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
| 15:29:59 | → | pavonia joins (~user@user/siracusa) |
| 15:48:24 | × | kuribas quits (~user@ptr-17d51eo5ejgrzwny9lg.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
| 15:58:21 | → | kuribas joins (~user@ptr-17d51eo5ejgrzwny9lg.18120a2.ip6.access.telenet.be) |
| 16:05:09 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection) |
| 16:05:21 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 16:10:12 | × | r5c4571lh01987 quits (~rscastilh@179.221.142.8) (Remote host closed the connection) |
| 16:10:50 | → | r5c4571lh01987 joins (~rscastilh@179.221.142.8) |
| 16:12:25 | × | r5c4571lh01987 quits (~rscastilh@179.221.142.8) (Remote host closed the connection) |
| 16:19:19 | → | r5c4571lh01987 joins (~rscastilh@179.221.142.8) |
| 16:20:34 | × | r5c4571lh01987 quits (~rscastilh@179.221.142.8) (Remote host closed the connection) |
| 16:21:02 | × | igemnace quits (~ian@user/igemnace) (Read error: Connection reset by peer) |
| 16:24:28 | × | mmhat quits (~mmh@p200300f1c706a26eee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.2.1) |
| 16:25:08 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 16:25:51 | → | r5c4571lh01987 joins (rscastilho@179.221.142.8) |
| 16:27:46 | → | zetef joins (~quassel@5.2.182.99) |
| 16:30:40 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 16:32:43 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection) |
| 16:32:56 | → | tri joins (~tri@ool-18bc2e74.dyn.optonline.net) |
| 16:35:02 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:36:07 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 16:37:10 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 16:37:13 | × | tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 255 seconds) |
| 16:38:35 | → | igemnace joins (~ian@user/igemnace) |
| 16:39:03 | × | rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
| 16:39:33 | → | rvalue joins (~rvalue@user/rvalue) |
| 16:43:21 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 16:56:26 | × | zetef quits (~quassel@5.2.182.99) (Remote host closed the connection) |
| 16:59:56 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 17:01:46 | → | tzh joins (~tzh@c-73-164-206-160.hsd1.or.comcast.net) |
| 17:02:32 | × | Achylles quits (~Achylles_@45.182.57.45) (Remote host closed the connection) |
| 17:04:44 | <haskellbridge> | <sm> eldritchcookie: UX, reproducibility focus, modern codebase, stability |
| 17:05:02 | <haskellbridge> | <sm> eldritchcookie: UX, reproducibility focus, modern codebase, stability, easier to support |
| 17:06:31 | → | aljazmc joins (~aljazmc@user/aljazmc) |
| 17:06:37 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 17:12:52 | <haskellbridge> | <eldritchcookie> ok in which way is UX better than cabal-install? |
| 17:19:10 | <cheater> | we already had sandboxes when stack came around, building stack was an unforced error |
| 17:20:52 | <cheater> | is stack being maintained nowadays? |
| 17:23:54 | × | YoungFrog quits (~youngfrog@2a02:a03f:c9db:fc00:dc64:8456:22b9:2c5f) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in) |
| 17:24:13 | <haskellbridge> | <sm> eldritchcookie: it's best to spend time with both, then you'll know what each is better at |
| 17:24:14 | → | YoungFrog joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) |
| 17:25:05 | <haskellbridge> | <sm> cheater: yes, there's an active maintainer these days, and a matrix room (#haskell-stack:matrix.org ) |
| 17:25:32 | <cheater> | @sm that wasn't the case for a long time, was it? |
| 17:25:32 | <lambdabot> | Come on, let's all slap that wasn't the case for a long time, was it? |
| 17:25:44 | <cheater> | er |
| 17:25:50 | <cheater> | oookay lambdabot |
| 17:26:01 | <geekosaur> | sandboxes came after the first version of stack iirc |
| 17:26:21 | <haskellbridge> | <sm> there was a period when the lead maintainer (Michael Snoyman) announced he was stepping down and called for someone new, until Mike Pilgrem arrived. I don't remember how long that was |
| 17:26:32 | × | r5c4571lh01987 quits (rscastilho@179.221.142.8) (Remote host closed the connection) |
| 17:26:58 | <int-e> | @smack |
| 17:26:58 | lambdabot | pokes in the eye |
| 17:28:55 | <geekosaur> | (it's actually @slap iirc. yay edit distance) |
| 17:29:38 | <cheater> | is there any sort of logic between the shape of nested dot operators like ((.).(.)).((.).) and their type sig? |
| 17:29:41 | <int-e> | geekosaur: it's both; the plugin is indeed called "slap" though |
| 17:29:57 | <cheater> | other than, you know, the haskell type system |
| 17:30:23 | <cheater> | int-e: at least we have @protontorpedo again |
| 17:30:35 | <cheater> | removing it was one of the greatest mistakes in haskell history |
| 17:30:44 | <int-e> | geekosaur: I'm pretty sure that @sm is interpreted as @smack, not @slap :) |
| 17:30:52 | <cheater> | almost as bad as lens |
| 17:31:07 | <int-e> | without focus |
| 17:31:11 | <haskellbridge> | <sm> may I request that feature be turned off :) |
| 17:31:55 | → | dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 17:33:01 | <ski> | @type (.) . (.) . (.) |
| 17:33:02 | <lambdabot> | (b -> c) -> (a1 -> a2 -> a3 -> b) -> a1 -> a2 -> a3 -> c |
| 17:33:09 | <ski> | @type (.) . (.) . (.) . (.) |
| 17:33:09 | <lambdabot> | (b -> c) -> (a1 -> a2 -> a3 -> a4 -> b) -> a1 -> a2 -> a3 -> a4 -> c |
| 17:33:48 | ski | calls those, `(::.)' resp `(:::.)' |
| 17:34:24 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:35:07 | <ncf> | :t fmap . fmap . fmap . fmap |
| 17:35:08 | <lambdabot> | (Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b) -> f1 (f2 (f3 (f4 a))) -> f1 (f2 (f3 (f4 b))) |
| 17:35:35 | <ski> | cheater : `(f .)' "focuses" on the result type of a function, letting `f' operate on it. `(. f)' similarly focuses on the argument type. `map f' "focuses on list elements" |
| 17:35:37 | <ncf> | :t traverse . traverse . traverse . traverse |
| 17:35:37 | <lambdabot> | (Applicative f, Traversable t1, Traversable t2, Traversable t3, Traversable t4) => (a -> f b) -> t1 (t2 (t3 (t4 a))) -> f (t1 (t2 (t3 (t4 b)))) |
| 17:35:42 | <ski> | @where SEC |
| 17:35:42 | <lambdabot> | http://conal.net/blog/posts/semantic-editor-combinators/ |
| 17:36:14 | <ski> | (and you can guess what `first' and `second' does, i hope) |
| 17:36:15 | → | r5c4571lh01987 joins (~rscastilh@179.221.142.8) |
| 17:38:30 | × | r5c4571lh01987 quits (~rscastilh@179.221.142.8) (Remote host closed the connection) |
| 17:43:42 | <ski> | @type traverse :: Traversable t => (a -> State s b) -> (t a -> State s (t b)) |
| 17:43:43 | <lambdabot> | Traversable t => (a -> State s b) -> t a -> State s (t b) |
| 17:43:51 | <ski> | @type mapAccumL |
| 17:43:52 | <lambdabot> | Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c) |
| 17:44:12 | <ski> | @type ((state . (swap .)) .) . flip . mapAccumL . flip . (((swap .) . runState) .) :: Traversable t => (a -> State s b) -> (t a -> State s (t b)) |
| 17:44:12 | <lambdabot> | Traversable t => (a -> State s b) -> t a -> State s (t b) |
| 17:44:16 | × | kuribas quits (~user@ptr-17d51eo5ejgrzwny9lg.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
| 17:44:37 | <ski> | (see if you can follow that, if you like, cheater) |
| 17:44:50 | <cheater> | erm |
| 17:45:09 | <cheater> | i was thinking more of, if the parens will have that shape, then there will be that many arrows in that argument |
| 17:45:24 | <cheater> | like if you do |
| 17:45:25 | <cheater> | @type ((.).(.)).((.).) |
| 17:45:26 | <lambdabot> | (b1 -> b2 -> c) -> (a1 -> a2 -> b1) -> a1 -> a2 -> (a3 -> b2) -> a3 -> c |
| 17:45:56 | <cheater> | first argument is a function of 2 args, 2nd arg has 2 args, third has 0, fourth has 0, fifth has 1, sixth has 0 |
| 17:46:02 | <cheater> | 2, 2, 0, 0, 1, 0 |
| 17:46:28 | <ski> | `((.).(.)).((.).)' is the same as `(.).(.).((.).)', no need to add in those redundant brackets, unless you want to emphasize that grouping |
| 17:46:31 | <cheater> | i was wondering how these numbers relate to the structure of ((.).(.)).((.).) if looked at as a tree |
| 17:47:09 | <ski> | i don't really have a usecase ready, offhand, for when `((.) .)' (aka `(.) (.)'), would be useful |
| 17:47:23 | <cheater> | not particularly, i didn't really look at it too hard to spot that this set of parens is unneeded, it's just a random example |
| 17:47:34 | <cheater> | @type (.) (.) |
| 17:47:35 | <lambdabot> | (a1 -> b -> c) -> a1 -> (a2 -> b) -> a2 -> c |
| 17:48:05 | <cheater> | it's useful for when eg you want to add a float and int |
| 17:48:34 | <cheater> | > ((.) (.)) (+) 2.2 fromIntegral 3 |
| 17:48:35 | <lambdabot> | 5.2 |
| 17:48:46 | <ski> | the `(.) . (.)' initial part is just `(:.)', aka `\f g x y -> f (g x y)', passing along two curried parameters to `g', passing its result to `f' |
| 17:49:19 | <cheater> | it's useful to do a thing on two things that are *almost* compatible but you have to convert one of the two things by one step |
| 17:49:34 | <ski> | well .. i guess i'd prefer `fromIntegral' to come before `2.2', in that example |
| 17:49:57 | <cheater> | but it's applied to 3 |
| 17:50:17 | <cheater> | it's probably prettier to write 2.2 + (fromIntegral 3) anyways |
| 17:50:27 | <cheater> | > 2.2 + (fromIntegral 3) |
| 17:50:28 | <lambdabot> | 5.2 |
| 17:50:32 | <cheater> | works just as well |
| 17:50:39 | <cheater> | no weird pointless form |
| 17:50:45 | <cheater> | but, you know |
| 17:50:48 | <cheater> | if you're asking what it's good for |
| 17:50:52 | <cheater> | that's what it's good for |
| 17:52:11 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 264 seconds) |
| 17:52:44 | → | noumenon joins (~noumenon@113.51-175-156.customer.lyse.net) |
| 17:52:50 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 17:53:02 | <ski> | > ((. flip (.)) . flip (.)) (+) fromIntegral 2.2 3 -- this looks hideous |
| 17:53:03 | <lambdabot> | 5.2 |
| 17:53:09 | <ski> | > ((. fromIntegral) . (+)) 2.2 3 -- only slightly better |
| 17:53:10 | <lambdabot> | 5.2 |
| 17:54:19 | <ski> | (oh, and the brackets around the call to `fromIntegral' there are also redundant) |
| 17:55:05 | → | michalz joins (~michalz@185.246.207.200) |
| 17:55:40 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 17:56:50 | <ski> | > ((.) . flip (.)) fromIntegral (+) 2.2 3 |
| 17:56:51 | <lambdabot> | 5.2 |
| 17:59:29 | → | r5c4571lh01987 joins (rscastilho@179.221.142.8) |
| 18:01:10 | <cheater> | i think the original was best... |
| 18:01:30 | <cheater> | but... shrug haha |
| 18:01:44 | <cheater> | stuff like that is useful in a language that doesn't have lambda syntax... |
| 18:01:59 | <cheater> | otherwise you just do \x y -> x + (fromIntegral y) |
| 18:02:50 | → | rvalue joins (~rvalue@user/rvalue) |
| 18:03:17 | <ski> | mild usage of pointless can be potentially nicer |
| 18:03:50 | × | r5c4571lh01987 quits (rscastilho@179.221.142.8) (Remote host closed the connection) |
| 18:14:50 | <Inst> | how do you debug pointless anyways? |
| 18:15:16 | <Inst> | i ended up debugging a pointfree function chain by converting it to accum parameter instead, and tbh the latter was more readable :( |
| 18:17:23 | <Inst> | i mean you can always stuff in traceshowid |
| 18:17:32 | <ski> | in that case, use the pointful |
| 18:18:10 | <ski> | (in case it's more readable, to be clear) |
| 18:18:29 | <ski> | (but, to some extent, "more readable" is a matter of familiarity) |
| 18:19:40 | <ski> | i'm used enough to reading `(foo .)' and `(. bar)', that they don't seem inscrutable, to me |
| 18:20:33 | <Inst> | when you get to multi-arg pointfree, imo, you're going too far |
| 18:20:38 | <ski> | (but i wouldn't use the examples above (below the `mapAccumL' one), repeatedly) |
| 18:21:03 | <ski> | `foo :. bar',`foo ::. baz' is also ok, imho |
| 18:21:17 | <ski> | but, generally, yes, that tends to be the case |
| 18:23:22 | <ski> | it can still be fun, now and again, to try to see whether you can pointless some lambda (manually, mind, *not* using an automatic translator. well, sometimes it can give a nice result, but often it will miss it, for a hairy one. or, more commonly perhaps, there simply is no non-hairy one) .. only sometimes do i find some interesting pattern, and only sometimes would i actually use the result in practice |
| 18:23:47 | <ski> | it's still a nice mental gymnastics exercise, at least if you like puzzley things |
| 18:26:18 | <Inst> | wait, have you ever tried curry / uncurry for pf? |
| 18:26:34 | <Inst> | as in, you avoid (.).(.) etc via curry and uncurry strategically placed? |
| 18:27:25 | → | mjs2600 joins (~mjs2600@c-174-169-225-239.hsd1.vt.comcast.net) |
| 18:27:46 | <ski> | "have you ever tried curry / uncurry for pf?" -- yes, .. is that not obvious ? |
| 18:28:24 | <ski> | haven't really thought of `curry' & `uncurry' as being in opposition to `(:.)', though |
| 18:29:59 | × | mei quits (~mei@user/mei) (Quit: mei) |
| 18:33:31 | → | mei joins (~mei@user/mei) |
| 18:41:42 | × | igemnace quits (~ian@user/igemnace) (Quit: WeeChat 4.2.1) |
| 18:46:41 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:47:23 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:50:10 | × | noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Remote host closed the connection) |
| 18:50:35 | → | noumenon joins (~noumenon@113.51-175-156.customer.lyse.net) |
| 18:51:53 | × | noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Remote host closed the connection) |
| 18:57:02 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 268 seconds) |
| 18:58:12 | → | ft joins (~ft@mue-88-130-107-219.dsl.tropolys.de) |
| 19:06:59 | × | gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
| 19:13:03 | → | gentauro joins (~gentauro@user/gentauro) |
| 19:13:46 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:22:03 | × | aljazmc quits (~aljazmc@user/aljazmc) (Remote host closed the connection) |
| 19:22:44 | → | aljazmc joins (~aljazmc@user/aljazmc) |
| 19:24:35 | × | aljazmc quits (~aljazmc@user/aljazmc) (Remote host closed the connection) |
| 19:25:05 | → | aljazmc joins (~aljazmc@user/aljazmc) |
| 19:50:28 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 19:59:58 | × | mjs2600 quits (~mjs2600@c-174-169-225-239.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in) |
| 20:01:54 | → | mjs2600 joins (~mjs2600@c-174-169-225-239.hsd1.vt.comcast.net) |
| 20:18:32 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 20:33:00 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 255 seconds) |
| 20:39:17 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 20:52:39 | × | aljazmc quits (~aljazmc@user/aljazmc) (Quit: Leaving) |
| 20:52:44 | × | michalz quits (~michalz@185.246.207.200) (Quit: ZNC 1.8.2 - https://znc.in) |
| 21:04:25 | <cheater> | i feel like pointless is the best if your mental model is that of eg working with a stack of some sort of arguments |
| 21:04:48 | <cheater> | and then you can generalize this and instead of stack you could have a tree or whatever maybe, idk, i'd have to think about how i'd do it |
| 21:05:18 | <ski> | stack, as in concatenative languages ? |
| 21:06:00 | <cheater> | yes |
| 21:06:46 | <cheater> | like eg |
| 21:07:04 | <cheater> | you could have ifthenelse pred then else |
| 21:07:22 | <cheater> | ifthenelse :: Bool -> a -> a -> a |
| 21:08:02 | <cheater> | and you can kind of think of the stack being True 2 3 |
| 21:08:06 | <cheater> | and then you do something like |
| 21:08:21 | <cheater> | double . ifthenelse |
| 21:08:34 | <cheater> | and the stack still being True 2 3 yields 4 |
| 21:09:29 | <cheater> | and operators such as ifthenelse that choose program flow between two parts of the stack, essentially allow you to have tree-shaped arguments |
| 21:09:49 | <ski> | > run (push 3 . dup . push 5 . swp . minus . times) |
| 21:09:51 | <lambdabot> | 6 |
| 21:10:07 | × | [exa] quits (~exa@user/exa/x-3587197) (Quit: WeeChat 4.2.1) |
| 21:10:19 | <cheater> | yea no idea how to read those ;) too long for me |
| 21:10:35 | <cheater> | what i'm saying though is you could easily imagine other kinds of functions that eg work with rose trees, deques, whatever |
| 21:10:36 | <ski> | `3 dup 5 swap - *', in Forth |
| 21:10:47 | <cheater> | yeah i still don't know how to read that |
| 21:10:51 | <cheater> | like i could probably figure it out |
| 21:10:54 | <cheater> | but it's also 11 pm |
| 21:10:59 | <cheater> | and i'm reading some rust |
| 21:11:01 | <cheater> | and i don't know rust |
| 21:11:10 | <cheater> | so i'm at the limit of my polyglocy right now |
| 21:11:15 | <ski> | it computes `3 * (5 - 3)' |
| 21:12:09 | <ski> | "working with a stack of some sort of arguments","and you can kind of think of the stack being True 2 3" -- which is what my combinators above do |
| 21:12:28 | <cheater> | i'd have expected push to happen first |
| 21:12:30 | <cheater> | not last |
| 21:12:39 | <ski> | `push' does happen first |
| 21:12:50 | <ski> | (read left-to-right) |
| 21:12:57 | <cheater> | why am i reading left to right? |
| 21:13:09 | <ski> | .. because, well .. |
| 21:13:20 | <ski> | check types of the combinators ? |
| 21:13:44 | <ski> | @type minus |
| 21:13:45 | <lambdabot> | Num t1 => (t1 -> t2) -> t1 -> t1 -> t2 |
| 21:13:50 | <ski> | @type dup |
| 21:13:51 | <lambdabot> | (t1 -> t1 -> t2) -> t1 -> t2 |
| 21:13:52 | <ski> | @type swp |
| 21:13:53 | <lambdabot> | (t1 -> t2 -> t3) -> t2 -> t1 -> t3 |
| 21:13:55 | <ski> | @type push |
| 21:13:56 | <lambdabot> | t1 -> (t1 -> t2) -> t2 |
| 21:14:09 | <ski> | .. these are written, using CPS |
| 21:14:23 | <ski> | and CPS tends to turn things "inside out". that's why you're reading left-to-right |
| 21:15:00 | <ski> | (also cf. optics composition .. basically same phenomenon) |
| 21:15:06 | <cheater> | hmm ok |
| 21:15:24 | <ski> | @type run |
| 21:15:25 | <lambdabot> | ((a -> a) -> t) -> t |
| 21:15:27 | ncf | . o O ( "CPS-based functional references" ) |
| 21:15:34 | <cheater> | where do those come from |
| 21:15:36 | <cheater> | did you write them |
| 21:15:51 | <ski> | the pro of this approach is that it supports heterogenous stack, automatically |
| 21:15:57 | <ski> | yep, i did |
| 21:16:00 | <ncf> | cheater: ski can project any combinator from his brain directly onto lambdabot |
| 21:16:34 | <ski> | (i came up with this idea, many years ago. .. i think maybe around twenty or something ?) |
| 21:16:48 | <cheater> | what is the source for minus ? |
| 21:17:06 | <cheater> | ncf: i believe that |
| 21:17:11 | <ski> | minus k x y = k (y - x) |
| 21:18:12 | <ski> | for the example above |
| 21:18:17 | <ski> | run (push 3 . dup . push 5 . swp . minus . times) |
| 21:18:26 | <ski> | = (push 3 . dup . push 5 . swp . minus . times) id |
| 21:19:09 | <ski> | = push 3 (dup (push 5 (swp (minus (times id))))) |
| 21:19:17 | <ski> | = dup (push 5 (swp (minus (times id)))) 3 |
| 21:19:23 | <ski> | = push 5 (swp (minus (times id))) 3 3 |
| 21:19:31 | <ski> | = swp (minus (times id)) 3 3 5 |
| 21:19:48 | <ski> | er, actually |
| 21:19:52 | <ski> | = swp (minus (times id)) 5 3 3 |
| 21:20:04 | <ski> | = minus (times id) 3 5 3 |
| 21:20:19 | <ski> | = times id (5 - 3) 3 |
| 21:20:29 | <ski> | = id (3 * (5 - 3)) |
| 21:20:33 | <ski> | = 3 * (5 - 3) |
| 21:20:37 | <ski> | = 3 * 2 |
| 21:20:39 | <ski> | = 6 |
| 21:20:40 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 21:20:57 | <ski> | cheater : makes more sense, now, how the arguments act like a stack ? |
| 21:21:03 | <cheater> | yes |
| 21:21:10 | <cheater> | but could they be a tree instead? |
| 21:21:34 | <cheater> | it's so weird because |
| 21:22:16 | <ski> | "and operators such as ifthenelse that choose program flow between two parts of the stack, essentially allow you to have tree-shaped arguments" -- hmm |
| 21:22:22 | <ski> | i don't really follow this |
| 21:22:42 | <cheater> | with a c-like, you could always say: the arguments are a tuple, f(x, y z). so if the arguments were a tree, we'd have f(x,((y, z), (u, v))) |
| 21:22:57 | <cheater> | but i wonder what the haskell equivalent would be |
| 21:23:03 | <cheater> | we separate arguments with spaces |
| 21:23:19 | <cheater> | what would the ergonomic syntax be for a tree? |
| 21:23:48 | <ski> | .. tuples ? |
| 21:24:47 | <ski> | `(a,b) -> c' is equivalent to `a -> b -> c'. how would you represent the nested structure of the argument type in `((a,b,c),(d,e)) -> f', in a curried form ? |
| 21:24:48 | <cheater> | idk if that's so ergonomic |
| 21:25:03 | <cheater> | yeah |
| 21:25:06 | <cheater> | that's a good question |
| 21:25:10 | <cheater> | maybe via a graph? |
| 21:25:17 | → | Silver_X joins (~Silver_X@182.178.140.82) |
| 21:25:41 | <cheater> | big braces } |
| 21:25:55 | <cheater> | a b c } |
| 21:26:01 | <cheater> | } -> f |
| 21:26:05 | <cheater> | d e } |
| 21:26:16 | <cheater> | now if those three braces all aligned that would be better |
| 21:26:29 | <cheater> | i guess more like |
| 21:26:37 | <cheater> | a -> b -> c -> } |
| 21:26:45 | <ski> | .. reminds me of a CPSed tree type i experimented with, that separated the branching structure of the tree, from the payload (the elements stored in the nodes). so that you'd first give the branching structure (in depth-first traversal order), and then the payload as a nested pair structure |
| 21:26:51 | <cheater> | } -> f |
| 21:27:06 | <cheater> | d -> e -> } |
| 21:27:39 | <cheater> | the question is though |
| 21:27:48 | <cheater> | what would the meaning be of such a branched type signature? |
| 21:27:51 | <cheater> | etc |
| 21:28:44 | <cheater> | polymorphism? |
| 21:29:12 | <ski> | like representing `B 2 (B 3 N N) (B 5 (B 7 N N) N)' as something like (not exactly) `(Br . Br . Ni . Ni . Br . Br . Ni . Ni . Ni) (2,(3,(),()),(5,(7,(),()),()))' |
| 21:29:52 | <cheater> | Syntax error: not enough shrubberies |
| 21:30:53 | <ski> | cheater : would that type be represented by a tree (and if so, what's its nesting structure) ? |
| 21:31:04 | <cheater> | what type? |
| 21:31:10 | <cheater> | the one i wrote above? |
| 21:31:17 | <ski> | the "big braces" example you gave |
| 21:31:29 | <cheater> | `((a,b,c),(d,e)) -> f' |
| 21:31:36 | <ski> | if it's a tree, what's the top-level type constructor ? |
| 21:31:52 | <cheater> | i guess f would be the root |
| 21:31:55 | <ski> | no, not the tupled version. your attempt at a "tree-structured curried" version |
| 21:32:05 | <ski> | `f' is a leaf |
| 21:32:12 | <cheater> | well to me it would be the root |
| 21:32:46 | <ski> | what's the children / subtrees of the root ? |
| 21:33:15 | <cheater> | the children would be c + its children, and e + its children |
| 21:33:33 | <ski> | so, two children ? |
| 21:33:36 | <cheater> | yes |
| 21:33:45 | <cheater> | and those woudl have one child each in this case |
| 21:33:53 | <cheater> | c has child b, and e has child d |
| 21:33:59 | <ski> | but in other cases, it could be three, or one, or four children, yes ? |
| 21:34:03 | <cheater> | d has no children. b has child a. a has no children. |
| 21:34:05 | <cheater> | sure |
| 21:34:53 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 21:35:10 | <ski> | i guess i'd interpret "well to me it would be the root" as meaning that `f' is the element in the root node |
| 21:35:17 | <cheater> | yes |
| 21:35:50 | <ski> | (not at all the same thing, wrt how i was grasping at it with my terminology) |
| 21:36:41 | <ski> | shouldn't `} -> f' be `-> } f' ? |
| 21:37:17 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 21:37:27 | <cheater> | no idea |
| 21:37:34 | <cheater> | feel free to change it as you see fit :) |
| 21:37:55 | <ski> | seems it would have to be, to be consistent .. unless i'm misunderstanding |
| 21:38:13 | <ski> | the other `}'s are preceded by `->'s |
| 21:40:16 | <ski> | so .. it seems that your example expresses the same information as say `(((((),a),b),c),(((),d),e)) -> f' .. only using another concrete syntax |
| 21:40:54 | ski | ponders that |
| 21:40:56 | <cheater> | oh no just imagine there's one big brace instead od the three stacked braces |
| 21:41:01 | <cheater> | there's no -> in the middle |
| 21:41:10 | <cheater> | on the left of the brace |
| 21:41:12 | <cheater> | only on the right |
| 21:41:54 | <cheater> | or alternatively |
| 21:42:02 | <cheater> | we could have no arrows pointing to/from braces |
| 21:42:04 | <cheater> | like |
| 21:42:04 | <ski> | .. why three (and not two) ? |
| 21:42:08 | <cheater> | a -> b } |
| 21:42:18 | <cheater> | } z |
| 21:42:30 | <cheater> | c } |
| 21:42:52 | <cheater> | three because i gotta align z with something and i don't want to align it with either of the lines on the left |
| 21:43:07 | <cheater> | i just wanted it to be central |
| 21:45:28 | <cheater> | https://imgur.com/a/KU8UeST |
| 21:47:10 | → | euphores joins (~SASL_euph@user/euphores) |
| 21:48:31 | <cheater> | ski: |
| 21:51:35 | <ski> | what does the `->' mean, here ? |
| 21:52:31 | <cheater> | as in normal haskell |
| 21:52:50 | <cheater> | the brace means |
| 21:52:53 | <ski> | so `a -> b' here is the same as `(a -> b)' ? |
| 21:53:03 | <cheater> | no |
| 21:53:14 | <cheater> | it's the same as a -> (b -> ...) |
| 21:53:23 | <ski> | (iow, `a' and `b' are not separate parameter types, but rather `a -> b' being the type of a single callback parameter) |
| 21:53:28 | <cheater> | the a b c z brace above means |
| 21:53:33 | <cheater> | a -> b -> z |
| 21:53:33 | <cheater> | and |
| 21:53:36 | <cheater> | c -> z |
| 21:53:38 | <cheater> | at the same time |
| 21:53:42 | <ski> | ok, so it doesn't meant the same as in ordinary Haskell |
| 21:53:55 | <cheater> | no |
| 21:53:56 | <ski> | `a -> b' is not a subexpression of `a -> b -> z', in Haskell |
| 21:54:02 | <ski> | (`->' is right-associative) |
| 21:54:08 | <cheater> | yes |
| 21:54:13 | <cheater> | the arrows are the same as in haskell. |
| 21:54:55 | <ski> | well, i thought we just established that they're not |
| 21:55:00 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 21:55:08 | <cheater> | no, you established that they're not. i established that they are |
| 21:55:21 | <ski> | if `a -> b }' is not parsed as `(a -> b) }', how is it parsed (grouped) ? |
| 21:55:30 | <cheater> | [23:53:25] <cheater> the a b c z brace above means |
| 21:55:30 | <cheater> | [23:53:29] <cheater> a -> b -> z |
| 21:55:30 | <cheater> | [23:53:30] <cheater> and |
| 21:55:30 | <cheater> | [23:53:32] <cheater> c -> z |
| 21:55:30 | <cheater> | [23:53:35] <cheater> at the same time |
| 21:55:35 | <cheater> | that's how |
| 21:55:56 | <ski> | that sounds like we're not talking about trees anymore, but (a forest of) DAGs |
| 21:56:20 | <ski> | two roots, one starting with `a', another starting with `c', and both eventyally having `z' as a subtree |
| 21:56:48 | <cheater> | well, if you take a tree and flip its arrows, sure, that's a dag. |
| 21:57:11 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 255 seconds) |
| 21:57:40 | × | Silver_X quits (~Silver_X@182.178.140.82) (Remote host closed the connection) |
| 21:57:41 | <ski> | that's how i interpret "a -> b -> z","and","c -> z","at the same time", namely the `z' part of the two lines above "overlapping" |
| 21:58:01 | <cheater> | sure |
| 21:58:05 | <cheater> | that's a good way to look at it |
| 21:58:27 | <ski> | because `a -> b -> z' here can't mean `(a -> b) -> z', you agreed with that, so it seems it must mean `a -> (b -> z)' (or something like that) still, and then the two `z's must overlap |
| 21:58:48 | <cheater> | yes, they overlap |
| 22:00:10 | <ski> | (perhaps there's another way to look at it. if you could define some (e.g. Haskell) data types (trees or graphs or tables or whatever), that can be used to represent these types (and also, preferably, corresponding expression structures for invoking functions having these types), that could help to better understand how you're thinking about it) |
| 22:00:19 | <ski> | (bbiam) |
| 22:02:55 | <cheater> | so what if you had |
| 22:02:59 | <cheater> | a } |
| 22:03:09 | <cheater> | } Bool -> c |
| 22:03:12 | <cheater> | b } |
| 22:03:35 | <cheater> | and the Bool informed whether your function wants an a or a b? |
| 22:04:15 | <cheater> | you start with the fact that you end up with c |
| 22:04:17 | <cheater> | you know that for sure |
| 22:04:36 | <cheater> | but then at runtime depending on the value of the Bool you either want an a as input, or a b as input. |
| 22:07:33 | <cheater> | (and maybe you can figure out the Bool at compile time already, and specialize) |
| 22:14:39 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Remote host closed the connection) |
| 22:14:43 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:18:18 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 22:22:33 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Remote host closed the connection) |
| 22:23:56 | <ski> | at compile-time, you don't know the run-time value of the `Bool', in general. so you'd have to provide potential computations for both `a' and `b' (but not necessarily the possibility to materialize both) |
| 22:27:54 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
| 22:28:00 | <cheater> | yup |
| 22:41:44 | → | causal joins (~eric@50.35.88.207) |
| 22:44:26 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:45:53 | → | Square2 joins (~Square@user/square) |
| 22:58:04 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:08:31 | × | iteratee quits (~kyle@162.218.222.207) (Read error: Connection reset by peer) |
| 23:08:52 | → | iteratee joins (~kyle@162.218.222.207) |
| 23:08:57 | × | acidjnk_new quits (~acidjnk@p200300d6e714dc446d52a2431789bf32.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 23:12:57 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 268 seconds) |
| 23:13:41 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 23:30:03 | → | travgm joins (~travgm@fsf/member/travgm) |
| 23:31:13 | × | picnoir quits (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Ping timeout: 255 seconds) |
| 23:36:07 | → | picnoir joins (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) |
| 23:51:05 | → | jero98772 joins (~jero98772@2800:484:1d81:2200::4) |
| 23:52:22 | → | peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com) |
| 23:57:02 | × | peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Remote host closed the connection) |
All times are in UTC on 2024-03-31.