2021-08-06 00:00:52 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-06 00:03:36 +0200 | Atum_ | (~IRC@user/atum/x-2392232) (Quit: Atum_) |
2021-08-06 00:04:22 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-06 00:05:27 +0200 | Neuromancer | (~Neuromanc@user/neuromancer) (Remote host closed the connection) |
2021-08-06 00:05:40 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) (Ping timeout: 272 seconds) |
2021-08-06 00:08:01 +0200 | fendor | (~fendor@178.115.49.9.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-08-06 00:12:20 +0200 | agua_pesada | (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) |
2021-08-06 00:14:18 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 276 seconds) |
2021-08-06 00:15:09 +0200 | typetetris | (sid275937@tinside.irccloud.com) |
2021-08-06 00:18:20 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Quit: Quit) |
2021-08-06 00:18:20 +0200 | xff0x_ | (~xff0x@2001:1a81:5296:aa00:d57e:94f9:9f5a:1218) (Ping timeout: 258 seconds) |
2021-08-06 00:18:34 +0200 | MQ-17J | (~MQ-17J@8.21.10.94) |
2021-08-06 00:19:08 +0200 | xff0x_ | (~xff0x@2001:1a81:5296:aa00:8dc0:fe3f:5c9e:fa3a) |
2021-08-06 00:25:07 +0200 | sheepduck | (~sheepduck@user/sheepduck) (Quit: Konversation terminated!) |
2021-08-06 00:25:15 +0200 | meinside_ | (uid24933@id-24933.brockwell.irccloud.com) |
2021-08-06 00:27:12 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-06 00:28:03 +0200 | barzo | (~hd@159.146.18.173) (Read error: Connection reset by peer) |
2021-08-06 00:30:00 +0200 | Guest34 | (~Guest34@2406:3003:2006:447e:fc93:a477:b13c:4b43) |
2021-08-06 00:33:07 +0200 | Guest34 | (~Guest34@2406:3003:2006:447e:fc93:a477:b13c:4b43) (Client Quit) |
2021-08-06 00:33:09 +0200 | agua_pesada | (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Quit: CoreIRC for Android - www.coreirc.com) |
2021-08-06 00:35:26 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-06 00:36:41 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2021-08-06 00:36:42 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Client Quit) |
2021-08-06 00:36:52 +0200 | wrengr | wrengr_away |
2021-08-06 00:37:10 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2021-08-06 00:37:31 +0200 | wrengr_away | wrengr |
2021-08-06 00:48:08 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 252 seconds) |
2021-08-06 00:48:33 +0200 | aman | (~aman@user/aman) |
2021-08-06 00:59:26 +0200 | dajoer | (~david@user/gvx) |
2021-08-06 01:05:43 +0200 | Nahra | (~user@static.161.95.99.88.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 01:11:22 +0200 | j | jess |
2021-08-06 01:14:32 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
2021-08-06 01:17:56 +0200 | markpythonicbitc | (~markpytho@2601:647:5a00:35:b0d1:cd6e:d590:7ec7) |
2021-08-06 01:21:10 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-08-06 01:22:21 +0200 | markpythonicbitc | (~markpytho@2601:647:5a00:35:b0d1:cd6e:d590:7ec7) (Ping timeout: 258 seconds) |
2021-08-06 01:23:15 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
2021-08-06 01:26:02 +0200 | vysn | (~vysn@user/vysn) (Remote host closed the connection) |
2021-08-06 01:26:27 +0200 | markpythonicbitc | (~markpytho@2601:647:5a00:35:298a:b52c:58df:cdd4) |
2021-08-06 01:27:11 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2021-08-06 01:34:30 +0200 | Nahra | (~user@static.161.95.99.88.clients.your-server.de) |
2021-08-06 01:59:09 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 258 seconds) |
2021-08-06 01:59:22 +0200 | enoq | (~enoq@194-208-179-35.lampert.tv) (Quit: enoq) |
2021-08-06 02:00:44 +0200 | Codaraxis_ | (~Codaraxis@user/codaraxis) |
2021-08-06 02:01:04 +0200 | retroid_ | (~retro@5ec19a54.skybroadband.com) (Ping timeout: 258 seconds) |
2021-08-06 02:03:07 +0200 | kor1 | (~kor1@user/kor1) |
2021-08-06 02:03:12 +0200 | kor1 | (~kor1@user/kor1) () |
2021-08-06 02:04:18 +0200 | Codaraxis__ | (~Codaraxis@user/codaraxis) (Ping timeout: 240 seconds) |
2021-08-06 02:07:05 +0200 | jmorris | (uid433911@id-433911.stonehaven.irccloud.com) |
2021-08-06 02:09:10 +0200 | euouae | (~euouae@user/euouae) |
2021-08-06 02:09:13 +0200 | <euouae> | Hello |
2021-08-06 02:09:19 +0200 | <Axman6> | o/ |
2021-08-06 02:09:32 +0200 | <euouae> | How does --config-file work in cabal? Does anyone know? |
2021-08-06 02:09:59 +0200 | <euouae> | I read in the docs that you can use it together with user-config, such as cabal user-config --config-file foo.cabal, but I get that "--config-file" is not recognized |
2021-08-06 02:12:34 +0200 | <geekosaur> | it works for me but --config-file has to come before the command |
2021-08-06 02:12:48 +0200 | <geekosaur> | cabal --config-file foo.cabal user-config ... |
2021-08-06 02:13:39 +0200 | <euouae> | Oh I see, it's a global option then. Sorry |
2021-08-06 02:14:06 +0200 | <euouae> | Another question is, does cabal 3.4 have any drastic changes in terms of building and installing packages? I noticed the section is not yet written in the docs, but 3.2 is |
2021-08-06 02:15:34 +0200 | <geekosaur> | that I can't help with. (I note that 3.6 was just released but has no online manual at all yet.) |
2021-08-06 02:17:34 +0200 | <euouae> | oh wow |
2021-08-06 02:19:08 +0200 | jess | sandcat |
2021-08-06 02:19:29 +0200 | <monochrom> | New today: We're now on to 3.6.0.0 >:) |
2021-08-06 02:20:06 +0200 | vicfred | (~vicfred@user/vicfred) |
2021-08-06 02:21:02 +0200 | <euouae> | cabal tells me 3.4 is up to date, although hackage mentions 3.6 |
2021-08-06 02:21:03 +0200 | jao | (jao@gateway/vpn/protonvpn/jao) (Ping timeout: 276 seconds) |
2021-08-06 02:21:07 +0200 | <euouae> | Not sure why, even though I updated. |
2021-08-06 02:22:54 +0200 | <davean> | euouae: cabal-install and Cabal are seperate |
2021-08-06 02:22:57 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2021-08-06 02:23:08 +0200 | <davean> | there is a 3.6 Cabal, not so for cabal-install |
2021-08-06 02:23:20 +0200 | <euouae> | what's 3.6 Cabal? Is it cabal-the-spec? |
2021-08-06 02:23:25 +0200 | <geekosaur> | oh, I missed that |
2021-08-06 02:23:41 +0200 | <geekosaur> | Caal is a library for manipulating package descriptions |
2021-08-06 02:23:57 +0200 | <euouae> | Okay |
2021-08-06 02:23:59 +0200 | <geekosaur> | it's used by ghc, stack, cabal-install, and other tools |
2021-08-06 02:24:12 +0200 | <davean> | The important part of Cabal 3.6 is 9.2 stuff |
2021-08-06 02:24:13 +0200 | <euouae> | so Cabal is the library, cabal-install is ... cabal the tool? and we also have the cabal spec. Right? |
2021-08-06 02:24:25 +0200 | <davean> | euouae: correct |
2021-08-06 02:24:26 +0200 | hiruji | (~hiruji@user/hiruji) (Read error: Connection reset by peer) |
2021-08-06 02:24:58 +0200 | <euouae> | davean: Do you know if reading the building & install section of cabal-install 3.2 is OK for using cabal-install 3.4 or am I missing anything super useful? |
2021-08-06 02:25:23 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-08-06 02:25:33 +0200 | <davean> | euouae: It'll be fine, the spec is versioned and backwards compatible |
2021-08-06 02:26:29 +0200 | <euouae> | great thanks |
2021-08-06 02:30:46 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-06 02:30:47 +0200 | hiruji | (~hiruji@user/hiruji) (Read error: Connection reset by peer) |
2021-08-06 02:31:19 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-08-06 02:31:30 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-06 02:33:15 +0200 | hiruji | (~hiruji@user/hiruji) (Read error: Connection reset by peer) |
2021-08-06 02:33:29 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-08-06 02:33:47 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-08-06 02:33:55 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-06 02:37:04 +0200 | hiruji | (~hiruji@user/hiruji) (Read error: Connection reset by peer) |
2021-08-06 02:37:23 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-08-06 02:41:02 +0200 | arkho | (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Quit: Leaving) |
2021-08-06 02:45:01 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-08-06 02:45:44 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-08-06 02:48:30 +0200 | P1RATEZ | (piratez@user/p1ratez) |
2021-08-06 03:05:39 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-08-06 03:06:10 +0200 | hiruji | (~hiruji@user/hiruji) (Read error: Connection reset by peer) |
2021-08-06 03:07:23 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-08-06 03:07:41 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection) |
2021-08-06 03:08:05 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-08-06 03:08:51 +0200 | hiruji | (~hiruji@user/hiruji) (Read error: Connection reset by peer) |
2021-08-06 03:09:27 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-08-06 03:10:54 +0200 | hiruji | (~hiruji@user/hiruji) (Read error: Connection reset by peer) |
2021-08-06 03:11:16 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-08-06 03:20:17 +0200 | alx741 | (~alx741@186.178.109.254) (Quit: alx741) |
2021-08-06 03:20:59 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-08-06 03:30:58 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 240 seconds) |
2021-08-06 03:35:51 +0200 | favonia | (~favonia@user/favonia) |
2021-08-06 03:40:32 +0200 | pe200012 | (~pe200012@218.107.49.28) |
2021-08-06 03:44:00 +0200 | Guest099 | (~Guest0@187.83.249.216.dyn.smithville.net) |
2021-08-06 03:44:22 +0200 | Guest099 | (~Guest0@187.83.249.216.dyn.smithville.net) (Client Quit) |
2021-08-06 03:45:10 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-06 03:54:10 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2021-08-06 04:00:10 +0200 | xff0x_ | (~xff0x@2001:1a81:5296:aa00:8dc0:fe3f:5c9e:fa3a) (Ping timeout: 240 seconds) |
2021-08-06 04:02:22 +0200 | xff0x_ | (~xff0x@2001:1a81:52cf:a900:fe8a:f909:9f2c:b4df) |
2021-08-06 04:08:35 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-08-06 04:08:47 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-08-06 04:09:37 +0200 | Codaraxis__ | (~Codaraxis@user/codaraxis) |
2021-08-06 04:10:15 +0200 | _xor | (~xor@74.215.232.67) (Quit: brb) |
2021-08-06 04:12:05 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-08-06 04:12:24 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-08-06 04:12:33 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 258 seconds) |
2021-08-06 04:14:09 +0200 | Codaraxis_ | (~Codaraxis@user/codaraxis) (Ping timeout: 276 seconds) |
2021-08-06 04:15:53 +0200 | _xor | (~xor@74.215.232.67) |
2021-08-06 04:17:56 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2021-08-06 04:17:57 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (lithium.libera.chat (Nickname regained by services))) |
2021-08-06 04:17:57 +0200 | finn_elija | FinnElija |
2021-08-06 04:21:31 +0200 | ukari | (~ukari@user/ukari) (Remote host closed the connection) |
2021-08-06 04:25:20 +0200 | td_ | (~td@94.134.91.183) (Ping timeout: 272 seconds) |
2021-08-06 04:25:28 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
2021-08-06 04:26:26 +0200 | td_ | (~td@muedsl-82-207-238-118.citykom.de) |
2021-08-06 04:31:11 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2021-08-06 04:45:16 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-06 04:47:17 +0200 | wei2912 | (~wei2912@112.199.250.21) |
2021-08-06 04:49:27 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
2021-08-06 04:53:41 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2021-08-06 04:56:23 +0200 | retroid_ | (~retro@5ec19a54.skybroadband.com) |
2021-08-06 05:00:49 +0200 | ukari | (~ukari@user/ukari) |
2021-08-06 05:02:07 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-06 05:06:13 +0200 | Cajun | (~Cajun@user/cajun) |
2021-08-06 05:07:04 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
2021-08-06 05:11:04 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-06 05:17:53 +0200 | oso | (~oso@2601:58c:c080:a950:f275:2530:b398:680b) |
2021-08-06 05:20:10 +0200 | MQ-17J | (~MQ-17J@8.21.10.94) (Ping timeout: 240 seconds) |
2021-08-06 05:20:58 +0200 | euouae | (~euouae@user/euouae) (Quit: Client closed) |
2021-08-06 05:23:32 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-08-06 05:33:52 +0200 | pe200012 | (~pe200012@218.107.49.28) (Ping timeout: 245 seconds) |
2021-08-06 05:34:00 +0200 | pe200012_ | (~pe200012@183.236.83.77) |
2021-08-06 05:36:54 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-08-06 05:42:16 +0200 | xkuru | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2021-08-06 05:42:25 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) (Read error: Connection reset by peer) |
2021-08-06 05:42:39 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) |
2021-08-06 05:50:30 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-08-06 05:55:07 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 245 seconds) |
2021-08-06 05:55:11 +0200 | Guest56 | (~Guest56@2001:8003:33f0:c100:e466:919:f866:6e35) |
2021-08-06 05:58:55 +0200 | slack1256 | (~slack1256@181.203.118.140) (Remote host closed the connection) |
2021-08-06 05:59:43 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 244 seconds) |
2021-08-06 06:03:07 +0200 | dansh | (~dansh@101.190.222.236) |
2021-08-06 06:03:22 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-06 06:03:43 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-08-06 06:04:17 +0200 | pe200012_ | (~pe200012@183.236.83.77) (Ping timeout: 245 seconds) |
2021-08-06 06:04:27 +0200 | pe200012_ | (~pe200012@113.105.10.33) |
2021-08-06 06:04:34 +0200 | dansh | (~dansh@101.190.222.236) (Client Quit) |
2021-08-06 06:05:29 +0200 | pgib | (~textual@173.38.117.68) (Ping timeout: 252 seconds) |
2021-08-06 06:06:11 +0200 | Guest56 | (~Guest56@2001:8003:33f0:c100:e466:919:f866:6e35) (Quit: Client closed) |
2021-08-06 06:07:53 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge) |
2021-08-06 06:08:24 +0200 | MidAutumnHotaru | (~MidAutumn@user/midautumnmoon) |
2021-08-06 06:08:32 +0200 | wagle | (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-08-06 06:09:01 +0200 | wagle | (~wagle@quassel.wagle.io) |
2021-08-06 06:11:32 +0200 | bluehat | (~bluehat@202.14.120.238) |
2021-08-06 06:11:40 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-06 06:11:50 +0200 | willbush | (~user@47.183.200.14) |
2021-08-06 06:12:09 +0200 | euandreh | (~euandreh@2804:14c:33:9fe5:cf01:7cd6:622f:9fda) (Ping timeout: 258 seconds) |
2021-08-06 06:12:23 +0200 | moveeax | (~moveeax@202.14.120.238) |
2021-08-06 06:12:36 +0200 | <moveeax> | hi |
2021-08-06 06:13:55 +0200 | bluehat | (~bluehat@202.14.120.238) (Remote host closed the connection) |
2021-08-06 06:16:48 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
2021-08-06 06:17:21 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-06 06:22:45 +0200 | P1RATEZ | (piratez@user/p1ratez) (Remote host closed the connection) |
2021-08-06 06:24:32 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 250 seconds) |
2021-08-06 06:26:57 +0200 | moveax86_64 | (~moveax86_@202.14.120.238) |
2021-08-06 06:27:22 +0200 | moveeax | (~moveeax@202.14.120.238) (Quit: Connection closed) |
2021-08-06 06:27:37 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 245 seconds) |
2021-08-06 06:27:50 +0200 | moveax86_64 | (~moveax86_@202.14.120.238) (Remote host closed the connection) |
2021-08-06 06:28:18 +0200 | vlatkoB | (~IRC_clien@188.252.173.111) |
2021-08-06 06:31:56 +0200 | <jle`> | hi |
2021-08-06 06:31:57 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-08-06 06:33:01 +0200 | jle` | (~justin@cpe-23-240-75-236.socal.res.rr.com) (Quit: WeeChat 2.7) |
2021-08-06 06:33:19 +0200 | jle` | (~justin@cpe-23-240-75-236.socal.res.rr.com) |
2021-08-06 06:33:30 +0200 | <vlatkoB> | /msg NickServ IDENTIFY vlatkoB vlatkoLiberaNode |
2021-08-06 06:33:37 +0200 | <janus> | oops :( |
2021-08-06 06:34:00 +0200 | <janus> | vlatkoB: you should change your password, everybody saw that |
2021-08-06 06:34:50 +0200 | vlatkoB | (~IRC_clien@188.252.173.111) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-08-06 06:36:37 +0200 | endlesseditions | (~endlessed@135.129.112.36) |
2021-08-06 06:39:45 +0200 | xff0x_ | (~xff0x@2001:1a81:52cf:a900:fe8a:f909:9f2c:b4df) (Ping timeout: 258 seconds) |
2021-08-06 06:40:33 +0200 | xff0x_ | (~xff0x@2001:1a81:52cf:a900:d9f9:1622:609d:b2ef) |
2021-08-06 06:41:43 +0200 | endlesseditions | endless |
2021-08-06 06:44:17 +0200 | endless | (~endlessed@135.129.112.36) (Quit: Textual IRC Client: www.textualapp.com) |
2021-08-06 06:44:36 +0200 | endlesseditions | (~endlessed@135.129.112.36) |
2021-08-06 06:44:58 +0200 | ukari | (~ukari@user/ukari) (Remote host closed the connection) |
2021-08-06 06:45:22 +0200 | ukari | (~ukari@user/ukari) |
2021-08-06 06:48:54 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-08-06 06:49:14 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-08-06 06:50:01 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-08-06 06:51:49 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-08-06 06:53:22 +0200 | <jle`> | does anyone know if there's a way to "cabal repl" outside of a project and include packages in scope? like `stack ghci --package lens` |
2021-08-06 06:53:32 +0200 | <jle`> | but cabal |
2021-08-06 06:55:53 +0200 | <c_wraith> | cabal repl -b packagename |
2021-08-06 06:56:01 +0200 | <c_wraith> | or --build-depends, but -b is easier to spell |
2021-08-06 07:00:26 +0200 | <jle`> | ooh |
2021-08-06 07:00:29 +0200 | <jle`> | that's the magic word |
2021-08-06 07:03:06 +0200 | <jle`> | hooray it worked thanks! |
2021-08-06 07:04:14 +0200 | stevenxl | (uid133530@id-133530.highgate.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-06 07:04:42 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal) |
2021-08-06 07:17:05 +0200 | anandprabhu | (~anandprab@94.202.243.198) |
2021-08-06 07:17:35 +0200 | moveax86_64 | (~moveax86_@202.14.120.238) |
2021-08-06 07:18:13 +0200 | moveeax | (~moveeax@202.14.120.238) |
2021-08-06 07:20:03 +0200 | bgamari | (~bgamari@72.65.101.147) (Ping timeout: 276 seconds) |
2021-08-06 07:20:10 +0200 | bgamari_ | (~bgamari@72.65.101.13) |
2021-08-06 07:21:56 +0200 | <moveax86_64> | testPRIVMSG #haskell :this is a testPONG :pingis |
2021-08-06 07:22:12 +0200 | meinside_ | (uid24933@id-24933.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-06 07:22:20 +0200 | <Axman6> | please don't use the channel for testing |
2021-08-06 07:23:10 +0200 | moveax86_64 | (~moveax86_@202.14.120.238) (Remote host closed the connection) |
2021-08-06 07:23:36 +0200 | moveeax | (~moveeax@202.14.120.238) (Quit: Connection closed) |
2021-08-06 07:26:53 +0200 | tomku | (~tomku@user/tomku) (Ping timeout: 252 seconds) |
2021-08-06 07:27:50 +0200 | tomku | (~tomku@user/tomku) |
2021-08-06 07:28:16 +0200 | <Cajun> | so a friend gave me a small challenge: given a file like so "[(233,173,20), (200, 10, 155)....]", turn it into an image without the dimensions given. the text file is massive, ~189mb but its all there. i can strictly read the file, but when i go to convert it to a `[(Word8, Word8, Word8)]` the program quickly eats up ~24gb of ram and requires a |
2021-08-06 07:28:16 +0200 | <Cajun> | segfault. heres the meat of the issue: https://paste.tomsmeding.com/r5DDLhAW |
2021-08-06 07:29:25 +0200 | <Cajun> | is there a way i can get that string from the reading of the file to a list without requiring an insane amount of ram? also when i turn on -s, its mainly the GC taking up >90% of runtime |
2021-08-06 07:29:55 +0200 | <Cajun> | kinda like `coerce` but for String -> [(Word8, Word8, Word8)] |
2021-08-06 07:30:33 +0200 | <jle`> | Cajun: what are the Word8s supposed to represent? |
2021-08-06 07:30:40 +0200 | <Cajun> | pixels |
2021-08-06 07:30:54 +0200 | <jle`> | like color channels? |
2021-08-06 07:31:15 +0200 | <jle`> | and this is like a row major representation? |
2021-08-06 07:31:20 +0200 | <Cajun> | in the juicypixels library, it uses `Pixel8` which is a synonym for `Word8` so i might as well convert to Word8 |
2021-08-06 07:31:39 +0200 | <jle`> | i'm just trying to understand how the image is encoded heh |
2021-08-06 07:31:56 +0200 | <jle`> | when first looking at the list it seemed like a list of points to connect like an svg maybe heh |
2021-08-06 07:32:43 +0200 | <Cajun> | its literally just a list like this: "[(Num, Num, Num), (Num, Num, Num)......]" where each Num is an RGB value and each tuple makes a pixel |
2021-08-06 07:32:44 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-06 07:32:59 +0200 | <Axman6> | I would be inclined to split the reading into smaller chunks - assuming you don't need to be super strict with the format, you could so something like: map read . splitOn "," . drop 1 . init |
2021-08-06 07:33:03 +0200 | oxide | (~lambda@user/oxide) |
2021-08-06 07:33:35 +0200 | <jle`> | Cajun: so, it's like a scan of pixels from left to right, row to row? |
2021-08-06 07:33:44 +0200 | <jle`> | the color values at each point? |
2021-08-06 07:34:10 +0200 | <Axman6> | it's a lot like a pgm image |
2021-08-06 07:34:24 +0200 | <Cajun> | well its essentially one row, but the challenge is to recover it, so i can say how far the rows go jle` |
2021-08-06 07:35:04 +0200 | <Axman6> | or ppm I guess |
2021-08-06 07:35:08 +0200 | <Axman6> | https://en.wikipedia.org/wiki/Netpbm#File_formats |
2021-08-06 07:36:18 +0200 | <jle`> | hm, i guess the challenge is if there's a streaming file format for images |
2021-08-06 07:36:21 +0200 | <jle`> | then you can just convert directly into there |
2021-08-06 07:36:54 +0200 | <Cajun> | i tried looking for a library that would directly take up a list of tuples and churn out an image, but its appearing to be more difficult |
2021-08-06 07:37:11 +0200 | <Axman6> | I feel like you're overthinking this jle`, it's just the Show output of a [(Word8,Word8,Word8)] that needs to be Read |
2021-08-06 07:37:16 +0200 | <Cajun> | i can try that strategy of splitting the file, but that just defers the work, no? |
2021-08-06 07:37:27 +0200 | <jle`> | Axman6: it can'be be read because it doesn't fit into memory |
2021-08-06 07:37:32 +0200 | <jle`> | at least, that's how i'm interpreting it |
2021-08-06 07:37:43 +0200 | <jle`> | hm but 189mb should fit in memory |
2021-08-06 07:37:48 +0200 | <Axman6> | using lazyIO it should be fine |
2021-08-06 07:37:53 +0200 | <Cajun> | well for some reason its also taking up a bunch of memory and i have no idea why |
2021-08-06 07:37:54 +0200 | <Axman6> | yeah |
2021-08-06 07:38:08 +0200 | <jle`> | if it fits into memory then lazy or non-lazy io shouldn't be an issue either way i think |
2021-08-06 07:38:20 +0200 | <jle`> | the only reason you'd want lazy io if you don't want your whole data in memory |
2021-08-06 07:38:26 +0200 | <Axman6> | well, you can do some calculations, but remember that (Word8,Word8,Word8) takes up much more space than 3*8 bytes |
2021-08-06 07:38:40 +0200 | <Axman6> | there's like two words for the tuple, then two words per Word8 |
2021-08-06 07:38:43 +0200 | <Cajun> | reading the file isnt an issue, but `read` -ing it to convert the String to (Word8, Word8, Word8) eats all the ram and essentially crashes it |
2021-08-06 07:39:00 +0200 | <jle`> | ah yeah, 'read' is not really meant for actual work |
2021-08-06 07:39:05 +0200 | <jle`> | it's mostly for debugging |
2021-08-06 07:39:17 +0200 | <Axman6> | so, you might want to add: data Pixel = Pixel {-#UNPACK#-}Word8 {-#UNPACK#-}Word8 {-#UNPACK#-}Word8 and convert the tuple into that |
2021-08-06 07:39:38 +0200 | <Axman6> | missing the ! on those Word8's |
2021-08-06 07:39:58 +0200 | <Cajun> | convert the tuple during the `read` to that? |
2021-08-06 07:40:08 +0200 | <jle`> | so using like splitOn "," (like Axman suggested) should work, that's pretty efficient, especially if you do it over lazy io. otherwise you can use a parser library like attoparsec but that'd be overkill too |
2021-08-06 07:40:27 +0200 | <jle`> | read is mostly meant for debugging, so i wouldn't use it for anything serious |
2021-08-06 07:40:35 +0200 | <Axman6> | yeah - if you have (Word8, Word8, Word8) -> Pixel, then do rdo map (toPixel . read) . ... |
2021-08-06 07:40:53 +0200 | <jle`> | > splitOn ", " "(1,2,3), (4,5,6), (7,8,9)" |
2021-08-06 07:40:54 +0200 | <lambdabot> | ["(1,2,3)","(4,5,6)","(7,8,9)"] |
2021-08-06 07:41:22 +0200 | <jle`> | or depending on your file format you can splitOn "," and chunksOf 3 it or something like that |
2021-08-06 07:41:23 +0200 | <Axman6> | % read " (1,2)" :: (Word8,Word8) |
2021-08-06 07:41:23 +0200 | <yahb> | Axman6: (1,2) |
2021-08-06 07:41:32 +0200 | <Axman6> | splitOn "," should be enough |
2021-08-06 07:41:48 +0200 | <Cajun> | and should that be in another `let` right before it? |
2021-08-06 07:42:11 +0200 | <Cajun> | like `let splitArr = splitOn "," rawList` |
2021-08-06 07:42:48 +0200 | <Axman6> | I would just do it in one go, let imageArr = map (toPixel . read) . splitOn "," . init . drop 1 $ rawList |
2021-08-06 07:42:56 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds) |
2021-08-06 07:43:08 +0200 | <Cajun> | why do you need the `init . drop 1` in this instance? |
2021-08-06 07:43:21 +0200 | <Axman6> | to get rid ot the [ and ] |
2021-08-06 07:43:27 +0200 | <Cajun> | yeah just figured, makes sense |
2021-08-06 07:43:48 +0200 | <Axman6> | I would definitely not use readFile' either, whatever that is |
2021-08-06 07:43:54 +0200 | koz | (~koz@121.99.240.58) (Remote host closed the connection) |
2021-08-06 07:43:56 +0200 | <Axman6> | lazy IO will help you here |
2021-08-06 07:44:09 +0200 | koz | (~koz@121.99.240.58) |
2021-08-06 07:44:14 +0200 | <Axman6> | one of the cases where it can actually work, without having to resort to streaming |
2021-08-06 07:44:21 +0200 | <Cajun> | so i do want to lazily read the file, not strictly with `readFile'` ? |
2021-08-06 07:44:27 +0200 | <Axman6> | yes |
2021-08-06 07:44:58 +0200 | <Axman6> | think about the oveahead that 186 million Chars has |
2021-08-06 07:45:12 +0200 | <Axman6> | you will need gigabytes of memory to put that in RAM |
2021-08-06 07:45:19 +0200 | <jle`> | yeah, the advantage of splitOn, map, etc. is that they process the list char-by-char, they never need anything beyond that |
2021-08-06 07:45:44 +0200 | <jle`> | so with lazy io, io is driven by what splitOn, drop, init, map demand |
2021-08-06 07:45:47 +0200 | <Axman6> | each (:) is like three words, then each Char is another two words. and a word is 8 bytes |
2021-08-06 07:45:48 +0200 | <jle`> | and the demand is piece-by-piece |
2021-08-06 07:46:09 +0200 | <jle`> | so you never keep any char's in memory other than what toPixel/read/splitOn are directly processing |
2021-08-06 07:46:10 +0200 | <Cajun> | what library is `splitOn` from? it doesnt seem to be in the prelude |
2021-08-06 07:46:20 +0200 | <jle`> | should be in base in Data.List i think |
2021-08-06 07:46:36 +0200 | <jle`> | oh, it's not :o |
2021-08-06 07:46:53 +0200 | <Cajun> | hoogle says it exists for the `Text` datatype but not for strings |
2021-08-06 07:46:59 +0200 | <jle`> | looks like it's in the 'split' library |
2021-08-06 07:47:04 +0200 | <jle`> | which is pretty commonly used |
2021-08-06 07:47:57 +0200 | <Axman6> | we need to just merge all of splity into base already -_- |
2021-08-06 07:48:02 +0200 | <Axman6> | split* |
2021-08-06 07:48:04 +0200 | <jle`> | +1 |
2021-08-06 07:48:33 +0200 | <jle`> | but ì you're learning haskell, it's actually a neat exercise to write it from scratch too. on an unrelated note :) |
2021-08-06 07:48:43 +0200 | <Axman6> | agreed |
2021-08-06 07:49:13 +0200 | <jle`> | *if |
2021-08-06 07:49:21 +0200 | <Axman6> | splitOn :: [a] -> [a] -> [[a]] is significant;y more difficult for a beginner than splitOn :: a -> [a] -> [[a]] too |
2021-08-06 07:49:34 +0200 | <Cajun> | and what is `toPixel` doing in that instance Axman6 ? |
2021-08-06 07:50:06 +0200 | <Axman6> | literally just putting the Word8's into the Pixel constructor, but it's a much more compact representation than the tuple |
2021-08-06 07:50:24 +0200 | <Axman6> | toPixel (r,g,b) = Pixel r g b |
2021-08-06 07:50:41 +0200 | <Axman6> | if you're using juicypixels, this type probably already exists |
2021-08-06 07:51:17 +0200 | <Axman6> | https://hackage.haskell.org/package/JuicyPixels-3.3.5/docs/Codec-Picture.html#t:PixelRGB8 |
2021-08-06 07:51:18 +0200 | <jle`> | i feel like you also need to account for the three-ness of the pixels |
2021-08-06 07:51:33 +0200 | <Axman6> | jle`: ? |
2021-08-06 07:51:40 +0200 | <Cajun> | i have a type synonym for something similar: `type RGB8 = (Pixel8, Pixel8, Pixel8)` |
2021-08-06 07:51:54 +0200 | <jle`> | > splitAt "," . drop 1 . init $ "[(233,173,20), (200, 10, 155)]" |
2021-08-06 07:51:56 +0200 | <lambdabot> | error: |
2021-08-06 07:51:56 +0200 | <lambdabot> | • Couldn't match expected type ‘Int’ with actual type ‘[Char]’ |
2021-08-06 07:51:56 +0200 | <lambdabot> | • In the first argument of ‘splitAt’, namely ‘","’ |
2021-08-06 07:52:07 +0200 | <jle`> | > splitOn "," . drop 1 . init $ "[(233,173,20), (200, 10, 155)]" |
2021-08-06 07:52:09 +0200 | <lambdabot> | ["(233","173","20)"," (200"," 10"," 155)"] |
2021-08-06 07:52:17 +0200 | <jle`> | you get each number instead of each triple |
2021-08-06 07:52:33 +0200 | <Axman6> | aren't you just handing this to juicypixels eventually? why not just go straight to its type? (Word8,Word8,Word8) is horrifically inefficient |
2021-08-06 07:53:01 +0200 | <Cajun> | well what isnt shown in that code segment is handing it off to Repa then to Juicepixels |
2021-08-06 07:53:24 +0200 | <jle`> | if you're just getting the raw Word8's then no need to do anything fancy i think |
2021-08-06 07:53:30 +0200 | <Axman6> | 3*2 + 4 words, so 10 words, which is 80 bytes, per pixel. |
2021-08-06 07:53:41 +0200 | <jle`> | > map read . filter isDigit . splitOn "," $ "[(233,173,20), (200, 10, 155)]" :: [Word8] |
2021-08-06 07:53:43 +0200 | <lambdabot> | error: |
2021-08-06 07:53:43 +0200 | <lambdabot> | • Couldn't match type ‘Char’ with ‘[Char]’ |
2021-08-06 07:53:43 +0200 | <lambdabot> | Expected type: [Char] -> [String] |
2021-08-06 07:53:59 +0200 | <jle`> | > map (read . filter isDigit) . splitOn "," $ "[(233,173,20), (200, 10, 155)]" :: [Word8] |
2021-08-06 07:54:01 +0200 | <lambdabot> | [233,173,20,200,10,155] |
2021-08-06 07:54:04 +0200 | <Cajun> | i already have a function `toImage :: Array U DIM2 RGB8 -> Image PixelRGB8` to convert the repa array to a juicepixels image (i could also find something from juicepixels-repa) |
2021-08-06 07:54:35 +0200 | <endlesseditions> | random question thats probably been asked 1 billion times before,,,, but, do you all think haskell is a good lang as an introduction to FP? I mostly use Go and Typescript for microsystem development. Really want to get more into FP but not sure what lang i should mess around with first. |
2021-08-06 07:54:46 +0200 | <Axman6> | just go straight to Pixel8, seriously, you don't have the RAM not to |
2021-08-06 07:55:18 +0200 | <Cajun> | straight to pixel8 but how would i get a list of pixel8 into an image? |
2021-08-06 07:55:32 +0200 | <jle`> | endlesseditions: i'd say just jump straight into fp with haskell :) i got a small taste with ruby but jumping from ruby to haskell worked well for me personally |
2021-08-06 07:55:39 +0200 | <Axman6> | endlesseditions: if you actually want to learn FP, there's basicaslly no better language, because you don't have the choice to dumb things like use mutation or arbitrary effects in the middle of seemingly pure functions |
2021-08-06 07:55:47 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-06 07:57:18 +0200 | <endlesseditions> | cool yeah i was seeing some similar stuff to what you said Axman, regarding other langs that are more multiparidigm and can be a bit more lax in terms of what style of programming you do |
2021-08-06 07:57:23 +0200 | <Axman6> | you could quite easily use generateFoldImage, where acc is actually the list of pixels, assuming that it works in the same order as your image |
2021-08-06 07:57:50 +0200 | <jle`> | Cajun: a juicy pixels image is essentially internally a Data.Vector of pixels |
2021-08-06 07:58:01 +0200 | <jle`> | oh, not even of pixels. of pixel components |
2021-08-06 07:58:14 +0200 | <Axman6> | endlesseditions: people get caught up in wanting features they had in other languages because that's what they're used to. It's a trap (as someone who's been writing Scala recently, I can recommend you never, ever, touch it, just don't) |
2021-08-06 07:58:15 +0200 | <jle`> | https://hackage.haskell.org/package/JuicyPixels-3.3.5/docs/Codec-Picture-Types.html#t:Image |
2021-08-06 07:58:27 +0200 | <Cajun> | hold up am i converting to a list of Pixel8 or a list of PixelRGB8? |
2021-08-06 07:58:32 +0200 | <jle`> | Cajun: so you can literally just throw in a vecotor of Word8's |
2021-08-06 07:58:42 +0200 | <endlesseditions> | oh man i mean scala looked interesting and all but i kinda want to stay away from jvm to be honest aha |
2021-08-06 07:58:56 +0200 | <jle`> | `Image w h (Vector.fromList myListOfWord8s)` |
2021-08-06 07:59:05 +0200 | <endlesseditions> | one thing i really like about go is its ability to compile down into simple binary (even if it is a bit bloated) |
2021-08-06 07:59:11 +0200 | anandprabhu_ | (~anandprab@86.106.121.228) |
2021-08-06 07:59:25 +0200 | <Axman6> | generateFoldImage (\(p:ps) _x _y (ps,p)) pixels width height should work |
2021-08-06 07:59:28 +0200 | <jle`> | Cajun: of type `Image Pixel8` |
2021-08-06 07:59:56 +0200 | <Axman6> | endlesseditions: Haskell is also a compiled language, which usually doeasn't link to much |
2021-08-06 08:00:00 +0200 | <Cajun> | that would wind up being greyscale, then im turning an rgb image greyscale and would mess it up entirely |
2021-08-06 08:00:06 +0200 | <endlesseditions> | is the Learn You book still the top rec for hoping straight in? |
2021-08-06 08:00:20 +0200 | <Cajun> | as each RGB channel would turn into their own monochrome pixels |
2021-08-06 08:00:39 +0200 | <lechner> | Hi, I would like to mirror Hackage locally to find prerequisites that are not declared correctly. Unfortunately that is what I may be encountering when trying to build the mirroring tool hackage-mirror. What's the fix, please? Thanks! https://paste.debian.net/1206740/ |
2021-08-06 08:00:39 +0200 | <Cajun> | they need to stay as 3-tuples then into PixelRGB8 |
2021-08-06 08:00:44 +0200 | <jle`> | Cajun: no, it's an internal represetation (if you're talking about my method) |
2021-08-06 08:00:51 +0200 | <endlesseditions> | and do people ever make CLI's or TUI's in haskell? those are some things im definitely interested as i've mostly just been making cli's lately |
2021-08-06 08:01:03 +0200 | <jle`> | Cajun: internally it's stored as a contiguous vector of Word8's. but when you process it as an image, it automatically chunks them up into 3's |
2021-08-06 08:01:19 +0200 | <Axman6> | Cajun: why do you say that? o.O |
2021-08-06 08:01:27 +0200 | <jle`> | so i guess my method is a bit low-level, heh |
2021-08-06 08:01:33 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving) |
2021-08-06 08:01:39 +0200 | <Cajun> | ahhh i see. so am i manually constructing an image or something? i still dont get how im making an `Image Pixel8` from a list of word8s |
2021-08-06 08:01:47 +0200 | anandprabhu | (~anandprab@94.202.243.198) (Ping timeout: 258 seconds) |
2021-08-06 08:01:47 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 258 seconds) |
2021-08-06 08:01:49 +0200 | <jle`> | the JuicyPixels library provides an abstraction to work over the raw contiguous bytes as if it were a color image |
2021-08-06 08:02:01 +0200 | <Axman6> | Ignore jle` and listen to me :P |
2021-08-06 08:02:19 +0200 | <lechner> | I tried to use hvr's hackage-mirror-tool instead but did not fare much better https://paste.debian.net/1206742/ https://github.com/haskell-hvr/hackage-mirror-tool https://groups.google.com/g/stackage/c/Y7NU6qVElZs?pli=1 |
2021-08-06 08:02:20 +0200 | <Axman6> | (This is usually very bad advice, but I know what I'm talking about here XD) |
2021-08-06 08:02:46 +0200 | cheater | (~Username@user/cheater) |
2021-08-06 08:03:49 +0200 | <Cajun> | now im really confused lol, i now have no idea how im getting from this string to this list of word 8s (im doing this: `map (read . filter isDigit) . splitOn "," $ "[(233,173,20), (200, 10, 155)]" :: [Word8]` right?) then i need that to be a vector and use some function to shove that into an `Image`? |
2021-08-06 08:03:54 +0200 | <jle`> | yeah, we are giving sort of contradictory method, so just having one channel of communication is probably better :p |
2021-08-06 08:03:58 +0200 | <Axman6> | If you do what I'm saying, you will use the minimum memory needed to allocate the image and read data lazily from disk |
2021-08-06 08:04:20 +0200 | <Axman6> | Cajun: that's why you should do what I said instead |
2021-08-06 08:04:40 +0200 | <Axman6> | lechner: #haskell-infrastructure might be a better place to ask |
2021-08-06 08:04:45 +0200 | <Cajun> | well now i have no idea what that was |
2021-08-06 08:05:22 +0200 | <lechner> | Axman6: thanks! |
2021-08-06 08:06:23 +0200 | <Axman6> | you code will literally be: generateFoldImage (\(p:ps) _x _y (ps,p)) (map (toPixel . read) . splitOn "," . init . drop 1 $ rawList) width height, assuming you know the dimensions of the image |
2021-08-06 08:06:56 +0200 | <Cajun> | i dont know the dimensions of the image, but i guess i just can guess and check. is there any harm if the dimensions are too small/big than the original? |
2021-08-06 08:07:06 +0200 | <Cajun> | like, there are too many pixels than are in those dimensions |
2021-08-06 08:07:09 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-08-06 08:07:09 +0200 | jespada | (~jespada@90.254.247.46) (Ping timeout: 258 seconds) |
2021-08-06 08:08:20 +0200 | <Axman6> | if they're too small, that'll be fine. if they're too big, then that "(\(p:ps)" will fail and you'll get an exception |
2021-08-06 08:09:03 +0200 | jespada | (~jespada@90.254.247.46) |
2021-08-06 08:10:16 +0200 | <Axman6> | you could put in a case statement in there which checks if the list's empty, and outputs Pixel8 0 0 0 |
2021-08-06 08:11:51 +0200 | <Cajun> | i would rather get an exception yelling at me than false hopes raysL |
2021-08-06 08:12:01 +0200 | <Cajun> | oh yeah no emotes lol |
2021-08-06 08:12:08 +0200 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 258 seconds) |
2021-08-06 08:12:45 +0200 | <Cajun> | so `generateFoldImage` gives type `([Pixel], Image Pixel)` which is great, so what do i do with that `Image Pixel` ? |
2021-08-06 08:13:38 +0200 | <Axman6> | whatever you want? |
2021-08-06 08:13:41 +0200 | <Axman6> | save it to disk? |
2021-08-06 08:13:51 +0200 | <Cajun> | alright, ima see if this works, thanks! |
2021-08-06 08:14:21 +0200 | <Axman6> | writePng looks like a good place to start |
2021-08-06 08:15:48 +0200 | willbush | (~user@47.183.200.14) (Remote host closed the connection) |
2021-08-06 08:16:07 +0200 | <Cajun> | problem being, you defined `data Pixel` but that means i need an instance of PngSavable for it |
2021-08-06 08:17:42 +0200 | <Axman6> | like I said a few times, use Pixel8 from JuicyPixels |
2021-08-06 08:18:21 +0200 | slavaqq | (~slavaqq@sdmail.sdserver.cz) |
2021-08-06 08:22:12 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 245 seconds) |
2021-08-06 08:22:15 +0200 | <Cajun> | now im really confused. `toPixel` doesnt exist for Pixel8, i dont want to use the custom defined thing because it doesnt play well with juicypixels, and that code you gave runs into both of those issues |
2021-08-06 08:22:31 +0200 | <Cajun> | also, the splitOn makes a mess of the strings |
2021-08-06 08:22:34 +0200 | <Axman6> | write it |
2021-08-06 08:22:49 +0200 | <Cajun> | i tried and im quite confused how, considering Pixel8 is a type synonym for word8 |
2021-08-06 08:23:15 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 258 seconds) |
2021-08-06 08:23:19 +0200 | <Axman6> | noit's not, it's identical to what I defined before: https://hackage.haskell.org/package/JuicyPixels-3.3.5/docs/Codec-Picture.html#t:PixelRGB8 |
2021-08-06 08:23:26 +0200 | <Axman6> | uh, ignore that |
2021-08-06 08:23:31 +0200 | <Cajun> | that pixelrgb8 not pixel8 |
2021-08-06 08:23:55 +0200 | <Axman6> | right, you have Word8's, just stick them into the PixelRGB8 constructor |
2021-08-06 08:24:00 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-06 08:24:11 +0200 | <Cajun> | alright this makes more sense. i was seriously confused when you were saying pixel8 instead of pixelrgb8 |
2021-08-06 08:24:12 +0200 | fendor | (~fendor@178.115.49.9.wireless.dyn.drei.com) |
2021-08-06 08:24:14 +0200 | <Cajun> | it compiles now |
2021-08-06 08:24:36 +0200 | <Axman6> | yeah sorry, I forgot those had different names |
2021-08-06 08:25:26 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2021-08-06 08:25:46 +0200 | xff0x_ | (~xff0x@2001:1a81:52cf:a900:d9f9:1622:609d:b2ef) (Ping timeout: 240 seconds) |
2021-08-06 08:25:52 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds) |
2021-08-06 08:26:40 +0200 | Lord_of_Life_ | Lord_of_Life |
2021-08-06 08:26:44 +0200 | <Cajun> | so yeah issue with the parsing. the `splitOn` doesnt play well with list-like strings like jle` showed earlier |
2021-08-06 08:26:45 +0200 | <Cajun> | > splitOn "," . drop 1 . init $ "[(233,173,20), (200, 10, 155)]" |
2021-08-06 08:26:46 +0200 | <lambdabot> | ["(233","173","20)"," (200"," 10"," 155)"] |
2021-08-06 08:27:36 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Client Quit) |
2021-08-06 08:27:43 +0200 | xff0x_ | (~xff0x@2001:1a81:52e3:2500:9c72:9058:eb7a:ca08) |
2021-08-06 08:27:58 +0200 | <Axman6> | oh, that's a great point... |
2021-08-06 08:28:19 +0200 | <Axman6> | I forgot that tuples also have ,'s XD |
2021-08-06 08:28:20 +0200 | juhp | (~juhp@128.106.188.220) (Quit: juhp) |
2021-08-06 08:31:08 +0200 | chele | (~chele@user/chele) |
2021-08-06 08:33:00 +0200 | <Cajun> | > endBy ", " . drop 1 . init $ "[(233,173,20), (200, 10, 155)]" |
2021-08-06 08:33:01 +0200 | <lambdabot> | ["(233,173,20)","(200","10","155)"] |
2021-08-06 08:33:05 +0200 | timexdd | (~timexdd@202.14.120.238) |
2021-08-06 08:34:11 +0200 | <Cajun> | i have no idea if the file has spaces |
2021-08-06 08:34:11 +0200 | juhp | (~juhp@128.106.188.220) |
2021-08-06 08:34:48 +0200 | <Cajun> | there are, which makes this harder |
2021-08-06 08:34:55 +0200 | <Axman6> | might be time to start using parsers... |
2021-08-06 08:35:07 +0200 | <Cajun> | so much for nice memory usage |
2021-08-06 08:37:01 +0200 | kenran | (~kenran@b2b-37-24-119-190.unitymedia.biz) |
2021-08-06 08:37:18 +0200 | <Axman6> | eh? why do you think that won't let you have decent memory usage? |
2021-08-06 08:38:01 +0200 | <Cajun> | thinking it would have some big overhead |
2021-08-06 08:38:10 +0200 | <Axman6> | you should think again |
2021-08-06 08:38:10 +0200 | timexdd | (~timexdd@202.14.120.238) (Quit: Connection closed) |
2021-08-06 08:38:31 +0200 | <Axman6> | attoparsec isn't named after a very small unit of measure for nothing |
2021-08-06 08:40:17 +0200 | <Cajun> | i only know so much about parsers. the textbook i read touched on a homemade variety, but i havent touched on them much more |
2021-08-06 08:41:26 +0200 | markpythonicbitc | (~markpytho@2601:647:5a00:35:298a:b52c:58df:cdd4) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-08-06 08:41:42 +0200 | <Cajun> | hm, attoparsec doesnt seem to be useful for Strings, only ByteStrings |
2021-08-06 08:44:44 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:113:1bce:1dde:b94a) |
2021-08-06 08:50:02 +0200 | m4m41 | (~goober@49.207.205.58) |
2021-08-06 08:51:30 +0200 | burnsidesLlama | (~burnsides@client-8-91.eduroam.oxuni.org.uk) |
2021-08-06 08:51:35 +0200 | burnsidesLlama | (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection) |
2021-08-06 08:52:01 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 08:53:12 +0200 | burnside_ | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 08:53:14 +0200 | burnside_ | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-06 08:53:14 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-06 08:53:36 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 08:54:05 +0200 | burnside_ | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 08:54:05 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-06 08:55:05 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 08:55:06 +0200 | burnside_ | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-06 08:55:40 +0200 | burnside_ | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 08:55:41 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-06 08:55:45 +0200 | <Axman6> | yes, you really want to be doing this using ByteStrings, String is absolutely terrible |
2021-08-06 08:56:54 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 08:56:55 +0200 | burnside_ | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-06 08:58:08 +0200 | m4m41 | (~goober@49.207.205.58) (Quit: Leaving) |
2021-08-06 08:59:43 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2021-08-06 09:00:43 +0200 | <Cajun> | though i thought we wanted lazy file reading. `Data.ByteString.readFile` is strict |
2021-08-06 09:02:42 +0200 | oxide | (~lambda@user/oxide) (Ping timeout: 250 seconds) |
2021-08-06 09:03:49 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-06 09:04:47 +0200 | <Axman6> | right, you use lazy bytestrings |
2021-08-06 09:05:44 +0200 | <Cajun> | ah yeah forgot those existed |
2021-08-06 09:07:08 +0200 | <Cajun> | ill have to leave making the parsers for another day, its already 2am lol |
2021-08-06 09:07:24 +0200 | <Cajun> | thanks for the help! |
2021-08-06 09:07:26 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-06 09:07:35 +0200 | Cajun | (~Cajun@user/cajun) (Quit: Client closed) |
2021-08-06 09:08:18 +0200 | Cajun | (~Cajun@user/cajun) |
2021-08-06 09:08:27 +0200 | michalz | (~michalz@185.246.204.62) |
2021-08-06 09:09:25 +0200 | oxide | (~lambda@user/oxide) |
2021-08-06 09:09:29 +0200 | <jle`> | Cajun: yeah, i think overall you can just do map (read . filter isChar) . splitOn "," -- and then you can use `Image PixelRGB8` |
2021-08-06 09:10:00 +0200 | <jle`> | Cajun: the way PixelRGB8 works is that it expects the internal vector to be a list of Word8's, where each group of 3 represents a 3-color-channel pixel |
2021-08-06 09:10:37 +0200 | <jle`> | so you can just do stringToImg :: String -> Image PixelRGB8; stringToImg = Image 100 100 . Vector.fromList . map (read . filter isDigit) . splitOn "," |
2021-08-06 09:11:26 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-08-06 09:11:37 +0200 | <jle`> | note that internally, in the JuicyPixels library, an image of PixelRGB8's doesn't actually contain any PixelRGB8. it contains a "continguous memory" vector of each component |
2021-08-06 09:12:16 +0200 | <jle`> | PixelRGB8 itself is merely a "view"/abstraction over the internal representation. and so ideally you never access the bytes directly, you ask for pixelrgb8's, and juicypixels aggregates them and gives them to you |
2021-08-06 09:13:14 +0200 | <jle`> | so using the Image constructor is "unsafe" in a way and is pretty low-level, because if you don't have the bytes in exactly the right order and orientation it will fail. but luckily in your case, it happens to magically line up |
2021-08-06 09:14:10 +0200 | wolfshappen_ | (~waff@irc.furworks.de) (Ping timeout: 258 seconds) |
2021-08-06 09:14:57 +0200 | endlesseditions | (~endlessed@135.129.112.36) (Quit: Textual IRC Client: www.textualapp.com) |
2021-08-06 09:15:26 +0200 | Cajun85 | (~Cajun@user/cajun) |
2021-08-06 09:15:34 +0200 | <Cajun85> | random disconnects are a pain |
2021-08-06 09:15:55 +0200 | epolanski | (uid312403@id-312403.brockwell.irccloud.com) |
2021-08-06 09:16:17 +0200 | anandprabhu_ | (~anandprab@86.106.121.228) (Quit: Leaving) |
2021-08-06 09:16:23 +0200 | <jle`> | Cajun85: ah heh, i figured you did sleep. but i sent a few messages about five minutes ago if you're interested still |
2021-08-06 09:16:47 +0200 | <Cajun85> | i can see them, its just disconnecting for a split second lol |
2021-08-06 09:17:12 +0200 | Shires | (~Shires@user/shires) |
2021-08-06 09:18:58 +0200 | Cajun | (~Cajun@user/cajun) (Ping timeout: 246 seconds) |
2021-08-06 09:19:34 +0200 | <Cajun85> | it surely did something, though its definitely not 100 by 100 |
2021-08-06 09:19:49 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-06 09:19:58 +0200 | <Cajun85> | idk how big it is, so ill just keep scaling up until it errors |
2021-08-06 09:21:03 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-08-06 09:21:32 +0200 | tommd | (~tommd@cpe-76-179-204-251.maine.res.rr.com) (Remote host closed the connection) |
2021-08-06 09:23:32 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2021-08-06 09:25:30 +0200 | <jle`> | Cajun85: ah yeah, that was just a placeholder :) |
2021-08-06 09:26:04 +0200 | <jle`> | if you're guessing and checking, one thinkg you can do is to count the number of items and see what the factors are |
2021-08-06 09:26:16 +0200 | <jle`> | length . splitOn "," |
2021-08-06 09:26:23 +0200 | <jle`> | er, and divide that by three :) |
2021-08-06 09:27:07 +0200 | <jle`> | Cajun85: but yeah, important to remember that the only reason this scheme works is because of a big coincidence in that the way your data is encoded happens to be exactly the internal representation juicypixels uses for images (if you flatten the tuples out). so, a happy coincidence |
2021-08-06 09:27:26 +0200 | <jle`> | *for 3-channel color images |
2021-08-06 09:27:36 +0200 | <Cajun85> | very interesting, i didnt realize that. would this also work for 4 channel RGBA? |
2021-08-06 09:27:37 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-08-06 09:27:52 +0200 | <Cajun85> | if it were arity 4 tuples instead |
2021-08-06 09:28:00 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-08-06 09:28:09 +0200 | <maerwald[m]> | Anyone running stack on FreeBSD? |
2021-08-06 09:28:35 +0200 | <Axman6> | I tried, but it doesn't work on 13.0 :'( |
2021-08-06 09:29:23 +0200 | <maerwald[m]> | I'm building it on 12.2 |
2021-08-06 09:29:25 +0200 | aman | (~aman@user/aman) (Quit: aman) |
2021-08-06 09:29:33 +0200 | <jle`> | Cajun85: it looks like from https://hackage.haskell.org/package/JuicyPixels-3.3.5/docs/src/Codec.Picture.Types.html#line-1753, PixelRGBA8 expects r, g, b, then alpha channel bytes |
2021-08-06 09:29:36 +0200 | <Axman6> | can't you grab it from pkg? |
2021-08-06 09:29:40 +0200 | <jle`> | so it would work if you did Image PixelRGBA8 |
2021-08-06 09:29:52 +0200 | <jle`> | but again, this isn't really a robust way of doing this heh |
2021-08-06 09:30:09 +0200 | <maerwald[m]> | Axman6: i don't use FreeBSD. I'm trying to run the integration tests on it and build binaries |
2021-08-06 09:30:15 +0200 | <jle`> | so an ImageRGBA8 would, in its internal representation, be [r1,g1,b1,a1,r2,g2,b2,a2,...] etc. |
2021-08-06 09:30:58 +0200 | <jle`> | but juicypixels is designed around not having to deal with the internal rep. just taking advantage of a happy coincidence here :) |
2021-08-06 09:32:01 +0200 | kuribas | (~user@ptr-25vy0i8khwnki6rybr8.18120a2.ip6.access.telenet.be) |
2021-08-06 09:33:03 +0200 | <maerwald[m]> | Axman6: so what doesn't work on 13? |
2021-08-06 09:33:23 +0200 | <Axman6> | stack is liked against something that has a newer version on 13 |
2021-08-06 09:33:48 +0200 | <maerwald[m]> | Ah so you mean upstream binaries don't work |
2021-08-06 09:34:34 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-06 09:34:42 +0200 | oxide | (~lambda@user/oxide) (Ping timeout: 245 seconds) |
2021-08-06 09:42:35 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 09:44:43 +0200 | aman | (~aman@user/aman) |
2021-08-06 09:46:52 +0200 | pe200012 | (~pe200012@113.105.10.33) |
2021-08-06 09:47:04 +0200 | pe200012_ | (~pe200012@113.105.10.33) (Ping timeout: 272 seconds) |
2021-08-06 09:47:09 +0200 | <Axman6> | yeah |
2021-08-06 09:47:14 +0200 | <Axman6> | I think ghc fails to run too |
2021-08-06 09:47:30 +0200 | <maerwald[m]> | do you have the freebsd 12 compat pkg? |
2021-08-06 09:47:43 +0200 | <Axman6> | no |
2021-08-06 09:47:52 +0200 | <maerwald[m]> | try that |
2021-08-06 09:49:04 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-06 09:49:08 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-08-06 09:49:33 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 276 seconds) |
2021-08-06 09:49:40 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-06 09:50:58 +0200 | slavaqq82 | (~slavaqq@sdmail.sdserver.cz) |
2021-08-06 09:51:52 +0200 | slavaqq | (~slavaqq@sdmail.sdserver.cz) (Ping timeout: 246 seconds) |
2021-08-06 09:54:33 +0200 | kenran | (~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version) |
2021-08-06 09:55:51 +0200 | neceve | (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) |
2021-08-06 09:57:30 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2021-08-06 09:58:09 +0200 | vysn | (~vysn@user/vysn) |
2021-08-06 10:00:09 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-06 10:05:55 +0200 | hendursa1 | (~weechat@user/hendursaga) |
2021-08-06 10:08:45 +0200 | hendursaga | (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
2021-08-06 10:17:27 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-08-06 10:17:28 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-08-06 10:17:31 +0200 | allbery_b | geekosaur |
2021-08-06 10:20:25 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-06 10:22:37 +0200 | <Axman6> | Do we have any nice ways to write streams of bits? Looking at https://blog.tempus-ex.com/hello-video-codec/ and wanting a BitstreamWriter |
2021-08-06 10:24:46 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
2021-08-06 10:27:22 +0200 | Maxdamantus | (~Maxdamant@user/maxdamantus) (Ping timeout: 240 seconds) |
2021-08-06 10:28:16 +0200 | slavaqq82 | (~slavaqq@sdmail.sdserver.cz) (Ping timeout: 246 seconds) |
2021-08-06 10:30:03 +0200 | <[exa]> | Axman6: you mean "huge amount of stuff that isn't aligned to bytes" ? |
2021-08-06 10:30:14 +0200 | <Axman6> | yeah I guess |
2021-08-06 10:30:52 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-06 10:31:06 +0200 | <Axman6> | huge isn't a necessaty but the rest, yes |
2021-08-06 10:34:48 +0200 | <[exa]> | like, if you don't need total top performance, you might be good with wrapping a ByteString builder or something |
2021-08-06 10:36:04 +0200 | Cajun85 | Cajun |
2021-08-06 10:36:37 +0200 | <[exa]> | data ByteBuilder = {buffer :: ByteString, currentByte::Word8, nextBit::Word8 } |
2021-08-06 10:37:05 +0200 | Cajun | (~Cajun@user/cajun) (Quit: Client closed) |
2021-08-06 10:38:34 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-08-06 10:43:30 +0200 | gzj | (~GZJ0X@192.243.120.171.16clouds.com) |
2021-08-06 10:44:19 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 258 seconds) |
2021-08-06 10:44:55 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-06 10:45:58 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 10:47:09 +0200 | michalz | (~michalz@185.246.204.62) (Read error: No route to host) |
2021-08-06 10:47:37 +0200 | tengu12 | (~tengu12@cpe-70-121-244-14.neb.res.rr.com) |
2021-08-06 10:48:09 +0200 | gzj | (~GZJ0X@192.243.120.171.16clouds.com) (Ping timeout: 258 seconds) |
2021-08-06 10:49:17 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-08-06 10:56:06 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 272 seconds) |
2021-08-06 10:57:21 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 258 seconds) |
2021-08-06 11:00:03 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-08-06 11:00:34 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 11:03:12 +0200 | jneira_ | (~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Quit: Connection closed) |
2021-08-06 11:03:30 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-08-06 11:05:12 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 256 seconds) |
2021-08-06 11:07:09 +0200 | <tomsmeding> | presumably with another integer indicating the number of bits in nextBit :) |
2021-08-06 11:07:47 +0200 | mei | (~mei@user/mei) |
2021-08-06 11:07:52 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 11:09:16 +0200 | agua_pesada | (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) |
2021-08-06 11:09:36 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 11:13:24 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 276 seconds) |
2021-08-06 11:14:16 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 256 seconds) |
2021-08-06 11:14:26 +0200 | <[exa]> | tomsmeding: better move the nextBit with << directly than have a counter that you need to transform with << everytime |
2021-08-06 11:14:33 +0200 | <maerwald[m]> | Sounds like `SerialT m (Array Word8)` |
2021-08-06 11:15:22 +0200 | <[exa]> | that can do bits? |
2021-08-06 11:15:47 +0200 | <maerwald[m]> | hmm |
2021-08-06 11:15:50 +0200 | <tomsmeding> | [exa]: yeah sure, but with your current representation how are you going to distinguish between writing 0b1 and writing 0b10 |
2021-08-06 11:16:22 +0200 | <tomsmeding> | (or the 1 and 0 the other way round depending on your favourite endianness :p ) |
2021-08-06 11:16:28 +0200 | <[exa]> | currentBit = currentBit | nextBit ? |
2021-08-06 11:16:42 +0200 | <[exa]> | (and nextBit <<= 1, sorry for C notation) |
2021-08-06 11:17:00 +0200 | <tomsmeding> | oh wait, 0 <= nextBit < 8 ? |
2021-08-06 11:17:12 +0200 | <[exa]> | nextBit is a power of 2 |
2021-08-06 11:17:23 +0200 | <tomsmeding> | aaaaaah yes that makes sense, ignore what I said |
2021-08-06 11:17:27 +0200 | <[exa]> | literally the next bit that would be added if you.. ok |
2021-08-06 11:17:31 +0200 | <tomsmeding> | I mistook the meaning of your fields :p |
2021-08-06 11:17:40 +0200 | <maerwald[m]> | I think you can transform it into a `SerialT m Word8`, but that would be slow, because the event loop is then over every bit. |
2021-08-06 11:17:50 +0200 | <[exa]> | I originally wanted to have nextBitPos :: Word3 but alas, no Word3. |
2021-08-06 11:17:51 +0200 | <[exa]> | :( |
2021-08-06 11:18:26 +0200 | tomsmeding | wonders if (bit * mask) is faster or slower than (bit << index) |
2021-08-06 11:19:02 +0200 | <[exa]> | maerwald[m]: if you get the data bit by bit, you're unlikely to improve the speed much...otoh for block data you'd need word shifting anyway |
2021-08-06 11:19:50 +0200 | <[exa]> | tomsmeding: << and & may eat less energy and take less cycles than * |
2021-08-06 11:20:08 +0200 | <[exa]> | but I was over-optimizing for sure, this won't be ever visible with haskell around :D |
2021-08-06 11:20:22 +0200 | <tomsmeding> | wanting the << version means that you want the Word3 version |
2021-08-06 11:20:37 +0200 | <tomsmeding> | yes lol |
2021-08-06 11:20:46 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 11:21:09 +0200 | <[exa]> | I like how I still nerdrage on such tiny details, feels like I'm 15 again. :D |
2021-08-06 11:21:57 +0200 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-08-06 11:22:14 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-08-06 11:23:03 +0200 | <tomsmeding> | an important reason why premature micro-optimisation needed to be called evil is that programmers like to do it :p |
2021-08-06 11:23:54 +0200 | <Rembane> | But it's so fun! |
2021-08-06 11:24:25 +0200 | <tomsmeding> | yes |
2021-08-06 11:25:07 +0200 | <tomsmeding> | in that vein: probably better to have {ByteString, Word64, Word6} |
2021-08-06 11:25:42 +0200 | <[exa]> | that is the way. |
2021-08-06 11:26:05 +0200 | <[exa]> | you meant Word64String right. |
2021-08-06 11:26:28 +0200 | <tomsmeding> | lol yes |
2021-08-06 11:26:39 +0200 | <tomsmeding> | (UnboxedVector Word64) possibly |
2021-08-06 11:27:14 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-08-06 11:29:00 +0200 | xff0x_ | (~xff0x@2001:1a81:52e3:2500:9c72:9058:eb7a:ca08) (Ping timeout: 256 seconds) |
2021-08-06 11:29:57 +0200 | xff0x_ | (~xff0x@2001:1a81:52e3:2500:4853:8255:fc4e:2378) |
2021-08-06 11:30:26 +0200 | <[exa]> | totally forgot about the !'s |
2021-08-06 11:31:17 +0200 | Maxdamantus | (~Maxdamant@user/maxdamantus) |
2021-08-06 11:31:19 +0200 | mei | (~mei@user/mei) (Read error: Connection reset by peer) |
2021-08-06 11:31:21 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-08-06 11:32:37 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds) |
2021-08-06 11:33:03 +0200 | <tomsmeding> | ! |
2021-08-06 11:35:40 +0200 | mcglk_ | (~mcglk@131.191.49.120) (Read error: Connection reset by peer) |
2021-08-06 11:37:19 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-06 11:42:40 +0200 | slavaqq | (~slavaqq@sdmail.sdserver.cz) |
2021-08-06 11:43:19 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 11:48:22 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:113:1bce:1dde:b94a) (Ping timeout: 268 seconds) |
2021-08-06 11:53:40 +0200 | burnside_ | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 11:53:40 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-06 11:53:48 +0200 | derelict | (~derelict@user/derelict) (Quit: WeeChat 3.2) |
2021-08-06 11:55:36 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 250 seconds) |
2021-08-06 11:58:26 +0200 | peterhil | (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) |
2021-08-06 11:59:27 +0200 | xff0x_ | (~xff0x@2001:1a81:52e3:2500:4853:8255:fc4e:2378) (Ping timeout: 258 seconds) |
2021-08-06 12:00:10 +0200 | xff0x_ | (~xff0x@2001:1a81:52e3:2500:1069:a9de:7caa:cf07) |
2021-08-06 12:00:33 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 12:04:31 +0200 | pe200012_ | (~pe200012@113.105.10.33) |
2021-08-06 12:04:42 +0200 | pe200012 | (~pe200012@113.105.10.33) (Ping timeout: 256 seconds) |
2021-08-06 12:05:58 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
2021-08-06 12:08:44 +0200 | __monty__ | (~toonn@user/toonn) |
2021-08-06 12:14:53 +0200 | slavaqq | (~slavaqq@sdmail.sdserver.cz) (Quit: Client closed) |
2021-08-06 12:16:19 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 258 seconds) |
2021-08-06 12:17:56 +0200 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer) |
2021-08-06 12:18:16 +0200 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2021-08-06 12:19:30 +0200 | elf_fortrez | (~elf_fortr@adsl-72-50-4-118.prtc.net) |
2021-08-06 12:20:59 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 12:21:51 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-06 12:23:08 +0200 | paddymahoney | (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Remote host closed the connection) |
2021-08-06 12:24:51 +0200 | derelict | (~derelict@user/derelict) |
2021-08-06 12:25:52 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-06 12:26:17 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
2021-08-06 12:28:36 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:460a:4755:73b5:e6f5) |
2021-08-06 12:39:19 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 258 seconds) |
2021-08-06 12:43:23 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 12:48:54 +0200 | enoq | (~enoq@194-208-179-35.lampert.tv) |
2021-08-06 12:51:01 +0200 | <kuribas> | what are your ideas on units, or similar packages? Are they worth it, or is it better to just use Double everywhere (with some type synonyms for clarity)? |
2021-08-06 12:52:01 +0200 | HotblackDesiato | (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Ping timeout: 244 seconds) |
2021-08-06 12:53:07 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 268 seconds) |
2021-08-06 12:53:17 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2021-08-06 12:57:43 +0200 | <kuribas> | wasn't there a ship that sank because they mixed units? |
2021-08-06 13:00:14 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-08-06 13:00:17 +0200 | hsek[m] | (~hsekmatri@2001:470:69fc:105::d18f) |
2021-08-06 13:04:36 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-06 13:04:54 +0200 | tengu12 | (~tengu12@cpe-70-121-244-14.neb.res.rr.com) (Quit: Client closed) |
2021-08-06 13:07:07 +0200 | burnside_ | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-06 13:07:35 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 13:08:33 +0200 | AlexNoo_ | (~AlexNoo@178.34.160.135) |
2021-08-06 13:08:34 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-08-06 13:08:52 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 245 seconds) |
2021-08-06 13:09:19 +0200 | Vajb | (~Vajb@85-76-2-199-nat.elisa-mobile.fi) |
2021-08-06 13:09:33 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:460a:4755:73b5:e6f5) (Quit: WeeChat 2.8) |
2021-08-06 13:11:08 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
2021-08-06 13:11:34 +0200 | Alex_test | (~al_test@94.233.240.129) (Ping timeout: 272 seconds) |
2021-08-06 13:11:34 +0200 | AlexZenon | (~alzenon@94.233.240.129) (Ping timeout: 272 seconds) |
2021-08-06 13:11:35 +0200 | Akronymus | (~Akronymus@85.31.8.181) |
2021-08-06 13:11:47 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 245 seconds) |
2021-08-06 13:12:14 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-08-06 13:12:16 +0200 | <Akronymus> | Haskell is a pretty cool language. |
2021-08-06 13:12:16 +0200 | AlexNoo | (~AlexNoo@94.233.240.129) (Ping timeout: 272 seconds) |
2021-08-06 13:12:33 +0200 | <Akronymus> | Altough, not sure if I am ready yet. |
2021-08-06 13:12:40 +0200 | ablutor | (~quassel@wasscher.com) (Quit: going for vitamine d) |
2021-08-06 13:13:12 +0200 | <kuribas> | Akronymus: ready for what? |
2021-08-06 13:13:18 +0200 | <Akronymus> | For haskell. |
2021-08-06 13:13:24 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-06 13:13:32 +0200 | ablutor | (~quassel@wasscher.com) |
2021-08-06 13:13:42 +0200 | <kuribas> | Just try it? You'll never know everything anyway... |
2021-08-06 13:13:44 +0200 | <Akronymus> | So far, only dabbled in f# a bit, and quite frankly, haskell seems a bit scary. |
2021-08-06 13:14:41 +0200 | <kuribas> | Akronymus: haskell is a big language, but you don't need to know everything. |
2021-08-06 13:14:48 +0200 | <Akronymus> | Yeah I get that. |
2021-08-06 13:15:13 +0200 | <kuribas> | If you understand monad transformers, you'll be able to tackle most code. |
2021-08-06 13:15:43 +0200 | <Akronymus> | And there is the big m already. (I think I understand them somewhat at least though) |
2021-08-06 13:15:43 +0200 | Vajb | (~Vajb@85-76-2-199-nat.elisa-mobile.fi) (Read error: Connection reset by peer) |
2021-08-06 13:15:51 +0200 | Vajb | (~Vajb@n2bovg6licdnldblt-2.v6.elisa-mobile.fi) |
2021-08-06 13:16:01 +0200 | <Akronymus> | Monads aren't that bad. |
2021-08-06 13:16:04 +0200 | <kuribas> | Akronymus: it's more important to understand the concepts behind it, and the idioms. |
2021-08-06 13:16:06 +0200 | Alex_test | (~al_test@178.34.160.135) |
2021-08-06 13:16:08 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 252 seconds) |
2021-08-06 13:16:14 +0200 | AlexZenon | (~alzenon@178.34.160.135) |
2021-08-06 13:17:35 +0200 | <kuribas> | Like: how to separate effects in your program, understanding the state, leveraging combinators to make small languages that solve your problem in a declarative way. |
2021-08-06 13:18:05 +0200 | <kuribas> | I think most people miss the last part, then get disillusioned because they program haskell as if it's java. |
2021-08-06 13:18:06 +0200 | <Akronymus> | I did most of that in f# already. |
2021-08-06 13:18:20 +0200 | <kuribas> | Akronymus: in that case, you're ready for haskell :) |
2021-08-06 13:18:25 +0200 | <Akronymus> | Just, haskell goes so much further with HKT and stuff. |
2021-08-06 13:18:58 +0200 | <kuribas> | HKT are overrated. |
2021-08-06 13:19:12 +0200 | <Akronymus> | And i'll definitely miss the type inference. |
2021-08-06 13:19:40 +0200 | <kuribas> | I mean the sofisticated stuff, basic HKT are ok. |
2021-08-06 13:19:44 +0200 | <maerwald[m]> | Maybe you want to look into F*, which can compile to F# |
2021-08-06 13:20:03 +0200 | <kuribas> | maerwald: F* and haskell have different usecases... |
2021-08-06 13:20:05 +0200 | <Akronymus> | Yeah, you can go quite crazy with types in haskell. |
2021-08-06 13:20:18 +0200 | <maerwald[m]> | kuribas: Haskell has no use case |
2021-08-06 13:20:35 +0200 | <kuribas> | maerwald[m]: go away... |
2021-08-06 13:20:48 +0200 | <maerwald[m]> | F* was designed with a use case in mind, Haskell was an experiment with open ended result |
2021-08-06 13:21:26 +0200 | <maerwald[m]> | So if at all, it's general purpose |
2021-08-06 13:22:11 +0200 | <Akronymus> | Even if it is just learning to be a better programmer, haskell has a use. |
2021-08-06 13:22:23 +0200 | <Akronymus> | And pushing other languages features forward. |
2021-08-06 13:22:41 +0200 | <maerwald[m]> | I didn't say it doesn't, kuribas just misunderstood my statement |
2021-08-06 13:23:03 +0200 | <kuribas> | languages like f# or ocaml allow you to code like it's java or C# |
2021-08-06 13:23:15 +0200 | <kuribas> | in haskell you are forced to do it the functional way. |
2021-08-06 13:23:20 +0200 | <kuribas> | or make a big mess. |
2021-08-06 13:23:32 +0200 | <Akronymus> | That alone is already a use case. |
2021-08-06 13:23:36 +0200 | <Akronymus> | Being limited to functional |
2021-08-06 13:23:59 +0200 | <Akronymus> | F# makes it easy to fall back to imperative/OOP code |
2021-08-06 13:24:09 +0200 | <maerwald[m]> | kuribas: https://hackage.haskell.org/package/xeno is this functional? :) |
2021-08-06 13:24:12 +0200 | <Akronymus> | Which, while useful, also hurts learning |
2021-08-06 13:25:06 +0200 | <maerwald[m]> | apparently, it's the fastest xml parser there is (or so ppl say) even beating several C libraries |
2021-08-06 13:25:14 +0200 | <maerwald[m]> | But when you look at the code, hmm |
2021-08-06 13:25:32 +0200 | <kuribas> | maerwald[m]: don't use that, use my package :) https://hackage.haskell.org/package/hexpat-streamparser |
2021-08-06 13:25:43 +0200 | <maerwald[m]> | kuribas: is it faster? |
2021-08-06 13:25:47 +0200 | <kuribas> | maerwald[m]: it's fast by cheating |
2021-08-06 13:26:00 +0200 | <kuribas> | maerwald[m]: no, but it's standards compliant... |
2021-08-06 13:26:31 +0200 | <kuribas> | and should be efficient enough for most cases... |
2021-08-06 13:26:33 +0200 | <Akronymus> | Does it interface with as functional? |
2021-08-06 13:26:37 +0200 | <maerwald[m]> | well, the reason I brought it up is... there are many cases of non-idiomatic haskell code |
2021-08-06 13:26:42 +0200 | <maerwald[m]> | that somewhat have their place |
2021-08-06 13:26:42 +0200 | <kuribas> | Akronymus: yes it does. |
2021-08-06 13:26:49 +0200 | <Akronymus> | Mostly in libraries though maerwald |
2021-08-06 13:26:59 +0200 | <maerwald[m]> | Are you sure? |
2021-08-06 13:27:04 +0200 | <Akronymus> | kuribas than for most users it is a functional lib |
2021-08-06 13:27:09 +0200 | <Akronymus> | then |
2021-08-06 13:27:36 +0200 | <kuribas> | Akronymus: you build your parser declaratively. |
2021-08-06 13:27:57 +0200 | <kuribas> | parseXMLByteString :: EventListParser e a -> ParseOptions Text Text -> ByteString -> Either (EventParseError e, Maybe XMLParseLocation) a |
2021-08-06 13:28:07 +0200 | <Akronymus> | Like fparsec? |
2021-08-06 13:28:17 +0200 | <Akronymus> | (I know it is a derivative of the parsec from haskell) |
2021-08-06 13:28:18 +0200 | <kuribas> | It's a pure function, though it uses an imperative library under the hood (expat). |
2021-08-06 13:28:20 +0200 | <maerwald[m]> | xeno is the opposite of declarative... so my take is: haskell doesn't force you to be declarative. It just gives you the option |
2021-08-06 13:28:40 +0200 | <kuribas> | Akronymus: yeah, this is structured like parsec. |
2021-08-06 13:28:43 +0200 | <Akronymus> | It HEAVILY encourages you to write idiomatic code. |
2021-08-06 13:28:45 +0200 | <maerwald[m]> | That's why I object that haskell has a use case |
2021-08-06 13:29:46 +0200 | <kuribas> | Akronymus: my library builds on top of the parser-combinators library, which is modelled after parsec. |
2021-08-06 13:31:56 +0200 | <kuribas> | maerwald[m]: What I mean is that the use case people want to use haskell for, is actually not a usecase for haskell. That is, writing programs where you prove everything in the typesystem. |
2021-08-06 13:32:13 +0200 | <maerwald[m]> | I agree |
2021-08-06 13:32:33 +0200 | <maerwald[m]> | But we have forces that want to drive Haskell into that direction |
2021-08-06 13:33:22 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 240 seconds) |
2021-08-06 13:34:22 +0200 | MoC | (~moc@user/moc) |
2021-08-06 13:34:54 +0200 | <hpc> | to be fair, the tools of writing proofs could be useful for expressing properties of more useful code |
2021-08-06 13:35:26 +0200 | <maerwald[m]> | I don't understand that sentence |
2021-08-06 13:35:33 +0200 | <hpc> | idris is turing-complete and nobody complains about it being a bad proof assistant |
2021-08-06 13:36:56 +0200 | <juri_> | kuribas: I'm 9 years a haskeller, both professionally, and for fun, and i still don't understand monad transformers. :D |
2021-08-06 13:37:38 +0200 | <maerwald[m]> | Maybe because there's not much to understand |
2021-08-06 13:38:01 +0200 | fendor | (~fendor@178.115.49.9.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-08-06 13:38:50 +0200 | <maerwald[m]> | well, except for abominations like MonadBaseControl |
2021-08-06 13:39:08 +0200 | fendor | (~fendor@178.115.49.9.wireless.dyn.drei.com) |
2021-08-06 13:39:39 +0200 | fendor | (~fendor@178.115.49.9.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-08-06 13:43:03 +0200 | <maerwald[m]> | I hate to say it, but maybe `RIO` isn't so far from the truth. Although I prefer an ExceptT/Excepts at the outside |
2021-08-06 13:43:11 +0200 | fendor | (~fendor@178.115.49.9.wireless.dyn.drei.com) |
2021-08-06 13:44:28 +0200 | <kuribas> | juri_: I use monad transformers in most of my projects. It means less boilerplate and plumbing. |
2021-08-06 13:44:35 +0200 | <maerwald[m]> | Never understood Snoymans argument against mixing ExceptT with IO |
2021-08-06 13:45:18 +0200 | fendor | (~fendor@178.115.49.9.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
2021-08-06 13:45:19 +0200 | <maerwald[m]> | yes, ExceptT with IO means you may need to catch on two different levels. Isn't that obvious to everyone? |
2021-08-06 13:45:36 +0200 | <Rembane> | Is that argument that he prefers to only have one kind of going-wrong instead of both Left and exceptions? |
2021-08-06 13:45:42 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:460a:4755:73b5:e6f5) |
2021-08-06 13:45:53 +0200 | fendor | (~fendor@178.115.49.9.wireless.dyn.drei.com) |
2021-08-06 13:46:03 +0200 | <maerwald[m]> | I think the argument was that the type lies and you still need to handle IO exceptions yeah |
2021-08-06 13:46:56 +0200 | <maerwald[m]> | but then you could say `IO (Either a b)` lies as well |
2021-08-06 13:47:07 +0200 | <maerwald[m]> | ExceptT is just a glorified inner Either |
2021-08-06 13:47:13 +0200 | <maerwald[m]> | that composes better |
2021-08-06 13:47:18 +0200 | <kuribas> | It makes sense to have two going-wrongs. One if for stuff you expect the program to handle, the other for stuff where intervention of an admin or operations guy is expected. |
2021-08-06 13:48:34 +0200 | <kuribas> | I use Exceptions for the latter. You just catch the exteption, log it somewhere, and abort the operation. |
2021-08-06 13:48:58 +0200 | <maerwald[m]> | in low level libraries, such as filepath/directory etc, of course I wouldn't expect an ExceptT, because there's no way you can tell what error is expected and what isn't |
2021-08-06 13:49:17 +0200 | <Akronymus> | I know I read about some REALLY weirdly named monad before that someone made as a joke, but can't find it anymore. |
2021-08-06 13:49:25 +0200 | <Akronymus> | It was relevant like 3 pages ago |
2021-08-06 13:50:15 +0200 | wei2912 | (~wei2912@112.199.250.21) (Quit: Lost terminal) |
2021-08-06 13:50:46 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-06 13:50:57 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 13:51:14 +0200 | <Rembane> | Akronymus: Have you seen the Tardis monad? |
2021-08-06 13:51:25 +0200 | <Akronymus> | Nope |
2021-08-06 13:51:33 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-06 13:51:34 +0200 | <maerwald[m]> | I think the weirdest monad is ContT |
2021-08-06 13:51:37 +0200 | <Akronymus> | But the one I thought of had a 5 word name or something |
2021-08-06 13:51:58 +0200 | <maerwald[m]> | I forget how it works every time |
2021-08-06 13:52:15 +0200 | <maerwald[m]> | learn it again, forget it again |
2021-08-06 13:52:19 +0200 | <Rembane> | maerwald[m]: Yeah, type lie all the time, and we need to handle that too. |
2021-08-06 13:54:14 +0200 | futty | (~futty@c83-252-75-55.bredband.tele2.se) |
2021-08-06 13:56:17 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
2021-08-06 13:56:40 +0200 | <kuribas> | Akronymus: These? |
2021-08-06 13:56:50 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-08-06 13:57:15 +0200 | <kuribas> | https://hackage.haskell.org/package/these-1.1.1.1/docs/Data-These.html |
2021-08-06 13:57:19 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 13:57:47 +0200 | <Akronymus> | Nope |
2021-08-06 13:57:58 +0200 | <Akronymus> | It was a really long name made out of multiple words |
2021-08-06 14:01:31 +0200 | phma | (phma@2001:5b0:210d:cf58:911f:3237:b853:e162) (Read error: Connection reset by peer) |
2021-08-06 14:01:44 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 258 seconds) |
2021-08-06 14:02:29 +0200 | phma | (~phma@2001:5b0:210d:73a8:1482:7584:9a9a:de0a) |
2021-08-06 14:04:02 +0200 | pe200012_ | (~pe200012@113.105.10.33) (Ping timeout: 258 seconds) |
2021-08-06 14:04:03 +0200 | pe200012 | (~pe200012@113.105.10.33) |
2021-08-06 14:04:57 +0200 | <Akronymus> | Sadly gotta go. |
2021-08-06 14:04:59 +0200 | Akronymus | (~Akronymus@85.31.8.181) (Quit: Client closed) |
2021-08-06 14:06:36 +0200 | Guest9112 | (~Guest91@2a02:a212:2180:8d00:cfb7:369e:490f:8f0e) |
2021-08-06 14:08:35 +0200 | Neuromancer | (~Neuromanc@user/neuromancer) |
2021-08-06 14:10:25 +0200 | Flow | (~none@gentoo/developer/flow) |
2021-08-06 14:12:53 +0200 | <maerwald[m]> | oh, I abuse `Excepts` for `These` and then decide later what error is a warning (and encapsulate a value in the error) |
2021-08-06 14:13:28 +0200 | <maerwald[m]> | not sure anyone has written open sum type version of These |
2021-08-06 14:15:35 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 14:16:29 +0200 | burnside_ | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 14:16:30 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-08-06 14:18:07 +0200 | <hpc> | ContT isn't that bad - just think (pure x) = ($ x), and what you can do to compose those sorts of functions |
2021-08-06 14:18:29 +0200 | <hpc> | it just looks bad because the definitions have a ton of lambdas and data constructor wrapping |
2021-08-06 14:19:12 +0200 | Guest9112 | (~Guest91@2a02:a212:2180:8d00:cfb7:369e:490f:8f0e) (Quit: Client closed) |
2021-08-06 14:37:06 +0200 | xff0x_ | (~xff0x@2001:1a81:52e3:2500:1069:a9de:7caa:cf07) (Remote host closed the connection) |
2021-08-06 14:37:22 +0200 | xff0x_ | (~xff0x@2001:1a81:52e3:2500:8766:3fda:9e97:b8d5) |
2021-08-06 14:38:05 +0200 | <lechner> | Hi, what's everone's favorite command line option parser, please? Thanks! |
2021-08-06 14:38:06 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 250 seconds) |
2021-08-06 14:38:29 +0200 | <[exa]> | lechner: optparse-applicative |
2021-08-06 14:38:37 +0200 | <maerwald[m]> | haskell or in general? |
2021-08-06 14:38:55 +0200 | <lechner> | here |
2021-08-06 14:39:01 +0200 | <lechner> | [exa]: thanks! |
2021-08-06 14:39:02 +0200 | <maerwald[m]> | here? |
2021-08-06 14:39:18 +0200 | <lechner> | hi my name is dory :0 |
2021-08-06 14:39:31 +0200 | <maerwald[m]> | nice to meet you dory |
2021-08-06 14:39:42 +0200 | <lechner> | i meant in haskell |
2021-08-06 14:40:04 +0200 | <maerwald[m]> | I don't like any of them, really |
2021-08-06 14:40:18 +0200 | mikoto-chan | (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) |
2021-08-06 14:40:21 +0200 | <lechner> | and i thought it was early for me |
2021-08-06 14:40:21 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 14:40:46 +0200 | <[exa]> | you know the routine |
2021-08-06 14:40:52 +0200 | <[exa]> | coffee >>= back to work |
2021-08-06 14:40:58 +0200 | <lechner> | maerwald[m]: you only write libraries? |
2021-08-06 14:41:05 +0200 | <maerwald[m]> | no |
2021-08-06 14:41:26 +0200 | <maerwald[m]> | but I like cli stuff to be declarative, optparse-applicative isn't |
2021-08-06 14:41:43 +0200 | <maerwald[m]> | although I use it |
2021-08-06 14:41:53 +0200 | <lechner> | [exa]: finally i understand that operator |
2021-08-06 14:42:05 +0200 | <maerwald[m]> | but don't ask me to come up with something better... I'd probably do TH hacks |
2021-08-06 14:42:47 +0200 | <lechner> | maerwald[m]: isn't all of haskell declarative? |
2021-08-06 14:42:53 +0200 | <maerwald[m]> | no |
2021-08-06 14:43:45 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2021-08-06 14:44:01 +0200 | <maerwald[m]> | I don't see how any language can be declarative, unless it's a DSL |
2021-08-06 14:44:33 +0200 | <maerwald[m]> | but you can stretch the word "declarative" to mean "purely functional", but that isn't what it really means |
2021-08-06 14:44:34 +0200 | xff0x_ | (~xff0x@2001:1a81:52e3:2500:8766:3fda:9e97:b8d5) (Ping timeout: 240 seconds) |
2021-08-06 14:44:35 +0200 | <[exa]> | only pure data is purely declarative |
2021-08-06 14:44:48 +0200 | <[exa]> | json for victory! |
2021-08-06 14:45:19 +0200 | <lechner> | this page may be a good place to enshrine valuable opinions. it says it's out of date, in a remark from 2012! https://wiki.haskell.org/GetOpt |
2021-08-06 14:46:19 +0200 | Pickchea | (~private@user/pickchea) |
2021-08-06 14:47:11 +0200 | <lechner> | is 'procedural' or 'imperative' the opposite of 'declarative'? |
2021-08-06 14:47:26 +0200 | <maerwald[m]> | odd question |
2021-08-06 14:48:02 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 245 seconds) |
2021-08-06 14:48:22 +0200 | <futty> | Uploaded file: https://uploads.kiwiirc.com/files/bc188da828f4d06043793f35724e5baf/Screenshot_20210806_144733.png |
2021-08-06 14:48:50 +0200 | <[exa]> | futty: many people on IRC won't be able to see that |
2021-08-06 14:49:00 +0200 | <[exa]> | futty: if you can, do a pastebin |
2021-08-06 14:49:07 +0200 | <futty> | I get this error when I try to run the program. I am a bit certain that if I were to define the 0-9 as an aux/helper, I wouldnt get an error. But I want to know why this happens? |
2021-08-06 14:49:12 +0200 | <futty> | alright going to do that |
2021-08-06 14:49:25 +0200 | <maerwald[m]> | futty: you're missing an `x` on the last definitioon |
2021-08-06 14:49:46 +0200 | <futty> | https://pastebin.com/8WXf0tY3 |
2021-08-06 14:49:49 +0200 | <maerwald[m]> | below the `9` |
2021-08-06 14:50:37 +0200 | AlexNoo_ | AlexNoo |
2021-08-06 14:50:38 +0200 | <futty> | I dont Inderstand, I dont have a `9`, which line is it? |
2021-08-06 14:50:48 +0200 | <[exa]> | just below that |
2021-08-06 14:51:01 +0200 | <[exa]> | line 12 on pastebin, add x |
2021-08-06 14:51:16 +0200 | <maerwald[m]> | yes you have a `9` |
2021-08-06 14:51:32 +0200 | <[exa]> | this way it has no idea that the argument is actually called 'x' |
2021-08-06 14:52:43 +0200 | <lechner> | before the guard |
2021-08-06 14:52:50 +0200 | kuribas | (~user@ptr-25vy0i8khwnki6rybr8.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
2021-08-06 14:53:06 +0200 | Guest5389 | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-06 14:53:11 +0200 | mcglk | (~mcglk@131.191.49.120) |
2021-08-06 14:53:12 +0200 | <[exa]> | yes, the guards come behind the parameter list; you need to specify that you're using 1 parameter there |
2021-08-06 14:53:22 +0200 | markpythonicbitc | (~markpytho@50.228.44.6) |
2021-08-06 14:53:28 +0200 | <[exa]> | futty: btw you might like this: |
2021-08-06 14:53:31 +0200 | <[exa]> | > toEnum (fromEnum '0' + 5) :: Char |
2021-08-06 14:53:32 +0200 | <lambdabot> | '5' |
2021-08-06 14:53:47 +0200 | <lechner> | wow |
2021-08-06 14:54:17 +0200 | <Athas> | The GHC bug I encounter most often is the "PAP object entered" thing when enabling profiling. Is there an architectural explanation for why it is so common? |
2021-08-06 14:54:51 +0200 | [exa] | discovers console-program for option parsing |
2021-08-06 14:54:52 +0200 | <futty> | I got it. I just forgot the x before guards. Thanks for the toEnum. My uni course showed this long list as pattern matching purposes. |
2021-08-06 14:55:25 +0200 | hendursa1 | (~weechat@user/hendursaga) (Quit: hendursa1) |
2021-08-06 14:55:25 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) |
2021-08-06 14:55:32 +0200 | <[exa]> | futty: it's got an educative value but we're obsessed with compact code :D |
2021-08-06 14:55:41 +0200 | euouae | (~euouae@user/euouae) |
2021-08-06 14:55:43 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-08-06 14:55:47 +0200 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-08-06 14:55:55 +0200 | <euouae> | Hello |
2021-08-06 14:56:00 +0200 | charukiewicz | (~quassel@irouteince04.i.subnet.rcn.com) (Ping timeout: 265 seconds) |
2021-08-06 14:56:12 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-06 14:56:13 +0200 | <lechner> | hi |
2021-08-06 14:56:16 +0200 | <euouae> | It seems that cabal has changed from sandbox model to nix packages |
2021-08-06 14:56:17 +0200 | <futty> | My first encounters with pattern matching and recursion was a nightmare and i failed the exams but now i find it quite intresting. |
2021-08-06 14:56:29 +0200 | <euouae> | did that happen after cabal install 3.2 ? |
2021-08-06 14:56:53 +0200 | <maerwald[m]> | euouae: yes, sandboxes were removed |
2021-08-06 14:57:11 +0200 | <euouae> | I’m noticing that the docs don’t have build / install instructions |
2021-08-06 14:57:39 +0200 | <euouae> | i was told to learn cabal and stack but the docs of 3.4 are incomplete on that section and it seems like a major featur |
2021-08-06 14:58:01 +0200 | chris | (~chris@81.96.113.213) |
2021-08-06 14:58:05 +0200 | chris | Guest6130 |
2021-08-06 14:58:17 +0200 | <euouae> | Is there some other way I can learn about cabal install 3.4 ? Other than readthedocs |
2021-08-06 15:01:06 +0200 | alx741 | (~alx741@186.178.109.254) |
2021-08-06 15:01:51 +0200 | inkbottle[m] | (~inkbottle@2001:470:69fc:105::2ff5) (Quit: You have been idle for 30+ days) |
2021-08-06 15:01:53 +0200 | hjulle[m] | (~hjullemat@2001:470:69fc:105::1dd) (Quit: You have been idle for 30+ days) |
2021-08-06 15:02:10 +0200 | Morrow[m] | (~morrowmma@2001:470:69fc:105::1d0) (Quit: You have been idle for 30+ days) |
2021-08-06 15:02:11 +0200 | Drezil | (~drezilkif@2001:470:69fc:105::7f8) (Quit: You have been idle for 30+ days) |
2021-08-06 15:02:12 +0200 | kosmikus[m] | (~andresloe@2001:470:69fc:105::95d) (Quit: You have been idle for 30+ days) |
2021-08-06 15:02:12 +0200 | Guest4241 | (~sylveonma@2001:470:69fc:105::2d95) (Quit: You have been idle for 30+ days) |
2021-08-06 15:02:12 +0200 | autrim64[m] | (~autrim64m@2001:470:69fc:105::16a1) (Quit: You have been idle for 30+ days) |
2021-08-06 15:02:13 +0200 | jellz[m] | (~jellzmatr@2001:470:69fc:105::2daa) (Quit: You have been idle for 30+ days) |
2021-08-06 15:02:18 +0200 | Guest6130 | (~chris@81.96.113.213) (Ping timeout: 240 seconds) |
2021-08-06 15:02:37 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-08-06 15:02:45 +0200 | <euouae> | Maybe I can just ignore cabal for now and focus on stack? Or does the sandbox change affect stack too? |
2021-08-06 15:03:00 +0200 | Morrow[m] | (~morrowmma@2001:470:69fc:105::1d0) |
2021-08-06 15:03:12 +0200 | Drezil | (~drezilkif@2001:470:69fc:105::7f8) |
2021-08-06 15:03:24 +0200 | kosmikus[m] | (~andresloe@2001:470:69fc:105::95d) |
2021-08-06 15:03:31 +0200 | <lechner> | what is your problem with cabal? |
2021-08-06 15:03:36 +0200 | autrim64[m] | (~autrim64m@2001:470:69fc:105::16a1) |
2021-08-06 15:03:50 +0200 | Sylveon | (~sylveonma@2001:470:69fc:105::2d95) |
2021-08-06 15:04:02 +0200 | jellz[m] | (~jellzmatr@2001:470:69fc:105::2daa) |
2021-08-06 15:04:14 +0200 | Sylveon | Guest4011 |
2021-08-06 15:04:23 +0200 | mikoto-chan | (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Quit: mikoto-chan) |
2021-08-06 15:04:32 +0200 | Morrow[m] | (~morrowmma@2001:470:69fc:105::1d0) () |
2021-08-06 15:04:37 +0200 | Drezil | (~drezilkif@2001:470:69fc:105::7f8) () |
2021-08-06 15:04:44 +0200 | kosmikus[m] | (~andresloe@2001:470:69fc:105::95d) () |
2021-08-06 15:04:45 +0200 | autrim64[m] | (~autrim64m@2001:470:69fc:105::16a1) () |
2021-08-06 15:04:46 +0200 | Guest4011 | (~sylveonma@2001:470:69fc:105::2d95) () |
2021-08-06 15:04:54 +0200 | jellz[m] | (~jellzmatr@2001:470:69fc:105::2daa) () |
2021-08-06 15:04:54 +0200 | <euouae> | I’m new to the tools and I’m trying to read the docs but the 3.4 docs do not describe build & install instructions (says todo) |
2021-08-06 15:05:09 +0200 | <euouae> | and the 3.2 docs describe an obsolete method (sandboxes) |
2021-08-06 15:05:24 +0200 | <yushyin> | https://cabal.readthedocs.io/en/3.4/cabal-commands.html#cabal-v2-build |
2021-08-06 15:06:04 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-08-06 15:06:07 +0200 | <euouae> | Aaah that’s great. Thank you |
2021-08-06 15:06:58 +0200 | <euouae> | https://cabal.readthedocs.io/en/3.4/installing-packages.html#building-and-installing-packages Here’s what I was talking about if anyone is curious |
2021-08-06 15:08:31 +0200 | <euouae> | On 3.4 don’t I just have to say build for v2-build? |
2021-08-06 15:09:36 +0200 | <yushyin> | euouae: yup, with a recent cabal `v2-*' is the default so `build' it is |
2021-08-06 15:10:09 +0200 | <euouae> | Thanks ! |
2021-08-06 15:11:39 +0200 | <yushyin> | euouae: I also often don't understand the structure and outline of the cabal documentation. it needs work. |
2021-08-06 15:12:28 +0200 | <lechner> | Should I leave a note here that section 6 still has a Backpack warning? https://github.com/haskell/cabal/issues/6005#issuecomment-850468676 |
2021-08-06 15:14:01 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-08-06 15:14:04 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 250 seconds) |
2021-08-06 15:16:35 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 252 seconds) |
2021-08-06 15:17:02 +0200 | xff0x_ | (~xff0x@2001:1a81:52e3:2500:8766:3fda:9e97:b8d5) |
2021-08-06 15:17:15 +0200 | burnside_ | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-06 15:17:26 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 15:17:36 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-08-06 15:17:53 +0200 | img | (~img@user/img) |
2021-08-06 15:20:53 +0200 | vicfred_ | (~vicfred@user/vicfred) |
2021-08-06 15:22:58 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 240 seconds) |
2021-08-06 15:24:00 +0200 | vicfred | (~vicfred@user/vicfred) (Ping timeout: 272 seconds) |
2021-08-06 15:24:32 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 15:25:11 +0200 | <yushyin> | or a pull request |
2021-08-06 15:25:32 +0200 | <lechner> | just drop it? |
2021-08-06 15:27:11 +0200 | <yushyin> | if the issue is resolved, yeah why not? |
2021-08-06 15:27:30 +0200 | sandcat | jess |
2021-08-06 15:27:53 +0200 | <lechner> | okay, i am just new and don't want to look too dumb |
2021-08-06 15:31:26 +0200 | futty | (~futty@c83-252-75-55.bredband.tele2.se) (Ping timeout: 252 seconds) |
2021-08-06 15:31:32 +0200 | <yushyin> | I think phadej is happy for the help and the worst that can happen is that your PR is closed down. |
2021-08-06 15:33:27 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 245 seconds) |
2021-08-06 15:33:33 +0200 | <Athas> | I have a program that goes into an infinite loop. Profiling shows it happens in a cost centre called "CAF:$dAllocator_r20f3G", with no location information available. How can I debug this? |
2021-08-06 15:35:46 +0200 | vicfred_ | (~vicfred@user/vicfred) (Quit: Leaving) |
2021-08-06 15:36:24 +0200 | jneira_ | (~jneira_@28.red-80-28-169.staticip.rima-tde.net) |
2021-08-06 15:36:51 +0200 | oxide | (~lambda@user/oxide) |
2021-08-06 15:39:04 +0200 | charukiewicz | (~quassel@irouteinc255.i.subnet.rcn.com) |
2021-08-06 15:45:43 +0200 | <lechner> | yushyin: https://github.com/haskell/cabal/pull/7518 |
2021-08-06 15:47:05 +0200 | euouae | (~euouae@user/euouae) (Quit: Client closed) |
2021-08-06 15:47:09 +0200 | Pickchea | (~private@user/pickchea) |
2021-08-06 15:47:28 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-06 15:49:00 +0200 | chris | (~chris@81.96.113.213) |
2021-08-06 15:49:04 +0200 | chris | Guest5588 |
2021-08-06 15:49:57 +0200 | vicfred | (~vicfred@user/vicfred) |
2021-08-06 15:52:25 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-06 15:53:27 +0200 | Guest5588 | (~chris@81.96.113.213) (Ping timeout: 245 seconds) |
2021-08-06 15:58:44 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 256 seconds) |
2021-08-06 16:00:43 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-08-06 16:01:44 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 16:02:08 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
2021-08-06 16:02:15 +0200 | <janus> | Athas: have you enabled -fprof-auto ? otherwise the cost centres may not be as granular as they could be. afaik https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/profiling.html#compiler-options-fo… |
2021-08-06 16:02:36 +0200 | pe200012 | (~pe200012@113.105.10.33) (Ping timeout: 250 seconds) |
2021-08-06 16:03:50 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:460a:4755:73b5:e6f5) (Quit: WeeChat 2.8) |
2021-08-06 16:04:13 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 244 seconds) |
2021-08-06 16:04:19 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2021-08-06 16:06:32 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-08-06 16:06:55 +0200 | aman | (~aman@user/aman) (Quit: aman) |
2021-08-06 16:07:46 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 240 seconds) |
2021-08-06 16:14:11 +0200 | Magnus[m] | (~magthetch@2001:470:69fc:105::d1a7) |
2021-08-06 16:15:42 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-08-06 16:16:11 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 16:17:38 +0200 | __monty__ | (~toonn@user/toonn) (Ping timeout: 252 seconds) |
2021-08-06 16:19:00 +0200 | __monty__ | (~toonn@user/toonn) |
2021-08-06 16:21:00 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 272 seconds) |
2021-08-06 16:22:05 +0200 | <Athas> | janus: turns out it was a typeclass dictionary. I have no idea how that one could be infinitely recursive. I fixed it by refactoring the program to remove the typeclass. |
2021-08-06 16:23:17 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
2021-08-06 16:23:53 +0200 | <janus> | i can't imagine how instance resolution can be infinite since any program any only has a finite amount of types in play, i'd say? |
2021-08-06 16:24:30 +0200 | <janus> | anyway, it would be decided at compile time, no? |
2021-08-06 16:26:38 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-08-06 16:28:43 +0200 | <Ollie[m]> | What's the easiest way to attach an attoparsec `Parser` to a network socket? I want to read and parse enough bytes to fulfill my parser. I guess that parser has no way to really inform `network` of how many bytes it needs, so I'm fine with something that gives me back some left over |
2021-08-06 16:28:50 +0200 | <Athas> | It might create a self-referential dictionary, but I also can't see how that can happen... |
2021-08-06 16:29:24 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-06 16:33:04 +0200 | <c_wraith> | maybe something with UndecidableSuperclasses? |
2021-08-06 16:33:18 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 256 seconds) |
2021-08-06 16:43:07 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 258 seconds) |
2021-08-06 16:43:14 +0200 | lbseale | (~lbseale@user/ep1ctetus) |
2021-08-06 16:44:10 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 16:49:02 +0200 | chris | (~chris@81.96.113.213) |
2021-08-06 16:49:07 +0200 | chris | Guest7240 |
2021-08-06 16:50:29 +0200 | elf_fortrez | (~elf_fortr@adsl-72-50-4-118.prtc.net) (Quit: Client closed) |
2021-08-06 16:50:42 +0200 | jmorris | (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-06 16:50:56 +0200 | fendor_ | (~fendor@77.119.214.156.wireless.dyn.drei.com) |
2021-08-06 16:51:24 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 276 seconds) |
2021-08-06 16:51:29 +0200 | vicfred | (~vicfred@user/vicfred) (Quit: Leaving) |
2021-08-06 16:52:00 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 16:53:16 +0200 | viluon | (uid453725@id-453725.brockwell.irccloud.com) |
2021-08-06 16:53:28 +0200 | fendor | (~fendor@178.115.49.9.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
2021-08-06 16:53:52 +0200 | <viluon> | hello, I'd like to compile all Stackage packages with a patched GHC. Is this a good place to ask for guidance? |
2021-08-06 16:58:09 +0200 | <viluon> | I'd like to run the packages' test suites after compiling them |
2021-08-06 17:00:32 +0200 | pgib | (~textual@173.38.117.81) |
2021-08-06 17:01:53 +0200 | <janus> | viluon: nix makes it easy to swap out the compiler ;) |
2021-08-06 17:02:07 +0200 | <janus> | and they have CI to rebuild hackage |
2021-08-06 17:03:41 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-08-06 17:06:04 +0200 | <viluon> | janus: interesting, could you please point me to some resources? I'm sceptical about using Nix, but it may be a viable option |
2021-08-06 17:07:59 +0200 | <janus> | viluon: gabriella has some docs. havn't tried them, but always loved all that she did : https://github.com/Gabriel439/haskell-nix |
2021-08-06 17:12:10 +0200 | <janus> | hmm now i don't know if that is their name any more, thought i saw it somewhere. |
2021-08-06 17:13:02 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 245 seconds) |
2021-08-06 17:14:28 +0200 | <viluon> | janus: thanks for the link, I'm reading it now |
2021-08-06 17:15:28 +0200 | enoq | (~enoq@194-208-179-35.lampert.tv) (Read error: Connection reset by peer) |
2021-08-06 17:15:28 +0200 | timex | (~timex@202.14.120.238) |
2021-08-06 17:16:06 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 17:16:07 +0200 | timex | (~timex@202.14.120.238) (Client Quit) |
2021-08-06 17:16:08 +0200 | enoq | (~enoq@194-208-179-35.lampert.tv) |
2021-08-06 17:16:58 +0200 | notzmv | (~zmv@user/notzmv) |
2021-08-06 17:17:06 +0200 | dispater | (~dispater@user/brprice) (Quit: ZNC 1.8.1 - https://znc.in) |
2021-08-06 17:17:51 +0200 | <absence> | is it possible to implement something like (MonadIO m1, MonadIO m2) => m1 a -> ExceptT e m2 a? |
2021-08-06 17:18:54 +0200 | dispater | (~dispater@user/brprice) |
2021-08-06 17:20:20 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-08-06 17:21:01 +0200 | <davean> | of course not |
2021-08-06 17:21:22 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 268 seconds) |
2021-08-06 17:21:33 +0200 | <Rembane> | absence: Do you need it for something in particular? |
2021-08-06 17:23:08 +0200 | zebrag | (~chris@user/zebrag) |
2021-08-06 17:24:01 +0200 | <absence> | davean: why "of course"? i realise that m1 is not the same as m2, but at the same time m1 "needs" IO, which m2 "has"... |
2021-08-06 17:24:47 +0200 | <davean> | absence: So? I have something you need, can I be you? |
2021-08-06 17:24:55 +0200 | dajoer | (~david@user/gvx) (Quit: leaving) |
2021-08-06 17:25:32 +0200 | <davean> | Its that level of absurdity |
2021-08-06 17:25:55 +0200 | <davean> | I have lungs, you need lungs - what does this mean for us being the same person? |
2021-08-06 17:26:27 +0200 | Core8888 | (~agua_pesa@191.177.175.57) |
2021-08-06 17:26:37 +0200 | <davean> | We also know you have lungs |
2021-08-06 17:26:52 +0200 | <absence> | davean: right, so i guess what i want would have to be expressed in a different way? |
2021-08-06 17:27:03 +0200 | <davean> | You haven't given any indication of what you want |
2021-08-06 17:27:08 +0200 | <geekosaur> | more to the point, m1 would just be IO if that were enough; the fact that it has a MonbadIo constraint means it needs more. what guarantee is there that m2 provides that more? |
2021-08-06 17:27:12 +0200 | neceve | (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 258 seconds) |
2021-08-06 17:28:25 +0200 | <absence> | geekosaur: ah, so it's about the "unused" parts of the transformer stacks |
2021-08-06 17:28:26 +0200 | <maerwald[m]> | I want your lungs |
2021-08-06 17:28:26 +0200 | <maerwald[m]> | xD |
2021-08-06 17:28:47 +0200 | <geekosaur> | nor can you "extract" the IO from a MonadIO m => m and use it elsewhere, for the same reason you can't extract the a from an IO a |
2021-08-06 17:28:55 +0200 | <davean> | absence: you've given us no idea how to dissasseble an m1 and look at its parts for example |
2021-08-06 17:29:02 +0200 | <davean> | or to build an m2 for that matter |
2021-08-06 17:29:05 +0200 | <davean> | other than liftIO |
2021-08-06 17:29:44 +0200 | <davean> | Some things allow you to extract the IO, for example ReaderT r IO a does, just runReaderT |
2021-08-06 17:31:03 +0200 | agua_pesada | (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Ping timeout: 276 seconds) |
2021-08-06 17:35:20 +0200 | <absence> | hmm, i think i expected mtl style stacks to magically sort that out, but that only works when they're related |
2021-08-06 17:35:30 +0200 | rmoe | (~rmoe@c-71-236-207-44.hsd1.wa.comcast.net) (Ping timeout: 265 seconds) |
2021-08-06 17:36:27 +0200 | <geekosaur> | in general stuff like this works only because you can build a chain of related monadic expressions. otherwise you couldn't for example have conditionals |
2021-08-06 17:36:36 +0200 | <davean> | absence: I mean even if that could work - you haven't given any constraints that give such a knowlege! |
2021-08-06 17:36:42 +0200 | <davean> | absence: ALL you have given is MonadIO |
2021-08-06 17:37:35 +0200 | <davean> | And you didn't say something like "m1 is some abstract monad that is allowed to do up to X things" and then have m2 have said capabilities |
2021-08-06 17:37:43 +0200 | <davean> | you just said "MonadIO" |
2021-08-06 17:37:50 +0200 | <davean> | if you'd said "forall m1" that might be different |
2021-08-06 17:38:27 +0200 | <davean> | Perhaps you were thinking something like (forall m1 . MonadIO m1 => m1 a) -> ExceptT e m2 a? |
2021-08-06 17:38:42 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 258 seconds) |
2021-08-06 17:40:06 +0200 | <davean> | absence: I want to make the point you didn't say m1 was abstract, you said it was exactly something. So theres really nothing for MTL to sort out |
2021-08-06 17:40:16 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-06 17:40:21 +0200 | <davean> | the forall case though might leave some sorting to happen, under the right conditions |
2021-08-06 17:42:38 +0200 | <absence> | davean: i knew that my signature as written doesn't work, the compiler already told me that ;) i wanted to explore related ideas, so the forall m1 one looks interesting. thanks! |
2021-08-06 17:43:49 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-08-06 17:45:14 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
2021-08-06 17:46:22 +0200 | charukiewicz | (~quassel@irouteinc255.i.subnet.rcn.com) (Ping timeout: 258 seconds) |
2021-08-06 17:46:31 +0200 | charukiewicz_ | (~quassel@irouteince04.i.subnet.rcn.com) |
2021-08-06 17:46:56 +0200 | zmt00 | (~zmt00@user/zmt00) |
2021-08-06 17:48:11 +0200 | <janus> | absence: did you see that mtl already has lift for ExceptT? |
2021-08-06 17:49:36 +0200 | jeetelongname | (~jeet@host-89-241-98-229.as13285.net) |
2021-08-06 17:49:39 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2021-08-06 17:49:57 +0200 | zebrag | (~chris@user/zebrag) |
2021-08-06 17:50:13 +0200 | <janus> | you have lift, you have "except" (in transformers for taking an Either to ExceptT). it's hard for me to imagine other functions that put things in ExceptT |
2021-08-06 17:50:13 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-08-06 17:50:18 +0200 | <janus> | but maybe my imagination is limited :P |
2021-08-06 17:50:42 +0200 | <jeetelongname> | :t (***) |
2021-08-06 17:50:43 +0200 | <lambdabot> | Arrow a => a b c -> a b' c' -> a (b, b') (c, c') |
2021-08-06 17:52:07 +0200 | <janus> | ok , throwError, may need that also if you have an unconditional failure |
2021-08-06 17:52:30 +0200 | charukiewicz_ | (~quassel@irouteince04.i.subnet.rcn.com) (Ping timeout: 258 seconds) |
2021-08-06 17:52:41 +0200 | charukiewicz | (~quassel@irouteinc02.i.subnet.rcn.com) |
2021-08-06 17:53:27 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-08-06 17:53:45 +0200 | chele | (~chele@user/chele) (Remote host closed the connection) |
2021-08-06 17:54:53 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) |
2021-08-06 17:55:05 +0200 | shapr | (~user@pool-108-28-144-11.washdc.fios.verizon.net) |
2021-08-06 17:55:54 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 268 seconds) |
2021-08-06 17:56:08 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) |
2021-08-06 17:56:26 +0200 | oso | (~oso@2601:58c:c080:a950:f275:2530:b398:680b) (Quit: Client closed) |
2021-08-06 17:57:40 +0200 | berberman | (~berberman@user/berberman) |
2021-08-06 17:58:15 +0200 | berberman_ | (~berberman@user/berberman) (Ping timeout: 258 seconds) |
2021-08-06 17:58:48 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2021-08-06 17:58:54 +0200 | ukari | (~ukari@user/ukari) (Remote host closed the connection) |
2021-08-06 17:59:38 +0200 | ukari | (~ukari@user/ukari) |
2021-08-06 18:00:16 +0200 | <absence> | janus: thanks, but the problem was the mismatch between m1 and m2 |
2021-08-06 18:00:48 +0200 | <janus> | aah right , ok. so actually not really related to ExceptT |
2021-08-06 18:01:44 +0200 | euandreh | (~euandreh@2804:14c:33:9fe5:4cf:cdfb:eec8:75c0) |
2021-08-06 18:02:55 +0200 | neceve | (~quassel@2a02:c7f:607e:d600:d2c9:6317:8847:51b6) |
2021-08-06 18:05:09 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 258 seconds) |
2021-08-06 18:06:47 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
2021-08-06 18:09:32 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-08-06 18:11:00 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-06 18:12:29 +0200 | rmoe | (~rmoe@c-71-236-207-44.hsd1.wa.comcast.net) |
2021-08-06 18:14:21 +0200 | <lechner> | Hi, why does connectPostgreSQL in postgresql-simple expect a ByteString and not a String, please? |
2021-08-06 18:15:12 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds) |
2021-08-06 18:15:18 +0200 | <dsal> | String is bad in general. They'd have to pack it in to a bytestring to send it over the wire anyway, so might as well take it. |
2021-08-06 18:15:45 +0200 | <dsal> | With overloaded strings and optparse-applicative or similar for taking parameters, you might generally not notice the difference. |
2021-08-06 18:16:37 +0200 | <maerwald[m]> | with optparse-applicative you will notice something: https://github.com/pcapriotti/optparse-applicative/issues/368 |
2021-08-06 18:17:19 +0200 | <maerwald[m]> | and https://github.com/haskell/bytestring/issues/140 |
2021-08-06 18:17:42 +0200 | <maerwald[m]> | (which is used by OverloadedStrings) |
2021-08-06 18:17:45 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Read error: Connection reset by peer) |
2021-08-06 18:17:55 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 18:18:20 +0200 | <dsal> | Ah. For the same reason ... yeah |
2021-08-06 18:19:29 +0200 | <maerwald[m]> | I use quasi quoters |
2021-08-06 18:19:42 +0200 | <dsal> | You wouldn't notice if you used ascii connection strings. :) |
2021-08-06 18:19:59 +0200 | <dsal> | I've never written a qq. What's the input? |
2021-08-06 18:20:11 +0200 | <maerwald[m]> | yeah |
2021-08-06 18:20:36 +0200 | <maerwald[m]> | A string |
2021-08-06 18:20:54 +0200 | <dsal> | Makes sense. |
2021-08-06 18:20:58 +0200 | Vajb | (~Vajb@n2bovg6licdnldblt-2.v6.elisa-mobile.fi) (Ping timeout: 256 seconds) |
2021-08-06 18:21:07 +0200 | <maerwald[m]> | xD |
2021-08-06 18:22:24 +0200 | charukiewicz | (~quassel@irouteinc02.i.subnet.rcn.com) (Ping timeout: 258 seconds) |
2021-08-06 18:22:29 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 252 seconds) |
2021-08-06 18:22:52 +0200 | charukiewicz | (~quassel@irouteince04.i.subnet.rcn.com) |
2021-08-06 18:23:03 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-06 18:23:22 +0200 | azeem | (~azeem@176.201.8.137) |
2021-08-06 18:24:53 +0200 | Vajb | (~Vajb@2001:999:40:408d:1d9e:a80c:4ab7:8954) |
2021-08-06 18:26:14 +0200 | Core8888 | (~agua_pesa@191.177.175.57) (Ping timeout: 258 seconds) |
2021-08-06 18:26:18 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.2) |
2021-08-06 18:27:28 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-08-06 18:28:20 +0200 | lbseale_ | (~lbseale@user/ep1ctetus) |
2021-08-06 18:30:07 +0200 | haykam1 | (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 18:30:31 +0200 | haykam2 | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-08-06 18:30:57 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-08-06 18:32:22 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Ping timeout: 258 seconds) |
2021-08-06 18:33:07 +0200 | haykam2 | (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 18:33:26 +0200 | haykam3 | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-08-06 18:33:50 +0200 | neceve | (~quassel@2a02:c7f:607e:d600:d2c9:6317:8847:51b6) (Remote host closed the connection) |
2021-08-06 18:34:35 +0200 | haykam3 | (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 18:34:52 +0200 | haykam4 | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-08-06 18:35:05 +0200 | neceve | (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) |
2021-08-06 18:36:00 +0200 | cpape` | (~user@2a01:4f9:c010:632d::1) (Remote host closed the connection) |
2021-08-06 18:36:01 +0200 | enoq | (~enoq@194-208-179-35.lampert.tv) (Quit: enoq) |
2021-08-06 18:36:12 +0200 | cpape` | (~user@2a01:4f9:c010:632d::1) |
2021-08-06 18:36:13 +0200 | fendor_ | fendor |
2021-08-06 18:36:23 +0200 | Guest7946 | (~Guest79@S0106bc3e07325ee3.vw.shawcable.net) |
2021-08-06 18:36:26 +0200 | <lechner> | dsal: Hi, why is String bad in general (other than how it is implemented), please? |
2021-08-06 18:36:45 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
2021-08-06 18:36:47 +0200 | haykam4 | (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 18:37:08 +0200 | haykam5 | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-08-06 18:37:57 +0200 | <dsal> | lechner: mainly that. It's a linked list and has to be serialized to communicate externally |
2021-08-06 18:38:14 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-08-06 18:38:20 +0200 | <Guest7946> | Hi All - I have a question about getting emacs haskell modes working with ghcup installed haskell/ghci. Is this the right place? |
2021-08-06 18:39:40 +0200 | haykam5 | (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 18:40:25 +0200 | <lechner> | dsal: i don't mean to argue, but wouldn't the "wire" argument also apply to putX and printX? |
2021-08-06 18:40:32 +0200 | haykam6 | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-08-06 18:40:46 +0200 | smarton | (~smarton@gnu/webmaster/smarton) (Quit: ZNC 1.7.2+deb3 - https://znc.in) |
2021-08-06 18:41:06 +0200 | <dsal> | Yeah. It doesn't always matter. |
2021-08-06 18:41:20 +0200 | haykam6 | (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 18:41:37 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-08-06 18:41:43 +0200 | dustinm- | (~dustinm@static.38.6.217.95.clients.your-server.de) (Quit: Leaving) |
2021-08-06 18:41:50 +0200 | smarton | (~smarton@gnu/webmaster/smarton) |
2021-08-06 18:42:07 +0200 | <dsal> | I'm using an xml library that uses strings and it feels wrong, but I'm also not making anything big or spending much of my time there, so I can't be bothered. :) |
2021-08-06 18:42:44 +0200 | hrnz | (~ulli@irc.plumbing) (Ping timeout: 252 seconds) |
2021-08-06 18:43:02 +0200 | <adamCS> | Guest7946: Might be! What's the specific question? |
2021-08-06 18:43:36 +0200 | Pickchea | (~private@user/pickchea) |
2021-08-06 18:43:46 +0200 | <lechner> | dsal: Shouldn't that be a reason to reimplement String rather than encourage it's avoidance, like Data.Text? |
2021-08-06 18:43:46 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 18:44:20 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-08-06 18:44:23 +0200 | <geekosaur> | lechner: there is no reimplementation that would help aside from things like Data.Text |
2021-08-06 18:44:24 +0200 | dustinm | (~dustinm@static.38.6.217.95.clients.your-server.de) |
2021-08-06 18:44:43 +0200 | <Guest7946> | Thanks adamCS - I'm running on OS X, I've modified the init.el file to find the ghci executable in the .ghcup directory but the haskell inferior process just keeps dying. I'm not sufficently knowledgable about emacs debugging of subprocesses so I cannot tell why. |
2021-08-06 18:45:04 +0200 | <Guest7946> | Is this configuration known to work? OS X/ghcup installation/emacs modes? |
2021-08-06 18:45:33 +0200 | <monochrom> | I bet backward compatibility may block redefining String. |
2021-08-06 18:45:58 +0200 | <geekosaur> | yes, anything assuming it's a list would fail |
2021-08-06 18:46:00 +0200 | <dsal> | lechner: String is really easy to think about and work with. It's fine for many things. But if you have OverloadedStrings enabled, you don't notice a lot of issues. |
2021-08-06 18:46:06 +0200 | <geekosaur> | which means most things using String |
2021-08-06 18:46:20 +0200 | <adamCS> | Guest7946: Yes, at least for some modes. What are you trying to get working? I use ghcup installed toolchain (ghc/cabal/hls) and then in emacs I use lsp which uses hls (haskell-language-server), What mode needs ghci? |
2021-08-06 18:46:23 +0200 | <dsal> | Though bytestring is weird, I guess. It means something else that overlaps a lot |
2021-08-06 18:46:27 +0200 | <monochrom> | Besides, the same can be said about Bool. |
2021-08-06 18:47:04 +0200 | <monochrom> | You can't solve boolean blindness by redefining Bool. The only solution is discouragement and education. |
2021-08-06 18:47:13 +0200 | <geekosaur> | adamCS: inferior haskell mode |
2021-08-06 18:47:18 +0200 | <adamCS> | Guest7946: often emacs has a buffer someplace that has the stderr of the inferior process. Or maybe the mode can be configured to make such a buffer. |
2021-08-06 18:47:41 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 18:47:59 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-08-06 18:48:22 +0200 | <adamCS> | geekosaur: Maybe you have better ideas! I don't even really understand major/minor modes. I just have it (haskell and lsp modes) working. |
2021-08-06 18:48:53 +0200 | <monochrom> | I use haskell-mode rather than lsp/hls. |
2021-08-06 18:49:00 +0200 | <geekosaur> | not really, I don't use inferior haskell mode much |
2021-08-06 18:49:11 +0200 | <Guest7946> | @adamCS I think it's just inferior haskell mode... just to run ghci within emacs |
2021-08-06 18:49:11 +0200 | <lambdabot> | Unknown command, try @list |
2021-08-06 18:49:15 +0200 | <dsal> | I've never got lsp working. Too many weird levels of misdirection in my setup. |
2021-08-06 18:49:25 +0200 | <lechner> | monochrom: the disagreement is over String == [Char] right? |
2021-08-06 18:49:28 +0200 | <dsal> | And haskell-mode has worked well on my lawn |
2021-08-06 18:49:36 +0200 | <adamCS> | took me a while to get lsp/hls working. But it's pretty cool when it does. |
2021-08-06 18:49:40 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-06 18:49:46 +0200 | <monochrom> | But within haskell-mode, the "inferior" option is really an old relic that no one should use. |
2021-08-06 18:49:53 +0200 | <Guest7946> | "There isn't a problem in CS that can't be solved by another level of indirection" ... i forget who said it. |
2021-08-06 18:50:17 +0200 | <monochrom> | Use "interactive-haskell-mode" instead. |
2021-08-06 18:50:51 +0200 | <Guest7946> | Ok, thanks @monochrom I'll reconfigure to use interactive :) |
2021-08-06 18:50:54 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 18:51:03 +0200 | <monochrom> | But either way, unless you do manual configuration, haskell-mode honours PATH. |
2021-08-06 18:51:10 +0200 | azeem | (~azeem@176.201.8.137) (Ping timeout: 250 seconds) |
2021-08-06 18:51:18 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-08-06 18:51:28 +0200 | dustinm | (~dustinm@static.38.6.217.95.clients.your-server.de) (Quit: Leaving) |
2021-08-06 18:52:59 +0200 | <Guest7946> | Yes, PATH would be an answer if I know how to modify the "login" PATH in OS X. I'm unsure how PATH gets set in the case where you start from gui. |
2021-08-06 18:53:09 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 18:53:46 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2021-08-06 18:54:15 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-08-06 18:54:59 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 18:55:00 +0200 | econo | (uid147250@user/econo) |
2021-08-06 18:55:22 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 240 seconds) |
2021-08-06 18:55:25 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 18:55:47 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-08-06 18:56:11 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
2021-08-06 18:56:13 +0200 | Atum_ | (~IRC@user/atum/x-2392232) |
2021-08-06 18:56:31 +0200 | oxide | (~lambda@user/oxide) (Ping timeout: 258 seconds) |
2021-08-06 18:56:39 +0200 | haykam | (~haykam@static.100.2.21.65.clients.your-server.de) |
2021-08-06 18:57:14 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-08-06 19:00:11 +0200 | Cajun | (~Cajun@user/cajun) |
2021-08-06 19:00:38 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds) |
2021-08-06 19:01:07 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 258 seconds) |
2021-08-06 19:01:34 +0200 | Vajb | (~Vajb@2001:999:40:408d:1d9e:a80c:4ab7:8954) (Ping timeout: 250 seconds) |
2021-08-06 19:02:51 +0200 | Vajb | (~Vajb@2001:999:51:e847:deb5:e55f:2c83:fc9d) |
2021-08-06 19:03:17 +0200 | Guest7946 | (~Guest79@S0106bc3e07325ee3.vw.shawcable.net) (Quit: Client closed) |
2021-08-06 19:05:36 +0200 | <maerwald[m]> | There's also https://gitlab.haskell.org/haskell/ghcup-hs#with_ghc-wrapper-eg-for-hls |
2021-08-06 19:07:39 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-08-06 19:09:01 +0200 | <dsal> | Guest6153: emacs has two paths you can set. There's the `PATH` environment that's passed down to subprocesses and the `exec-path` list that it uses to find things. |
2021-08-06 19:09:20 +0200 | <dsal> | Argh, hit the wrong guest. |
2021-08-06 19:09:32 +0200 | hrnz | (~ulli@irc.plumbing) |
2021-08-06 19:09:33 +0200 | Vajb | (~Vajb@2001:999:51:e847:deb5:e55f:2c83:fc9d) (Ping timeout: 258 seconds) |
2021-08-06 19:09:52 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-08-06 19:10:12 +0200 | euandreh | (~euandreh@2804:14c:33:9fe5:4cf:cdfb:eec8:75c0) (Quit: WeeChat 3.2) |
2021-08-06 19:10:37 +0200 | <monochrom> | Yeah the right guest left. Confounding even smart autocompletion. |
2021-08-06 19:11:16 +0200 | <maerwald[m]> | the Right guest Left... english is weird |
2021-08-06 19:11:39 +0200 | mattil | (~mattilinn@87-92-57-75.bb.dnainternet.fi) |
2021-08-06 19:12:24 +0200 | <dsal> | Is there `swap` for Either? |
2021-08-06 19:12:27 +0200 | gawen | (~gawen@user/gawen) (Quit: cya) |
2021-08-06 19:12:36 +0200 | Vajb | (~Vajb@nawgi2ugr2ypv0v7x-3.v6.elisa-mobile.fi) |
2021-08-06 19:13:02 +0200 | <dsal> | I wrote some type that's basically `Either a a`. No idea where I put that or what I called it.... |
2021-08-06 19:13:12 +0200 | <monochrom> | I haven't seen one in libraries, but I would be inclined to name it "ingsoc". |
2021-08-06 19:13:15 +0200 | markpythonicbitc | (~markpytho@50.228.44.6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-08-06 19:16:42 +0200 | gawen | (~gawen@user/gawen) |
2021-08-06 19:16:50 +0200 | Vajb | (~Vajb@nawgi2ugr2ypv0v7x-3.v6.elisa-mobile.fi) (Ping timeout: 258 seconds) |
2021-08-06 19:17:23 +0200 | Vajb | (~Vajb@n4o6cmlync08x7vgp-3.v6.elisa-mobile.fi) |
2021-08-06 19:17:56 +0200 | Pickchea | (~private@user/pickchea) |
2021-08-06 19:18:54 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-08-06 19:23:32 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 252 seconds) |
2021-08-06 19:28:32 +0200 | Guest7240 | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-06 19:29:27 +0200 | delYsid | (~user@62-178-101-151.cable.dynamic.surfer.at) |
2021-08-06 19:29:50 +0200 | <delYsid> | @hoogle (Monoid (f a), Applicative f) => Maybe a -> f a |
2021-08-06 19:29:51 +0200 | <lambdabot> | Generic.Data.Internal.Utils coerce' :: Coercible (f x) (g x) => f x -> g x |
2021-08-06 19:29:51 +0200 | <lambdabot> | Control.Effect.Lift sendM :: (Has (Lift n) sig m, Functor n) => n a -> m a |
2021-08-06 19:29:51 +0200 | <lambdabot> | Blanks.ScopeW scopeWLiftAnno :: (NatNewtype (ScopeW t n f g) g, Functor t) => t a -> g a |
2021-08-06 19:31:48 +0200 | ukari | (~ukari@user/ukari) (Remote host closed the connection) |
2021-08-06 19:32:19 +0200 | ukari | (~ukari@user/ukari) |
2021-08-06 19:33:24 +0200 | chris | (~chris@81.96.113.213) |
2021-08-06 19:33:29 +0200 | chris | Guest3433 |
2021-08-06 19:35:41 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
2021-08-06 19:36:00 +0200 | markpythonicbitc | (~markpytho@2600:380:c133:d5e:9df4:26a8:3f28:73a8) |
2021-08-06 19:38:36 +0200 | Guest3433 | (~chris@81.96.113.213) (Ping timeout: 272 seconds) |
2021-08-06 19:42:31 +0200 | Vajb | (~Vajb@n4o6cmlync08x7vgp-3.v6.elisa-mobile.fi) (Ping timeout: 258 seconds) |
2021-08-06 19:43:02 +0200 | Atum__ | (~IRC@user/atum/x-2392232) |
2021-08-06 19:45:03 +0200 | Atum_ | (~IRC@user/atum/x-2392232) (Ping timeout: 268 seconds) |
2021-08-06 19:45:36 +0200 | Vajb | (~Vajb@nzwkg4b83ts4sgjo-3.v6.elisa-mobile.fi) |
2021-08-06 19:46:05 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 252 seconds) |
2021-08-06 19:48:28 +0200 | markpythonicbitc | (~markpytho@2600:380:c133:d5e:9df4:26a8:3f28:73a8) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-08-06 19:48:41 +0200 | oxide | (~lambda@user/oxide) |
2021-08-06 19:52:49 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
2021-08-06 19:58:37 +0200 | oxide | (~lambda@user/oxide) (Ping timeout: 268 seconds) |
2021-08-06 20:02:44 +0200 | pavonia | (~user@user/siracusa) |
2021-08-06 20:06:41 +0200 | chris | (~chris@81.96.113.213) |
2021-08-06 20:06:44 +0200 | chris | Guest2445 |
2021-08-06 20:07:20 +0200 | delYsid | (~user@62-178-101-151.cable.dynamic.surfer.at) (Remote host closed the connection) |
2021-08-06 20:13:33 +0200 | oldsk00l | (~znc@ec2-18-130-254-135.eu-west-2.compute.amazonaws.com) (Ping timeout: 265 seconds) |
2021-08-06 20:15:30 +0200 | <lechner> | Hi, why does connectPostgreSQL in postgresql-simple expect a strict ByteString instead of lazy, please (or provide an implementation for the latter)? Thanks! |
2021-08-06 20:17:07 +0200 | <monochrom> | You can use "toStrict" easily? |
2021-08-06 20:18:06 +0200 | <monochrom> | I am not the author, but if I were, I wouldn't expect a query to be more than even 1MB long such that lazy bytestring would be called for. |
2021-08-06 20:18:11 +0200 | epolanski | (uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-06 20:18:40 +0200 | <lechner> | I do, but I thought Haskell is lazy by default. I also do not understand why a separate type is needed to ensure evalution. |
2021-08-06 20:19:33 +0200 | <monochrom> | But postgresql is eager by default. |
2021-08-06 20:19:48 +0200 | <monochrom> | Especially when it wants you to submit a query. |
2021-08-06 20:19:54 +0200 | <lechner> | it's the connection string |
2021-08-06 20:20:05 +0200 | <monochrom> | That too. |
2021-08-06 20:21:08 +0200 | <lechner> | i understand that some routines, like a socket 'receive', deliver a fully evaluated string, but why does that require a separate type? |
2021-08-06 20:21:23 +0200 | Atum__ | (~IRC@user/atum/x-2392232) (Quit: Atum__) |
2021-08-06 20:24:18 +0200 | Neuromancer | (~Neuromanc@user/neuromancer) (Ping timeout: 258 seconds) |
2021-08-06 20:25:38 +0200 | rmoe | (~rmoe@c-71-236-207-44.hsd1.wa.comcast.net) (Ping timeout: 250 seconds) |
2021-08-06 20:26:26 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-06 20:27:39 +0200 | caubert | (~caubert@136.244.111.235) (Quit: WeeChat 3.2) |
2021-08-06 20:28:38 +0200 | caubert | (~caubert@136.244.111.235) |
2021-08-06 20:29:50 +0200 | bjobjo | (~bjobjo@user/bjobjo) (Remote host closed the connection) |
2021-08-06 20:31:17 +0200 | caubert | (~caubert@136.244.111.235) (Client Quit) |
2021-08-06 20:32:03 +0200 | rmoe | (~rmoe@c-71-236-207-44.hsd1.wa.comcast.net) |
2021-08-06 20:32:23 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-06 20:33:18 +0200 | caubert | (~caubert@136.244.111.235) |
2021-08-06 20:33:24 +0200 | <monochrom> | Given that both kinds of bytestrings are available, I would agree with the author in choosing the non-lazy one to make clear the semantics of the API. |
2021-08-06 20:33:47 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-08-06 20:34:01 +0200 | <monochrom> | So you would have to escalate it to the level of: why would the bytestring library give you a choice, why didn't it be a dictator. |
2021-08-06 20:34:15 +0200 | goepsilongo | (~chacho@2603-7000-ab00-62ed-e8e0-40c9-c788-8ef8.res6.spectrum.com) |
2021-08-06 20:34:19 +0200 | <monochrom> | But I guess once framed that way the answer is pretty clear. |
2021-08-06 20:34:41 +0200 | <monochrom> | We do recognize that laziness is bad for some use cases and there should always be a choice. |
2021-08-06 20:35:20 +0200 | <lechner> | i guess it was too slow or inefficient to have only lazy ByteStrings and "evaluate $ force" at the relevant IO points |
2021-08-06 20:39:17 +0200 | <lechner> | My issue with the ByteString paradigm is, I suppose, that I like to convert UTF-8 to code points at the earliest possibility for input (and the latest for output). Those intermediate Strings are lazy, so in addition to UTF-8 I have to deal with lazy and strict more often |
2021-08-06 20:41:19 +0200 | <lechner> | For Haskell those two often seem to come together; either I have a (lazy) String or a strict BysteString, which nowadays is usually in UTF-8 |
2021-08-06 20:42:52 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-08-06 20:43:05 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 258 seconds) |
2021-08-06 20:46:23 +0200 | <lechner> | which means I can make my life easier by using the strict version of UTF8.fromString. sorry about thinking aloud |
2021-08-06 20:47:12 +0200 | <Gurkenglas> | When a compilation error is confusing, could I run a debugger on GHC to get more info on how the error arose? |
2021-08-06 20:48:10 +0200 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
2021-08-06 20:48:28 +0200 | <Gurkenglas> | Also, is there a graphical debugger for Haskell? I notice that they are much more pleasant to work with than command-line debuggers. |
2021-08-06 20:48:46 +0200 | <monochrom> | In practice there is no debugger for GHC. |
2021-08-06 20:49:04 +0200 | <monochrom> | Or rather, no debugger that works well on GHC. |
2021-08-06 20:49:27 +0200 | <lechner> | what's the error? most are confusing |
2021-08-06 20:50:18 +0200 | <lechner> | or rather would benefit from more explanation |
2021-08-06 20:50:29 +0200 | <lechner> | for newbies |
2021-08-06 20:50:47 +0200 | <monochrom> | Regarding unicode codepoints, I am surprised that you act like you have never heard of Data.Text before. As if. |
2021-08-06 20:53:05 +0200 | viluon | (uid453725@id-453725.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
2021-08-06 20:53:16 +0200 | jeetelongname | (~jeet@host-89-241-98-229.as13285.net) (Remote host closed the connection) |
2021-08-06 20:53:29 +0200 | <lechner> | monochrom: i only read about it, but my JSON and YAML definitions use String, Should I switch? |
2021-08-06 20:53:40 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-06 20:54:10 +0200 | <lechner> | they are all short |
2021-08-06 20:54:38 +0200 | <dsal> | IMO: You should fix things you measure as being problems. |
2021-08-06 20:55:19 +0200 | <dsal> | I saw a cool video about unboxing recently that showed how memory is reduced by unboxing. Unless you turn on the optimizer, at which point the unboxed version is optimized less aggressively and it ends up using more memory. |
2021-08-06 20:57:32 +0200 | <lechner> | dsal: right now, i am the bottleneck. that's why i ask so many questions |
2021-08-06 20:57:36 +0200 | <monochrom> | "There isn't a problem in CS that can't be solved by another level of indirection" pairs well with "There isn't a performance penalty that can't be solved by another level of unboxing" >:) |
2021-08-06 20:57:36 +0200 | <dsal> | heh |
2021-08-06 20:58:25 +0200 | <dsal> | lechner: IMO, it's good to have a vague idea of what some of these concepts are. When they show up in bugs, implementation difficulties, or performance issues, you know what to look for. |
2021-08-06 20:58:47 +0200 | <dsal> | There are a lot of Haskell features that just seem stupid and weird to me. Until that one day when I'm like, "Ugh, I can't figure out how to do this... wait..." |
2021-08-06 20:59:53 +0200 | <Gurkenglas> | monochrom, what stops the ghci debugger from working on GHC? |
2021-08-06 21:00:11 +0200 | <monochrom> | GHC is compiled. |
2021-08-06 21:00:35 +0200 | <monochrom> | gdb works poorly on code generated by GHC. GHC code is generated by GHC. |
2021-08-06 21:00:39 +0200 | <Gurkenglas> | Ah. What stops one from running GHC uncompiled? |
2021-08-06 21:00:51 +0200 | <monochrom> | I haven't tried. |
2021-08-06 21:00:55 +0200 | <geekosaur> | there is a way to load ghc into ghci, which ships with the ghc source. it's fragile and breaks every so often |
2021-08-06 21:01:32 +0200 | <monochrom> | ghci debugger is pretty primitive in the first place. |
2021-08-06 21:02:38 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-08-06 21:02:48 +0200 | <monochrom> | Type checking and inference are pretty detailed algorithms in GHC such that even with most ideal debuggers you risk missing the forest for the trees, you will be drowned in unnecessary details. |
2021-08-06 21:03:00 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-08-06 21:03:22 +0200 | <dsal> | `Debug.Trace` == universal debugger. |
2021-08-06 21:03:33 +0200 | <Gurkenglas> | dsal-- |
2021-08-06 21:03:37 +0200 | markpythonicbitc | (~markpytho@2601:647:5a00:35:a8c6:4beb:a469:3f6e) |
2021-08-06 21:03:48 +0200 | <monochrom> | dsal++ |
2021-08-06 21:04:04 +0200 | <lechner> | that costs a beer |
2021-08-06 21:04:05 +0200 | rk04 | (~rk04@user/rajk) |
2021-08-06 21:04:12 +0200 | <maerwald[m]> | Yes, it allows to debug laziness behavior |
2021-08-06 21:05:54 +0200 | <xerox> | dsal++ |
2021-08-06 21:06:33 +0200 | <dsal> | There are different kinds of bugs that require different kinds of debugging procedures. Proper debugger style hasn't been very useful for me in most languages (it was nice in Smalltalk). I had an incredibly rare failure in a server that I found by enabling traces and building a tool to reconstruct the scenario that lead to a stuck thread. |
2021-08-06 21:06:37 +0200 | <int-e> | dsal: do you include https://hackage.haskell.org/package/base-4.15.0.0/docs/Debug-Trace.html#v:traceEvent in that? |
2021-08-06 21:06:37 +0200 | <monochrom> | Moreover, modern type inference algorithms in GHC are written for getting it done, not for explanation. Following its execution does not give you the explanation a human wants, only an explanation a computer wants. |
2021-08-06 21:07:10 +0200 | <dsal> | int-e: I've not used that exact function, but I did go through and name all my threads for eventlog processing. Now I'm going to start using that. :) |
2021-08-06 21:07:38 +0200 | <monochrom> | Although, if you're well-versed with those papers like the OutsideIn(X) paper, you may be able to decode an execution trace. |
2021-08-06 21:08:23 +0200 | peterhil | (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Ping timeout: 258 seconds) |
2021-08-06 21:08:48 +0200 | <int-e> | I mean, I love Debug.Trace.trace{,Show} but it has obvious scalability issues. |
2021-08-06 21:09:11 +0200 | <maerwald[m]> | not webscale? |
2021-08-06 21:18:21 +0200 | rk04 | (~rk04@user/rajk) (Ping timeout: 258 seconds) |
2021-08-06 21:21:08 +0200 | <int-e> | maerwald[m]: wtf does that even mean |
2021-08-06 21:21:47 +0200 | <maerwald[m]> | Means growing your business |
2021-08-06 21:22:08 +0200 | <int-e> | bzzzt |
2021-08-06 21:22:15 +0200 | <int-e> | so buzzy |
2021-08-06 21:23:48 +0200 | <lechner> | it was a tough week for everyone, i can tell |
2021-08-06 21:24:19 +0200 | <monochrom> | I think maerwald[m] was just joking. |
2021-08-06 21:24:48 +0200 | <lechner> | that too. |
2021-08-06 21:24:54 +0200 | <int-e> | yeah I got that, but I did realize that "webscale" is a totally empty word to me, genuinely. |
2021-08-06 21:25:14 +0200 | mattil | (~mattilinn@87-92-57-75.bb.dnainternet.fi) (Quit: Leaving) |
2021-08-06 21:25:18 +0200 | <maerwald[m]> | Let me sell you microservices |
2021-08-06 21:25:26 +0200 | <int-e> | Unless you're talking about one of the big companies like Google. |
2021-08-06 21:25:43 +0200 | <maerwald[m]> | And when you get into deployment issues, I'll sell yoe kubernetes |
2021-08-06 21:25:52 +0200 | <monochrom> | I prefer to breathe life back into that empty word and make it a joke word. :) |
2021-08-06 21:25:56 +0200 | <int-e> | Which make up enough of the "web" for the word "webscale" to kind of make sense. |
2021-08-06 21:26:16 +0200 | <maerwald[m]> | Ya, Haskell needs better sales ppl. But it seems that's the main goal of HF. So we're covered. |
2021-08-06 21:26:32 +0200 | <int-e> | Microservices I've seen... https://blog.davetcode.co.uk/post/21st-century-emulator/ |
2021-08-06 21:26:32 +0200 | <maerwald[m]> | Sarcastic Friday |
2021-08-06 21:26:59 +0200 | <lechner> | the weekend is coming |
2021-08-06 21:27:17 +0200 | <int-e> | maerwald[m]: tbf your answer was probably exactly what I deserved |
2021-08-06 21:27:26 +0200 | <maerwald[m]> | xD |
2021-08-06 21:27:56 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-08-06 21:33:23 +0200 | _bin | (~bin@user/bin/x-1583188) (Quit: ZNC - https://znc.in) |
2021-08-06 21:33:35 +0200 | _bin | (~bin@user/bin/x-1583188) |
2021-08-06 21:33:54 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-08-06 21:35:07 +0200 | emliunix | (~emliunix@2a09:bac0:23::815:b8b) |
2021-08-06 21:36:16 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
2021-08-06 21:39:30 +0200 | <sm> | re "could I run a debugger on GHC to get more info on how the error arose?", yes but isn't it often quicker to search for the error message and stare at the code ? |
2021-08-06 21:41:11 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-08-06 21:43:39 +0200 | alx741 | (~alx741@186.178.109.254) (Ping timeout: 258 seconds) |
2021-08-06 21:54:28 +0200 | Guest2445 | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-08-06 21:55:13 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-06 21:57:43 +0200 | alx741 | (~alx741@186.178.108.253) |
2021-08-06 21:58:00 +0200 | <monochrom> | "A Fresh Calculus for Names Management" I didn't know Moggi was also capable of making puns in paper titles. :) |
2021-08-06 21:58:44 +0200 | <emliunix> | Client: HexChat 2.14.2 • OS: Microsoft Windows 11 专业版 (x64) • CPU: Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz (3.00GHz) • Memory: 47.9 GiB Total (32.7 GiB Free) • Storage: 2.0 TiB / 4.4 TiB (2.5 TiB Free) • VGA: NVIDIA GeForce GTX 1060 6GB, Intel(R) UHD Graphics 630 • Uptime: 56m 10s |
2021-08-06 21:59:01 +0200 | <emliunix> | sorry |
2021-08-06 22:00:11 +0200 | <lechner> | wow |
2021-08-06 22:01:05 +0200 | <dsal> | sm: Sometimes the error is just "you used `head`" which is painful the first time you learn you shouldn't have done that. :) |
2021-08-06 22:02:44 +0200 | peterhil | (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) |
2021-08-06 22:03:35 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
2021-08-06 22:05:06 +0200 | aegon | (~mike@174.127.249.180) |
2021-08-06 22:05:32 +0200 | juhp | (~juhp@128.106.188.220) (Ping timeout: 272 seconds) |
2021-08-06 22:06:51 +0200 | juhp | (~juhp@128.106.188.220) |
2021-08-06 22:10:00 +0200 | emliunix | (~emliunix@2a09:bac0:23::815:b8b) (Remote host closed the connection) |
2021-08-06 22:10:02 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-08-06 22:10:23 +0200 | emliunix | (~emliunix@2a09:bac0:23::815:b8b) |
2021-08-06 22:10:33 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2021-08-06 22:16:58 +0200 | roboguy_ | (~roboguy_@2605:a601:afe7:9f00:c77:b134:29be:aae9) |
2021-08-06 22:19:20 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-06 22:23:07 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-08-06 22:23:07 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-08-06 22:23:10 +0200 | allbery_b | geekosaur |
2021-08-06 22:24:32 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
2021-08-06 22:25:34 +0200 | <Gurkenglas> | sm, yes but id like to live in a world where this is automatic |
2021-08-06 22:26:52 +0200 | <Gurkenglas> | a compiler designed such that instead of printing compile errors it has you look at a compiler stacktrace <3 |
2021-08-06 22:26:53 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-08-06 22:27:23 +0200 | <geekosaur> | I suspect that'd get old quickly |
2021-08-06 22:28:21 +0200 | <Gurkenglas> | (or debugger states rather than stacktraces) |
2021-08-06 22:28:31 +0200 | <Gurkenglas> | and when that gets old you improve the debugger UI |
2021-08-06 22:28:42 +0200 | silverwhitefish | (~hidden@47.202.102.10) (Ping timeout: 250 seconds) |
2021-08-06 22:32:49 +0200 | fendor | (~fendor@77.119.214.156.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-08-06 22:34:15 +0200 | Pickchea | (~private@user/pickchea) |
2021-08-06 22:35:10 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) |
2021-08-06 22:37:42 +0200 | <sm> | Gurkenglas: to be clear, you want to debug the state of the compiler when it reports a compile error in your program here, not debug your program - right ? |
2021-08-06 22:38:28 +0200 | <Gurkenglas> | yep :) |
2021-08-06 22:38:34 +0200 | <Gurkenglas> | can't debug my program if it won't compile |
2021-08-06 22:38:40 +0200 | <sm> | would that be because you're a ghc developer, or because ghc's error messages are too hard to understand ? |
2021-08-06 22:39:14 +0200 | <Gurkenglas> | the latter. i expect that to happen whenever one has advanced libraries and a strong type system. |
2021-08-06 22:39:29 +0200 | <sm> | I think the "automatic" world you want is one where the errors are simply easy to understand, like Elm |
2021-08-06 22:39:35 +0200 | <geekosaur> | I hyave to imagine that if the compile error is too hard to understand, the backtrace will be no better and probably worse |
2021-08-06 22:39:36 +0200 | <sm> | (reputedly) |
2021-08-06 22:40:10 +0200 | <sm> | way worse.. |
2021-08-06 22:40:30 +0200 | <Gurkenglas> | geekosaur, I imagine that as you get more advanced libraries in the same type system, the errors get harder to understand faster than the backtraces |
2021-08-06 22:41:24 +0200 | <sm> | an "EXPLAIN" mode for ghc errors, where it tries to walk you through them in more detail, sounds useful, more than backtraces of ghc's terrifying internals |
2021-08-06 22:42:53 +0200 | <sm> | ie, something designed for human comprehension, rather than a direct reflection of the implementation structure |
2021-08-06 22:43:24 +0200 | <sm> | but sure, both, all, would be great to have |
2021-08-06 22:43:42 +0200 | <sm> | and I'm sure it's doable with some #ghc magic |
2021-08-06 22:44:12 +0200 | <sm> | just stick a printCallStack into ghc's error display code |
2021-08-06 22:44:17 +0200 | Atum_ | (~IRC@user/atum/x-2392232) |
2021-08-06 22:49:50 +0200 | <dsal> | Gurkenglas: Do you have an example of this sort of thing? |
2021-08-06 22:50:16 +0200 | <dsal> | Most of the time when I have a sufficiently bad type error, it's because I've underspecified things and the guesses/constraints start getting too broad. |
2021-08-06 22:50:44 +0200 | <c_wraith> | another way of saying that is "overuse of classes" |
2021-08-06 22:51:14 +0200 | <dsal> | Yeah. Sometimes you can get really far by just saying what the thing is that you expect to see at a particular site. |
2021-08-06 22:51:15 +0200 | <Gurkenglas> | lens errors, i would guess |
2021-08-06 22:51:33 +0200 | <dsal> | People who don't like lens errors tend to favor optics. :) |
2021-08-06 22:53:23 +0200 | ham2 | (~ham4@d8D8627D5.access.telenet.be) (Read error: Connection reset by peer) |
2021-08-06 22:53:28 +0200 | <lbseale_> | I am trying to build a GHC package without using cabal or stack, I see I need to define this unit-id hash value in the package info, but I don't know how to generate it. Does anyone? |
2021-08-06 22:53:31 +0200 | <c_wraith> | at least lens errors mean you did something wrong. As opposed to the errors of the form "this is too polymorphic and I can't figure out what you meant" |
2021-08-06 22:55:40 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Remote host closed the connection) |
2021-08-06 22:55:49 +0200 | ham2 | (~ham4@d8D8627D5.access.telenet.be) |
2021-08-06 22:55:49 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
2021-08-06 22:56:33 +0200 | ham2 | ham |
2021-08-06 22:56:37 +0200 | ham | (~ham4@d8D8627D5.access.telenet.be) (Changing host) |
2021-08-06 22:56:37 +0200 | ham | (~ham4@user/ham) |
2021-08-06 22:57:27 +0200 | <dsal> | TBH, I bat around at lens errors sometime because I sometimes like not thinking. |
2021-08-06 22:59:34 +0200 | <monochrom> | lens is a case of very leaky abstraction therefore errors require familiarity with implementation details and coding tricks. |
2021-08-06 22:59:55 +0200 | <c_wraith> | Honestly, I don't even see lens as an abstraction |
2021-08-06 23:00:26 +0200 | <c_wraith> | It's a swiss-army knife. It doesn't remove needing to understand things, but it gives you very precise tools for doing exactly what you need |
2021-08-06 23:00:36 +0200 | <monochrom> | OTOH lens not exposing that information is also a strength in being very adaptable, so I don't really complain. |
2021-08-06 23:00:51 +0200 | <monochrom> | err! s/not // |
2021-08-06 23:01:08 +0200 | <monochrom> | (I wasn't making up my mind between "not hiding" and "exposing" heh) |
2021-08-06 23:01:27 +0200 | <monochrom> | <-- quantum superposed typist |
2021-08-06 23:02:00 +0200 | <monochrom> | Yeah swiss-army knife nails it. |
2021-08-06 23:02:31 +0200 | <monochrom> | Generally if you have very interesting type aliases instead of newtypes, you expect this. |
2021-08-06 23:02:59 +0200 | <monochrom> | C++ takes this practice to the level of daily bread. |
2021-08-06 23:03:51 +0200 | <monochrom> | and butter and peanut butter and nutella. :) |
2021-08-06 23:05:08 +0200 | <lbseale_> | Update: the documentation is in a comment in the GHC Main.hs source code >_< |
2021-08-06 23:05:11 +0200 | <lbseale_> | https://github.com/ghc/ghc/blob/master/ghc/Main.hs |
2021-08-06 23:05:29 +0200 | <monochrom> | In which case actually wanting a type checker execution trace is barking up the wrong tree. You think the algorithm actually understands sh*t? |
2021-08-06 23:05:37 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2021-08-06 23:08:21 +0200 | <monochrom> | John Searle missed the opportunity for coining "The Unification Room". >:) |
2021-08-06 23:13:42 +0200 | pgib | (~textual@173.38.117.81) (Quit: 00 PC LOAD LETTER) |
2021-08-06 23:17:49 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-08-06 23:18:20 +0200 | markpythonicbitc | (~markpytho@2601:647:5a00:35:a8c6:4beb:a469:3f6e) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-08-06 23:22:08 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2021-08-06 23:24:18 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-08-06 23:27:54 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-08-06 23:29:22 +0200 | jiribenes | (~jiribenes@rosa.jiribenes.com) (Ping timeout: 240 seconds) |
2021-08-06 23:33:29 +0200 | jiribenes | (~jiribenes@rosa.jiribenes.com) |
2021-08-06 23:36:53 +0200 | arkho | (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) |
2021-08-06 23:36:55 +0200 | arkho | (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Remote host closed the connection) |
2021-08-06 23:37:30 +0200 | neceve | (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 258 seconds) |
2021-08-06 23:40:16 +0200 | <raehik> | Got a C library that I want to make some Haskell bindings for, and have work on Windows and Linux, but not sure how to build the lib in GHC/Cabal (which I saw a relevant pkg for a simpler lib) |
2021-08-06 23:40:56 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2021-08-06 23:41:13 +0200 | <raehik> | I've got some function calls working from Cabal, but I don't get how linking will work. How do I tell GHC to link against a dynamic library? Is this a bad idea/what's the alternative |
2021-08-06 23:41:23 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-08-06 23:42:38 +0200 | <geekosaur> | it will link against dynamic C libraries by default; it's shared libraries that are the problem |
2021-08-06 23:42:43 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-08-06 23:42:55 +0200 | <sclv> | raehik: take a look at some bindings for things like curl to see how they're set up https://hackage.haskell.org/package/curl-1.3.8/curl.cabal |
2021-08-06 23:43:03 +0200 | <geekosaur> | (because there's no portable way to do that without also linkingf libc shared, which will break glibc) |
2021-08-06 23:43:53 +0200 | <raehik> | sclv: thank you! was looking for more examples |
2021-08-06 23:44:16 +0200 | <raehik> | geekosaur: I don't think I know what the diff between a dynamic and shared lib is. |
2021-08-06 23:44:38 +0200 | <raehik> | are they both .so / .dlls? |
2021-08-06 23:45:14 +0200 | <sclv> | network has a more complex cabal that can show a bit more stuff off too, like cbits, platform specific conditionals, etc https://hackage.haskell.org/package/network-3.1.2.2/network.cabal |
2021-08-06 23:45:22 +0200 | <geekosaur> | they're the same thing, just different names for it |
2021-08-06 23:45:30 +0200 | <janus> | geekosaur: are you saying it is more portable when linking libc shared? why would that be the case? surely it using musl statically should be more portable than glibc, just because you can link it statically |
2021-08-06 23:46:07 +0200 | <monochrom> | geekosaur, I think you had a typo in "dynamic is default, shared is the problem" in which it should be s/shared/static/ |
2021-08-06 23:46:11 +0200 | <geekosaur> | janus, the problem with glibc is it will insist on loading some stuff dynamically anyway (notably nss) and that will break between glibc versions |
2021-08-06 23:46:19 +0200 | <geekosaur> | yes, sorry |
2021-08-06 23:46:42 +0200 | <geekosaur> | static is the problem because glibc doesn't like being static.l which is why musl is recommended for static builds |
2021-08-06 23:47:16 +0200 | <janus> | right, ok, so with the correction it makes more sense. static is perfectly portable (except musl doesn't run on windows) , if you can get it built |
2021-08-06 23:49:48 +0200 | <raehik> | I thought this (tiny) pkg built the C functions into it rather than being dynamic https://hackage.haskell.org/package/lzo |
2021-08-06 23:50:44 +0200 | <raehik> | is that correct. apologies I'm unclear on what goes on during linking in GHC |
2021-08-06 23:55:39 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-08-06 23:55:44 +0200 | lbseale_ | (~lbseale@user/ep1ctetus) (Ping timeout: 272 seconds) |
2021-08-06 23:56:20 +0200 | <geekosaur> | that package includes the entirety of the C minilzo package, yes. this is usually done to make things easier on Windows, where it can be hard ti locate and use C libraries |
2021-08-06 23:57:19 +0200 | lbseale | (~lbseale@user/ep1ctetus) |
2021-08-06 23:58:35 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |