2022/01/03

2022-01-03 00:01:30 +0100 <Hecate> __monty__, geekosaur, could I ask you to take a look at this writeup that introduces Flora? https://github.com/flora-pm/flora-server/wiki/What-is-Flora
2022-01-03 00:01:31 +0100juhp[m](~juhpmatri@2001:470:69fc:105::6e9)
2022-01-03 00:01:31 +0100moats(~oats@user/oats)
2022-01-03 00:01:39 +0100 <Hecate> I'm trying to clarify my thoughts :P
2022-01-03 00:01:43 +0100Ollie[m](~ollieocha@2001:470:69fc:105::41a5)
2022-01-03 00:01:43 +0100quantum(~quantum@user/quantum/x-8556232)
2022-01-03 00:01:57 +0100marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2022-01-03 00:01:57 +0100finalti[m](~finaltima@2001:470:69fc:105::d909)
2022-01-03 00:01:57 +0100schuelermine[m](~schuelerm@user/schuelermine)
2022-01-03 00:01:57 +0100Deide(~deide@user/deide)
2022-01-03 00:01:57 +0100Artem[m](~artemtype@2001:470:69fc:105::75b)
2022-01-03 00:01:58 +0100Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8)
2022-01-03 00:01:58 +0100zwro[m](~zwromatri@2001:470:69fc:105::1d4)
2022-01-03 00:01:58 +0100alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba)
2022-01-03 00:01:58 +0100jneira[m](~jneiramat@2001:470:69fc:105::d729)
2022-01-03 00:02:10 +0100Magnus[m](~magthetch@2001:470:69fc:105::d1a7)
2022-01-03 00:02:10 +0100smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2022-01-03 00:02:22 +0100SawyerBergeron[m(~sawyerber@2001:470:69fc:105::3036)
2022-01-03 00:02:22 +0100alex[m](~alexchete@2001:470:69fc:105::1:1001)
2022-01-03 00:02:22 +0100ManofLetters[m](~manoflett@2001:470:69fc:105::3be)
2022-01-03 00:02:23 +0100fendor[m](~fendormat@2001:470:69fc:105::fcbd)
2022-01-03 00:02:23 +0100DemiMarieObenour(~alwayscur@2001:470:69fc:105::4886)
2022-01-03 00:02:23 +0100jmcantrell(~jmcantrel@user/jmcantrell)
2022-01-03 00:02:35 +0100maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2022-01-03 00:02:49 +0100nomeata(~nomeatama@2001:470:69fc:105::1:5ed4)
2022-01-03 00:02:49 +0100jinsun_(~jinsun@user/jinsun)
2022-01-03 00:02:49 +0100inkbottle[m](~inkbottle@2001:470:69fc:105::2ff5)
2022-01-03 00:03:03 +0100fcortesi(~fcortesi@2001:470:69fc:105::f3a9)
2022-01-03 00:03:16 +0100pfurla-matrix(~pedrofurl@2001:470:69fc:105::1:51d7)
2022-01-03 00:04:06 +0100 <geekosaur> seems ok to me. might be better to ask angerman since he was the one confused about it
2022-01-03 00:04:37 +0100 <geekosaur> hm, except we lost him during the late unpleasantness
2022-01-03 00:07:19 +0100nhs(~nhs@136.49.226.20) (Quit: leaving)
2022-01-03 00:07:34 +0100nhs(~nhs@136.49.226.20)
2022-01-03 00:07:42 +0100nhs(~nhs@136.49.226.20) (Client Quit)
2022-01-03 00:08:26 +0100nhs(~nhs@136.49.226.20)
2022-01-03 00:09:22 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
2022-01-03 00:13:51 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-01-03 00:14:12 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2022-01-03 00:15:04 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-03 00:16:36 +0100alx741(~alx741@157.100.93.160)
2022-01-03 00:16:50 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-01-03 00:17:57 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2022-01-03 00:19:36 +0100deadmarshal(~deadmarsh@95.38.118.93)
2022-01-03 00:22:00 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2022-01-03 00:22:00 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 00:24:03 +0100deadmarshal(~deadmarsh@95.38.118.93) (Ping timeout: 256 seconds)
2022-01-03 00:25:52 +0100ksqsf(~user@134.209.106.31)
2022-01-03 00:26:15 +0100x_kuru_(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-01-03 00:30:17 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2022-01-03 00:31:52 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-01-03 00:35:09 +0100ksqsf(~user@134.209.106.31)
2022-01-03 00:36:37 +0100duuude(~user@user/duuude) (Ping timeout: 240 seconds)
2022-01-03 00:38:40 +0100alx741(~alx741@157.100.93.160)
2022-01-03 00:42:02 +0100sagax(~sagax_nb@user/sagax) (Excess Flood)
2022-01-03 00:42:13 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2022-01-03 00:42:29 +0100xff0x_(~xff0x@2001:1a81:5335:ab00:175a:eec8:110f:8c7e) (Ping timeout: 250 seconds)
2022-01-03 00:43:34 +0100xff0x_(~xff0x@2001:1a81:5335:ab00:6ff0:ac84:9d3f:2b35)
2022-01-03 00:44:57 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 00:45:32 +0100xff0x_xff0x
2022-01-03 00:51:53 +0100max22-(~maxime@2a01cb08833598000dfdedebd194573b.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2022-01-03 00:52:11 +0100vysn(~vysn@user/vysn)
2022-01-03 00:52:55 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
2022-01-03 01:00:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 01:03:01 +0100 <lagash_> timCF: that sounds like Briar to me..
2022-01-03 01:03:15 +0100alx741(~alx741@157.100.93.160)
2022-01-03 01:05:11 +0100sabbas(~sabbas@user/sabbas) (Quit: leaving)
2022-01-03 01:07:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-03 01:10:05 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-03 01:14:00 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-01-03 01:16:18 +0100burnside_(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-03 01:17:03 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 01:17:34 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Remote host closed the connection)
2022-01-03 01:17:50 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 01:17:50 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 01:17:50 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 01:19:01 +0100 <__monty__> I'll take a look tomorrow, Hecate.
2022-01-03 01:19:16 +0100TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com)
2022-01-03 01:19:23 +0100 <__monty__> I'm sure angerman just logged out and will be back tomorrow/soon : )
2022-01-03 01:22:33 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-03 01:25:17 +0100foul_owl(~kerry@97-126-11-68.tukw.qwest.net) (Ping timeout: 240 seconds)
2022-01-03 01:28:37 +0100ouestbilliedesproges
2022-01-03 01:32:16 +0100desproges(~gallup@192-222-138-215.qc.cable.ebox.net) (Quit: leaving)
2022-01-03 01:32:36 +0100ouestbillie(~gallup@192-222-138-215.qc.cable.ebox.net)
2022-01-03 01:33:17 +0100alx741(~alx741@157.100.93.160)
2022-01-03 01:36:44 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-01-03 01:38:59 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 256 seconds)
2022-01-03 01:40:10 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 01:40:47 +0100foul_owl(~kerry@94.140.8.107)
2022-01-03 01:41:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 01:41:49 +0100Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2022-01-03 01:42:16 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
2022-01-03 01:43:20 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-01-03 01:44:41 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 250 seconds)
2022-01-03 01:46:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2022-01-03 01:46:19 +0100mvk(~mvk@2607:fea8:5cdd:f000::917a)
2022-01-03 01:47:09 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-01-03 01:48:58 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-03 01:53:35 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2022-01-03 01:56:29 +0100Bartol(~Bartol@user/Bartol)
2022-01-03 01:57:51 +0100alx741(~alx741@157.100.93.160)
2022-01-03 01:58:28 +0100Bartol(~Bartol@user/Bartol) (Remote host closed the connection)
2022-01-03 02:00:12 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-03 02:01:42 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-01-03 02:05:25 +0100califax(~califax@user/califx)
2022-01-03 02:10:02 +0100jijimofo(~cmo@S010610561191f5d6.lb.shawcable.net)
2022-01-03 02:12:37 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 02:13:33 +0100 <jijimofo> does anyone know where i can get an explanation of the types opencv uses? eg 'Proxy :: Proxy 3'. So 3 is a type level nat?
2022-01-03 02:14:14 +0100 <geekosaur> yes
2022-01-03 02:14:30 +0100 <jijimofo> ok so what i should be looking at is type families?
2022-01-03 02:14:43 +0100 <geekosaur> depends on what's using that
2022-01-03 02:15:48 +0100ksqsf(~user@134.209.106.31)
2022-01-03 02:18:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 02:18:54 +0100kaph_(~kaph@net-2-38-107-19.cust.vodafonedsl.it)
2022-01-03 02:18:55 +0100kaph_(~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Remote host closed the connection)
2022-01-03 02:20:47 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 256 seconds)
2022-01-03 02:21:55 +0100kaph(~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Ping timeout: 256 seconds)
2022-01-03 02:22:26 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 245 seconds)
2022-01-03 02:24:17 +0100ensyde(~ensyde@2600:1702:2e30:1a40:c809:1c51:d4e7:3d0a)
2022-01-03 02:24:45 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41)
2022-01-03 02:25:13 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 02:25:13 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 02:25:13 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 02:28:48 +0100alx741(~alx741@157.100.93.160)
2022-01-03 02:29:02 +0100geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Remote host closed the connection)
2022-01-03 02:32:13 +0100acidjnk(~acidjnk@p200300d0c7271e70c580124c5fb62625.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-03 02:32:13 +0100acidjnk_new(~acidjnk@p200300d0c7271e70c580124c5fb62625.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-03 02:38:18 +0100drewr(~drew@user/drewr) (Quit: ERC (IRC client for Emacs 27.2))
2022-01-03 02:40:22 +0100Tuplanolla(~Tuplanoll@91-159-69-90.elisa-laajakaista.fi) (Quit: Leaving.)
2022-01-03 02:51:07 +0100jijimofo(~cmo@S010610561191f5d6.lb.shawcable.net) (Quit: Leaving)
2022-01-03 02:51:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-03 02:52:54 +0100ksqsf(~user@134.209.106.31)
2022-01-03 02:53:19 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 02:57:17 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2022-01-03 03:01:41 +0100fef(~thedawn@user/thedawn)
2022-01-03 03:09:46 +0100alx741(~alx741@157.100.93.160)
2022-01-03 03:12:01 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:20:28 +0100califax-(~califax@user/califx)
2022-01-03 03:21:11 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 03:24:27 +0100califax(~califax@user/califx) (Ping timeout: 276 seconds)
2022-01-03 03:24:28 +0100califax-califax
2022-01-03 03:27:03 +0100nunggu(~q@gateway/tor-sasl/nunggu) (Ping timeout: 276 seconds)
2022-01-03 03:28:57 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
2022-01-03 03:29:11 +0100nunggu(~q@gateway/tor-sasl/nunggu)
2022-01-03 03:34:32 +0100neurocyte6(~neurocyte@IP-212232081017.dynamic.medianet-world.de)
2022-01-03 03:34:32 +0100neurocyte6(~neurocyte@IP-212232081017.dynamic.medianet-world.de) (Changing host)
2022-01-03 03:34:32 +0100neurocyte6(~neurocyte@user/neurocyte)
2022-01-03 03:36:43 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:36:46 +0100neurocyte(~neurocyte@user/neurocyte) (Ping timeout: 260 seconds)
2022-01-03 03:36:46 +0100neurocyte6neurocyte
2022-01-03 03:36:57 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:37:05 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:37:20 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:37:26 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:37:41 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:37:48 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:38:01 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:38:09 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:38:23 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:38:31 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:38:44 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:38:52 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:39:07 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:39:15 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:39:21 +0100alx741(~alx741@157.100.93.160)
2022-01-03 03:39:29 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:39:36 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:39:49 +0100xff0x(~xff0x@2001:1a81:5335:ab00:6ff0:ac84:9d3f:2b35) (Ping timeout: 240 seconds)
2022-01-03 03:39:50 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:39:58 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:40:13 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:40:21 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:40:35 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:40:43 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:40:56 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:41:04 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:41:19 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:41:27 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:41:43 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:41:44 +0100xff0x(~xff0x@2001:1a81:5370:9b00:cd1d:3c45:12cd:b91e)
2022-01-03 03:41:50 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:41:53 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
2022-01-03 03:42:04 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:42:11 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:42:28 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:42:36 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:42:50 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:42:58 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:43:12 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:43:20 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:43:37 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:43:44 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:43:58 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 03:44:06 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-03 03:46:05 +0100gaff(~gaff@49.207.198.138)
2022-01-03 03:47:04 +0100ksqsf(~user@134.209.106.31)
2022-01-03 03:48:17 +0100gaff(~gaff@49.207.198.138) (Read error: Connection reset by peer)
2022-01-03 03:48:21 +0100gaff_(~gaff@49.207.198.138)
2022-01-03 03:51:50 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-01-03 03:52:09 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 256 seconds)
2022-01-03 03:53:06 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
2022-01-03 03:55:48 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-01-03 04:03:21 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 256 seconds)
2022-01-03 04:04:45 +0100lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-01-03 04:08:54 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-01-03 04:12:49 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
2022-01-03 04:14:34 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 04:16:40 +0100lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-01-03 04:16:59 +0100euandreh(~euandreh@2804:14c:33:9fe5:d903:d876:1354:7b4c) (Ping timeout: 250 seconds)
2022-01-03 04:17:31 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-01-03 04:18:04 +0100euandreh(~euandreh@2804:14c:33:9fe5:df45:34e6:a5aa:758)
2022-01-03 04:19:21 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-01-03 04:21:46 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 04:27:45 +0100ksqsf(~user@134.209.106.31)
2022-01-03 04:32:57 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 256 seconds)
2022-01-03 04:37:44 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 252 seconds)
2022-01-03 04:39:53 +0100alx741(~alx741@157.100.93.160)
2022-01-03 04:43:11 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2022-01-03 04:44:43 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-01-03 04:46:19 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-01-03 04:47:14 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-01-03 04:47:14 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-01-03 04:47:14 +0100finn_elijaFinnElija
2022-01-03 04:48:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 04:50:57 +0100td__(~td@muedsl-82-207-238-078.citykom.de) (Ping timeout: 256 seconds)
2022-01-03 04:51:26 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Remote host closed the connection)
2022-01-03 04:52:33 +0100perrierjouet(~perrier-j@185.128.26.174)
2022-01-03 04:52:55 +0100td_(~td@94.134.91.188)
2022-01-03 04:53:41 +0100neverwas(jpneverwas@swissbox.unperson.link) (Ping timeout: 252 seconds)
2022-01-03 04:54:27 +0100neverwas(jpneverwas@swissbox.unperson.link)
2022-01-03 04:57:39 +0100Feuermagier(~Feuermagi@user/feuermagier)
2022-01-03 04:59:29 +0100antanananananas(~antanas@78-63-84-180.static.zebra.lt)
2022-01-03 05:00:09 +0100perrierjouet(~perrier-j@185.128.26.174) (Ping timeout: 256 seconds)
2022-01-03 05:01:02 +0100antanananananas(~antanas@78-63-84-180.static.zebra.lt) ()
2022-01-03 05:01:02 +0100antanananananas(~antanas@78-63-84-180.static.zebra.lt)
2022-01-03 05:02:32 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 05:04:10 +0100antanananananas(~antanas@78-63-84-180.static.zebra.lt) (Quit: Lost terminal)
2022-01-03 05:12:34 +0100surgeon[m](~surge9nma@2001:470:69fc:105::f585) (Quit: Client limit exceeded: 20000)
2022-01-03 05:12:34 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
2022-01-03 05:15:19 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-03 05:20:23 +0100alx741(~alx741@157.100.93.160)
2022-01-03 05:21:53 +0100ksqsf(~user@134.209.106.31)
2022-01-03 05:22:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-03 05:23:39 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 05:23:39 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 05:23:39 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 05:23:53 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
2022-01-03 05:25:23 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 05:26:17 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2022-01-03 05:27:57 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2022-01-03 05:28:29 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-03 05:35:43 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-01-03 05:37:58 +0100ksqsf(~user@134.209.106.31)
2022-01-03 05:41:07 +0100Everything(~Everythin@37.115.210.35) (Quit: leaving)
2022-01-03 05:42:34 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-f0e5-670e-3c83-ae24.res6.spectrum.com)
2022-01-03 05:42:45 +0100dsamperi(~dsamperi@2603-7000-3b42-5400-f0e5-670e-3c83-ae24.res6.spectrum.com) (Client Quit)
2022-01-03 05:43:05 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 256 seconds)
2022-01-03 05:43:10 +0100ormaaj(~ormaaj@user/ormaaj)
2022-01-03 05:44:03 +0100alx741(~alx741@157.100.93.160)
2022-01-03 05:44:55 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2022-01-03 05:45:01 +0100sabx(~sabbas@user/sabbas)
2022-01-03 05:45:26 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-01-03 05:45:57 +0100deadmarshal(~deadmarsh@95.38.118.93)
2022-01-03 05:54:37 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2022-01-03 05:55:07 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-01-03 05:56:46 +0100vglfr(~vglfr@46.96.180.119)
2022-01-03 05:56:46 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 05:58:55 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-01-03 06:02:24 +0100fef(~thedawn@user/thedawn) (Ping timeout: 276 seconds)
2022-01-03 06:02:32 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
2022-01-03 06:05:57 +0100ksqsf(~user@134.209.106.31)
2022-01-03 06:06:08 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 06:06:08 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 06:06:08 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 06:06:46 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-01-03 06:10:59 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-03 06:13:10 +0100alx741(~alx741@157.100.93.160)
2022-01-03 06:16:05 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-01-03 06:16:12 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 06:21:03 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-01-03 06:27:14 +0100maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Changing host)
2022-01-03 06:27:14 +0100maerwald[m](~maerwaldm@user/maerwald)
2022-01-03 06:29:30 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 06:47:46 +0100alx741(~alx741@157.100.93.160)
2022-01-03 06:48:57 +0100deadmarshal(~deadmarsh@95.38.118.93) (Ping timeout: 256 seconds)
2022-01-03 06:58:50 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 06:59:12 +0100deadmarshal(~deadmarsh@95.38.118.93)
2022-01-03 07:07:10 +0100falafel(~falafel@2603-8000-d800-688c-c064-54e6-9a05-e359.res6.spectrum.com)
2022-01-03 07:07:24 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
2022-01-03 07:09:47 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2022-01-03 07:10:24 +0100falafel_(~falafel@2603-8000-d800-688c-c064-54e6-9a05-e359.res6.spectrum.com)
2022-01-03 07:11:09 +0100shriekingnoise_(~shrieking@186.137.144.80) (Quit: Quit)
2022-01-03 07:12:57 +0100falafel(~falafel@2603-8000-d800-688c-c064-54e6-9a05-e359.res6.spectrum.com) (Ping timeout: 240 seconds)
2022-01-03 07:15:46 +0100alx741(~alx741@157.100.93.160)
2022-01-03 07:19:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 07:20:02 +0100sirlensalot(~sirlensal@ool-44c5f8c9.dyn.optonline.net) (Quit: sirlensalot)
2022-01-03 07:20:28 +0100off^(~off@207.5.21.20)
2022-01-03 07:27:13 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 07:27:45 +0100rembo10(~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2022-01-03 07:28:58 +0100rembo10(~rembo10@remulis.com)
2022-01-03 07:32:21 +0100kaph(~kaph@net-2-38-107-19.cust.vodafonedsl.it)
2022-01-03 07:40:17 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds)
2022-01-03 07:43:36 +0100off^(~off@207.5.21.20) (Remote host closed the connection)
2022-01-03 07:45:20 +0100alx741(~alx741@157.100.93.160)
2022-01-03 07:50:05 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 07:53:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-03 08:04:37 +0100falafel_(~falafel@2603-8000-d800-688c-c064-54e6-9a05-e359.res6.spectrum.com) (Ping timeout: 240 seconds)
2022-01-03 08:06:28 +0100falafel_(~falafel@2603-8000-d800-688c-c064-54e6-9a05-e359.res6.spectrum.com)
2022-01-03 08:07:52 +0100alx741(~alx741@157.100.93.160)
2022-01-03 08:07:57 +0100coolnickname(uid531864@user/coolnickname)
2022-01-03 08:11:07 +0100gaff_(~gaff@49.207.198.138) (Ping timeout: 256 seconds)
2022-01-03 08:12:43 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 08:13:05 +0100 <mjrosenb> is this a good place to ask about hie-bios?
2022-01-03 08:13:06 +0100surgeon[m](~surge9nma@2001:470:69fc:105::f585)
2022-01-03 08:16:34 +0100 <mjrosenb> I'm trying to follow the directions that they gave for ignoring directories in hie.yaml
2022-01-03 08:16:45 +0100 <mjrosenb> but tha isn't working; I'm getting yaml errors.
2022-01-03 08:17:14 +0100 <mjrosenb> InvalidYaml (Just (YamlException "Duplicate keys are not allowed, found: [[Key \"cradle\",Key
2022-01-03 08:17:17 +0100 <mjrosenb> \"multi\",Index 1,Key \"config\"]]"))
2022-01-03 08:17:20 +0100 <mjrosenb> InvalidYaml (Just (YamlException "Duplicate keys are not allowed, found: [[Key \"cradle\",Key
2022-01-03 08:17:23 +0100 <mjrosenb> \"multi\",Index 1,Key \"config\"]]"))
2022-01-03 08:17:38 +0100 <mjrosenb> whoops, didn't mean to paste it twice.
2022-01-03 08:19:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 08:20:20 +0100spaceseller(~spacesell@31.147.205.13)
2022-01-03 08:25:47 +0100meinside(uid24933@id-24933.helmsley.irccloud.com)
2022-01-03 08:26:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-03 08:27:27 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 250 seconds)
2022-01-03 08:28:48 +0100alx741(~alx741@157.100.93.160)
2022-01-03 08:29:37 +0100timCF(~timCF@m91-129-100-224.cust.tele2.ee) (Ping timeout: 240 seconds)
2022-01-03 08:30:21 +0100whatif(~user@47.245.54.240)
2022-01-03 08:30:57 +0100 <whatif> why State a a can't be print?
2022-01-03 08:31:19 +0100 <[exa]> mjrosenb: always better be sure with pastebin :D anyway can you pastebin the relevant snippets of the config?
2022-01-03 08:31:25 +0100 <whatif> Maybe is an instance of Show, and why State isn't?
2022-01-03 08:31:28 +0100 <[exa]> whatif: because it's internally a function
2022-01-03 08:31:39 +0100 <[exa]> and it's very hard to print functions
2022-01-03 08:32:31 +0100 <whatif> [exa]: State a b is a function?
2022-01-03 08:32:32 +0100 <[exa]> technically, you'd need to construct something like `instance Show (a -> (a,a))`
2022-01-03 08:32:42 +0100 <[exa]> yes
2022-01-03 08:32:49 +0100 <[exa]> though wrapped
2022-01-03 08:33:10 +0100 <whatif> :t State
2022-01-03 08:33:10 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 08:33:11 +0100 <lambdabot> error:
2022-01-03 08:33:11 +0100 <lambdabot> • Data constructor not in scope: State
2022-01-03 08:33:11 +0100 <lambdabot> • Perhaps you meant one of these:
2022-01-03 08:33:13 +0100 <[exa]> see e.g. here, a non-transformer version of State: https://hackage.haskell.org/package/containers-0.6.5.1/docs/Data-Sequence-Internal.html#t:State
2022-01-03 08:33:40 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
2022-01-03 08:33:57 +0100 <[exa]> `State s a` is a datatype with a single field of type `s -> (a,s)`
2022-01-03 08:34:06 +0100 <[exa]> (or (s,a), depending on author's preferences)
2022-01-03 08:34:38 +0100 <[exa]> the stateful computation is internally modelled as a function that takes old state and produces new state + the "result"
2022-01-03 08:34:54 +0100 <xsperry> in other words, Show instance of state couldn't print anything useful the argument you'd provide to runState/evalState
2022-01-03 08:35:02 +0100 <xsperry> without the argument*
2022-01-03 08:35:13 +0100 <whatif> [exa]: why people always the transformer to define the type? use StateT to define State
2022-01-03 08:35:29 +0100 <whatif> but not use MaybeT to define Maybe
2022-01-03 08:36:14 +0100 <EvanR> don't worry about MaybeT, there's ExceptT
2022-01-03 08:36:17 +0100 <jackdk> probably because MaybeT predates Maybe
2022-01-03 08:36:33 +0100 <[exa]> whatif: with State, it saves a lot of almost duplicate code in libraries. Maybe is in `base` and needs to have the constructors directly accessible to programmers, unlike State
2022-01-03 08:37:13 +0100Jing(~hedgehog@2604:a840:3::1013)
2022-01-03 08:37:31 +0100 <EvanR> also Maybe = MaybeT Identity would be annoying
2022-01-03 08:38:02 +0100 <whatif> EvanR I think the others are annoying too
2022-01-03 08:38:20 +0100 <[exa]> yeah, and everyone loves patternmatching Just x, not Just (Identity x)
2022-01-03 08:38:24 +0100 <EvanR> the error messages from State = StateT Identity are pretty bad yeah
2022-01-03 08:38:33 +0100 <whatif> there's no Reader, Writer, State
2022-01-03 08:38:33 +0100 <EvanR> or Writer
2022-01-03 08:38:51 +0100 <whatif> and also the famous Cont
2022-01-03 08:39:14 +0100gaff(~gaff@49.207.209.253)
2022-01-03 08:39:26 +0100 <EvanR> Maybe (no T) is pretty fundamental and not a wrapper
2022-01-03 08:39:42 +0100 <whatif> so is there IdentityT ? IdentityT Identity
2022-01-03 08:39:45 +0100 <EvanR> Maybe A is like A + 1
2022-01-03 08:41:14 +0100 <tomsmeding> @let data IdentityT m a = IdentityT (m a) deriving (Show)
2022-01-03 08:41:15 +0100 <lambdabot> Defined.
2022-01-03 08:41:24 +0100 <tomsmeding> @let instance MonadTrans IdentityT where lift = IdentityT
2022-01-03 08:41:25 +0100 <lambdabot> /sandbox/tmp/.L.hs:166:21: error:
2022-01-03 08:41:25 +0100 <lambdabot> Ambiguous occurrence ‘IdentityT’
2022-01-03 08:41:25 +0100 <lambdabot> It could refer to
2022-01-03 08:41:32 +0100 <tomsmeding> lol I was not the first one
2022-01-03 08:41:54 +0100 <tomsmeding> whatif: Identity does nothing, and IdentityT just does more nothing
2022-01-03 08:42:21 +0100Akiva(~Akiva@user/Akiva)
2022-01-03 08:42:35 +0100 <whatif> tomsmeding: is there a library, define the simple unwrapped type like Reader, State, Cont etc
2022-01-03 08:44:06 +0100 <EvanR> really, Reader and Cont are probably easier to use without the wrapper
2022-01-03 08:44:28 +0100 <whatif> how you people accept that use transformer way to define type when you're beginner?
2022-01-03 08:45:05 +0100 <EvanR> as a beginner, go without mtl transformers for a minute
2022-01-03 08:45:35 +0100 <EvanR> you don't need StateT to work with state
2022-01-03 08:45:48 +0100kvakil(~keyhan@2601:645:8500:4fc0:2df5:f7d6:e89:c64b)
2022-01-03 08:46:53 +0100ksqsf(~user@134.209.106.31) (Remote host closed the connection)
2022-01-03 08:46:53 +0100 <[exa]> for a beginner it's best to invest 3 minutes of life into reimplementing State, then the problems disappear
2022-01-03 08:47:31 +0100 <EvanR> is good but won't help decipher the errors from mtl
2022-01-03 08:48:32 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-01-03 08:48:55 +0100 <EvanR> so 3 minutes later invest 30 minutes implementing StateT the way mtl does
2022-01-03 08:49:21 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 250 seconds)
2022-01-03 08:49:25 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
2022-01-03 08:51:20 +0100alx741(~alx741@157.100.93.160)
2022-01-03 08:54:50 +0100 <jackdk> mtl is an industrial tool, not a learning tool. therefore, build the learning tool to learn and use the industrial tool later
2022-01-03 08:57:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 09:01:25 +0100 <whatif> f = \x -> do { o <- get; let n = o+1; put n; return (o+n) } parse "put n;" error, what do I miss?
2022-01-03 09:02:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-03 09:02:41 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 09:04:50 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-01-03 09:05:32 +0100 <tomsmeding> @let f = \x -> do { o <- get; let n = o+1; put n; return (o+n) }
2022-01-03 09:05:32 +0100 <lambdabot> Parse failed: Parse error: ;
2022-01-03 09:05:40 +0100 <tomsmeding> @let f = \x -> do { o <- get; let { n = o+1 }; put n; return (o+n) }
2022-01-03 09:05:42 +0100 <lambdabot> Defined.
2022-01-03 09:06:03 +0100 <tomsmeding> whatif: 'let' also takes multiple bindings using ; so the ; before 'put' got parsed as belonging to the 'let'
2022-01-03 09:06:32 +0100 <tomsmeding> if you use the multi-line version with indentation, you have no such issues :)
2022-01-03 09:07:35 +0100 <whatif> tomsmeding: why let doesn't use ',' as split?
2022-01-03 09:07:53 +0100 <whatif> let a=1, b=2
2022-01-03 09:08:04 +0100 <tomsmeding> I guess it could
2022-01-03 09:08:11 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 09:08:18 +0100 <tomsmeding> but please put it on multiple lines :p
2022-01-03 09:08:19 +0100 <EvanR> braces and semicolons is the raw form of that syntax, no need to make that fancy too
2022-01-03 09:08:37 +0100falafel_(~falafel@2603-8000-d800-688c-c064-54e6-9a05-e359.res6.spectrum.com) (Ping timeout: 240 seconds)
2022-01-03 09:09:03 +0100 <tomsmeding> whatif: https://paste.tomsmeding.com/FOIejovG
2022-01-03 09:12:01 +0100 <whatif> f :: Int -> State Int Int
2022-01-03 09:12:09 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2022-01-03 09:12:10 +0100 <whatif> f = \x -> do { o <- get; let {n = o+1}; put n; return (o+n) }
2022-01-03 09:12:17 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-01-03 09:12:30 +0100 <whatif> what traverse f [1,1] would do?
2022-01-03 09:12:51 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-01-03 09:13:21 +0100 <whatif> traverse print [1,1] would print 1 and 1
2022-01-03 09:15:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 09:16:19 +0100 <tomsmeding> 'traverse f l = sequence (map f l)' on lists
2022-01-03 09:16:48 +0100 <EvanR> :t sequenceA
2022-01-03 09:16:49 +0100 <lambdabot> (Traversable t, Applicative f) => t (f a) -> f (t a)
2022-01-03 09:16:55 +0100 <tomsmeding> so it would be 'do { a <- f 1 ; b <- f 2 ; return [a, b] }'
2022-01-03 09:17:37 +0100 <whatif> tomsmeding: how [1,1] turn to f 2?
2022-01-03 09:18:11 +0100 <whatif> traverse f [1,1] == sequence (map f [1,1])
2022-01-03 09:18:31 +0100 <whatif> map f [1,1] == [f 1, f 1]
2022-01-03 09:18:48 +0100 <whatif> where f 2 comes from?
2022-01-03 09:19:14 +0100 <tomsmeding> whatif: oh lol sorry, should be 'f 1' twice
2022-01-03 09:19:22 +0100 <tomsmeding> what I wrote would be the result of 'traverse f [1, 2]'
2022-01-03 09:19:32 +0100alx741(~alx741@157.100.93.160)
2022-01-03 09:20:25 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
2022-01-03 09:20:45 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:3c92:b563:832f:4576)
2022-01-03 09:21:28 +0100 <whatif> traverse f [1,1] == do { a <- f 1; b <- f 1; return [a, b] }
2022-01-03 09:25:09 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 09:25:10 +0100 <EvanR> @check \n m -> f [n,m] == do { a <- f n; b <- f m; return [a,b] }
2022-01-03 09:25:12 +0100 <lambdabot> error:
2022-01-03 09:25:12 +0100 <lambdabot> Ambiguous occurrence ‘f’ It could refer to either ‘Debug.SimpleReflect.f’, i...
2022-01-03 09:25:13 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-01-03 09:25:28 +0100 <EvanR> @check \n m -> L.f [n,m] == do { a <- L.f n; b <- L.f m; return [a,b] }
2022-01-03 09:25:30 +0100 <lambdabot> error:
2022-01-03 09:25:30 +0100 <lambdabot> • No instance for (Num [Integer]) arising from a use of ‘L.f’ • In the first...
2022-01-03 09:25:50 +0100 <EvanR> i didn't put traverse
2022-01-03 09:26:13 +0100 <tomsmeding> whatif: https://hackage.haskell.org/package/base-4.14.0.0/docs/src/Data.Traversable.html#line-230
2022-01-03 09:26:51 +0100 <whatif> does State construct a binary function? State $ \s -> \a -> (a,s)?
2022-01-03 09:27:17 +0100 <tomsmeding> foldr cons_f (pure []) = foldr (\x ys -> do { x' <- f x ; ys' <- ys ; return (x' : ys) }) (return [])
2022-01-03 09:27:41 +0100chele(~chele@user/chele)
2022-01-03 09:28:04 +0100 <tomsmeding> whatif: https://hackage.haskell.org/package/transformers-0.6.0.2/docs/src/Control.Monad.Trans.State.Strict…
2022-01-03 09:28:16 +0100 <tomsmeding> ignore the 'm' for the non-transformer variant
2022-01-03 09:28:52 +0100 <whatif> newtype StateT s m a = StateT { runStateT :: s -> m (a,s) }, where the a come from?
2022-01-03 09:29:14 +0100gehmehgeh(~user@user/gehmehgeh)
2022-01-03 09:29:39 +0100 <EvanR> newtypes are cool because they don't exist at runtime
2022-01-03 09:30:01 +0100 <EvanR> their representation equals whatever is being wrapped
2022-01-03 09:30:28 +0100 <EvanR> a zero-cost abstraction
2022-01-03 09:31:13 +0100 <whatif> State or StateT wrapped a function, what's the function?
2022-01-03 09:31:31 +0100 <whatif> \s -> (a,s)?
2022-01-03 09:31:31 +0100 <EvanR> your stateful program
2022-01-03 09:31:52 +0100 <whatif> :t State $ \s -> (a,s)
2022-01-03 09:31:53 +0100 <lambdabot> error:
2022-01-03 09:31:53 +0100 <lambdabot> • Data constructor not in scope: State :: (b0 -> (Expr, b0)) -> t
2022-01-03 09:31:53 +0100 <lambdabot> • Perhaps you meant one of these:
2022-01-03 09:32:33 +0100 <EvanR> :t State (\s -> ('?', s))
2022-01-03 09:32:34 +0100 <lambdabot> error:
2022-01-03 09:32:34 +0100 <lambdabot> • Data constructor not in scope: State :: (b0 -> (Char, b0)) -> t
2022-01-03 09:32:34 +0100 <lambdabot> • Perhaps you meant one of these:
2022-01-03 09:32:37 +0100 <whatif> how to use value constructor State to construct a State a b
2022-01-03 09:32:40 +0100 <EvanR> :t StateT (\s -> ('?', s))
2022-01-03 09:32:41 +0100 <lambdabot> error:
2022-01-03 09:32:41 +0100 <lambdabot> • Occurs check: cannot construct the infinite type: s ~ (a, s)
2022-01-03 09:32:41 +0100 <lambdabot> • In the expression: s
2022-01-03 09:32:52 +0100 <EvanR> :t StateT (\s -> Identity ('?', s))
2022-01-03 09:32:53 +0100 <lambdabot> StateT b Identity Char
2022-01-03 09:32:58 +0100 <EvanR> finally
2022-01-03 09:33:34 +0100fsckskye[m](~kmatrixth@2001:470:69fc:105::1:3b2f) (Quit: Client limit exceeded: 20000)
2022-01-03 09:33:56 +0100 <EvanR> you wouldn't use StateT directly, you would use return or (>>=)
2022-01-03 09:34:07 +0100spaceseller(~spacesell@31.147.205.13) (Quit: Leaving)
2022-01-03 09:34:08 +0100fsckskye[m](~kmatrixth@2001:470:69fc:105::1:3b2f)
2022-01-03 09:34:33 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
2022-01-03 09:34:33 +0100 <EvanR> that thing I constructed is pure '?'
2022-01-03 09:34:38 +0100 <EvanR> return '?'
2022-01-03 09:35:48 +0100spaceseller(~spacesell@31.147.205.13)
2022-01-03 09:37:38 +0100fef(~thedawn@user/thedawn)
2022-01-03 09:40:10 +0100 <whatif> a is free, State $ \s -> (a, s) :: State S A
2022-01-03 09:43:00 +0100alx741(~alx741@157.100.93.160)
2022-01-03 09:45:15 +0100 <whatif> more confused, f 1:: State Int Int, in that o <- get; what 'get' get?
2022-01-03 09:45:20 +0100 <whatif> 1?
2022-01-03 09:45:46 +0100 <whatif> f = \x -> do { o <- get; let {n = o+1}; put n; return (o+n) }
2022-01-03 09:47:27 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 09:47:37 +0100 <whatif> f 1 = State $ \s -> (s+1, s)
2022-01-03 09:47:43 +0100 <tomsmeding> it gets the current state
2022-01-03 09:47:53 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 256 seconds)
2022-01-03 09:48:23 +0100 <whatif> tomsmeding: but 1 isn't pass to State
2022-01-03 09:48:27 +0100 <tomsmeding> that 'f' is similar to '\s -> \x -> let o = s ; n = o+1 ; s' = n in (o+n,s')'
2022-01-03 09:48:49 +0100 <tomsmeding> except there are some State and Identity wrappers around it
2022-01-03 09:49:17 +0100 <tomsmeding> 's' is the input state, 'x' is your argument x; o+n is the return value, and s' is the output state
2022-01-03 09:49:29 +0100 <whatif> tomsmeding: you mean that 'get' will get 1?
2022-01-03 09:49:36 +0100 <tomsmeding> no, it will get the input state
2022-01-03 09:49:45 +0100 <tomsmeding> the only way to _run_ a State computation is using runState
2022-01-03 09:49:47 +0100 <tomsmeding> :t runState
2022-01-03 09:49:48 +0100 <lambdabot> State s a -> s -> (a, s)
2022-01-03 09:49:54 +0100 <tomsmeding> here, you have to supply the initial state
2022-01-03 09:50:04 +0100 <tomsmeding> > runState (f 10) 42
2022-01-03 09:50:06 +0100 <lambdabot> error:
2022-01-03 09:50:06 +0100 <lambdabot> Ambiguous occurrence ‘f’
2022-01-03 09:50:06 +0100 <lambdabot> It could refer to
2022-01-03 09:50:09 +0100 <tomsmeding> > runState (L.f 10) 42
2022-01-03 09:50:10 +0100 <lambdabot> (85,43)
2022-01-03 09:50:42 +0100 <tomsmeding> o = 42; n = 43; s' = 43; return value is then o+n=42+43=85
2022-01-03 09:50:53 +0100 <tomsmeding> note that x wasn't used, because, well, your f doesn't use x :)
2022-01-03 09:50:54 +0100machinedgod(~machinedg@24.105.81.50)
2022-01-03 09:55:54 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
2022-01-03 09:56:05 +0100 <whatif> traverse f [1,1] == sequence (map f [1,1]) == sequence [f 1, f 1] == sequence [State $ \s -> (s+1, s), State $ \s -> (s+1, s)], right?
2022-01-03 09:57:46 +0100 <whatif> is there wrong?
2022-01-03 09:59:42 +0100w1gz_w1gz
2022-01-03 09:59:57 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-01-03 10:00:00 +0100 <[exa]> looks valid to me
2022-01-03 10:00:29 +0100 <[exa]> (except perhaps the order of stuff in the tuples)
2022-01-03 10:00:53 +0100 <whatif> [exa]: what do you mean the order of stuff?
2022-01-03 10:01:02 +0100 <whatif> (s, s+1)?
2022-01-03 10:01:51 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
2022-01-03 10:01:55 +0100 <mjrosenb> [exa]: sorry, I was dumb. I removed a path, without removing all of its children. Fixed that issue, and the problem went away.
2022-01-03 10:02:14 +0100 <mjrosenb> (the error message was super not useful)
2022-01-03 10:03:55 +0100alx741(~alx741@157.100.93.160)
2022-01-03 10:03:56 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-03 10:04:43 +0100 <whatif> sequence :: [State s a] -> State [a], right?
2022-01-03 10:05:27 +0100jayant(~quassel@223.236.0.223)
2022-01-03 10:05:47 +0100 <whatif> so sequence [State $ \s -> (s+1, s), State $ \s -> (s+1, s) == State $ \s -> [s+1, s+1], right?
2022-01-03 10:05:51 +0100max22-(~maxime@2a01cb0883359800f1ba63e8a5bb6c8b.ipv6.abo.wanadoo.fr)
2022-01-03 10:06:05 +0100 <whatif> is there wrong?
2022-01-03 10:06:16 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com)
2022-01-03 10:06:43 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-01-03 10:06:54 +0100vysn(~vysn@user/vysn) (Remote host closed the connection)
2022-01-03 10:07:09 +0100spaceseller(~spacesell@31.147.205.13) (Quit: Leaving)
2022-01-03 10:07:53 +0100 <[exa]> whatif: the last thing you wrote doesn't really typecheck
2022-01-03 10:08:23 +0100 <[exa]> in particular, `sequence :: [State s a] -> State s [a]` (you missed the last `s`)
2022-01-03 10:09:02 +0100 <[exa]> in turn, the thing should result into something like `State $ \s -> (s+2, [s, s+1])`
2022-01-03 10:09:18 +0100mmhat(~mmh@55d48037.access.ecotel.net)
2022-01-03 10:09:20 +0100 <[exa]> (note the function must return the tuple again)
2022-01-03 10:09:43 +0100 <mjrosenb> because running a state returns the result of the computation, as well as the new result.
2022-01-03 10:10:03 +0100 <[exa]> ...new state. ^ :]
2022-01-03 10:10:10 +0100 <whatif> yeah, State s is the m
2022-01-03 10:11:26 +0100 <whatif> [exa]: but I don't understand how s+1 becoome s+2
2022-01-03 10:11:45 +0100 <whatif> sequence :: [State s a] -> State s [a]
2022-01-03 10:12:46 +0100 <whatif> sequence [State $ \s -> (s+1, s), State $ \s -> (s+1, s) == State $ \s -> (s+2, [s, s+1]) /= State $ \s -> [s+1, s+1]
2022-01-03 10:14:39 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 10:16:49 +0100 <whatif> how it become s+2?
2022-01-03 10:17:27 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-01-03 10:17:51 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-01-03 10:18:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2022-01-03 10:19:42 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-01-03 10:19:51 +0100 <tomsmeding> sequence [State (\s -> (s+1, s)), State (\s -> (s+1, s))] is similar to \s -> let (s1, x) = (\s -> (s+1, s)) s ; (s2, y) = (\s -> (s+1, s)) s1 in (s2, [x,y])
2022-01-03 10:20:29 +0100 <tomsmeding> it's called state-passing for a reason; the state is threaded through and updated along the way by the computations
2022-01-03 10:21:16 +0100 <tomsmeding> my "similar to" is basically after removing StateT newtype wrappers and simplifying a little (e.g. simplifying '(\x -> x) 10' to '10')
2022-01-03 10:25:56 +0100 <whatif> tomsmeding: sequence will pass that s+1 from the first State $ \s -> (s+1, s) as s for the second State $ \s -> (s+1, s)?
2022-01-03 10:26:07 +0100 <tomsmeding> yes
2022-01-03 10:26:32 +0100 <tomsmeding> because that way, you're simulating "updating" the state from s to s+1, before running the second thing
2022-01-03 10:26:40 +0100 <whatif> tomsmeding: and that's what sequence's definition? right?
2022-01-03 10:26:57 +0100 <tomsmeding> @src sequence
2022-01-03 10:26:57 +0100 <lambdabot> sequence [] = return []
2022-01-03 10:26:57 +0100 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
2022-01-03 10:26:57 +0100 <lambdabot> --OR
2022-01-03 10:26:57 +0100 <lambdabot> sequence xs = foldr (liftM2 (:)) (return []) xs
2022-01-03 10:27:06 +0100 <tomsmeding> see the first version
2022-01-03 10:27:26 +0100 <tomsmeding> and for State, what you way is what it ends up doing
2022-01-03 10:27:37 +0100 <tomsmeding> *what you say
2022-01-03 10:28:31 +0100mrmr1(~mrmr@user/mrmr)
2022-01-03 10:29:41 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com)
2022-01-03 10:30:11 +0100mrmr(~mrmr@user/mrmr) (Ping timeout: 268 seconds)
2022-01-03 10:30:11 +0100mrmr1mrmr
2022-01-03 10:30:59 +0100acidjnk(~acidjnk@p200300d0c7271e70c580124c5fb62625.dip0.t-ipconnect.de)
2022-01-03 10:31:00 +0100acidjnk_new(~acidjnk@p200300d0c7271e70c580124c5fb62625.dip0.t-ipconnect.de)
2022-01-03 10:32:22 +0100alx741(~alx741@157.100.93.160)
2022-01-03 10:32:27 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 10:34:22 +0100 <gentauro> hmmm, I thought the issue with `haskell-lsp` and `haskell-language-server` was `macOS` and the `M1` chip. But it seems that is not possible to install neither on my Linux (NixOS) …
2022-01-03 10:34:27 +0100 <whatif> I don't understand, sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs), so sequence [State $\s -> (s+1, s), State $\s -> (s+1, s)] would be v is s+1, return (v:vs) would be State $\s -> ([s+1, s+1], s)
2022-01-03 10:34:59 +0100 <gentauro> what are peeps using nowadays to get a "decent" development environment on `emacs`? (any blog post link would be appreciated)
2022-01-03 10:36:22 +0100 <whatif> tomsmeding: sequence (x:xs) = ... return (v:vs) what's the m here? []?
2022-01-03 10:36:49 +0100 <tomsmeding> whatif: State, right?
2022-01-03 10:36:54 +0100 <tomsmeding> well, m ~ State Int
2022-01-03 10:37:18 +0100 <tomsmeding> gentauro: 0 clue about emacs, but for hls, ghcup
2022-01-03 10:37:42 +0100 <tomsmeding> though ghcup's HLS crashes for me, so I build it myself using 'git clone HLS; cd HLS; cabal install' :p
2022-01-03 10:38:17 +0100 <gentauro> tomsmeding: thx, I look into that
2022-01-03 10:38:57 +0100Jing(~hedgehog@2604:a840:3::1013) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-03 10:39:47 +0100 <whatif> sequence [State \s -> (s+1,s)] would be State $\s -> ([(s+1)],s)?
2022-01-03 10:40:14 +0100szwe(~szwester@2a02:a31a:e13c:1100:f579:7a43:b118:346b)
2022-01-03 10:40:38 +0100 <tomsmeding> whatif: we had 'newtype State s a = State (s -> (s, a))' right?
2022-01-03 10:40:46 +0100 <tomsmeding> so the value is in the second component, the state in the first
2022-01-03 10:40:56 +0100 <tomsmeding> so the result would be State (\s -> (s+1, [s]))
2022-01-03 10:41:43 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 10:42:18 +0100 <whatif> what's the oldtype...
2022-01-03 10:42:33 +0100 <whatif> data State s a =...
2022-01-03 10:45:10 +0100 <tomsmeding> old type?
2022-01-03 10:45:40 +0100 <tomsmeding> 'newtype' and 'data' are equivalent for everything except a bit of runtime performance and less distinct 'undefined' values
2022-01-03 10:48:42 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-01-03 10:50:31 +0100 <tomsmeding> gentauro: just remembered, if you want to build HLS for a new ghc, rename the correct cabal-*.project file to cabal.project before building
2022-01-03 10:53:45 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-01-03 10:55:51 +0100Jing(~hedgehog@2604:a840:3::1013)
2022-01-03 10:58:14 +0100notzmv(~zmv@user/notzmv)
2022-01-03 10:58:18 +0100alx741(~alx741@157.100.93.160)
2022-01-03 10:59:51 +0100nomeata(~nomeatama@2001:470:69fc:105::1:5ed4) (Quit: Reconnecting)
2022-01-03 11:00:05 +0100nomeata(~nomeata@2001:470:69fc:105::1:5ed4)
2022-01-03 11:01:43 +0100nomeata(~nomeata@2001:470:69fc:105::1:5ed4) (Client Quit)
2022-01-03 11:01:56 +0100nomeata(~nomeata@2001:470:69fc:105::1:5ed4)
2022-01-03 11:02:52 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-03 11:04:13 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-03 11:04:43 +0100szwe(~szwester@2a02:a31a:e13c:1100:f579:7a43:b118:346b) (Quit: Leaving)
2022-01-03 11:06:13 +0100gaff(~gaff@49.207.209.253) (Remote host closed the connection)
2022-01-03 11:07:04 +0100mc47(~mc47@xmonad/TheMC47)
2022-01-03 11:10:10 +0100Sgeo__(~Sgeo@ool-18b9875e.dyn.optonline.net) (Read error: Connection reset by peer)
2022-01-03 11:10:31 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 11:10:38 +0100 <whatif> tomsmeding: this sequence [State...] is like reduce to me
2022-01-03 11:11:00 +0100 <whatif> foldl
2022-01-03 11:16:17 +0100jayant(~quassel@223.236.0.223) (Ping timeout: 256 seconds)
2022-01-03 11:18:07 +0100mrmr(~mrmr@user/mrmr) (Ping timeout: 256 seconds)
2022-01-03 11:18:17 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 240 seconds)
2022-01-03 11:18:46 +0100 <[exa]> `sequence_` can be easily defined as `foldr (>>) (pure ())`
2022-01-03 11:18:51 +0100xff0x(~xff0x@2001:1a81:5370:9b00:cd1d:3c45:12cd:b91e) (Ping timeout: 250 seconds)
2022-01-03 11:19:36 +0100mrmr(~mrmr@user/mrmr)
2022-01-03 11:19:38 +0100 <[exa]> that said, isn't there a name for `pure ()` ? like void, but without the parameter
2022-01-03 11:19:55 +0100xff0x(~xff0x@2001:1a81:5370:9b00:ba06:1021:b5e3:5719)
2022-01-03 11:21:21 +0100 <tomsmeding> instance Monad m => Monoid (m ()) where mappend = (>>) ; mempty = pure () -- pre-semigroup split because meh
2022-01-03 11:21:23 +0100Erutuon_(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-01-03 11:22:00 +0100jayant(~quassel@223.236.0.223)
2022-01-03 11:23:05 +0100vglfr(~vglfr@46.96.180.119) (Ping timeout: 256 seconds)
2022-01-03 11:23:37 +0100ensyde(~ensyde@2600:1702:2e30:1a40:c809:1c51:d4e7:3d0a) (Ping timeout: 240 seconds)
2022-01-03 11:25:47 +0100__monty__(~toonn@user/toonn)
2022-01-03 11:26:04 +0100 <whatif> [exa]: `sequence_` can be easily defined as `foldr (>>) (pure ())` this is point-free style?
2022-01-03 11:26:25 +0100 <[exa]> well there's no point so yeah, it is
2022-01-03 11:26:40 +0100 <[exa]> tomsmeding: ah nice thanks. :D
2022-01-03 11:26:47 +0100 <whatif> what pure () doing here?
2022-01-03 11:27:12 +0100alx741(~alx741@157.100.93.160)
2022-01-03 11:27:17 +0100 <[exa]> ensuring that the whole thing returns `m ()`. You could omit it and go with `foldr1` but that's not as nice
2022-01-03 11:27:22 +0100 <tomsmeding> [exa]: though I'm not sure quite how useful that instance is :p
2022-01-03 11:27:42 +0100 <whatif> [exa]: could it be with foldl1?
2022-01-03 11:27:49 +0100 <tomsmeding> whatif: you need to return something in case the list is empty
2022-01-03 11:28:21 +0100 <geekosaur> foldl is generally not as useful as one might think
2022-01-03 11:28:21 +0100 <[exa]> whatif: yeah but the "actions" would happen in a mildly surprising order, starting from the last one
2022-01-03 11:28:24 +0100 <whatif> I very like foldl1, it's called reduce in other languages
2022-01-03 11:28:53 +0100 <tomsmeding> [exa]: not with foldl1 (>>), right?
2022-01-03 11:29:08 +0100 <tomsmeding> Ignoring foldl efficiency concerns
2022-01-03 11:29:09 +0100 <[exa]> ah yeah nope, sorry for confusion
2022-01-03 11:29:20 +0100 <[exa]> still, efficiency concerns
2022-01-03 11:29:21 +0100 <geekosaur> actually what most languages call reduce is foldr1. (the "l"/"r" is about associativity, not order; lists can only ever be traversed from the left)
2022-01-03 11:29:50 +0100 <whatif> geekosaur: what?
2022-01-03 11:30:13 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-01-03 11:30:18 +0100 <[exa]> whatif: left-folding a right-folded structure sometimes hurts
2022-01-03 11:30:32 +0100 <whatif> [1,2,3], [1+2,3] what this? foldl?
2022-01-03 11:30:42 +0100 <geekosaur> > foldl f z [a,b,c]
2022-01-03 11:30:43 +0100 <lambdabot> error:
2022-01-03 11:30:43 +0100 <lambdabot> Ambiguous occurrence ‘f’
2022-01-03 11:30:43 +0100 <lambdabot> It could refer to
2022-01-03 11:30:49 +0100 <tomsmeding> geekosaur: not in js, at least; [1,2,3].reduce((a,b) => 10*a+b) returns 123 in js
2022-01-03 11:30:49 +0100 <geekosaur> bah
2022-01-03 11:31:00 +0100 <tomsmeding> @undef
2022-01-03 11:31:00 +0100 <lambdabot> Undefined.
2022-01-03 11:31:07 +0100 <geekosaur> > foldl f z [a,b,c]
2022-01-03 11:31:08 +0100 <lambdabot> f (f (f z a) b) c
2022-01-03 11:31:13 +0100 <geekosaur> > foldr f z [a,b,c]
2022-01-03 11:31:14 +0100 <lambdabot> f a (f b (f c z))
2022-01-03 11:31:14 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2022-01-03 11:31:18 +0100 <geekosaur> compare these
2022-01-03 11:31:30 +0100Lord_of_Life_Lord_of_Life
2022-01-03 11:31:54 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-01-03 11:32:05 +0100 <tomsmeding> > foldl1 (\a b -> 10*a+b) [1,2,3]
2022-01-03 11:32:05 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 11:32:06 +0100 <whatif> I still like foldl, from left to right to do something
2022-01-03 11:32:06 +0100 <lambdabot> 123
2022-01-03 11:32:17 +0100 <geekosaur> foldr is much more natural because it matches the associativity of a list
2022-01-03 11:32:21 +0100 <tomsmeding> > foldr1 (\a b -> 10*a+b) [1,2,3]
2022-01-03 11:32:23 +0100 <lambdabot> 33
2022-01-03 11:32:51 +0100 <[exa]> whatif: the main problem with foldl is that in a lazy language it first rebuilds the right-folded list to a left-folded thunk of (+)'s, THEN starts reducing it. You almost always want something stricter, such as foldl'
2022-01-03 11:32:56 +0100 <geekosaur> and in fact `foldr (:) []` is the identity on a list
2022-01-03 11:33:00 +0100 <whatif> in natural, do you read something from left to right?
2022-01-03 11:33:16 +0100 <tomsmeding> whatif: foldl has the more common order, when comparing with other programming languages. However, because of haskell's list structure, in combination with the laziness, foldr ends up working better in a lot of cases
2022-01-03 11:33:37 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-01-03 11:33:41 +0100 <tomsmeding> Exception: sum = foldl' (+) 0 -- and note the foldl' instead of foldl (look up the documentation)
2022-01-03 11:34:21 +0100 <__monty__> I also believe you can express foldl in terms of foldr but not the other way around?
2022-01-03 11:35:12 +0100tomsmedingis skeptical
2022-01-03 11:35:48 +0100Techcable(~Techcable@168.235.93.147) (Remote host closed the connection)
2022-01-03 11:35:56 +0100Techcable(~Techcable@168.235.93.147)
2022-01-03 11:36:07 +0100xkuru(~xkuru@user/xkuru)
2022-01-03 11:37:17 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2022-01-03 11:37:26 +0100nhatanh02(~satori@123.24.172.30)
2022-01-03 11:38:23 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-03 11:38:46 +0100 <whatif> [exa]: sequence_ = \x -> foldr1 (>>) x?
2022-01-03 11:41:00 +0100 <[exa]> yeah except it doesn't match the definition of sequence_ anymore, it's something like sequenceLast or so
2022-01-03 11:41:27 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
2022-01-03 11:43:14 +0100Techcable(~Techcable@168.235.93.147) (Remote host closed the connection)
2022-01-03 11:43:22 +0100Techcable(~Techcable@168.235.93.147)
2022-01-03 11:43:39 +0100fef(~thedawn@user/thedawn) (Ping timeout: 276 seconds)
2022-01-03 11:45:20 +0100Techcable(~Techcable@168.235.93.147) (Remote host closed the connection)
2022-01-03 11:45:27 +0100Techcable(~Techcable@168.235.93.147)
2022-01-03 11:45:29 +0100 <__monty__> > let foldrl f z xs = foldr (\x next y -> next $ f y x) id xs z in (foldl f z [a,b,c], foldrl f z [a, b, c])
2022-01-03 11:45:31 +0100 <lambdabot> (f (f (f z a) b) c,f (f (f z a) b) c)
2022-01-03 11:45:34 +0100 <__monty__> tomsmeding: ^
2022-01-03 11:45:41 +0100 <__monty__> I think this is correct.
2022-01-03 11:47:45 +0100coolnickname(uid531864@user/coolnickname) (Quit: Connection closed for inactivity)
2022-01-03 11:48:00 +0100 <geekosaur> proves the one but not the other
2022-01-03 11:48:09 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2022-01-03 11:48:12 +0100Techcable(~Techcable@168.235.93.147) (Remote host closed the connection)
2022-01-03 11:48:19 +0100 <tomsmeding> > let foldlr f z xs = foldl (\x next y -> next $ f y x) id xs z in (foldr f z [a,b,c], foldlr f z [a,b,c])
2022-01-03 11:48:20 +0100Techcable(~Techcable@168.235.93.147)
2022-01-03 11:48:20 +0100 <lambdabot> error:
2022-01-03 11:48:20 +0100 <lambdabot> • Couldn't match expected type ‘t0 -> Expr’ with actual type ‘Expr’
2022-01-03 11:48:20 +0100 <lambdabot> • In the expression: a
2022-01-03 11:48:24 +0100 <tomsmeding> Meh
2022-01-03 11:48:30 +0100lechner(~lechner@debian/lechner) (Ping timeout: 268 seconds)
2022-01-03 11:48:41 +0100Techcable(~Techcable@168.235.93.147) (Remote host closed the connection)
2022-01-03 11:48:49 +0100Techcable(~Techcable@168.235.93.147)
2022-01-03 11:48:55 +0100 <__monty__> Well, foldl doesn't work on infinite lists, right? So it can't ever implement foldr.
2022-01-03 11:49:11 +0100 <__monty__> QED : )
2022-01-03 11:49:18 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-03 11:49:30 +0100 <tomsmeding> Hm right
2022-01-03 11:49:45 +0100alx741(~alx741@157.100.93.160)
2022-01-03 11:51:32 +0100 <__monty__> This is a brilliant blogpost about folds for anyone who wants to understand them better, https://ertes.eu/tutorial/foldr.html (<3 Ertugrul†)
2022-01-03 11:52:35 +0100vglfr(~vglfr@46.96.180.119)
2022-01-03 11:52:50 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-01-03 11:53:06 +0100 <__monty__> geekosaur: I know my proof isn't very rigorous. Would love to hear if I'm wrong though.
2022-01-03 11:53:49 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-01-03 11:53:57 +0100 <geekosaur> doesn't seem like it needs to be any more rigorous to me, although I guess a proper mathematician would want proof that foldr can handle infinite lists :)
2022-01-03 11:54:27 +0100 <geekosaur> (should follow from its definition, though, so shouldn't be difficult)
2022-01-03 11:56:21 +0100 <__monty__> > foldr (const) z [0..]
2022-01-03 11:56:22 +0100 <lambdabot> 0
2022-01-03 11:56:32 +0100 <__monty__> Proof by counterexample : )
2022-01-03 11:57:03 +0100 <__monty__> Or example rather.
2022-01-03 11:59:03 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Remote host closed the connection)
2022-01-03 12:00:25 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
2022-01-03 12:02:06 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-03 12:05:09 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-01-03 12:05:26 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 12:12:28 +0100Jing(~hedgehog@2604:a840:3::1013) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-03 12:15:23 +0100 <__monty__> /wg 16
2022-01-03 12:15:38 +0100 <__monty__> Whoops.
2022-01-03 12:15:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 12:18:58 +0100ubert(~Thunderbi@p200300ecdf0994ce1454eef4b6fa1895.dip0.t-ipconnect.de)
2022-01-03 12:19:40 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-01-03 12:21:11 +0100 <gentauro> 10:50 < tomsmeding> gentauro: just remembered, if you want to build HLS for a new ghc, rename the correct cabal-*.project file to cabal.project before building
2022-01-03 12:21:15 +0100Jing(~hedgehog@2604:a840:3::1013)
2022-01-03 12:21:35 +0100 <gentauro> tomsmeding: I just cloned the GitHub repo and built it with the latest `stack` (after `nix-shell`)
2022-01-03 12:21:39 +0100 <gentauro> and it seemed to work
2022-01-03 12:22:43 +0100 <geekosaur> mm, might build for the wrong ghc though. (although I guess at this point most folks are on 8.10.7)
2022-01-03 12:23:12 +0100alx741(~alx741@157.100.93.160)
2022-01-03 12:25:41 +0100 <gentauro> hls, nice tip btw `Convert 2000 into 0o3720` :|
2022-01-03 12:25:43 +0100 <gentauro> WTF
2022-01-03 12:25:56 +0100 <gentauro> did somebody give `hls` to much booze over the holidays? xD
2022-01-03 12:27:14 +0100 <geekosaur> o.O
2022-01-03 12:27:37 +0100KvL(~KvL@user/KvL)
2022-01-03 12:27:37 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 12:27:58 +0100 <__monty__> Hecate: I'd maybe add "Flora is an unofficial alternative index and UI for the Haskell package ecosystem," just because the term "index" is a bit jargon-y and doesn't necessarily imply a UI.
2022-01-03 12:28:57 +0100mrmr(~mrmr@user/mrmr) (Ping timeout: 240 seconds)
2022-01-03 12:29:12 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2022-01-03 12:30:21 +0100 <geekosaur> actually I'd say "index" is potentially misleading since it could also refer to the package index used by tooling
2022-01-03 12:31:00 +0100 <geekosaur> I was tripping over that in #ghc last night
2022-01-03 12:31:28 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-01-03 12:32:10 +0100 <__monty__> I think that's on purpose though. Flora is meant to be both a new frontend for hackage as well as its own package index that goes past hackage.
2022-01-03 12:32:18 +0100 <__monty__> AFAIUI
2022-01-03 12:32:51 +0100 <geekosaur> but I understand that to be a future direction, not the current intent
2022-01-03 12:32:59 +0100 <geekosaur> frontend first, backend later
2022-01-03 12:33:12 +0100 <geekosaur> for now hackage is the backend
2022-01-03 12:33:48 +0100 <__monty__> Yes, indeed. Though I'm not sure the README needs to refrain from stating the intent rather than the facts as of today.
2022-01-03 12:38:32 +0100Everything(~Everythin@37.115.210.35)
2022-01-03 12:39:03 +0100mrmr(~mrmr@user/mrmr)
2022-01-03 12:41:22 +0100cosimone`(~user@93-47-228-11.ip115.fastwebnet.it)
2022-01-03 12:41:59 +0100stevan(~stevan@user/stevan)
2022-01-03 12:42:32 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 240 seconds)
2022-01-03 12:43:25 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-01-03 12:44:09 +0100alx741(~alx741@157.100.93.160)
2022-01-03 12:45:26 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-01-03 12:48:27 +0100jakalx(~jakalx@base.jakalx.net)
2022-01-03 12:49:38 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 12:50:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-01-03 12:51:13 +0100 <stevan> hi, i'm trying to `mmap` a pinned and aligned `MutableByteArray#` but keep running into segfaults no matter what i try, which makes me unsure if the bug is in my code or GHC. the code is available over here: https://github.com/stevana/hs-mmap-mutablebytearray together with the steps needed to reproduce what i'm seeing. i'd appreciate any help, especially around if it's worth reporting this as a ghc bug.
2022-01-03 12:51:19 +0100 <stevan> in case you're curious about why one would want to do such a thing in the first place: i'd like to write a metrics library where the metrics are computed in-memory in the mutablebytearray using atomic `fetchAddIntArray`s, while persisted to disk and available to other processes via the `mmap`. cheers.
2022-01-03 12:53:24 +0100ub(~Thunderbi@p200300ecdf0994ceb42bd33431e7317f.dip0.t-ipconnect.de)
2022-01-03 12:55:46 +0100max22-(~maxime@2a01cb0883359800f1ba63e8a5bb6c8b.ipv6.abo.wanadoo.fr) (Ping timeout: 245 seconds)
2022-01-03 12:55:48 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-01-03 12:56:51 +0100 <[exa]> stevan: can you check out which precise operation fails? reading from a mmapped pointer? Did you truncate() the file?
2022-01-03 12:56:55 +0100 <ProfSimm> Wouldn't it be right to say a functional language is like a closed system where you're in full control of time. Time takes on space-like properties. Facts are absolute, not relative moment to moment. But to do anything you need to interact with another system, relative to which, you DO experience time
2022-01-03 12:58:11 +0100 <[exa]> ProfSimm: the "absolute facts" are about purity, not about being functional.
2022-01-03 12:58:48 +0100 <ProfSimm> [exa]: well purity refers to functional purity doesn't it
2022-01-03 12:59:02 +0100 <[exa]> Also, there's nothing about "time" in talking to environs, for example IO provides just causality, which looks a bit like time
2022-01-03 12:59:09 +0100 <geekosaur> even C compilers care about purity
2022-01-03 12:59:13 +0100 <[exa]> there are non-functional pure languages
2022-01-03 12:59:22 +0100 <[exa]> (although scarce)
2022-01-03 12:59:31 +0100 <ProfSimm> [exa]: To me time is causality plus change.
2022-01-03 12:59:44 +0100 <ProfSimm> [exa]: causality implies change anyway
2022-01-03 12:59:59 +0100 <stevan> [exa]: i've documented which operations fail in the readme (i get two different errors depending on the size of the bytearray) its: https://gitlab.haskell.org/ghc/ghc/-/blob/master/rts/sm/BlockAlloc.c#L833 or https://gitlab.haskell.org/ghc/ghc/-/blob/master/rts/PrimOps.cmm#L113 . i use `System.Posix.Fcntl.fileAllocate` to allocate the file.
2022-01-03 13:00:05 +0100 <geekosaur> but both exist even in pure functional languages, else they'd be pointless
2022-01-03 13:00:26 +0100 <Hecate> __monty__: thanks for the feedback :)
2022-01-03 13:00:38 +0100 <ProfSimm> geekosaur: in a way time doesn't exist in FP because nothing changes once it's defined
2022-01-03 13:00:54 +0100 <ProfSimm> geekosaur: and the moment of definition is usually also not relevant.
2022-01-03 13:00:56 +0100 <geekosaur> stevan, I'd take that to either #ghc or the ghc issue tracker, segfaults in the RTS are almost always ghc bugs
2022-01-03 13:01:11 +0100 <[exa]> stevan: btw why do you allocate memory for mmap?
2022-01-03 13:02:21 +0100 <stevan> geekosaur: thanks, will do.
2022-01-03 13:02:46 +0100 <stevan> [exa]: not sure i follow what you mean?
2022-01-03 13:03:02 +0100 <ProfSimm> here's a question... we know math is abstract, therefore it's very useful. We can apply it to anything. But nothing is literally math as far as we know. So which is more foundational - procedural/imperative programming, or functional?
2022-01-03 13:03:37 +0100 <ProfSimm> It's weird because every implementation is imperative. But specific. Abstraction is universally applicable. But actually doesn't really exist.
2022-01-03 13:04:14 +0100 <geekosaur> not sure either is foundational. (also there are functional implementations, see the reduceron)
2022-01-03 13:04:46 +0100 <[exa]> stevan: it seems you're trying to force mmap() to map the file over something that you allocated with malloc, right?
2022-01-03 13:05:18 +0100 <ProfSimm> geekosaur: the reduceron is interesting but it seems to be based on FPGA, which is implementationally imperative/procedural isn't it
2022-01-03 13:05:55 +0100 <ProfSimm> geekosaur: maybe like particle-wave duality, neither is fundamental instead we oscillate between one or the other infinitely as we dig deeper
2022-01-03 13:05:59 +0100Jing(~hedgehog@2604:a840:3::1013) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-03 13:06:12 +0100alx741(~alx741@157.100.93.160)
2022-01-03 13:06:17 +0100 <ProfSimm> geekosaur: like the saying "it's all turtles" but "it's all dualities"
2022-01-03 13:06:21 +0100 <geekosaur> I'd actually argue the universe is functional underneath
2022-01-03 13:06:46 +0100 <geekosaur> wave/particle duality doesn't flip, at some point "particles" become waves and stay there
2022-01-03 13:06:51 +0100 <ProfSimm> geekosaur: what hints you in that direction
2022-01-03 13:07:15 +0100 <[exa]> stevan: see `man 2 mmap` -- using the first `addr` argument in mmap calls is basically a hint, and you're not giving it a very good hint because your pages there are already used
2022-01-03 13:07:16 +0100 <ProfSimm> geekosaur: oh they do become waves though. The moment you separate them from a macrosystem they become waves
2022-01-03 13:07:41 +0100 <ProfSimm> geekosaur: and in fact the manyworlds hypothesis suggests it's always a wave, that looks particle-like from a specific observer's perspective
2022-01-03 13:08:19 +0100 <geekosaur> also an FPGA is implementationally electrons following a functional paradigm, they don't follow instructions, that an interpretation we put on top of it that breaks down as we look closer
2022-01-03 13:08:56 +0100 <geekosaur> *that's an
2022-01-03 13:09:00 +0100 <ProfSimm> geekosaur: all computers are essentially a structure through which impulses of energy flow. Some path segments connect, some disconnect.
2022-01-03 13:09:19 +0100 <ProfSimm> geekosaur: is this functional or imperative I don't know. We reuse the same path. And the impulses move in space and time
2022-01-03 13:09:44 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-03 13:10:10 +0100 <ProfSimm> geekosaur: maybe this is the fundamental reality. Impulses of energy travelling the path of least resistance (least/most action principle) through pathways shaped by energy itself.
2022-01-03 13:10:20 +0100 <[exa]> ProfSimm: you're trying to make an ontology where there's none. Functional, imperative, declarative, esoteric, whateverivish, ..., are all simplifying interpretations of the same thing that allow you to reason efficiently about stuff
2022-01-03 13:10:22 +0100 <geekosaur> you seem to be assuming the truth of your proposition. I'm arguing against it, that time is a thing even in a functional context, and waves are functions
2022-01-03 13:10:53 +0100 <ProfSimm> I'm desperate for ontology
2022-01-03 13:11:02 +0100 <[exa]> life hack: don't
2022-01-03 13:11:07 +0100 <stevan> [exa]: i've just pushed a C version of the test, which i believe uses `mmap` in the same way (and that works)?
2022-01-03 13:11:46 +0100 <geekosaur> time is an emergent property of a system, ultimately. it may appear differently depending on the nature of the system, but it's still there
2022-01-03 13:12:22 +0100 <geekosaur> (physicists don't like this viewpoint, but unless they can point me to an actual "ruler" for time measurement it's the only one we have)
2022-01-03 13:12:26 +0100 <stevan> [exa]: also there's a haskell version that uses `mmap` in the same way and works in the `Mmap` module that you can run with `make works`.
2022-01-03 13:12:54 +0100 <ProfSimm> geekosaur: the measure of time is not what I care about. Just causality and change
2022-01-03 13:13:01 +0100 <[exa]> stevan: why do you do the posix_memaling? also I see no malloc, and running `valgrind` will probably tell you that `buf` is used with an uninitialized (aka random) value
2022-01-03 13:13:17 +0100mvk(~mvk@2607:fea8:5cdd:f000::917a) (Ping timeout: 240 seconds)
2022-01-03 13:13:20 +0100 <geekosaur> change is an observational attribute, not an attribute of a system
2022-01-03 13:13:32 +0100 <ProfSimm> geekosaur: although there are some theories that causality is an illusion, and it's just two events (effect-antieffect) that occur at once, but we observe them one after another and assume one caused the other.
2022-01-03 13:13:35 +0100nhatanh02(~satori@123.24.172.30) (Ping timeout: 256 seconds)
2022-01-03 13:14:08 +0100 <ProfSimm> geekosaur: in that sense, time is indeed absolutely nothing like what we think it is
2022-01-03 13:14:10 +0100 <stevan> [exa]: `mmap` needs page aligned memory, that's what `posix_memalign` does and malloc doesn't.
2022-01-03 13:14:11 +0100vysn(~vysn@user/vysn)
2022-01-03 13:14:26 +0100 <[exa]> stevan: it can nicely page-align itself, you don't need to care about that
2022-01-03 13:14:38 +0100 <[exa]> read the manual :]
2022-01-03 13:15:00 +0100mvk(~mvk@2607:fea8:5cdd:f000::917a)
2022-01-03 13:15:00 +0100 <ProfSimm> geekosaur: wouldn't you say most systems seem specified in terms of "this attribute can change" and "this may not change"
2022-01-03 13:15:26 +0100 <ProfSimm> geekosaur: maybe all systems, all machines. A car's wheels can rotate but not rotate off away from the car
2022-01-03 13:15:26 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 13:15:43 +0100 <[exa]> I'm usually just putting NULL as the first argument, there are no reasons for forcing the maps to an exact place in memory IF you do not control the whole address space anyway
2022-01-03 13:16:04 +0100coolnickname(uid531864@user/coolnickname)
2022-01-03 13:16:11 +0100 <[exa]> stevan: (and I assume you're not writing a linker loader :D )
2022-01-03 13:16:18 +0100 <geekosaur> ProfSimm, we're talking past each other
2022-01-03 13:16:37 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2022-01-03 13:17:42 +0100 <geekosaur> you're focused on the Newtonian level and effectively asserting it's "reality". I'm focused on the quantum level that enables the Newtonian level, because it does leak through and much of what you assert is enabled only by the quantum wave functions underneath
2022-01-03 13:17:44 +0100 <ProfSimm> geekosaur: I'm sorry, I just wanted to finish a train of thought
2022-01-03 13:18:02 +0100 <stevan> [exa]: i'm not sure i follow, i want the mmap to make the memory allocated by the bytearray to be shared with the file, so that if i poke the bytearray the file is updated. if the first argument to mmap is NULL, then mmap gives me a new pointer that has no connection to the bytearray?
2022-01-03 13:18:55 +0100 <geekosaur> but you don't even need the uantum level, general relativity asserts that causality is questionable. and we already see this with GPS (in fact, that's how GPS works)
2022-01-03 13:19:20 +0100 <ProfSimm> geekosaur: the effect-antieffect being perceived as cause effect is in a way projecting entanglement into Newtonian physics
2022-01-03 13:19:28 +0100 <geekosaur> the causality you see from your frame of reference is not guaranteed to be the causality I see from my frame of reference. this screws with procedural systems badly
2022-01-03 13:19:47 +0100 <stevan> [exa]: i don't just give mmap a hint, i use MAP_FIXED so that mmap uses exactly that address.
2022-01-03 13:20:07 +0100 <[exa]> stevan: you need to make the bytearray at the place where mmap tells you the data is mapped. Just use mmap() instead of malloc() here
2022-01-03 13:20:18 +0100 <geekosaur> also I think we need to take this to -offtopic
2022-01-03 13:20:19 +0100 <ProfSimm> geekosaur: in relativity at least causality is maintained
2022-01-03 13:20:24 +0100 <geekosaur> nope
2022-01-03 13:20:55 +0100 <geekosaur> there are frames of reference where the effect precedes the cause
2022-01-03 13:21:06 +0100 <ProfSimm> geekosaur: wouldn't those exceed C
2022-01-03 13:21:08 +0100 <geekosaur> --> -offtopic
2022-01-03 13:21:20 +0100 <ProfSimm> geekosaur: I'm there but... do I type with a dash
2022-01-03 13:22:13 +0100 <[exa]> stevan: the problem there is that if you make a bytearray with malloc, you occupy the memory pages, and these can't be used for paging in the file data. You need to choose either of the page "backends" there, but not both
2022-01-03 13:22:32 +0100 <geekosaur> ProfSimm: #haskell-offtopic
2022-01-03 13:23:25 +0100 <stevan> [exa]: hmm, wouldn't i need to make a `MutableByteArray#` from a `Ptr` then? is that possible?
2022-01-03 13:23:36 +0100 <[exa]> yes there should be a function for that
2022-01-03 13:24:43 +0100 <stevan> [exa]: do you know where? :-)
2022-01-03 13:24:55 +0100mrmr(~mrmr@user/mrmr) (Ping timeout: 256 seconds)
2022-01-03 13:25:48 +0100 <[exa]> stevan: I recall there's something that just gives you a MutableVector over the mmap, or even ByteString
2022-01-03 13:28:36 +0100d0ku(~d0ku@178.43.48.143.ipv4.supernova.orange.pl)
2022-01-03 13:28:49 +0100 <[exa]> ha, you might like Data.Vector.Storable.MMap (package vector-mmap)
2022-01-03 13:29:10 +0100 <[exa]> do you need precisely the MutableByteArray# type? (guess: no)
2022-01-03 13:29:51 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-01-03 13:29:54 +0100 <stevan> i think i do, because i want atomic operations like `fetchAddIntArray#`
2022-01-03 13:31:09 +0100 <[exa]> oh wow, no idea there then
2022-01-03 13:31:23 +0100 <[exa]> but there really should be something similar
2022-01-03 13:31:47 +0100whatif(~user@47.245.54.240) (Quit: ERC (IRC client for Emacs 26.3))
2022-01-03 13:32:06 +0100 <[exa]> at worst you can do your operations normally over the MVector using ST, and then just put the barrier there manually. Do you need _fast_ interprocess/thread synchronization there?
2022-01-03 13:32:09 +0100alx741(~alx741@157.100.93.160)
2022-01-03 13:33:11 +0100xff0x(~xff0x@2001:1a81:5370:9b00:ba06:1021:b5e3:5719) (Ping timeout: 250 seconds)
2022-01-03 13:33:24 +0100 <stevan> yes, i want lock-free atomic counters as a building block for other metrics such as histograms
2022-01-03 13:33:52 +0100gaff(~gaff@49.207.213.199)
2022-01-03 13:34:06 +0100xff0x(~xff0x@2001:1a81:5370:9b00:6eaf:9722:88af:e2d)
2022-01-03 13:35:07 +0100 <c_wraith> do atomic operations work properly on mmapped memory that's shared between processes anyway?
2022-01-03 13:35:46 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
2022-01-03 13:35:49 +0100 <geekosaur> only if you use atomic CPU operations. if you're trying to do STM across processes, stop now; it will not work
2022-01-03 13:36:08 +0100 <[exa]> yeah, only with proper barriers executed in hardware
2022-01-03 13:36:44 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 13:36:50 +0100 <stevan> which fetchAddIntArray# provides, right?
2022-01-03 13:38:18 +0100 <[exa]> yeah it does `lock xadd`
2022-01-03 13:43:55 +0100 <stevan> ok so, [exa] are you sure that the way i use mmap is wrong and not a ghc bug? because otherwise given the current ghc prim ops it doesn't seem possible to do what you suggested (mmap first then create a bytearray from the ptr that mmap returns)?
2022-01-03 13:44:18 +0100nhatanh02(~satori@123.24.172.30)
2022-01-03 13:45:11 +0100 <[exa]> I'm not sure why exactly it's failing but certainly mmapping _over_ already mapped pages doesn't seem like a working solution
2022-01-03 13:46:30 +0100 <stevan> already mmaped? does `mallocForeignPtrAlignedBytes` mmap pages?
2022-01-03 13:47:07 +0100max22-(~maxime@2a01cb088335980025788ae3ce756a00.ipv6.abo.wanadoo.fr)
2022-01-03 13:47:16 +0100 <stevan> s/mallocForeignPtrAlignedBytes/newAlignedPinnedByteArray/
2022-01-03 13:47:22 +0100mmhat(~mmh@55d48037.access.ecotel.net) (Quit: WeeChat 3.4)
2022-01-03 13:48:16 +0100 <[exa]> the newBytePinnedArray needs to create it in some mapped memory right? (mapped = the pages are available to the process, e.g. as a result of calling brk() or mmap())
2022-01-03 13:51:09 +0100 <stevan> hmm, i don't see this when i run strace though?
2022-01-03 13:51:35 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-03 13:52:11 +0100jespada(~jespada@87.74.33.157) (Quit: Textual IRC Client: www.textualapp.com)
2022-01-03 13:52:16 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2022-01-03 13:52:41 +0100nhatanh02(~satori@123.24.172.30) (Ping timeout: 256 seconds)
2022-01-03 13:52:50 +0100 <[exa]> stevan: it's probably allocated internally from memory that's already owned by RTS
2022-01-03 13:53:27 +0100 <[exa]> (likewise, malloc() usually doesn't cause a syscall on each call as well)
2022-01-03 13:53:36 +0100 <stevan> ah ok
2022-01-03 13:54:00 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-03 13:54:40 +0100alx741(~alx741@157.100.93.160)
2022-01-03 13:55:02 +0100 <[exa]> anyway that doesn't solve your problem there
2022-01-03 13:55:19 +0100 <stevan> (ok so that explains why the posixMemAlign version works: it allocates outside of the rts)
2022-01-03 13:55:20 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Client Quit)
2022-01-03 13:55:37 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2022-01-03 13:56:53 +0100 <[exa]> ha!
2022-01-03 13:57:11 +0100 <[exa]> stevan: massiv package does the wrapping internally as such: https://hackage.haskell.org/package/massiv-1.0.1.1/docs/src/Data.Massiv.Array.Manifest.Primitive.h…
2022-01-03 13:58:55 +0100jayant(~quassel@223.236.0.223) (Ping timeout: 256 seconds)
2022-01-03 13:58:59 +0100 <[exa]> so they are somehow creating a temporary MutableByteArray# wrap there and using it for running the primitive operation
2022-01-03 13:59:31 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 14:00:04 +0100jayant(~quassel@223.236.0.223)
2022-01-03 14:01:25 +0100acidjnk_new(~acidjnk@p200300d0c7271e70c580124c5fb62625.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-03 14:01:25 +0100acidjnk(~acidjnk@p200300d0c7271e70c580124c5fb62625.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-03 14:01:43 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-03 14:08:15 +0100jespada(~jespada@87.74.33.157)
2022-01-03 14:15:36 +0100alx741(~alx741@157.100.93.160)
2022-01-03 14:17:10 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-01-03 14:17:25 +0100 <stevan> [exa]: thanks, will have a look. meanwhile i tried to mmap already mmapped memory in C and it seems to work. (just pushed changes to the repo.)
2022-01-03 14:21:17 +0100euandreh(~euandreh@2804:14c:33:9fe5:df45:34e6:a5aa:758) (Ping timeout: 240 seconds)
2022-01-03 14:21:41 +0100 <[exa]> yeah, re-mmapping discards a part of the original mmap, in this case leaving it empty
2022-01-03 14:21:55 +0100 <[exa]> I'd really avoid trying that.
2022-01-03 14:22:30 +0100euandreh(~euandreh@2804:14c:33:9fe5:fd9c:24e7:5ea:6f47)
2022-01-03 14:25:46 +0100 <stevan> i don't see the point with the massiv example you linked to, they carry around a mutablebytearray in their `MPArray` type, so its no surprise they can do fetchAddIntArray# on it?
2022-01-03 14:27:57 +0100 <stevan> (i dunno this library so maybe i'm missing something obvious, can they build `MPArray` from a `Ptr`?)
2022-01-03 14:29:07 +0100SummerSonw(~The_viole@203.77.49.232)
2022-01-03 14:33:49 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 14:38:45 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-03 14:38:56 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-01-03 14:39:31 +0100 <[exa]> stevan: it looked like that to me
2022-01-03 14:40:28 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-03 14:40:29 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-01-03 14:42:09 +0100canta(~canta@user/canta)
2022-01-03 14:43:43 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
2022-01-03 14:44:23 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2022-01-03 14:44:32 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2022-01-03 14:45:19 +0100 <stevan> the docs for `mallocForeignPtr` which uses ` newAlignedPinnedByteArray# ` say: "although it may be implemented differently internally: you may not assume that the memory returned by 'mallocForeignPtr' has been allocated with 'Foreign.Marshal.Alloc.malloc'" and `Foreign.Mashal.Alloc.malloc` uses C's malloc, if that's true then mmap shouldn't happen twice?
2022-01-03 14:46:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 14:49:13 +0100 <[exa]> stevan: maybe it would be reasonable at this point to ask at #ghc if there's some GHC.Exts way to just run the atomic add instruction on a Ptr
2022-01-03 14:49:39 +0100 <[exa]> or on MVector or something
2022-01-03 14:50:39 +0100alx741(~alx741@157.100.93.160)
2022-01-03 14:51:44 +0100yates(~user@fv-nc-f7af8b91e1-234237-1.tingfiber.com)
2022-01-03 14:53:36 +0100 <yates> i don't understand how "lazy evaluation" can work. how can a running program know in advance how many instances of aspecific function call with the same inputs are to be made?
2022-01-03 14:54:40 +0100 <stevan> [exa]: thanks for your help, will do
2022-01-03 14:55:24 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 14:55:48 +0100 <kritzefitz> yates: why do you think that has to be known in advance?
2022-01-03 14:57:41 +0100 <yates> otherwise how does it know when evaluation is necessary?
2022-01-03 14:57:47 +0100 <yates> kritzefitz: ^^
2022-01-03 14:57:53 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-03 14:58:46 +0100 <yates> maybe i am confused. i'm just taking my first look at haskell
2022-01-03 14:59:17 +0100 <yates> i come from c/c++/assembly
2022-01-03 15:01:10 +0100 <kritzefitz> You don't have to know _in advance_ if something will have to be evaluated. You just start evaluating something if you notice that it is needed right now (i.e. at runtime).
2022-01-03 15:02:47 +0100 <yates> why would a programmer make a function call if the result is not needed immediately?
2022-01-03 15:03:11 +0100 <stevan> yates: consider the following example `take 10 [1..1000]`, because of laziness the whole list [1,2,...,1000] won't be constructed (only [1,2,...,10] is needed because of `take 10`) think of it as you evaluate as much as you need.
2022-01-03 15:03:20 +0100sagax(~sagax_nb@user/sagax)
2022-01-03 15:03:25 +0100nhatanh02(~satori@123.24.172.30)
2022-01-03 15:04:06 +0100max22-(~maxime@2a01cb088335980025788ae3ce756a00.ipv6.abo.wanadoo.fr) (Ping timeout: 245 seconds)
2022-01-03 15:04:17 +0100 <tdammers> lazy evaluation makes more sense once you have a better intuition for equational reasoning (as opposed to the operational reasoning that is the norm in imperative languages)
2022-01-03 15:04:32 +0100 <lortabac> yates: imagine the expression f (g (h x)), in a strict language the runtime would evaluate (h x) first, then evaluate the application of g to the result and so on
2022-01-03 15:04:34 +0100jchia[m](~jchiamatr@2001:470:69fc:105::c50b) (Quit: Client limit exceeded: 20000)
2022-01-03 15:04:44 +0100 <lortabac> in other words it proceeds inside-out
2022-01-03 15:04:57 +0100jchia[m](~jchiamatr@2001:470:69fc:105::c50b)
2022-01-03 15:05:02 +0100 <lortabac> in a non-strict language it is the opposite, you start from the "outside"
2022-01-03 15:05:16 +0100 <lortabac> that's the main difference
2022-01-03 15:06:51 +0100Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2022-01-03 15:07:09 +0100Feuermagier(~Feuermagi@user/feuermagier)
2022-01-03 15:09:20 +0100KvL(~KvL@user/KvL) (Quit: KvL)
2022-01-03 15:10:03 +0100 <yates> lortabac: sounds like composition "from the left" or "from the right" that is discussed in abstract algebra
2022-01-03 15:11:41 +0100 <yates> i've bitten off enough for now - thank you for your kind and helpful input
2022-01-03 15:11:54 +0100 <yates> (baby steps, Ellie...)
2022-01-03 15:11:54 +0100 <lortabac> yates: I'm not familiar with abstract algebra, in practice the difference is that the arguments of a function are not evaluated immediately (and sometimes not evaluated at all)
2022-01-03 15:12:26 +0100 <lortabac> for example if you have (f x = 1), x does not need to be evaluated at all
2022-01-03 15:13:11 +0100alx741(~alx741@157.100.93.160)
2022-01-03 15:13:12 +0100 <lortabac> whereas in a strict context it would be evaluated
2022-01-03 15:14:12 +0100 <yates> i'll have to start learning the semantics
2022-01-03 15:14:44 +0100 <yates> is there a recommended book on learning haskell?
2022-01-03 15:14:54 +0100Everything(~Everythin@37.115.210.35) (Quit: leaving)
2022-01-03 15:16:58 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 15:17:04 +0100infinity0(~infinity0@occupy.ecodis.net) (Remote host closed the connection)
2022-01-03 15:17:55 +0100xsperry(~xs@user/xsperry) (Remote host closed the connection)
2022-01-03 15:18:15 +0100infinity0(~infinity0@occupy.ecodis.net)
2022-01-03 15:18:21 +0100 <lortabac> @where learn
2022-01-03 15:18:21 +0100 <lambdabot> https://wiki.haskell.org/Learning_Haskell
2022-01-03 15:18:55 +0100 <lortabac> yates: I don't know how up-to-date this page is, but hopefully it's a starting point
2022-01-03 15:19:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2022-01-03 15:20:41 +0100dsrt^(~dsrt@207.5.21.20)
2022-01-03 15:22:54 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-01-03 15:28:43 +0100max22-(~maxime@2a01cb08833598005001445283c93f22.ipv6.abo.wanadoo.fr)
2022-01-03 15:30:59 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2022-01-03 15:31:44 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 15:33:05 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-03 15:34:07 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 15:34:07 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 15:34:07 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 15:34:48 +0100alx741(~alx741@157.100.93.160)
2022-01-03 15:36:31 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-01-03 15:37:14 +0100xb0o2(~xb0o2@user/xb0o2)
2022-01-03 15:37:40 +0100Jing(~hedgehog@2604:a840:3::1013)
2022-01-03 15:37:49 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-03 15:41:56 +0100stevenxl(~stevenxl@174.128.182.180)
2022-01-03 15:42:40 +0100 <yates> lortabac: thank you
2022-01-03 15:43:05 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 15:46:22 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-03 15:54:28 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-03 15:55:12 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 276 seconds)
2022-01-03 15:55:49 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-01-03 15:56:30 +0100 <tomsmeding> yates: for laziness, also consider watching this: https://youtu.be/I4lnCG18TaY
2022-01-03 15:56:55 +0100deadmarshal(~deadmarsh@95.38.118.93) (Ping timeout: 256 seconds)
2022-01-03 15:57:47 +0100 <tomsmeding> Depending on how far you are it might use a bit more haskell stuff than you know yet, but since I've watched that (as a haskeller with 4 years of xp or something) I feel like every beginner who has at least one question about laziness, should see this kind of visualisation
2022-01-03 15:58:38 +0100 <tomsmeding> This video is just the best that I know of, but that's partly because there just isn't much content in that form
2022-01-03 15:58:58 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-01-03 16:00:41 +0100shriekingnoise(~shrieking@186.137.144.80)
2022-01-03 16:01:26 +0100alx741(~alx741@157.100.93.160)
2022-01-03 16:03:35 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-01-03 16:04:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-03 16:05:59 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 16:09:37 +0100neurocyte(~neurocyte@user/neurocyte) (Ping timeout: 240 seconds)
2022-01-03 16:11:32 +0100neurocyte(~neurocyte@IP-212232081017.dynamic.medianet-world.de)
2022-01-03 16:11:32 +0100neurocyte(~neurocyte@IP-212232081017.dynamic.medianet-world.de) (Changing host)
2022-01-03 16:11:32 +0100neurocyte(~neurocyte@user/neurocyte)
2022-01-03 16:11:51 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 16:11:51 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 16:11:51 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 16:15:50 +0100kritzefitz_(~kritzefit@fw-front.credativ.com)
2022-01-03 16:15:54 +0100kritzefitz_(~kritzefit@fw-front.credativ.com) ()
2022-01-03 16:15:54 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-01-03 16:16:37 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-03 16:22:35 +0100alx741(~alx741@157.100.93.160)
2022-01-03 16:23:31 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-01-03 16:23:44 +0100bollu(~bollu@159.65.151.13) (Quit: The Lounge - https://thelounge.chat)
2022-01-03 16:24:15 +0100bollu(~bollu@159.65.151.13)
2022-01-03 16:24:41 +0100SummerSonw(~The_viole@203.77.49.232) (Ping timeout: 256 seconds)
2022-01-03 16:24:50 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2022-01-03 16:25:42 +0100kritzefitz(~kritzefit@debian/kritzefitz) (Remote host closed the connection)
2022-01-03 16:26:24 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 16:28:30 +0100kritzefitz(~kritzefit@debian/kritzefitz)
2022-01-03 16:31:11 +0100xsperry(~xs@cpe-188-129-71-242.dynamic.amis.hr)
2022-01-03 16:31:15 +0100xsperry(~xs@cpe-188-129-71-242.dynamic.amis.hr) (Changing host)
2022-01-03 16:31:15 +0100xsperry(~xs@user/xsperry)
2022-01-03 16:32:58 +0100sub0(~bc8147f2@cerf.good1.com)
2022-01-03 16:35:47 +0100`2jt(~jtomas@153.red-83-53-252.dynamicip.rima-tde.net)
2022-01-03 16:42:50 +0100sirlensalot(~sirlensal@ool-44c5f8c9.dyn.optonline.net)
2022-01-03 16:44:12 +0100alx741(~alx741@157.100.93.160)
2022-01-03 16:51:28 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-03 16:51:57 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-03 16:53:33 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 16:53:35 +0100jinsun(~quassel@user/jinsun) (Read error: Connection reset by peer)
2022-01-03 16:55:40 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
2022-01-03 16:56:13 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2022-01-03 16:57:07 +0100polyphem(~rod@2a02:810d:640:776c:e450:3ca3:b389:687a)
2022-01-03 16:57:17 +0100lagash_(lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
2022-01-03 16:57:40 +0100stevanstevan_
2022-01-03 16:58:01 +0100neurocyte(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2022-01-03 16:58:17 +0100spaceseller(~spacesell@31.147.205.13)
2022-01-03 16:58:22 +0100deadmarshal(~deadmarsh@95.38.118.93)
2022-01-03 17:00:23 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-01-03 17:00:35 +0100lagash(lagash@lagash.shelltalk.net)
2022-01-03 17:02:37 +0100deadmarshal(~deadmarsh@95.38.118.93) (Ping timeout: 240 seconds)
2022-01-03 17:02:47 +0100fef(~thedawn@user/thedawn)
2022-01-03 17:04:21 +0100d0ku(~d0ku@178.43.48.143.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds)
2022-01-03 17:04:22 +0100lechner(~lechner@debian/lechner)
2022-01-03 17:05:28 +0100stevan_(~stevan@user/stevan) (Quit: leaving)
2022-01-03 17:08:11 +0100neurocyte(~neurocyte@user/neurocyte)
2022-01-03 17:10:21 +0100alx741(~alx741@157.100.93.160)
2022-01-03 17:10:40 +0100 <tomjaguarpaw> Is it usual that pandoc takes 2GB and over 7 minutes to compile? It was always bad, but I don't remember it being that bad.
2022-01-03 17:11:36 +0100 <tomjaguarpaw> Hmm, over 4GB peak usage. Perhaps something has gone wrong here ...
2022-01-03 17:12:08 +0100 <[exa]> tomjaguarpaw: some people here would probably argue that 4GB and 7 minutes is not yet in the "bad" range :D
2022-01-03 17:13:29 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:3c92:b563:832f:4576) (Quit: WeeChat 2.8)
2022-01-03 17:13:35 +0100 <tomjaguarpaw> Do we know why this happens? Everyone knows that GHC uses loads of memory, but I've never heard an explanation why.
2022-01-03 17:14:32 +0100 <polyphem> ghc, the GreedyHaskellCompiler :)
2022-01-03 17:18:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 17:19:10 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 17:20:06 +0100 <janus> tomjaguarpaw: i think there is some folklore around how to minimize resource usage of ghc? e.g. i have heard that manually written instances compile faster than derived ones
2022-01-03 17:22:27 +0100 <tomjaguarpaw> It finally compiled! (On the second try after closing other programs to free up memory)
2022-01-03 17:24:55 +0100 <geekosaur> janus, only Generic instances
2022-01-03 17:25:02 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 240 seconds)
2022-01-03 17:26:08 +0100vgtw(~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (Quit: ZNC - https://znc.in)
2022-01-03 17:30:13 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-01-03 17:30:18 +0100 <sub0> is there some extension that lets you import two modules with class instance for the same type (and allowing you to pick one of them)?
2022-01-03 17:31:17 +0100cosimone`(~user@93-47-228-11.ip115.fastwebnet.it) (Ping timeout: 240 seconds)
2022-01-03 17:32:42 +0100chele(~chele@user/chele) (Remote host closed the connection)
2022-01-03 17:37:00 +0100alx741(~alx741@157.100.93.160)
2022-01-03 17:37:54 +0100gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 276 seconds)
2022-01-03 17:38:06 +0100jinsun(~quassel@user/jinsun)
2022-01-03 17:38:41 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-03 17:38:55 +0100gehmehgeh(~user@user/gehmehgeh)
2022-01-03 17:40:37 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 17:41:01 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-01-03 17:41:52 +0100 <lechner> Hi, a few months ago I read about a tiny Haskell-like language with an cool, interactive REPL. It was from two guys in Israel. They have a tutorial online. Does anyone remember what I am taking about? Thanks!
2022-01-03 17:46:00 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-01-03 17:48:02 +0100 <geekosaur> sub0, no, all instances are always global
2022-01-03 17:48:53 +0100 <sub0> seems like it could be a useful extension though? right now I can't use two modules that do that, even if I don't use any of the class methods
2022-01-03 17:49:35 +0100 <geekosaur> would require both a complete redesign of classes, and whole-program compilation
2022-01-03 17:49:59 +0100zer0bitz(~zer0bitz@196.244.192.60)
2022-01-03 17:50:16 +0100 <sub0> why both? we can import modules that use same function or type names, and pick which one we use, without whole-program compilation
2022-01-03 17:50:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2022-01-03 17:51:21 +0100 <geekosaur> because with separate compilation the only way a module knows a class or an instance is a global variable
2022-01-03 17:51:49 +0100 <geekosaur> so the whole class system is designed around that
2022-01-03 17:52:52 +0100Jing(~hedgehog@2604:a840:3::1013) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-03 17:53:00 +0100 <sub0> I don't get why that would be the case. why can't we have per module class instances, and decide which instances we want to import and use, if any
2022-01-03 17:53:05 +0100fef(~thedawn@user/thedawn) (Quit: Leaving)
2022-01-03 17:53:59 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-01-03 17:55:57 +0100vglfr(~vglfr@46.96.180.119) (Ping timeout: 240 seconds)
2022-01-03 17:56:22 +0100 <geekosaur> because the type system becomes unsound
2022-01-03 17:56:57 +0100 <geekosaur> if I build a Map with one Ord instance and pass it to a module with a different Ord instance, the module is broken. same with Data.HashMap and Hashable instances
2022-01-03 17:57:59 +0100 <geekosaur> what you want are SML openable modules, which are quite different from Haskell classes
2022-01-03 17:58:23 +0100 <geekosaur> we have a limited ability to do that via Backpack but it's pretty much undocumented
2022-01-03 17:58:23 +0100alx741(~alx741@157.100.93.160)
2022-01-03 17:58:25 +0100 <sub0> hmm. so for that to work, instances would need to be attached to objects, not types
2022-01-03 17:58:37 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-03 17:58:48 +0100motherfsck(~motherfsc@user/motherfsck)
2022-01-03 18:00:07 +0100 <sub0> is that how SML modules work?
2022-01-03 18:02:27 +0100 <geekosaur> no
2022-01-03 18:03:26 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2022-01-03 18:04:39 +0100 <geekosaur> I'm a bit weak on it but I think you can open a functor (parameterized module) locally and provide it with e.g. an Ord "instance" via a signature, but any value you work with has a type which includes the "instance" and will mismatch when passed to a functor parameterized differently
2022-01-03 18:05:42 +0100jayant(~quassel@223.236.0.223) (Read error: Connection reset by peer)
2022-01-03 18:06:16 +0100fresheyeball(~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net)
2022-01-03 18:07:37 +0100econo(uid147250@user/econo)
2022-01-03 18:07:37 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 18:08:21 +0100jinsun(~quassel@user/jinsun) (Read error: Connection reset by peer)
2022-01-03 18:09:31 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 256 seconds)
2022-01-03 18:11:10 +0100jinsun(~quassel@user/jinsun)
2022-01-03 18:12:13 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-03 18:12:23 +0100Akiva(~Akiva@user/Akiva)
2022-01-03 18:12:33 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-01-03 18:13:03 +0100 <geekosaur> anyway if it were permitted, separate compilation would be impossible unless you *always* specified the "instance" you wanted (as SML functors do), since it wouldn't be able to resolve the instance at all otherwise
2022-01-03 18:15:57 +0100mvk(~mvk@2607:fea8:5cdd:f000::917a) (Ping timeout: 240 seconds)
2022-01-03 18:17:37 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2022-01-03 18:17:43 +0100timCF(~timCF@m91-129-100-224.cust.tele2.ee)
2022-01-03 18:17:59 +0100spaceseller(~spacesell@31.147.205.13) (Quit: Leaving)
2022-01-03 18:20:35 +0100vglfr(~vglfr@46.96.180.119)
2022-01-03 18:20:37 +0100MoC(~moc@user/moc)
2022-01-03 18:21:50 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-01-03 18:22:10 +0100vgtw(~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se)
2022-01-03 18:23:29 +0100motherfsck(~motherfsc@user/motherfsck)
2022-01-03 18:25:55 +0100alx741(~alx741@157.100.93.160)
2022-01-03 18:27:35 +0100obfusk_(~quassel@a82-161-150-56.adsl.xs4all.nl) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-01-03 18:27:58 +0100obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl)
2022-01-03 18:28:59 +0100slack1256(~slack1256@191.126.227.213)
2022-01-03 18:29:01 +0100 <EvanR> sub0, there's a video about why type classes should be... on types https://www.youtube.com/watch?v=hIZxTQP1ifo
2022-01-03 18:29:27 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-01-03 18:29:48 +0100 <slack1256> Is there a function with the signature `idCallStack :: HasCallStack => a -> a`?
2022-01-03 18:29:55 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 256 seconds)
2022-01-03 18:30:16 +0100timCF(~timCF@m91-129-100-224.cust.tele2.ee) (Quit: leaving)
2022-01-03 18:30:27 +0100fef(~thedawn@user/thedawn)
2022-01-03 18:30:27 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 18:30:50 +0100 <geekosaur> EvanR, their real question is why are they global instead of module local
2022-01-03 18:31:51 +0100 <polyphem> this talk https://www.youtube.com/watch?v=2EdQFCP5mZ8 loks at typeclasses in comparison to with scalas implicits , funny talk
2022-01-03 18:32:02 +0100 <polyphem> *looks*
2022-01-03 18:37:59 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-01-03 18:42:23 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-01-03 18:43:44 +0100motherfsck(~motherfsc@user/motherfsck)
2022-01-03 18:46:51 +0100alx741(~alx741@157.100.93.160)
2022-01-03 18:47:42 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2022-01-03 18:49:01 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-01-03 18:49:24 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2022-01-03 18:53:18 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2022-01-03 18:53:34 +0100deadmarshal(~deadmarsh@95.38.118.93)
2022-01-03 18:55:25 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 18:57:30 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 18:57:30 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 18:57:30 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 18:58:37 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
2022-01-03 18:58:57 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 240 seconds)
2022-01-03 18:59:30 +0100Kaiepi(~Kaiepi@156.34.47.253)
2022-01-03 18:59:36 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2022-01-03 19:01:57 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2022-01-03 19:03:21 +0100yauhsien(~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-01-03 19:03:21 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-03 19:07:44 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
2022-01-03 19:10:28 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2022-01-03 19:11:32 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 19:11:32 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 19:11:32 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 19:13:15 +0100alx741(~alx741@157.100.93.160)
2022-01-03 19:14:51 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2022-01-03 19:15:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-03 19:16:40 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 19:17:34 +0100mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es) (Quit: .)
2022-01-03 19:19:23 +0100mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es)
2022-01-03 19:19:48 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-03 19:21:50 +0100gaff(~gaff@49.207.213.199) (Quit: Bye ...)
2022-01-03 19:22:08 +0100gaff(~gaff@49.207.213.199)
2022-01-03 19:22:20 +0100gaff(~gaff@49.207.213.199) (Client Quit)
2022-01-03 19:23:53 +0100fresheyeball(~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2022-01-03 19:24:17 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-03 19:25:37 +0100motherfsck(~motherfsc@user/motherfsck)
2022-01-03 19:28:56 +0100otherwise(~otherwise@2601:602:880:90f0:b9b8:da9b:a3ca:da99)
2022-01-03 19:29:15 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2022-01-03 19:34:52 +0100alx741(~alx741@157.100.93.160)
2022-01-03 19:36:16 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-01-03 19:39:28 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 19:39:30 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-01-03 19:42:45 +0100vysn(~vysn@user/vysn)
2022-01-03 19:47:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 19:48:23 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 19:48:23 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 19:48:23 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 19:48:28 +0100Sgeo(~Sgeo@user/sgeo)
2022-01-03 19:51:01 +0100ec_(~ec@gateway/tor-sasl/ec)
2022-01-03 19:51:17 +0100ec_ec
2022-01-03 19:51:53 +0100shapr(~user@2601:7c0:c202:5190:269b:9097:c1eb:4c93)
2022-01-03 19:54:57 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 240 seconds)
2022-01-03 19:55:49 +0100alx741(~alx741@157.100.93.160)
2022-01-03 19:56:17 +0100`2jt(~jtomas@153.red-83-53-252.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
2022-01-03 19:56:53 +0100stevenxl(~stevenxl@174.128.182.180) (Quit: leaving)
2022-01-03 19:57:37 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-03 19:57:55 +0100MoC(~moc@user/moc) (Quit: Konversation terminated!)
2022-01-03 19:58:22 +0100shapr(~user@2601:7c0:c202:5190:269b:9097:c1eb:4c93) (Remote host closed the connection)
2022-01-03 19:59:45 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 20:00:43 +0100shapr(~user@2601:7c0:c202:5190:daf3:e6d8:8056:7417)
2022-01-03 20:00:58 +0100jco(~jco@90-228-194-139-no542.tbcn.telia.com)
2022-01-03 20:01:20 +0100 <sub0> should I use process or typed-process for running a CLI program and interacting with its stdin/stdout?
2022-01-03 20:03:19 +0100 <jco> Hi, is there a key I can press in `ghcid` to make it "rerun"? I'm using it for running Cabal tests, but it seems it doesn't "detect" changes in my system-under-test code, so I have to make a dummy change in the test file, to make it pick up that something needs to happen...
2022-01-03 20:05:39 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 20:05:46 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-01-03 20:06:51 +0100`2jt(~jtomas@153.red-83-53-252.dynamicip.rima-tde.net)
2022-01-03 20:06:56 +0100 <EvanR> I've used System.Process without much problem
2022-01-03 20:08:09 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2022-01-03 20:08:24 +0100aku(~aku@163.172.137.34)
2022-01-03 20:09:37 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-03 20:11:42 +0100hyiltiz(~quassel@31.220.5.250) (Ping timeout: 260 seconds)
2022-01-03 20:12:03 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-01-03 20:14:47 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 268 seconds)
2022-01-03 20:15:43 +0100hyiltiz(~quassel@31.220.5.250)
2022-01-03 20:16:38 +0100jakalx(~jakalx@base.jakalx.net)
2022-01-03 20:18:20 +0100alx741(~alx741@157.100.93.160)
2022-01-03 20:19:13 +0100otherwise(~otherwise@2601:602:880:90f0:b9b8:da9b:a3ca:da99) ()
2022-01-03 20:21:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2022-01-03 20:26:01 +0100cosimone(~user@93-47-228-11.ip115.fastwebnet.it)
2022-01-03 20:26:17 +0100deadmarshal(~deadmarsh@95.38.118.93) (Ping timeout: 240 seconds)
2022-01-03 20:28:18 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish)
2022-01-03 20:28:34 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 20:28:52 +0100motherfsck(~motherfsc@user/motherfsck)
2022-01-03 20:29:02 +0100Tuplanolla(~Tuplanoll@91-159-69-90.elisa-laajakaista.fi)
2022-01-03 20:29:54 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2022-01-03 20:31:01 +0100slack1256(~slack1256@191.126.227.213) (Remote host closed the connection)
2022-01-03 20:31:37 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-03 20:38:41 +0100thomasjm[m](~thomasjmm@2001:470:69fc:105::c6d9) (Quit: Client limit exceeded: 20000)
2022-01-03 20:40:15 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds)
2022-01-03 20:40:15 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-01-03 20:42:15 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-01-03 20:45:19 +0100sub0(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Error))
2022-01-03 20:45:40 +0100sub0(~bc8147f2@cerf.good1.com)
2022-01-03 20:46:47 +0100alx741(~alx741@157.100.93.160)
2022-01-03 20:50:59 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 20:55:04 +0100Erutuon(~Erutuon@user/erutuon)
2022-01-03 21:02:24 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-01-03 21:04:20 +0100werneta_(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal)
2022-01-03 21:05:03 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 256 seconds)
2022-01-03 21:06:44 +0100juhp(~juhp@128.106.188.82)
2022-01-03 21:08:08 +0100mvk(~mvk@2607:fea8:5cdd:f000::917a)
2022-01-03 21:09:18 +0100alx741(~alx741@157.100.93.160)
2022-01-03 21:09:59 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
2022-01-03 21:10:35 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection)
2022-01-03 21:10:51 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d)
2022-01-03 21:11:24 +0100zincy_(~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection)
2022-01-03 21:12:56 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 21:14:17 +0100mvk(~mvk@2607:fea8:5cdd:f000::917a) (Ping timeout: 240 seconds)
2022-01-03 21:14:46 +0100mvk(~mvk@2607:fea8:5cdd:f000::45db)
2022-01-03 21:15:49 +0100SridharRatnakuma(~sridmatri@2001:470:69fc:105::1c2) (Quit: Client limit exceeded: 20000)
2022-01-03 21:16:29 +0100octeep[m](~octeepoct@2001:470:69fc:105::1:3dbf) (Quit: Client limit exceeded: 20000)
2022-01-03 21:17:31 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-01-03 21:17:34 +0100xb0o2(~xb0o2@user/xb0o2) (Quit: Client closed)
2022-01-03 21:19:28 +0100mvk(~mvk@2607:fea8:5cdd:f000::45db) (Remote host closed the connection)
2022-01-03 21:19:50 +0100Heffalump[m](~hsenagmat@2001:470:69fc:105::e11) (Quit: Client limit exceeded: 20000)
2022-01-03 21:20:18 +0100mvk(~mvk@2607:fea8:5cdd:f000::45db)
2022-01-03 21:20:27 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-01-03 21:23:32 +0100 <[itchyjunk]> I know this might be a horrible solution to the problem but the exercise said to define a function f :: String -> Sting that take string and returns the upper case of it.
2022-01-03 21:23:33 +0100 <[itchyjunk]> https://bpa.st/ZEGQ
2022-01-03 21:23:41 +0100 <[itchyjunk]> this is my first solution to it
2022-01-03 21:23:45 +0100thomasjm[m](~thomasjmm@2001:470:69fc:105::c6d9)
2022-01-03 21:23:57 +0100Heffalump[m](~hsenagmat@2001:470:69fc:105::e11)
2022-01-03 21:23:57 +0100aidy(~aidy@2001:470:69fc:105::c7b4) (Quit: Client limit exceeded: 20000)
2022-01-03 21:24:09 +0100bb010g(~bb010g@2001:470:69fc:105::9a5) (Quit: Client limit exceeded: 20000)
2022-01-03 21:24:11 +0100octeep[m](~octeepoct@2001:470:69fc:105::1:3dbf)
2022-01-03 21:24:19 +0100 <dsal> @hoogle toUpper
2022-01-03 21:24:19 +0100 <lambdabot> Data.Char toUpper :: Char -> Char
2022-01-03 21:24:19 +0100 <lambdabot> GHC.Unicode toUpper :: Char -> Char
2022-01-03 21:24:19 +0100 <lambdabot> Data.Text toUpper :: Text -> Text
2022-01-03 21:24:24 +0100SridharRatnakuma(~sridmatri@2001:470:69fc:105::1c2)
2022-01-03 21:24:33 +0100bb010g(~bb010g@2001:470:69fc:105::9a5)
2022-01-03 21:24:40 +0100polyphem_(~rod@2a02:810d:640:776c:e450:3ca3:b389:687a)
2022-01-03 21:24:46 +0100aidy(~aidy@2001:470:69fc:105::c7b4)
2022-01-03 21:24:53 +0100 <monochrom> You currently have Char->Char but you're on the right track.
2022-01-03 21:25:33 +0100 <dsal> Char -> Char is definitely the right start.
2022-01-03 21:25:34 +0100kalxd[m](~kalxdmatr@2001:470:69fc:105::1:576e) (Quit: Client limit exceeded: 20000)
2022-01-03 21:26:00 +0100 <[itchyjunk]> wait, my solution doesn't satisfy the requirement of problem 1 here ?
2022-01-03 21:26:01 +0100kalxd[m](~kalxdmatr@2001:470:69fc:105::1:576e)
2022-01-03 21:26:02 +0100 <[itchyjunk]> https://www.cantab.net/users/antoni.diller/haskell/questions/quest05.pdf
2022-01-03 21:26:11 +0100 <geekosaur> Char is not String
2022-01-03 21:26:13 +0100polyphem(~rod@2a02:810d:640:776c:e450:3ca3:b389:687a) (Ping timeout: 240 seconds)
2022-01-03 21:26:22 +0100 <[itchyjunk]> ah right String is [Char] dur
2022-01-03 21:26:43 +0100 <geekosaur> you're missing only one part
2022-01-03 21:27:12 +0100 <geekosaur> the same part you'd be missing if you had used Data.Char.toUpper instead of defining it yourself
2022-01-03 21:28:16 +0100 <monochrom> You are just one step away, and the title of the PDF says what it is. :)
2022-01-03 21:28:32 +0100 <[itchyjunk]> ah i use map `map toUpper "string"`
2022-01-03 21:28:40 +0100simendsjo(~user@84.211.91.241)
2022-01-03 21:28:41 +0100 <[itchyjunk]> i just need to incorporate that into a function
2022-01-03 21:28:45 +0100 <monochrom> Well, apart from handling non-English letters such as û...
2022-01-03 21:28:48 +0100 <[itchyjunk]> so it's `String -> String`
2022-01-03 21:28:59 +0100 <geekosaur> Data.Char doesn't either, iiirc
2022-01-03 21:29:57 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-01-03 21:29:59 +0100 <dsal> BTW, if you want to avoid a guard, you can write the above like `toUpper x = if x `elem` ['a'..'z'] then chr (ord x - 32)`
2022-01-03 21:30:42 +0100alx741(~alx741@157.100.93.160)
2022-01-03 21:30:56 +0100 <[itchyjunk]> does my capitalize function satisfy that problem condition?
2022-01-03 21:30:57 +0100 <[itchyjunk]> https://bpa.st/VNXA
2022-01-03 21:31:09 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 21:31:09 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 21:31:09 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 21:31:36 +0100 <[itchyjunk]> ah ascii (utf?) manupulation, that crossed my mind for a second too
2022-01-03 21:32:01 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2022-01-03 21:32:15 +0100 <geekosaur> hm.
2022-01-03 21:32:19 +0100 <monochrom> I would write it off as "the question is open-ended" and not worry.
2022-01-03 21:32:24 +0100 <geekosaur> > toUpper 'ß'
2022-01-03 21:32:25 +0100 <lambdabot> '\223'
2022-01-03 21:32:31 +0100 <geekosaur> > text $ toUpper 'ß'
2022-01-03 21:32:33 +0100 <lambdabot> error:
2022-01-03 21:32:33 +0100 <lambdabot> • Couldn't match type ‘Char’ with ‘[Char]’
2022-01-03 21:32:33 +0100 <lambdabot> Expected type: String
2022-01-03 21:32:44 +0100 <geekosaur> > text $ toUpper 'ß' : []
2022-01-03 21:32:45 +0100 <lambdabot> ß
2022-01-03 21:32:52 +0100 <monochrom> Either that, or use standard library's toUpper so "at least it's someone else to blame"
2022-01-03 21:33:09 +0100 <monochrom> > char (toUpper 'û')
2022-01-03 21:33:10 +0100 <lambdabot> Û
2022-01-03 21:33:26 +0100 <geekosaur> didn't handle es-zet though
2022-01-03 21:33:31 +0100lavaman(~lavaman@98.38.249.169)
2022-01-03 21:34:57 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 21:35:46 +0100 <[itchyjunk]> Ah so solve it for a single value then map it to each element of the list
2022-01-03 21:35:47 +0100 <[itchyjunk]> https://bpa.st/YK4Q
2022-01-03 21:35:50 +0100 <[itchyjunk]> fun
2022-01-03 21:36:55 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-03 21:37:55 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-01-03 21:42:04 +0100 <monochrom> Yeah that's the spirit.
2022-01-03 21:43:36 +0100fef(~thedawn@user/thedawn) (Ping timeout: 276 seconds)
2022-01-03 21:44:14 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2022-01-03 21:45:14 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 21:45:14 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 21:45:14 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 21:48:14 +0100hrdl(~hrdl@mail.hrdl.eu) (Remote host closed the connection)
2022-01-03 21:50:43 +0100hrdl(~hrdl@mail.hrdl.eu)
2022-01-03 21:50:57 +0100soft(~soft@2001:470:69fc:105::c75) (Quit: Client limit exceeded: 20000)
2022-01-03 21:53:13 +0100alx741(~alx741@157.100.93.160)
2022-01-03 21:53:51 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-01-03 21:54:10 +0100takuan_dozo(~takuan@178-116-218-225.access.telenet.be)
2022-01-03 21:54:18 +0100takuan_dozo(~takuan@178-116-218-225.access.telenet.be) (Client Quit)
2022-01-03 21:54:58 +0100 <prrxddq[m]> Hey guys, I am trying to learn something about profiling. But I am failing at the first command.... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/724af6d32151117bbb99c3c09f84d651b978…)
2022-01-03 21:57:45 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-03 21:57:56 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2022-01-03 22:01:51 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 22:03:11 +0100 <geekosaur> "Loaded package environment from /home/xddq/.ghc/x86_64-linux-8.10.7/environments/default"
2022-01-03 22:03:21 +0100 <geekosaur> rerun the cabal install command with --lib, maybe
2022-01-03 22:03:24 +0100soft(~soft@2001:470:69fc:105::c75)
2022-01-03 22:05:37 +0100 <sm> prrxddq: probably nothing.. standard fragile haskell toolchain issues :/
2022-01-03 22:05:51 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 22:05:51 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 22:05:51 +0100wroathe(~wroathe@user/wroathe)
2022-01-03 22:06:03 +0100 <sm> I'd probably try reinstalling ghc / installing it a different way
2022-01-03 22:06:27 +0100 <geekosaur> neh, this looks like they did a v2-install and then tried to use the result with ghc directly instead of via cabal
2022-01-03 22:06:49 +0100 <geekosaur> so either v1-install, or note that it's using a package environment and use --lib to update the environment
2022-01-03 22:09:25 +0100 <sm> that answer is terrifying :)
2022-01-03 22:10:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-03 22:10:55 +0100 <geekosaur> the terrifying part if working with bare ghc
2022-01-03 22:11:00 +0100 <geekosaur> *is working
2022-01-03 22:11:02 +0100 <prrxddq[m]> geekosaur: Sorry I don't understand the implied consequences. I did try to append the --lib argument to the cabal install but it did not change the output of the ghc one.
2022-01-03 22:12:09 +0100 <geekosaur> it should have resolved the missing random library and left the other three not found because you only reinstalled the one
2022-01-03 22:15:00 +0100 <geekosaur> anyway v2-install (which is default these days) is designed to be used with what cabal calls nix-style builds and I tend to think of as implicit sandboxing
2022-01-03 22:15:35 +0100 <geekosaur> because ghc will get anything wrong it can when given the chance, so modern haskell tooling whacks it over the head to keep it from seeing stuff that will confuse it
2022-01-03 22:16:15 +0100 <geekosaur> so the ideal ways to use it is to make a cabal project, specify the libraries you want as dependencies, then "cabal build -p" the project
2022-01-03 22:17:11 +0100 <sm> should cabal exec -p -- ghc ... work ?
2022-01-03 22:18:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-01-03 22:19:11 +0100 <geekosaur> I don't think -p can work there because it has no idea what dependencies to build profiled
2022-01-03 22:19:27 +0100 <geekosaur> maybe with --package
2022-01-03 22:19:37 +0100alx741(~alx741@157.100.93.160)
2022-01-03 22:19:51 +0100nhatanh02(~satori@123.24.172.30) (Ping timeout: 256 seconds)
2022-01-03 22:20:37 +0100 <sm> I can say that `stack exec -- ghc -prof -fprof-auto -rtsopts Main.hs` worked here, randomly or not
2022-01-03 22:21:01 +0100euandreh(~euandreh@2804:14c:33:9fe5:fd9c:24e7:5ea:6f47) (Ping timeout: 240 seconds)
2022-01-03 22:21:02 +0100 <sm> by luck or not
2022-01-03 22:21:11 +0100pavonia(~user@user/siracusa)
2022-01-03 22:21:42 +0100 <sm> pretty much no haskell examples work as written, even the official GHC docs. This is sad
2022-01-03 22:23:05 +0100euandreh(~euandreh@2804:14c:33:9fe5:58c5:6207:2988:1b06)
2022-01-03 22:25:29 +0100machinedgod(~machinedg@24.105.81.50) (Remote host closed the connection)
2022-01-03 22:26:46 +0100 <sm> another data point: just `ghc -prof -fprof-auto -rtsopts Main.hs` did work for me in a new machine with ghcup-installed tools
2022-01-03 22:27:10 +0100 <prrxddq[m]> <geekosaur> "so the ideal ways to use it is..." <- I did create a project using ```... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/277f4b70bbaefd29ebb1d8aacd1ef0002079…)
2022-01-03 22:27:54 +0100 <prrxddq[m]> sm: mhhh, might as well try to reinstall it then.. I am not really confident in any tooling yet. Thanks for trying it out
2022-01-03 22:27:59 +0100 <sm> -p isn't enough, you need --enable-profiling
2022-01-03 22:28:02 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 22:28:12 +0100 <sm> (when building)
2022-01-03 22:28:49 +0100 <prrxddq[m]> s///
2022-01-03 22:28:58 +0100 <prrxddq[m]> * I did create a project using... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/4347e1c3934b30f9085fa70e31fe11809d45…)
2022-01-03 22:29:09 +0100 <prrxddq[m]> * I did create a project using... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/32dc26d821e3092a970a244a768cb2d5f131…)
2022-01-03 22:29:12 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-01-03 22:29:18 +0100 <prrxddq[m]> * I did create a project using... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/16f024249ce7d0d51caf2921778e7894a1d6…)
2022-01-03 22:29:28 +0100 <geekosaur> -p is --enable-library-profiling instead of --enable-profiling for some reason
2022-01-03 22:29:42 +0100 <geekosaur> use --enable-profiling or --enable-executable-profiling
2022-01-03 22:30:07 +0100 <geekosaur> also those edits you're doing make a mess on the IRC side of things
2022-01-03 22:31:09 +0100 <prrxddq[m]> geekosaur: Edits in general? I will stop it then, sorry.
2022-01-03 22:31:11 +0100simendsjo(~user@84.211.91.241) (Ping timeout: 256 seconds)
2022-01-03 22:31:28 +0100 <geekosaur> yeh, IRC doesn't understand edits
2022-01-03 22:31:41 +0100 <geekosaur> at least not from matrix
2022-01-03 22:32:24 +0100 <prrxddq[m]> sm: IT WORKED, yeeeeees! :D Oh man, thank you! sm geekosaur
2022-01-03 22:33:22 +0100 <sm> just FYI, it's good to learn to read the standard profiles, but also there are some tools which can give a sometimes more useful view, like profiterole (and fancier graphical tools)
2022-01-03 22:33:46 +0100acidjnk(~acidjnk@pd9e0bdc0.dip0.t-ipconnect.de)
2022-01-03 22:33:46 +0100acidjnk_new(~acidjnk@pd9e0bdc0.dip0.t-ipconnect.de)
2022-01-03 22:42:44 +0100drewr(~drew@user/drewr)
2022-01-03 22:45:36 +0100ouestbillievanDamme
2022-01-03 22:46:01 +0100alx741(~alx741@157.100.93.160)
2022-01-03 22:46:47 +0100vanDammeouestbillie
2022-01-03 22:47:04 +0100Guest23(~Guest23@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-01-03 22:47:27 +0100Guest23(~Guest23@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) ()
2022-01-03 22:50:41 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 22:50:55 +0100zer0bitz(~zer0bitz@196.244.192.60) (Read error: Connection reset by peer)
2022-01-03 22:52:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2022-01-03 22:56:07 +0100jespada(~jespada@87.74.33.157) (Ping timeout: 256 seconds)
2022-01-03 22:57:59 +0100jespada(~jespada@87.74.32.18)
2022-01-03 22:58:13 +0100ubert(~Thunderbi@p200300ecdf0994ce1454eef4b6fa1895.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-03 22:58:13 +0100ububert
2022-01-03 23:08:33 +0100alx741(~alx741@157.100.93.160)
2022-01-03 23:13:00 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 23:21:34 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-01-03 23:31:04 +0100alx741(~alx741@157.100.93.160)
2022-01-03 23:31:57 +0100shapr(~user@2601:7c0:c202:5190:daf3:e6d8:8056:7417) (Ping timeout: 240 seconds)
2022-01-03 23:38:47 +0100max22-(~maxime@2a01cb08833598005001445283c93f22.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2022-01-03 23:39:52 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-03 23:40:25 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-01-03 23:41:37 +0100drewr(~drew@user/drewr) (Ping timeout: 240 seconds)
2022-01-03 23:43:00 +0100root1(root@2600:3c02::f03c:92ff:fe1a:c779) (Quit: WeeChat 2.3)
2022-01-03 23:45:46 +0100ircs(~ircs@2-111-85-72-cable.dk.customer.tdc.net)
2022-01-03 23:46:56 +0100zebrag(~chris@user/zebrag)
2022-01-03 23:48:19 +0100machinedgod(~machinedg@24.105.81.50)
2022-01-03 23:51:47 +0100zebrag(~chris@user/zebrag) (Client Quit)
2022-01-03 23:55:40 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-01-03 23:56:30 +0100rond_(~rond_@2a01:115f:943:5e00:fd3e:9189:6c2:6793)
2022-01-03 23:56:53 +0100jco(~jco@90-228-194-139-no542.tbcn.telia.com) (Ping timeout: 256 seconds)
2022-01-03 23:57:28 +0100alx741(~alx741@157.100.93.160)
2022-01-03 23:58:51 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-03 23:58:51 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-03 23:58:51 +0100wroathe(~wroathe@user/wroathe)