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