Home liberachat/#haskell: Logs Calendar

Logs on 2023-02-25 (liberachat/#haskell)

00:00:14 jpds joins (~jpds@gateway/tor-sasl/jpds)
00:09:40 × __monty__ quits (~toonn@user/toonn) (Ping timeout: 260 seconds)
00:12:37 mauke_ joins (~mauke@user/mauke)
00:13:32 × mauke quits (~mauke@user/mauke) (Ping timeout: 252 seconds)
00:13:32 mauke_ is now known as mauke
00:14:38 son0p joins (~ff@181.136.122.143)
00:16:05 × king_gs quits (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Ping timeout: 260 seconds)
00:17:19 × acidjnk quits (~acidjnk@p200300d6e715c440d10b57a0a1d8ddd3.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
00:31:54 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Quit: WeeChat 3.7)
00:33:30 freeside joins (~mengwong@103.6.151.67)
00:38:17 slack1256 joins (~slack1256@186.11.53.84)
00:38:30 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:38:30 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:38:30 wroathe joins (~wroathe@user/wroathe)
00:39:26 <ph88> i am trying to debug this code https://github.com/scrive/pool/blob/0a05714739fc533c9840a8a5cb8bdd07ead57800/src/Data/Pool/Internal.hs#L210-L231 i put trace statements all over https://bpa.st/BYGP4 i don't see it going into the if/else branch .. what else can i do to figure out why the code hangs ?
00:40:01 jpds joins (~jpds@gateway/tor-sasl/jpds)
00:40:23 × acarrico quits (~acarrico@dhcp-68-142-49-163.greenmountainaccess.net) (Quit: Leaving.)
00:40:31 × freeside quits (~mengwong@103.6.151.67) (Ping timeout: 248 seconds)
00:42:53 × dtman34 quits (~dtman34@76.156.89.180) (Ping timeout: 252 seconds)
00:43:07 wroathe_ joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:43:41 acarrico joins (~acarrico@dhcp-68-142-49-163.greenmountainaccess.net)
00:49:04 × falafel quits (~falafel@2607:fb91:143f:e47f:4560:973b:da2e:e11d) (Ping timeout: 248 seconds)
00:49:32 <geekosaur> check the value of `pools`?
00:49:57 <geekosaur> also be aware that `trace` and `traceM` don't happen at the same time so mixing them can produce weird results
00:50:35 <geekosaur> but from the existing trace I'd say either evaluating `pools` itself or `sizeofSmallArray pools` is hanging for some reason
00:54:44 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
00:57:12 × lbseale quits (~quassel@user/ep1ctetus) (Ping timeout: 255 seconds)
00:58:31 dtman34 joins (~dtman34@2601:447:d000:93c9:2198:73de:f8ee:642a)
00:59:58 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
01:01:53 × califax quits (~califax@user/califx) (Remote host closed the connection)
01:02:45 × gurkenglas quits (~gurkengla@dynamic-046-114-178-046.46.114.pool.telefonica.de) (Ping timeout: 260 seconds)
01:03:25 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 252 seconds)
01:03:58 califax joins (~califax@user/califx)
01:06:54 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
01:08:45 lbseale joins (~quassel@user/ep1ctetus)
01:10:38 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:13:13 <ph88> geekosaur, i tried to refine it more .. https://bpa.st/QURP2 it hangs when i want to Show these types
01:14:26 <geekosaur[m]> Sounds like they're circularly defined? But I'm on my way to bed
01:16:45 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:18:53 <ph88> geekosaur[m], good night :)
01:18:59 <[Leary]> ph88: I would shift my attention to whatever code is constructing the `Pool a` you're examining; that seems to be where the bottom is.
01:21:07 <ph88> [Leary], that is a smart comment :)
01:38:42 freeside joins (~mengwong@103.6.151.67)
01:40:24 × mei quits (~mei@user/mei) (Ping timeout: 255 seconds)
01:40:56 × wroathe_ quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Quit: leaving)
01:43:27 × freeside quits (~mengwong@103.6.151.67) (Ping timeout: 248 seconds)
01:44:03 mei joins (~mei@user/mei)
01:45:03 × mei quits (~mei@user/mei) (Max SendQ exceeded)
01:47:10 razetime joins (~Thunderbi@117.193.3.107)
01:50:29 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
01:51:54 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
01:52:59 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection)
01:53:18 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
01:56:59 mei joins (~mei@user/mei)
01:59:27 morrow joins (~morrow@2a10:8012:11:e637:bd15:e5e9:23f1:af6)
02:03:43 × vandita quits (~vandit@92-249-193-153.pool.digikabel.hu) (Ping timeout: 246 seconds)
02:05:46 vandita joins (~vandit@94-21-55-121.pool.digikabel.hu)
02:06:09 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
02:09:38 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
02:18:08 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
02:21:47 × czy quits (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection)
02:22:01 czy joins (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net)
02:22:19 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
02:23:35 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
02:32:09 razetime1 joins (~Thunderbi@117.193.2.47)
02:33:37 × mima quits (~mmh@212.114.180.173) (Ping timeout: 252 seconds)
02:34:24 × razetime quits (~Thunderbi@117.193.3.107) (Ping timeout: 255 seconds)
02:34:25 razetime1 is now known as razetime
02:37:19 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds)
02:38:25 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 252 seconds)
02:38:48 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
02:47:18 king_gs joins (~Thunderbi@187.201.41.239)
03:00:25 freeside joins (~mengwong@103.6.151.67)
03:00:29 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
03:00:45 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
03:03:41 × azure_vermilion quits (~azure_ver@82.132.235.123) (Ping timeout: 252 seconds)
03:03:52 × slack1256 quits (~slack1256@186.11.53.84) (Remote host closed the connection)
03:04:17 azure_vermilion joins (~azure_ver@82-132-233-24.dab.02.net)
03:05:00 × freeside quits (~mengwong@103.6.151.67) (Ping timeout: 255 seconds)
03:08:20 × jludwig quits (~justin@li657-110.members.linode.com) (Quit: ZNC - https://znc.in)
03:09:31 jludwig joins (~justin@li657-110.members.linode.com)
03:13:51 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
03:23:52 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
03:25:40 tjakway joins (~tjakway@cpe-107-184-74-161.socal.res.rr.com)
03:28:56 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
03:30:21 gastus joins (~gastus@5.83.191.19)
03:33:19 × gastus_ quits (~gastus@185.6.123.134) (Ping timeout: 248 seconds)
03:34:25 × king_gs quits (~Thunderbi@187.201.41.239) (Read error: Connection reset by peer)
03:35:39 king_gs joins (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7)
03:38:30 × tjakway quits (~tjakway@cpe-107-184-74-161.socal.res.rr.com) (Quit: WeeChat 3.5)
03:42:04 × td_ quits (~td@i5387092A.versanet.de) (Ping timeout: 246 seconds)
03:44:11 td_ joins (~td@i5387090F.versanet.de)
03:44:23 × king_gs quits (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Ping timeout: 252 seconds)
03:50:31 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:50:31 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:50:31 finn_elija is now known as FinnElija
03:51:07 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 248 seconds)
03:52:08 freeside joins (~mengwong@103.6.151.67)
03:53:54 razetime1 joins (~Thunderbi@117.193.4.254)
03:54:28 × morrow quits (~morrow@2a10:8012:11:e637:bd15:e5e9:23f1:af6) (Remote host closed the connection)
03:55:01 × razetime quits (~Thunderbi@117.193.2.47) (Ping timeout: 246 seconds)
03:55:01 razetime1 is now known as razetime
03:55:31 × Katarushisu quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: Ping timeout (120 seconds))
03:55:51 Katarushisu joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
03:55:51 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 255 seconds)
03:58:57 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
03:59:48 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
04:12:57 × razetime quits (~Thunderbi@117.193.4.254) (Ping timeout: 255 seconds)
04:17:02 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
04:22:42 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
04:33:03 × vandita quits (~vandit@94-21-55-121.pool.digikabel.hu) (Ping timeout: 248 seconds)
04:34:55 vandita joins (~vandit@77-234-64-138.pool.digikabel.hu)
04:36:51 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
04:37:36 stiell joins (~stiell@gateway/tor-sasl/stiell)
04:38:56 king_gs joins (~Thunderbi@187.201.41.239)
04:47:52 × czy quits (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Ping timeout: 246 seconds)
04:48:02 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
04:48:46 × polyphem_ quits (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Ping timeout: 252 seconds)
04:48:59 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e) (Remote host closed the connection)
04:50:45 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
04:59:25 × king_gs quits (~Thunderbi@187.201.41.239) (Read error: Connection reset by peer)
04:59:42 king_gs joins (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7)
05:02:02 razetime joins (~Thunderbi@117.193.4.254)
05:20:54 × king_gs quits (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Quit: king_gs)
05:49:29 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e)
05:50:37 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
05:53:26 jinsun joins (~jinsun@user/jinsun)
05:53:50 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e) (Ping timeout: 260 seconds)
05:57:16 man_max joins (~man_max@94-43-231-47.dsl.utg.ge)
05:57:37 <man_max> I need to download a paper from springer proceeding. Do you have an access to download from springer?
06:03:18 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
06:07:43 bliminse joins (~bliminse@user/bliminse)
06:23:27 × thegeekinside quits (~thegeekin@189.180.66.126) (Ping timeout: 255 seconds)
06:27:18 × man_max quits (~man_max@94-43-231-47.dsl.utg.ge) (Quit: Client closed)
06:27:19 × bilegeek_ quits (~bilegeek@255.sub-174-208-231.myvzw.com) (Quit: Leaving)
06:29:38 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
06:40:33 × inversed quits (~inversed@bcdcac82.skybroadband.com) (Ping timeout: 255 seconds)
06:42:52 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
06:49:16 zephyr__ joins (~irfan@106.214.197.187)
06:50:32 × razetime quits (~Thunderbi@117.193.4.254) (Remote host closed the connection)
06:51:21 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 255 seconds)
06:53:08 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
06:54:39 inversed joins (~inversed@bcdcac82.skybroadband.com)
06:55:17 × vandita quits (~vandit@77-234-64-138.pool.digikabel.hu) (Ping timeout: 255 seconds)
06:56:56 vandita joins (~vandit@84-236-122-10.pool.digikabel.hu)
06:57:08 <Inst> yeah, i'm not sure if this is intended behavior with cabal
06:57:25 <Inst> apparently, if you use --lib with any package, say, Acme.Dont, you now have a config file, at least on Windows
06:57:36 <Inst> further non --lib uses of cabal install will install hidden to that config file
06:57:48 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection)
06:58:08 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
07:01:50 <Inst> posted to cabal
07:01:53 <Inst> issues on github
07:04:02 <Inst> btw, i finally figured out how to teach / learn an idiom of Haskell in 1 week, but it's pretty horrifying, anyone interested?
07:04:12 <zephyr__> Inst: Sure!
07:04:20 <Inst> put everything in main
07:04:30 <Inst> IORef / MVar / TVar
07:04:41 <Inst> fix to emulate a while loop, for to emulate a for loop
07:05:13 <Inst> i tried this idiom a bit, as a Pythonic translation of a Python program into Haskell, and it was horrifying / disgusting
07:05:26 <Inst> but I think anyone can pick up this idiom in the same amount of time they might need to get a minimal grasp of any other language
07:06:32 <zephyr__> Inst: I see.
07:06:39 <Inst> it's sort of like curing cancer by shooting the patient
07:06:57 <Inst> but hey, it's technically doable, we can technically say Haskell can be learned in 1 week, for some definition of Haskell
07:08:21 <zephyr__> Inst: True.
07:14:01 <Inst> there is actually a different question of how many "productive" Haskell idioms there are
07:14:28 <Inst> I think the "everything in main, IORef, simulated while / for" is probably the minimum possible productive Haskell idiom
07:14:57 <Inst> there's Simple Haskell on top of that, and probably a range of useful / "true" Haskell idioms between "not really Haskell" and Simple Haskell
07:20:25 falafel joins (~falafel@2607:fb91:143f:e47f:f2ba:9e36:77ef:5ee6)
07:25:00 takuan joins (~takuan@178-116-218-225.access.telenet.be)
07:30:00 trev joins (~trev@user/trev)
07:35:19 kenran joins (~user@user/kenran)
07:41:28 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e)
07:48:00 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
07:58:42 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection)
07:59:02 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
08:02:50 dhil joins (~dhil@78.45.150.83.ewm.ftth.as8758.net)
08:15:49 × kenran quits (~user@user/kenran) (Remote host closed the connection)
08:19:49 Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
08:26:40 × falafel quits (~falafel@2607:fb91:143f:e47f:f2ba:9e36:77ef:5ee6) (Ping timeout: 260 seconds)
08:28:06 × dhil quits (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 255 seconds)
08:36:06 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
08:37:22 cstml joins (~cstml@cpc151611-shef16-2-0-cust313.17-1.cable.virginm.net)
08:42:27 × qhong quits (~qhong@dn160vrd000d6kpg009l6c0000ep.stanford.edu) (Remote host closed the connection)
08:44:00 qhong joins (~qhong@DN160vrd000d6kpg009l6c0000ep.stanford.edu)
08:45:46 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e) (Remote host closed the connection)
08:51:54 acidjnk joins (~acidjnk@2003:d6:e715:c416:a957:76b2:4369:5020)
08:52:50 × qhong quits (~qhong@DN160vrd000d6kpg009l6c0000ep.stanford.edu) (Quit: ZNC 1.8.2 - https://znc.in)
08:53:06 qhong joins (~qhong@rescomp-21-400677.stanford.edu)
08:53:07 × qhong quits (~qhong@rescomp-21-400677.stanford.edu) (Remote host closed the connection)
08:53:49 qhong joins (~qhong@2607:f6d0:d:3533:1:3533:0:1d9)
08:57:48 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 255 seconds)
08:58:42 × cstml quits (~cstml@cpc151611-shef16-2-0-cust313.17-1.cable.virginm.net) (Ping timeout: 255 seconds)
08:59:52 × vandita quits (~vandit@84-236-122-10.pool.digikabel.hu) (Ping timeout: 246 seconds)
09:01:40 vandita joins (~vandit@91-83-11-241.pool.digikabel.hu)
09:05:50 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
09:06:19 <maerwald[m]> I think you need 6 weeks for basic haskell
09:11:02 alecs joins (~alecs@31.188.224.180)
09:13:19 × alecs quits (~alecs@31.188.224.180) (Client Quit)
09:13:37 alecs joins (~alecs@31.188.224.180)
09:14:22 × alecs quits (~alecs@31.188.224.180) (Client Quit)
09:14:44 Feuermagier joins (~Feuermagi@user/feuermagier)
09:15:37 alecs joins (~alecs@31.188.224.180)
09:20:12 × alecs quits (~alecs@31.188.224.180) (Client Quit)
09:20:24 alecs joins (~alecs@31.188.224.180)
09:20:30 × alecs quits (~alecs@31.188.224.180) (Client Quit)
09:20:52 alecs joins (~alecs@31.188.224.180)
09:26:25 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
09:26:32 `2jt joins (~jtomas@84.78.228.192)
09:31:10 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
09:31:48 czy joins (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net)
09:33:21 rembo10 joins (~rembo10@main.remulis.com)
09:33:40 × azure_vermilion quits (~azure_ver@82-132-233-24.dab.02.net) (Ping timeout: 252 seconds)
09:33:59 azure_vermilion joins (~azure_ver@82-132-233-212.dab.02.net)
09:34:03 × phma quits (~phma@2001:5b0:2143:86d8:f396:a44:9b48:fdf2) (Read error: Connection reset by peer)
09:34:59 phma joins (~phma@2001:5b0:2172:8768:d70b:20eb:9db0:5a75)
09:46:16 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e)
09:50:35 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e) (Ping timeout: 248 seconds)
09:53:21 mima joins (~mmh@ppp-212-114-180-20.dynamic.mnet-online.de)
09:55:03 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
09:56:55 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:11:51 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:12:34 gmg joins (~user@user/gehmehgeh)
10:15:37 × OscarZ quits (~oscarz@95.175.104.72) (Quit: Leaving)
10:27:05 × Vajb quits (~Vajb@2001:999:230:f561:4ee8:ad7f:13ff:9959) (Read error: Connection reset by peer)
10:27:31 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
10:32:44 akegalj joins (~akegalj@183-163.dsl.iskon.hr)
10:43:17 mc47 joins (~mc47@xmonad/TheMC47)
10:49:23 Lycurgus joins (~juan@user/Lycurgus)
10:55:39 × `2jt quits (~jtomas@84.78.228.192) (Ping timeout: 248 seconds)
10:57:05 `2jt joins (~jtomas@84.78.228.193)
10:59:16 jtomas joins (~jtomas@84.78.228.192)
11:01:33 × `2jt quits (~jtomas@84.78.228.193) (Ping timeout: 255 seconds)
11:11:54 × vandita quits (~vandit@91-83-11-241.pool.digikabel.hu) (Ping timeout: 255 seconds)
11:13:30 vandita joins (~vandit@80-95-85-49.pool.digikabel.hu)
11:15:53 <[exa]> Inst: actually that's a pretty reasonable way
11:16:13 <[exa]> `fix` is a bit of overkill but we have `whileM` right. :D
11:17:24 <[exa]> the only thing the people need to resolve there to get moreless productive (with problems they can reasonably solve) is explaining that 1] return actually doesn't return 2] when to use <- vs when to use let .. =
11:18:10 × jtomas quits (~jtomas@84.78.228.192) (Ping timeout: 260 seconds)
11:18:13 <Inst> also the most important thing to explain is NEVER ACTUALLY CODE IN THIS f- IDIOM
11:18:23 <Inst> it's disgusting!
11:19:08 <[exa]> you can't judge, they will still like it
11:19:12 jtomas joins (~jtomas@84.78.228.193)
11:19:20 <Inst> what i've heard is that if you try to teach the explosives to learners
11:19:22 <[exa]> the disgust comes with knowing how to do stuff better
11:19:26 <Inst> and to an extent, people like knowing that mutability exists
11:19:33 <Inst> it'll just roll of their backs
11:19:42 <Inst> they're not interested, they understand that Haskell is for functional programming
11:20:28 <Inst> in my experience, they don't actually want to know mutrefs, if they have accumulating parameters, it's enough
11:21:13 <Inst> if you teach them unsafePerformIO, they'll be like: "well, this is unsafe, isn't it?"
11:23:10 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
11:23:35 <[exa]> yeah
11:23:39 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
11:26:11 <Inst> whileM requires IO Bool, which is suboptimal
11:26:21 × xff0x quits (~xff0x@ai081074.d.east.v6connect.net) (Ping timeout: 268 seconds)
11:26:23 <Inst> untilM is better if you want it
11:26:50 <Inst> oh god what, no one cloned the until semantics
11:27:15 <Inst> fix is great, though, because it gives you an opportunity to introduce recursion and laziness, as in, how the hell does x = f x workS/
11:27:46 xff0x joins (~xff0x@178.255.149.135)
11:29:31 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
11:30:31 gmg joins (~user@user/gehmehgeh)
11:34:30 × czy quits (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Ping timeout: 260 seconds)
11:38:49 <zephyr__> Inst: Perl has had `until` for long.
11:40:39 <mc47> Hi folks! I'm trying to model a smart refresh system of values that only get recalculated when their dependencies change. They type that I came up with is basically { compute :: Context -> a, dependencies :: Set Dependency}
11:41:28 <mc47> The applicative instance is straightforward (merge the dependencies), but I don't think there's a reasonable way to implement a monad instance
11:41:40 <mc47> Right? Just wanted to check my intuition
11:43:59 × xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 248 seconds)
11:44:01 × jtomas quits (~jtomas@84.78.228.193) (Ping timeout: 246 seconds)
11:45:54 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
11:46:03 xff0x joins (~xff0x@ai081074.d.east.v6connect.net)
11:48:35 Vajb joins (~Vajb@2001:999:230:f561:4ee8:ad7f:13ff:9959)
11:52:25 __monty__ joins (~toonn@user/toonn)
12:05:04 × tubogram44 quits (~tubogram@user/tubogram) (Quit: See ya later!)
12:05:12 dhil joins (~dhil@78.45.150.83.ewm.ftth.as8758.net)
12:06:43 × akegalj quits (~akegalj@183-163.dsl.iskon.hr) (Quit: leaving)
12:08:21 tubogram44 joins (~tubogram@user/tubogram)
12:13:15 <[Leary]> mc47: Sounds like Incremental Computing. This is a matter of ongoing research where even the state of the art approaches (e.g. Adapton) are honestly not great; I don't recommend sinking time into your own design unless it's for fun.
12:14:13 <geekosaur> sounds like a spreadsheet to me 🙂
12:14:40 <[Leary]> Yeah, spreadsheets are a classic usecase for IC.
12:17:54 <mc47> I didn't expect this to be a matter of ongoing research... Thanks for the pointer [Leary]
12:17:58 <mc47> [Leary]: Huh, interesting. I mean I have an applicative-based design that works for my purposes. The "bottom" computation nodes are their own dependencies, computations are composed with <*>.
12:19:47 <mc47> However, the refresh logic is ad-hoc: I create a map from dependencies to final computations, and trigger a refresh when the dependencies change
12:20:10 <mc47> geekosaur: very similar to a spreadsheet ;) trying to replace them actually
12:20:26 jtomas joins (~jtomas@84.78.228.192)
12:21:09 × GoldsteinQ quits (~goldstein@goldstein.rs) (Quit: ZNC 1.8.2 - https://znc.in)
12:21:45 × acidjnk quits (~acidjnk@2003:d6:e715:c416:a957:76b2:4369:5020) (Ping timeout: 252 seconds)
12:21:59 GoldsteinQ joins (~goldstein@goldstein.rs)
12:22:01 <Franciman> hi mc47, maybe you can get some ideas from FRP
12:22:28 <Franciman> or from virtual dom technologies in react and the likes which compute the minimal set of changes to propagate
12:23:15 `2jt joins (~jtomas@84.78.228.192)
12:24:46 <mc47> Thanks for the pointer Franciman
12:25:03 × jtomas quits (~jtomas@84.78.228.192) (Ping timeout: 248 seconds)
12:26:57 <Franciman> i'm not sure, but i think that implementing a monad instance means losing static control over what happens at the previous stages of your refresh system
12:27:32 <Franciman> so you can't be sure what >>= will pass over, and could end up solving an halting problem? Not sure, again :P
12:30:24 <[Leary]> mc47: This <https://gist.github.com/LSLeary/da963da122946d981b4b143cbcf3dd73> is a small Haskell implementation based on Magnus Carlsson's functional pearl on the topic, with further inspiration from the Adapton paper. Perhaps it (or details contained within) will be of use to you, though I can't guarantee performance or usability.
12:31:27 × ubert quits (~Thunderbi@p548c8a3b.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
12:31:59 ubert joins (~Thunderbi@p200300ecdf1f1e05ddce163a973cd7f5.dip0.t-ipconnect.de)
12:33:22 <mc47> Franciman: that's exactly my intuition. I can't know what >>= will give me back until I run it, which means it's not particularly useful.
12:33:56 <Franciman> arrows could help a bit in preprocessing things
12:34:59 <mc47> [Leary] that was quick! Thanks a lot, I'll definitely check it out. I don't care about performance or usability at this point since what I've written fulfills the requirements (and is in TypeScript...). I was just curious and intrigued by the problem
12:35:53 <[Leary]> Note that `Adaptive` in this implementation /does/ have Monad. The necessary trick is to observe dependencies as they're used and update deps/revdeps accordingly.
12:36:41 azimut joins (~azimut@gateway/tor-sasl/azimut)
12:38:26 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
12:42:37 <mc47> I guess I have some reading to do :D
12:44:02 cheater_ joins (~Username@user/cheater)
12:46:51 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
12:46:58 cheater_ is now known as cheater
12:47:09 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6)
12:50:29 GuestW16 joins (~GuestW16@46.146.247.46)
12:54:29 <[exa]> mc47: this sounds a bit like propagators, but these are more like for constraint solving and managing uncertainty
12:57:39 <mc47> [exa]: thanks for another pointer :D :D
12:59:38 <[exa]> mc47: I literally saw some pretty reasonable slides a few days ago, more related to prolog actually
13:00:41 <[exa]> but yeah it's more for constraint solvers where you don't really know how many constraints are going to get spawned
13:01:09 <[exa]> in your case I guess any topology-conserving update scheme will do
13:02:33 <[exa]> btw IIRC there's some super-cool super-complicated online algorithm for quickly detecting new strongly connected components (aka uncomputable cycles) after dependency graph updates (the benefit is that you don't need to run the whole the scc everytime again), that might help I guess
13:03:43 × ubert quits (~Thunderbi@p200300ecdf1f1e05ddce163a973cd7f5.dip0.t-ipconnect.de) (Remote host closed the connection)
13:03:46 <mc47> Yes, I think what I've written will be enough for the next two or three years, and any improvement will be more on the "software-engineery" side
13:03:56 ub joins (~Thunderbi@p548c8a3b.dip0.t-ipconnect.de)
13:04:10 <mc47> All of this is for my own enjoyment :D I like thinking about these problems
13:06:13 ub is now known as ubert
13:07:10 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
13:07:55 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
13:10:56 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 248 seconds)
13:16:31 × `2jt quits (~jtomas@84.78.228.192) (Remote host closed the connection)
13:16:50 `2jt joins (~jtomas@84.78.228.192)
13:18:37 × dhil quits (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 252 seconds)
13:20:59 nattiestnate joins (~nate@202.138.250.13)
13:28:04 × alecs quits (~alecs@31.188.224.180) (Quit: WeeChat 3.8)
13:34:13 jtza8 joins (~user@165.255.63.244)
13:47:29 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
13:48:30 × shapr quits (~user@144.163.19.233) (Ping timeout: 255 seconds)
13:49:17 × GuestW16 quits (~GuestW16@46.146.247.46) (Quit: Client closed)
13:49:50 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e)
13:54:30 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e) (Ping timeout: 260 seconds)
14:16:11 Midjak joins (~Midjak@82.66.147.146)
14:27:43 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 248 seconds)
14:28:33 polyphem_ joins (~rod@2a02:810d:840:8754:c1fe:7ebc:3299:29d5)
14:29:18 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
14:42:10 notzmv joins (~zmv@user/notzmv)
14:43:57 <ph88> does someone recognize this kind of code ? https://bpa.st/DPGZ2 i suspect it used to work on GHC release 9.0.2 but no longer works on ghc 9.2.6
14:44:39 <ph88> This is taken from here https://github.com/biocad/hasbolt-extras/blob/master/src/Database/Bolt/Extras/DSL/Typed/Instances.hs#L89-L90
14:46:05 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
14:47:04 × `2jt quits (~jtomas@84.78.228.192) (Remote host closed the connection)
14:47:23 `2jt joins (~jtomas@84.78.228.192)
14:48:00 <jtza8> I've spent an afternoon comming to the conclusion that what I thought should be a sum type, ends up being two very different types, in that there don't seem to be any significant functions that would be defined for both of them. Is this a usual part of the Haskell learning experience? (Or was I just being thick?)
14:48:41 Guest2517 joins (~Guest25@103.15.228.66)
14:49:08 <geekosaur> ph88, that looks like missing `PolyKinds`
14:49:41 <geekosaur> jtza8, designing types rationally is part of learning, yes
14:50:01 <geekosaur> the rules you'd follow for other languages don't necessarily work here
14:50:34 <jtza8> It was a good learning experience though. Still too much OOP in me.
14:56:06 × kmein quits (~weechat@static.173.83.99.88.clients.your-server.de) (Quit: ciao kakao)
14:56:20 <ph88> geekosaur, i added PolyKinds also i forgot to post second error https://bpa.st/V6GRU
14:56:23 kmein joins (~weechat@static.173.83.99.88.clients.your-server.de)
14:59:16 <geekosaur> more context helps. they're explicitly of kind `Type` so can't be of kind `'Bool`
14:59:43 <geekosaur> unless this code was misusing `Type` from back before `NoStarIsType`
15:00:16 × fr33domlover quits (~fr33domlo@towards.vision) (Remote host closed the connection)
15:00:48 <ph88> geekosaur, i also don't know (not my library) .. i will comment out the Assert then for the moment
15:03:04 acidjnk joins (~acidjnk@2003:d6:e715:c416:a957:76b2:4369:5020)
15:03:31 × `2jt quits (~jtomas@84.78.228.192) (Read error: Connection reset by peer)
15:04:09 o-90 joins (~o-90@gateway/tor-sasl/o-90)
15:05:33 `2jt joins (~jtomas@84.78.228.192)
15:05:51 × `2jt quits (~jtomas@84.78.228.192) (Read error: Connection reset by peer)
15:06:00 × o-90 quits (~o-90@gateway/tor-sasl/o-90) (Client Quit)
15:06:58 `2jt joins (~jtomas@84.78.228.192)
15:09:09 × `2jt quits (~jtomas@84.78.228.192) (Remote host closed the connection)
15:09:22 `2jt joins (~jtomas@84.78.228.192)
15:09:39 × `2jt quits (~jtomas@84.78.228.192) (Read error: Connection reset by peer)
15:09:53 <Guest2517> Hey everyone! I'm new to Haskell and open-source but quite excited about Summer of Haskell! I might be a bit late but can anyone direct me to how to get started?
15:10:14 × mjs2600 quits (~mjs2600@24.91.3.49) (Quit: ZNC 1.8.2 - https://znc.in)
15:11:38 `2jt joins (~jtomas@84.78.228.192)
15:11:43 <hpc> https://www.haskell.org/get-started/
15:11:57 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
15:12:18 <hpc> ^ is a nice easy way to get set up
15:13:53 <geekosaur> ph88, actually I misread that and can't tell for certain because the definition of Assert is missing, but ghc is very certain that it should have kind Type in both those places. which looks wrong, so I wonder if Assert is misdeclared or itself is in a module without PolyKinds (but that too seems weird, seems like it should be explicitly Bool not polymorphic)
15:14:05 <geekosaur> but without being able to see Assert I can't tell for certain
15:14:37 <ph88> geekosaur, i think the definition of Assert is here https://hackage.haskell.org/package/base-4.17.0.0/docs/GHC-TypeError.html#t:Assert
15:16:35 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
15:16:39 <geekosaur> okay, maybe its type changed at some point, because that definition indeed doesn't match the usage
15:17:11 <[Leary]> It doesn't match the error either.
15:19:47 × `2jt quits (~jtomas@84.78.228.192) (Quit: Leaving)
15:22:23 × ddellacosta quits (~ddellacos@146.70.166.100) (Ping timeout: 264 seconds)
15:23:46 <geekosaur> true, the error says `Type` but base's `Assert` wants a `TypeError`
15:24:03 <geekosaur> and a `Bool` matches neither
15:24:18 <geekosaur> (promoted)
15:25:46 <eldritchcookie[m> i want to get all the exports of a module with template haskell currently the only way to do that is to parse the module, assuming i were able to modify the template haskell package to support this would i need to pass this by a GHC proposal or something similar ?
15:27:34 <geekosaur> hypothetically you have an already parsed AST if you are doing things like e.g. Data.QuickCheck.All does
15:28:15 <geekosaur> I have a nasty suspicion that traversing that AST is either difficult or wildly incompatible between ghc versions at that point, though
15:31:08 <eldritchcookie[m> quickchecksallProperties is defined as... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/343b3015b91dfc56754b2a6afe10f658793816c6>)
15:32:31 <geekosaur> yes, but it's parsing to get names and then querying the AST for their definitions
15:32:44 <geekosaur> you should be able to walk the AST if you can query it
15:34:27 <eldritchcookie[m> yeah but GHC obvously has the names of all the exports of a module i should just have to ask not reparse again
15:34:39 <geekosaur> exactly
15:35:00 <geekosaur> which is why I suspect there's an additional complication somewhere
15:36:17 <geekosaur> like, I know there was a major chaneg when the AST was redone with TTG
15:36:45 <geekosaur> but that should be long since over and you shouldn't need to worry about pre-TTG versions of ghc
15:37:57 <geekosaur> anothyer big change when everything became Located bvut again you shouldn't need to worry at this point
15:38:17 <geekosaur> so I womder what else might be changing between versions to make this hard
15:39:12 × ubert quits (~Thunderbi@p548c8a3b.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
15:40:11 <eldritchcookie[m> wait qReifyModule is defined as
15:40:11 <eldritchcookie[m> ```haskell
15:40:11 <eldritchcookie[m> instance Quasi Q where
15:40:30 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
15:40:52 <eldritchcookie[m> qReifyModule = reifyModule
15:41:15 <eldritchcookie[m> reifyModule :: Module -> Q ModuleInfo
15:41:15 <eldritchcookie[m> reifyModule m = Q (qReifyModule m)
15:41:22 <eldritchcookie[m> the hell?
15:41:44 ubert joins (~Thunderbi@p548c9fde.dip0.t-ipconnect.de)
15:41:47 <eldritchcookie[m> is reifyModule a Primop ?
15:42:36 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
15:45:57 ddellacosta joins (~ddellacos@146.70.165.159)
15:47:55 <geekosaur> no, I think you're confusing a top level definition that came from the compiler guts with an instance definition for Q
15:49:01 <geekosaur> also it has occurred to me that QuickCheck is old enough to have lived through all the AST changes I mentioned, so they went with something simple and dependable, then everyone else copied them because it worked
15:49:31 <geekosaur> and for anything more direct you'll have to (a) ask in #ghc (b) hope the AST doesn't go through another major change
15:52:20 CiaoSen joins (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
15:52:44 accord joins (uid568320@id-568320.hampstead.irccloud.com)
15:53:02 <geekosaur> iirc there are two Q instances: one for IO, one for pure. some things are stubbed out in the pure version
15:53:57 <ph88> Could anyone help me to figure out why my program hangs when i call `show` on a value ? https://bpa.st/PFBFQ
15:54:46 bgs joins (~bgs@212.85.160.171)
15:55:12 <ph88> actually let me make a new paste ..
15:55:34 × CiaoSen quits (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Client Quit)
15:55:34 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
15:55:42 <geekosaur> missing Connection definition
15:55:47 <geekosaur> can't tell
15:55:49 gentauro joins (~gentauro@user/gentauro)
15:55:57 <geekosaur> everything else about pipe looks okay
15:56:46 <eldritchcookie[m> the ConnectionWithTimeout doesn't call show on Connection so it shouldn't matter
15:56:56 <ph88> geekosaur, thanks for looking, i'll try to debug it as far as i can. Maybe in a bit i have a better example
15:57:26 <hpc> what happens if you show only specific parts of the value?
15:57:38 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
15:58:18 <hpc> also what happens if you don't show, but just evaluate?
15:59:17 mima parts (~mmh@ppp-212-114-180-20.dynamic.mnet-online.de) ()
16:01:39 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
16:02:50 × azure_vermilion quits (~azure_ver@82-132-233-212.dab.02.net) (Ping timeout: 260 seconds)
16:02:59 <segfaultfizzbuzz> i was considering trying to learn to understand assembly so i looked up the riscv specification expecting it to be simple, and my eyes were watering after a few pages. is there a simple and complete ISA which is worth learning? i was eyeing the 6502...
16:03:01 azure_vermilion joins (~azure_ver@82-132-232-181.dab.02.net)
16:03:57 <geekosaur> z80?
16:04:32 <geekosaur> 6502 is simple-ish but a bit strange, like various things assuming page 2 ($0200-$02ff) is stack
16:04:52 <hpc> the ben eater youtube channel makes a computer out of breadboard stuff, and it includes making its own instruction set
16:04:58 <geekosaur> (and god help you if you overflow it)
16:05:06 <segfaultfizzbuzz> yeah i meant to clarify, i would be looking for "simple and sufficiently modern",... i don't want to chase ideas which are no longer relevant
16:05:08 <hpc> it's beyond minimal, but you get to see all the logic that goes into it
16:05:21 <hpc> and how it turns into microcode, how that microcode gets executed, etc
16:05:35 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:05:57 <geekosaur> z80's still pretty relevant, it's used for embedded stuff still
16:06:17 <geekosaur> and it's modern enough that x86 took stuff from it
16:06:40 <segfaultfizzbuzz> ok i guess i will look at the z80 then
16:06:50 <segfaultfizzbuzz> hopefully the ISA is less than 50 pages...?
16:06:57 <geekosaur> yes
16:07:22 <segfaultfizzbuzz> i don't understand how people can keep these multi-hundred page documents in their heads, let alone understand how stuff on one page interacts with stuff on another
16:07:41 <geekosaur> it's even smaller if you get a reference that doesn't split out instructions that are really the same thing but with register bits split out for some weird reason like the first z80 asm reference I owned
16:08:17 <ph88> geekosaur, i found it eventually ... i created bottom by calling functions recursively in ReaderT implementation. Thanks for having a look on the paste
16:08:25 <segfaultfizzbuzz> i guess there is no toy minimalist ISA?
16:11:30 CiaoSen joins (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
16:13:53 <segfaultfizzbuzz> haha this advertisement for the z80 says it has a "instruction speed of 1.6 microseconds"
16:14:50 <geekosaur> I didn't say it was fast
16:15:15 <geekosaur> although I think there are 4MHz versions these days (the original was 1MHz)
16:15:35 <segfaultfizzbuzz> i am looking at the registers, and this has an 8 bit accumulator and a 16 bit accumulator... this is already needlessly complicated
16:15:44 <geekosaur> the simple architectures are all dead
16:16:17 <segfaultfizzbuzz> so if i try to simplify the registers here: https://en.wikipedia.org/wiki/Zilog_Z80
16:16:23 <geekosaur> AF BC DE HL
16:17:07 <darkling> If you're looking for something simple, ARM2/ARM3 is great.
16:18:14 <darkling> RiscOS (available for the Raspberry Pi) even has an assembler built into its BASIC.
16:20:35 <segfaultfizzbuzz> do the z80 registers define the complete state of the CPU? or is there state elsewhere?
16:21:19 <geekosaur> complete state if you include the flags register which is paired with the 8-bit accumulator
16:21:20 <darkling> There's other state, but that's not generally accessible or even particularly helpful.
16:21:45 <geekosaur> (there's a PUSH AF instruction)
16:21:56 <segfaultfizzbuzz> geekosaur: yeah if you see the wikipedia entry, the "status" register is listed, which has the CPU flags
16:22:28 <geekosaur> I'm not looking at wikipedia, I'm remembering form when I spent a couple years doing z80 assembly
16:22:48 <darkling> There's also IX and IY for the offset instructions, and a purely internal I that holds the current instructions.
16:23:06 <segfaultfizzbuzz> can i ignore the distinction between main and alternate registers?
16:23:08 × ell quits (~ellie@user/ellie) (Quit: Ping timeout (120 seconds))
16:23:13 <geekosaur> z80 is an upgraded Intel 8080 that made it a true 8/16 bit CPU instead of an 8-bit CPU with a glorified 16 bit register
16:23:24 <darkling> Oh, and a complete set of shadow registers that you can swap for the current ones with the EXX instruction.
16:23:45 <segfaultfizzbuzz> darkling: ok so wikipedia doesn't list these "shadow" registers then?
16:23:59 <segfaultfizzbuzz> darkling: oh the "alternate" registers are the "shadow" registers
16:24:10 <geekosaur> that's the "alternate" regs you were talking about
16:24:13 <darkling> Yaeh, I 've rpobably used the wrong name for them.
16:24:27 <darkling> Hmm. My typing's terrible today.
16:25:34 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
16:25:51 <segfaultfizzbuzz> i don't think i understand the index registers
16:26:43 <segfaultfizzbuzz> i guess the instructions, perhaps for physical logic design reasons, restrict which registers operations can read from or write to?
16:27:05 <darkling> Where you can do an operation with (HL) (i.e. read data from the address pointed to by HL), you can also do that operation with (IX+n) or (IY+n)
16:27:13 <segfaultfizzbuzz> "The index registers, IX and IY, were intended as flexible 16-bit pointers, enhancing the ability to manipulate memory, stack frames and data structures."
16:27:34 <darkling> They're a lot slower, because it's got to read the n value from the byte after the opcode, and there's a prefix, and it's got to do the addition.
16:28:37 <darkling> Imagine you've got a data structure with several elements in it. You can point to the start of the structure with IX, and then access all the elements of the structure as (IX+n), without having to manually add and subtract on the pointer.
16:28:43 <int-e> segfaultfizzbuzz: You could use them as the base of a C struct, with direct addressing mode for fields (within ~128 bytes either way)
16:29:38 <segfaultfizzbuzz> so IX/IY about not having to do lots of loads and adds, basically--increase memory locality
16:29:52 <segfaultfizzbuzz> but it is an optimization rather than something "fundamental"
16:30:01 <int-e> nobody cared about memory locality at that time
16:30:08 <segfaultfizzbuzz> haha ok
16:30:10 <int-e> there were no caches
16:30:46 <darkling> It's not even much of an optimisation -- the instructions are large (3-4 bytes, IIRC) and slow (21 clock cycles).
16:30:49 <int-e> But RAM was also rather fast if you measured access speed in clock cycles.
16:30:58 <segfaultfizzbuzz> https://clrhome.org/table/ ay this is too much
16:31:22 <darkling> To be fair, that's writing out all of the combinations of all the instructions.
16:31:33 <int-e> Not 100s of cycles to access RAM when all caches are missed which is the reality now.
16:31:42 <segfaultfizzbuzz> are (opcode, register) pairs restricted?
16:31:45 <darkling> It's a bit simpler if you just look at the types of instructions (but still pretty complicated).
16:32:15 <darkling> This is a reasonable reference: https://wiki.specnext.dev/Extended_Z80_instruction_set
16:32:45 <darkling> (It's got some extra instructions that the original Z80 never had, but those are noted)
16:32:46 × polyphem_ quits (~rod@2a02:810d:840:8754:c1fe:7ebc:3299:29d5) (Ping timeout: 246 seconds)
16:33:46 emmanuelux joins (~emmanuelu@user/emmanuelux)
16:33:48 polyphem_ joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
16:33:59 <int-e> so plenty of special purpose registers
16:34:04 <segfaultfizzbuzz> does the z80 "reduce" the state every cycle? that is to say, can an instruction from the past have a delayed effect?
16:34:20 <geekosaur> nope
16:34:39 <geekosaur> it predates caches, delay slots, and the like
16:34:40 <segfaultfizzbuzz> so the z80 state at t+1 is strictly determined by the opcode, and there is only one opcode
16:34:41 <int-e> maybe, with external hardware ;)
16:35:39 <darkling> I'd still recommend ARM instead of Z80. For example: https://www.chiark.greenend.org.uk/~theom/riscos/docs/ARM3-datasheet_ARM-Family-Data-Manual-VLSI.pdf
16:35:55 × vandita quits (~vandit@80-95-85-49.pool.digikabel.hu) (Ping timeout: 268 seconds)
16:36:10 <segfaultfizzbuzz> so i am looking at the LD part of this specnext website--i see things like LD HL nn, LD IXY nn, etc-- so this means that there are restrictions on how the LD instruction can pair with registers (and more generally this applies to other opcodes as well)?
16:36:11 <darkling> The list of instructions is on page 1-11, and the full description of the instructions is from 3-13 onwards.
16:36:41 <darkling> (Up to 3-43)
16:37:13 <darkling> The rest you don't really need to know.
16:37:29 vandita joins (~vandit@178.164.206.90)
16:37:55 <darkling> It's a much more orthogonal design than the Z80, so you don't need to worry about restrictions on which registers can be used together in which instructions.
16:38:21 <darkling> (Having 32 bits per instruction makes it much easier to do that than the Z80's 8 bits per instruction).
16:38:39 <geekosaur> yeh, I didn't claim Z80 was well designed. was better than the 8080 though
16:38:45 <int-e> segfaultfizzbuzz: Yes there are some restrictions like that. Though in this case, there's also an instruction for loading BC/DE/HL/SP; the difference is that the IXY one is slower.
16:38:46 <darkling> :)
16:39:14 <geekosaur> then the 8085 stole stuff from it, then the 8086/8088 stole more, but still not really orthogonal (and still not enough registers…)
16:40:38 <int-e> I think orthogonality only really took root when we started using compilers for peformance critical code.
16:40:51 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
16:41:00 <darkling> I think the 6502 ISA was fairly nicely orthogonal. I don't know a huge amount about it, though.
16:41:02 <int-e> Because register allocation is hard enough even when they're all interchangeable.
16:41:32 <int-e> I may be looking at this through an x86 lens though.
16:41:43 <geekosaur> there was little to know about it. A, X, Y regs (and a stack pointer that was 8 bits because the top bits were wired to $02)
16:42:17 <geekosaur> pages 0, 1, 2 were special (although I forget was special about $01 now)
16:43:10 <geekosaur> oh, and X and Y weren't very orthogonal really, either to A or each other
16:43:25 <geekosaur> weirdass addressing modes
16:44:07 <darkling> Wasn't there an addressing mode that allowed you treat the first 256 bytes of RAM effectively as registers?
16:44:09 <geekosaur> maybe you're thinking 6800 (A, B, X)?
16:44:37 <darkling> No, I've never looked at the 6800/680x0 family.
16:45:50 <darkling> Mostly old ARMs and Z80 and a little bit of x86, and I've read some docs on Connection Machines, the Transputer, and the PDP8.
16:46:02 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
16:46:32 <segfaultfizzbuzz> darkling: i think here i would ask again about the full state of the CPU--i suppose this is an ARM2 cpu?
16:46:46 <geekosaur> "In order to make up somewhat for the lack of registers, the 6502 included a zero-page addressing mode that uses one address byte in the instruction instead of the two needed to address the full 64 KB of memory. This provides fast access to the first 256 bytes of RAM by using shorter instructions."
16:46:47 <darkling> The thing I linked to was the ARM3. Very similar, though.
16:46:51 <segfaultfizzbuzz> so R0 through R15 define the full state?
16:47:00 <darkling> segfaultfizzbuzz: Yes.
16:47:06 <geekosaur> like I said, first 3 pages were special
16:47:07 <darkling> geekosaur: That's the thing I was thinking of.
16:47:22 <geekosaur> I think $01 was used for indexing?
16:47:25 <int-e> geekosaur: Looks like page 1 is/was for stack. page 2 is for memory-mapped IO?
16:47:39 <geekosaur> mm, maybe I'm misremembering
16:47:40 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
16:48:00 <geekosaur> yeh, looks like $01 not $02
16:48:04 <segfaultfizzbuzz> darkling: and again like the z80, cpu state at clock t+1 is determined entirely by the opcode from clock t ?
16:48:12 × kimiamania quits (~65804703@user/kimiamania) (Quit: Ping timeout (120 seconds))
16:48:29 <darkling> Yes.
16:49:13 <segfaultfizzbuzz> lol "high level constructs like for, while, and proc"
16:49:25 econo joins (uid147250@user/econo)
16:49:35 <int-e> Well, there's external factors... RAM (if you're reading from memory) or interrupts...
16:49:56 <int-e> segfaultfizzbuzz: what's so funny about that
16:50:01 <int-e> :)
16:50:36 <geekosaur> welcome to 1970
16:50:50 kimiamania joins (~65804703@user/kimiamania)
16:51:08 <segfaultfizzbuzz> int-e: but RAM can only touch CPU state via the load instruction, i think (?)
16:51:23 <segfaultfizzbuzz> interrupts i definitely do not understand
16:52:09 <darkling> Interrupts are basically "something outside the CPU wants attention". There's usually a special line on the hardware that you change to tell the CPU about that,
16:52:37 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e)
16:53:02 <darkling> and then it'll usually do something like push the current PC onto the stack and jump to a special location, where you can put code that works out what the request was and what to do about it.
16:53:15 <int-e> And the CPU will save a bit of state (the instruction pointer as the bare minimum) and transfer control to an interrupt service routine (often at a fixed address those days)
16:53:43 <int-e> . o O ( stereo )
16:53:47 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
16:53:48 <darkling> On the early ARMs, it replaced about half the registers with a special set, put the original PC into LR and jumped to 0x08 (I think).
16:54:40 <int-e> oh yeah you can have a shadow register set just for interrupt handling
16:54:45 <int-e> as a way of preserving state
16:54:50 <darkling> Then you return from IRQ mode by copying LR back to PC (which on the ARM 2 & ARM 3 would also set the CPU flags, changing the mode from IRQ back to the original USR)
16:56:08 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
16:56:34 <darkling> Most of the time, you don't need to know about interrupts, unless you're writing an operating system.
16:56:57 <darkling> (Or something that interacts with the hardware outside the CPU/RAM system)
16:57:15 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e) (Ping timeout: 248 seconds)
16:58:00 <segfaultfizzbuzz> location always refers to RAM, and special location means a specific RAM address?
16:58:40 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
16:58:46 <darkling> Well, a specific instruction, which on most modern machines is RAM, yes.
16:59:06 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
16:59:52 <darkling> On the ZX Spectrum, for example, the first 8KiB of the address space was ROM, and the rest (8KiB or 48 KiB, depending onthe machine) was RAM.
17:01:49 × nattiestnate quits (~nate@202.138.250.13) (Quit: WeeChat 3.8)
17:02:36 <darkling> On the Acorn Archimedes (ARM-based), the ROM with the OS in it was mapped into the address space a bit higher, and the first page of address space was RAM (usually full of interrupt-handling code)
17:03:40 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
17:03:46 × zephyr__ quits (~irfan@106.214.197.187) (Quit: leaving)
17:07:38 zmt01 joins (~zmt00@user/zmt00)
17:09:20 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds)
17:09:36 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
17:11:03 <cdsmith> Anyone have a quick example of using GHC Generics with a container (of kind Type -> Type)?
17:12:59 morrow joins (~morrow@2a10:8012:11:e637:5553:520d:7730:7240)
17:14:16 <ph88> when i Show a bytestring how should i interpret something like this ? "\179\DLE\208x" are those escaping backslashes ?
17:15:41 <[exa]> yeah these are likely non-ascii bytes
17:16:10 <[exa]> if you're sure the bytestring should contain eg. utf8, it's best to decode it and show as normal string/text
17:17:59 <ph88> [exa], it's actually binary data ... perhaps there is a handy function to encode it to hex ? 00 FF 01 etc
17:18:03 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
17:19:34 <monochrom> You can unpack to get [Word8]. Then its show gives you decimal numbers.
17:20:22 <[exa]> `base16` package could help too
17:21:41 <[exa]> ah wait there's https://hackage.haskell.org/package/bytestring-0.11.4.0/docs/Data-ByteString-Builder.html#v:byteStringHex
17:23:10 zmt00 joins (~zmt00@user/zmt00)
17:25:18 × zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 255 seconds)
17:25:42 × CiaoSen quits (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
17:26:05 × zmt00 quits (~zmt00@user/zmt00) (Remote host closed the connection)
17:35:51 caryhartline joins (~caryhartl@2603:8080:6c00:6c01:7463:7a75:4b5e:bddd)
17:36:21 CiaoSen joins (~Jura@2003:c9:5704:6000:2a3a:4dff:fe84:dbd5)
17:39:27 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
17:44:15 coot joins (~coot@213.134.171.3)
17:44:36 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:51:12 × Katarushisu quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
17:55:06 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
17:56:53 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
18:08:29 × ddellacosta quits (~ddellacos@146.70.165.159) (Ping timeout: 255 seconds)
18:11:16 gurkenglas joins (~gurkengla@dynamic-046-114-176-132.46.114.pool.telefonica.de)
18:12:23 × accord quits (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
18:14:29 jakalx parts (~jakalx@base.jakalx.net) ()
18:19:53 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e)
18:22:05 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
18:22:33 × CiaoSen quits (~Jura@2003:c9:5704:6000:2a3a:4dff:fe84:dbd5) (Ping timeout: 252 seconds)
18:30:38 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
18:30:51 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
18:31:24 × coot quits (~coot@213.134.171.3) (Quit: coot)
18:36:45 × caryhartline quits (~caryhartl@2603:8080:6c00:6c01:7463:7a75:4b5e:bddd) (Quit: caryhartline)
18:40:13 × morrow quits (~morrow@2a10:8012:11:e637:5553:520d:7730:7240) (Ping timeout: 260 seconds)
18:44:10 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
18:45:07 fr33domlover joins (~fr33domlo@towards.vision)
18:47:43 biberu joins (~biberu@user/biberu)
18:49:07 × telser_ quits (~quassel@user/telser) (Ping timeout: 268 seconds)
18:50:01 telser joins (~quassel@user/telser)
18:53:07 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 246 seconds)
18:57:02 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
18:58:07 Sgeo joins (~Sgeo@user/sgeo)
18:59:13 × jtza8 quits (~user@165.255.63.244) (Remote host closed the connection)
18:59:32 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e) (Remote host closed the connection)
19:00:04 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
19:06:46 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
19:07:31 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
19:08:47 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
19:11:08 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds)
19:11:16 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e)
19:11:57 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
19:11:59 jpds joins (~jpds@gateway/tor-sasl/jpds)
19:12:55 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
19:14:53 accord joins (uid568320@id-568320.hampstead.irccloud.com)
19:17:15 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
19:18:40 dhil joins (~dhil@78.45.150.83.ewm.ftth.as8758.net)
19:21:56 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
19:24:32 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
19:24:59 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
19:28:03 × Guest2517 quits (~Guest25@103.15.228.66) (Ping timeout: 260 seconds)
19:31:14 Katarushisu joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
19:31:24 ddellacosta joins (~ddellacos@146.70.171.100)
19:36:01 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
19:41:46 × mei quits (~mei@user/mei) (Quit: mei)
19:43:46 mei joins (~mei@user/mei)
19:52:47 wroathe joins (~wroathe@50.205.197.50)
19:52:48 × wroathe quits (~wroathe@50.205.197.50) (Changing host)
19:52:48 wroathe joins (~wroathe@user/wroathe)
20:00:19 emmanuelux_ joins (~emmanuelu@user/emmanuelux)
20:00:35 CiaoSen joins (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
20:03:23 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Ping timeout: 252 seconds)
20:21:21 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
20:22:28 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
20:23:26 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
20:28:18 <Artem[m]> Is there a way to get a list of identifiers imported by the current module from some other one? I want to clean up imports a bit, and many modules in the project import Foo while Foo is simply a bunch of reexports from Foo.Bar, Foo.Baz, etc. I wont to replace imports of Foo to more fine grained imports of Foo.Bar etc. For that I need to know what Foo-identifiers are in use, then I can see which of Foo.Bars i need to import
20:28:18 <Artem[m]> instead of Foo.
20:31:48 <geekosaur> if you don't have an import list and it's not qualified then -Wmissing-import-lists will tell you all the identifiers so imported
20:32:13 <geekosaur> I don't think you can get it if you have it imported qualified. (the opposite case is an error)
20:34:02 <c_wraith> should HLS have that sort of functionality? It's clearly related to jump-to-definition
20:34:17 <geekosaur> HLS does and the warning I cited is where it gets it
20:36:40 <geekosaur> hm, I guess "error" is overspeaking a bit, no qualification and import list means the import list must be complete or you get undefined symbol errors
20:36:49 <mauke> can't you just remove the import and see which identifiers become errors?
20:37:00 <geekosaur> or that, yes
20:38:46 <geekosaur> what you can't tell is which of the imports in the other module it came from, because that information is completely lost when re-exported
20:39:31 <mauke> you can't have everything. (where would you put it?)
20:39:35 <geekosaur> (some of that is because it's difficult to get the linker to handle it, but also consider how `import … as X` interacts)
20:41:09 × Lycurgus quits (~juan@user/Lycurgus) (Ping timeout: 255 seconds)
20:41:21 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
20:42:38 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
20:44:18 × wroathe quits (~wroathe@user/wroathe) (Quit: leaving)
20:59:51 Monster196883 joins (~hp@2409:4064:4e98:40db:c950:2a30:5b3c:75a3)
21:04:53 Guest69 joins (~Guest69@109.237.26.33)
21:05:11 <Artem[m]> brilliant, thanks everyone for the suggestions
21:05:43 × Guest69 quits (~Guest69@109.237.26.33) (Client Quit)
21:05:53 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
21:06:12 <Artem[m]> yeah, attributing those identifiers to the more specific modules was a bonus point, but I didn't count on it...
21:08:34 <Artem[m]> and yes, I'm told HLS has something called "refine imports" that does exactly that. I wish I could use HLS superpowers in scripts...
21:11:17 azimut joins (~azimut@gateway/tor-sasl/azimut)
21:20:25 cstml joins (~cstml@cpc151611-shef16-2-0-cust313.17-1.cable.virginm.net)
21:26:28 × mechap quits (~mechap@user/mechap) (Ping timeout: 252 seconds)
21:27:38 mechap joins (~mechap@user/mechap)
21:31:15 × Monster196883 quits (~hp@2409:4064:4e98:40db:c950:2a30:5b3c:75a3) (Ping timeout: 260 seconds)
21:31:59 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
21:33:04 × mechap quits (~mechap@user/mechap) (Ping timeout: 252 seconds)
21:33:59 mechap joins (~mechap@user/mechap)
21:34:51 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
21:39:17 dcoutts_ joins (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
21:39:32 cheater_ joins (~Username@user/cheater)
21:42:14 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
21:42:18 cheater_ is now known as cheater
21:48:32 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 255 seconds)
21:50:33 × cstml quits (~cstml@cpc151611-shef16-2-0-cust313.17-1.cable.virginm.net) (Ping timeout: 246 seconds)
21:51:19 × trev quits (~trev@user/trev) (Remote host closed the connection)
21:51:29 jmdaemon joins (~jmdaemon@user/jmdaemon)
21:55:53 <sm> me too
21:57:35 <segfaultfizzbuzz> if i have a pure function which maps say, 8 bytes to 8 bytes, is it true that such a function can require more than 8 bytes of memory (during execution, if it is allowed to mutate the input memory), or can the function always be restricted to never use more than the input?
21:58:29 × bgs quits (~bgs@212.85.160.171) (Remote host closed the connection)
21:58:51 <segfaultfizzbuzz> i feel like *requiring more than 8 bytes
21:59:13 <segfaultfizzbuzz> during the intermediary computation would violate the pidgeonhole principle
21:59:37 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
22:02:29 <mauke> does code count as memory?
22:02:36 <segfaultfizzbuzz> no code is free
22:03:09 <segfaultfizzbuzz> and it's pure so there is no IO or other weird stuff
22:03:39 <mauke> if input == 0 then ... else if input == 1 then ... else if input == 2 then ...
22:03:54 × manwithluck quits (~manwithlu@194.177.28.192) (Remote host closed the connection)
22:05:20 <segfaultfizzbuzz> ay one day i will write a formal definition of a "non-intrinsic pathological counterexample"... so in this case,
22:06:06 <segfaultfizzbuzz> maybe i can fix the definition by saying that the code cannot be "enormous" in size, or maybe i can say that the code cannot branch
22:07:33 <monochrom> Or perhaps investigate the trade off between code size and space cost.
22:08:48 <mauke> fromEnum (x == 0) * r0 + fromEnum (x == 1) * r1 + fromEnum (x == 2) * r2 + ...
22:08:50 <mauke> branchless
22:11:11 × CiaoSen quits (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
22:11:17 manwithluck joins (~manwithlu@194.177.28.192)
22:11:26 <segfaultfizzbuzz> i think i will go with the defintion here that the function must be branch-free/always execute the same code path
22:11:39 <segfaultfizzbuzz> so you can only define a fixed sequence of operations
22:12:03 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Remote host closed the connection)
22:12:11 <jackdk> mauke's example qualifies
22:12:17 <monochrom> What is your model of computing anyway? Turing machines? Game of Life?
22:12:46 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
22:12:50 CiaoSen joins (~Jura@2003:c9:570e:9100:2a3a:4dff:fe84:dbd5)
22:12:52 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:13:05 <monochrom> What you think of as well-defined notions such as "branch free" are actually meaningless unless you first pick a model of computing.
22:13:58 <monochrom> For example there is no such thing as "code path" in the two models I mentioned.
22:15:01 <monochrom> This is why what I said about trade off between code size and space cost is a much more robust approach.
22:15:17 × kadobanana quits (~mud@user/kadoban) (Quit: quit)
22:17:03 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 248 seconds)
22:18:21 mud joins (~mud@user/kadoban)
22:18:46 × tubogram44 quits (~tubogram@user/tubogram) (Ping timeout: 246 seconds)
22:19:53 × abhixec quits (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) (Read error: Connection reset by peer)
22:20:40 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds)
22:20:49 × dcoutts_ quits (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Remote host closed the connection)
22:21:11 dcoutts_ joins (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
22:21:20 cstml joins (~cstml@cpc151611-shef16-2-0-cust313.17-1.cable.virginm.net)
22:21:54 mvk joins (~mvk@2607:fea8:5caa:ac00::fa57)
22:23:03 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
22:25:11 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
22:26:17 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
22:27:04 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
22:27:35 × manwithluck quits (~manwithlu@194.177.28.192) (Quit: ZNC - https://znc.in)
22:27:48 × dhil quits (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 255 seconds)
22:28:16 <segfaultfizzbuzz> hmm so i can't just have a bunch of logic gates...? it's a deterministic mapping so i don't understand what a "model of computing" would be...
22:28:50 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:29:37 manwithluck joins (~manwithlu@194.177.28.192)
22:32:49 <monochrom> Then "a bunch of logic gates" is your model of computing.
22:33:05 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
22:33:15 × azure_vermilion quits (~azure_ver@82-132-232-181.dab.02.net) (Ping timeout: 246 seconds)
22:33:50 azure_vermilion joins (~azure_ver@82-132-234-53.dab.02.net)
22:33:54 wroathe joins (~wroathe@50.205.197.50)
22:33:54 × wroathe quits (~wroathe@50.205.197.50) (Changing host)
22:33:54 wroathe joins (~wroathe@user/wroathe)
22:33:58 <monochrom> "a bunch of logic gates" is also a straightforward translation of both of mauke's programs, one of which you [mis]labelled as "branching".
22:34:29 <monochrom> So arguably "a bunch of logic gates but it has to be branch free" is actually self-contradictory.
22:35:27 × manwithluck quits (~manwithlu@194.177.28.192) (Ping timeout: 268 seconds)
22:35:38 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
22:36:00 <monochrom> This is why it's bad idea to do moving goalposts.
22:36:03 <darkling> But you don't get recursion or loops with linear logic, so it's a poor model of computing (but practically good enough if your function domain is finite and small enough).
22:36:05 <segfaultfizzbuzz> well if i had an addition operation, that isn't considered a branch (i don't think?) but it would use logic gates...
22:37:41 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
22:37:58 <monochrom> "x==0" is just a comparator (logic gates!). "if then else" is just a two-way demultiplexer (logic gates!).
22:39:07 <segfaultfizzbuzz> i think that i understand here: all we care about is the mapping, and so you may as well start off thinking about the *largest* encoding, which would be a complete table from inputs to outputs
22:39:18 <segfaultfizzbuzz> and the "model of computing" is merely a practical method for compressing or encoding that table
22:40:00 <segfaultfizzbuzz> so if extra memory beyond the 8 bytes turns out to be useful for making a more compact representation of the table, then it is useful
22:40:25 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
22:41:54 <segfaultfizzbuzz> i don't want to do moving goalposts, the issue is that my original question overlooked the fact that the code can be of arbitrary size and therefore encode a lookup table for the results
22:45:07 random-jellyfish joins (~random-je@user/random-jellyfish)
22:46:11 <[exa]> segfaultfizzbuzz: btw the closest distinction to your original problem that I recall are the limited turing machines, they have a nice spot in chomsky hierarchy capturing type-1 languages
22:46:22 manwithluck joins (~manwithlu@194.177.28.192)
22:46:56 <monochrom> Is that the one about context-sensitive languages?
22:47:07 <[exa]> yeah, with the noncontracting grammars
22:47:37 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 246 seconds)
22:47:49 <[exa]> ah nvm they pingtimeouted
22:48:29 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
22:50:13 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
22:50:46 tan00kee joins (~paul@pauloliver.dev)
22:50:48 <monochrom> I bet code size + space code >= log_2 (how many functions from 8 bytes to 8 bytes)
22:51:15 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:51:16 <monochrom> err s/space code/space size/
22:51:30 × hnOsmium0001 quits (uid453710@user/hnOsmium0001) (Quit: Connection closed for inactivity)
22:52:42 × manwithluck quits (~manwithlu@194.177.28.192) (Ping timeout: 268 seconds)
22:52:55 <[exa]> I wouldn't like to bet there, you can encode really ugly stuff in these functions
22:52:56 <monochrom> No, that flies in the face of constant functions.
22:53:19 × cstml quits (~cstml@cpc151611-shef16-2-0-cust313.17-1.cable.virginm.net) (Ping timeout: 268 seconds)
22:54:02 <[exa]> like, split the 64 bits to 3 pieces, compute ackermann function on that, and return the first 64 bits
22:54:27 <[exa]> (or middle 64 bits, so that we're sufficiently evil)
22:56:28 <[exa]> with that I guess the full lookup table might be an good, economical option
22:57:02 <[exa]> *a
22:58:04 Sciencentistguy9 joins (~sciencent@hacksoc/ordinary-member)
22:58:37 <monochrom> The mid-square method was not a very good PRNG. But perhaps this mid-ack method is better. >:)
22:59:40 <darkling> You might need a time machine to ensure a decent throughput. :)
23:00:10 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
23:00:31 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 252 seconds)
23:00:31 Sciencentistguy9 is now known as Sciencentistguy
23:01:49 <segfaultfizzbuzz> [exa]: i will look up type-1 languages
23:03:29 <[exa]> segfaultfizzbuzz: you seem to have timeouted, they correspond to languages that are matched by non-contracting grammars
23:04:02 <[exa]> which is kinda useful distinction, since that nicely describes how all computation should be preferably reducing complexity, not adding it
23:06:12 <[exa]> anyway the computability distinction is probably impractical for your scale -- the "language" of functions from 8B to 8B is finite so it's "not even type-3" in the hierarchy, but there might be examples where just implementing it with a lookup table might be the best opinion
23:07:00 <[exa]> possible example: 23:54 < [exa]> like, split the 64 bits to 3 pieces, compute ackermann function on that, and return the first 64 bits (or middle 64 bits, so that we're sufficiently evil)
23:07:34 Lycurgus joins (~juan@98.4.112.204)
23:07:34 × Lycurgus quits (~juan@98.4.112.204) (Changing host)
23:07:34 Lycurgus joins (~juan@user/Lycurgus)
23:08:41 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
23:08:45 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
23:09:11 <[exa]> (the lookup in that case is just 128 exabytes, comparatively a bargain!)
23:09:18 <geekosaur> gone again
23:09:21 <[exa]> I see
23:09:29 <[exa]> nvm, they have channel logs.
23:09:58 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
23:11:14 manwithluck joins (~manwithlu@194.177.28.192)
23:11:25 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 246 seconds)
23:11:40 <monochrom> This is scary Kolmogorov complexity territory.
23:14:55 <[exa]> yeah
23:15:38 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
23:16:06 <[exa]> I know a guy who's got a paper on "probability that a randomly chosen program terminates" and I literally don't understand a tiniest piece of that paper
23:16:25 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection)
23:16:27 <[exa]> what's more scary that they got an actual number there
23:17:28 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
23:17:43 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Client Quit)
23:18:05 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
23:20:27 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
23:23:01 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
23:23:07 <segfaultfizzbuzz> [exa]: oh interesting, i always wondered how to choose a measure on the space of programs... got a link?
23:24:29 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
23:25:03 × vandita quits (~vandit@178.164.206.90) (Ping timeout: 252 seconds)
23:26:43 vandita joins (~vandit@92-249-150-182.static.digikabel.hu)
23:26:55 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 252 seconds)
23:27:59 × CiaoSen quits (~Jura@2003:c9:570e:9100:2a3a:4dff:fe84:dbd5) (Ping timeout: 252 seconds)
23:28:43 <segfaultfizzbuzz> [exa]: link to "probability that a randomly chosen program terminates" i meant
23:30:19 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
23:30:22 <segfaultfizzbuzz> [exa]: i think by "limited turing machine" you mean restricted turing machine?
23:30:39 × dcoutts_ quits (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Ping timeout: 248 seconds)
23:31:52 × telser quits (~quassel@user/telser) (Ping timeout: 252 seconds)
23:31:53 telser_ joins (~quassel@user/telser)
23:39:44 pavonia joins (~user@user/siracusa)
23:40:15 × segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
23:40:29 × Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
23:48:48 × Lycurgus quits (~juan@user/Lycurgus) (Ping timeout: 255 seconds)
23:54:27 × accord quits (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
23:55:03 mmhat joins (~mmh@p200300f1c7248afaee086bfffe095315.dip0.t-ipconnect.de)

All times are in UTC on 2023-02-25.