Logs on 2021-08-05 (liberachat/#haskell)
| 00:00:52 | × | xsperry quits (~as@user/xsperry) () |
| 00:01:05 | → | curiousgay joins (~curiousga@77-120-186-48.kha.volia.net) |
| 00:02:50 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 250 seconds) |
| 00:05:21 | × | Guest6270 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 00:06:18 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds) |
| 00:06:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:08:07 | → | notzmv joins (~zmv@user/notzmv) |
| 00:17:53 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 252 seconds) |
| 00:19:59 | × | cjb quits (~cjb@user/cjb) (Ping timeout: 260 seconds) |
| 00:24:33 | → | xsperry joins (~as@user/xsperry) |
| 00:34:14 | × | pschorf quits (~user@c-73-77-28-188.hsd1.tx.comcast.net) (Ping timeout: 258 seconds) |
| 00:38:22 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds) |
| 00:40:26 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 00:44:51 | <Boarders> | In Alex am I allowed to use macros in the definitions of other macros |
| 00:45:46 | <Boarders> | I have: $digit = [0-9] and $digit_break = [0-9\_] but then can't write |
| 00:45:57 | <Boarders> | $digits = $digit [$digit_break]* |
| 00:48:39 | → | Atum_ joins (~IRC@user/atum/x-2392232) |
| 00:52:13 | → | enoq joins (~enoq@194-208-179-35.lampert.tv) |
| 00:59:09 | × | xsperry quits (~as@user/xsperry) (Ping timeout: 258 seconds) |
| 01:14:03 | KeziahMason | is now known as mnrmnaugh |
| 01:15:21 | <glguy> | Boarders, $ is for character classes and @ is for patterns, IIRC |
| 01:15:47 | <glguy> | https://github.com/glguy/config-value/blob/master/src/Config/Lexer.x#L15-L37 |
| 01:16:38 | <glguy> | more specifically line 34 |
| 01:17:10 | → | Ananta-shesha joins (~pjetcetal@2.95.210.188) |
| 01:17:14 | × | alx741 quits (~alx741@186.178.109.254) (Quit: alx741) |
| 01:17:31 | × | Ananta-shesha quits (~pjetcetal@2.95.210.188) (Remote host closed the connection) |
| 01:18:19 | × | curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 258 seconds) |
| 01:19:20 | <Boarders> | thanks, yeah |
| 01:19:30 | <Boarders> | I made the same realization, I don't know what I was going for |
| 01:22:32 | × | Atum_ quits (~IRC@user/atum/x-2392232) (Quit: Atum_) |
| 01:24:24 | × | enoq quits (~enoq@194-208-179-35.lampert.tv) (Quit: enoq) |
| 01:31:57 | → | retroid_ joins (~retro@5ec19a54.skybroadband.com) |
| 01:37:31 | → | notzmv joins (~zmv@user/notzmv) |
| 01:44:21 | × | theproffesor quits (~theproffe@user/theproffesor) (Read error: Connection reset by peer) |
| 01:44:35 | → | wei2912 joins (~wei2912@112.199.250.21) |
| 01:44:41 | → | theproffesor joins (~theproffe@2601:282:847f:8010::3a29) |
| 01:46:28 | → | curiousgay joins (~curiousga@77-120-186-48.kha.volia.net) |
| 01:48:27 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 245 seconds) |
| 01:57:04 | → | notzmv joins (~zmv@user/notzmv) |
| 01:59:03 | → | xff0x_ joins (~xff0x@2001:1a81:5296:aa00:31be:dd1b:a9d4:4976) |
| 01:59:59 | × | theproffesor quits (~theproffe@2601:282:847f:8010::3a29) (Changing host) |
| 01:59:59 | → | theproffesor joins (~theproffe@user/theproffesor) |
| 02:02:20 | × | xff0x quits (~xff0x@port-92-193-173-141.dynamic.as20676.net) (Ping timeout: 272 seconds) |
| 02:04:09 | ← | brettgilio parts (~brettgili@45.55.53.68) (The Lounge - https://thelounge.chat) |
| 02:10:13 | → | mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
| 02:13:46 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 02:18:33 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:18:34 | FinnElija | is now known as Guest7218 |
| 02:18:34 | × | Guest7218 quits (~finn_elij@user/finn-elija/x-0085643) (Killed (erbium.libera.chat (Nickname regained by services))) |
| 02:18:34 | finn_elija | is now known as FinnElija |
| 02:25:01 | × | td_ quits (~td@muedsl-82-207-238-041.citykom.de) (Ping timeout: 258 seconds) |
| 02:26:42 | → | td_ joins (~td@94.134.91.183) |
| 02:30:34 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
| 02:34:44 | arahael1 | is now known as Arahael |
| 02:37:08 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 256 seconds) |
| 02:37:13 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:38:29 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 02:38:32 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Client Quit) |
| 02:38:49 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds) |
| 02:39:48 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 02:44:13 | → | lbseale joins (~lbseale@user/ep1ctetus) |
| 02:45:29 | → | MQ-17J joins (~MQ-17J@8.6.144.192) |
| 02:45:49 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 02:47:12 | × | trufas quits (~trufas@177.240.218.218) (Ping timeout: 245 seconds) |
| 02:50:25 | × | lbseale quits (~lbseale@user/ep1ctetus) (Quit: Leaving) |
| 02:53:12 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 03:05:16 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 258 seconds) |
| 03:11:24 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 03:13:53 | → | jmorris joins (uid433911@id-433911.stonehaven.irccloud.com) |
| 03:18:06 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 03:20:16 | × | ikex quits (~ash@user/ikex) (Quit: ZNC - https://znc.in) |
| 03:20:29 | → | ikex joins (ash@user/ikex) |
| 03:35:26 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds) |
| 03:36:30 | × | arkho quits (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Quit: Leaving) |
| 03:41:46 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 03:43:40 | → | xsperry joins (~as@user/xsperry) |
| 03:45:34 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 272 seconds) |
| 03:45:54 | × | curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 258 seconds) |
| 03:48:10 | → | Cajun joins (~Cajun@user/cajun) |
| 03:48:58 | × | sheepduck quits (~sheepduck@user/sheepduck) (Ping timeout: 258 seconds) |
| 03:50:12 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 03:52:20 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 04:02:30 | → | gzj joins (~GZJ0X@192.243.120.171.16clouds.com) |
| 04:09:09 | × | gzj quits (~GZJ0X@192.243.120.171.16clouds.com) (Quit: Leaving) |
| 04:11:13 | × | xsperry quits (~as@user/xsperry) () |
| 04:18:06 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 258 seconds) |
| 04:21:33 | × | dagit quits (~dagit@c-24-21-226-72.hsd1.or.comcast.net) (Ping timeout: 258 seconds) |
| 04:21:54 | × | cods quits (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 240 seconds) |
| 04:22:35 | → | the_proffesor joins (~theproffe@2601:282:847f:8010::3a29) |
| 04:23:47 | → | cods joins (~fred@82-65-232-44.subs.proxad.net) |
| 04:27:29 | → | berberman joins (~berberman@user/berberman) |
| 04:27:54 | × | berberman_ quits (~berberman@user/berberman) (Ping timeout: 240 seconds) |
| 04:29:31 | → | curiousgay joins (~curiousga@77-120-186-48.kha.volia.net) |
| 04:29:54 | × | slack1256 quits (~slack1256@181.203.123.157) (Ping timeout: 272 seconds) |
| 04:31:06 | × | the_proffesor quits (~theproffe@2601:282:847f:8010::3a29) (Changing host) |
| 04:31:06 | → | the_proffesor joins (~theproffe@user/theproffesor) |
| 04:31:54 | × | jao quits (jao@gateway/vpn/protonvpn/jao) (Ping timeout: 258 seconds) |
| 04:47:38 | → | ishutin joins (~ishutin@176-241-45-166.pool.digikabel.hu) |
| 04:48:42 | × | sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 258 seconds) |
| 04:51:00 | × | ishutin_ quits (~ishutin@92-249-150-169.static.digikabel.hu) (Ping timeout: 258 seconds) |
| 04:52:04 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 272 seconds) |
| 04:52:35 | → | michalz joins (~michalz@185.246.204.57) |
| 04:55:57 | → | reumeth joins (~reumeth@user/reumeth) |
| 04:57:17 | → | flukiluke joins (~flukiluke@2603:c023:c000:6c7e:8945:ad24:9113:a962) |
| 05:02:39 | → | hiruji joins (~hiruji@user/hiruji) |
| 05:04:16 | → | derelict joins (~derelict@user/derelict) |
| 05:07:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:15:02 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 05:15:02 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 05:17:05 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 05:17:35 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection) |
| 05:18:19 | × | the_proffesor quits (~theproffe@user/theproffesor) (Quit: ¯\_(ツ)_/¯) |
| 05:19:49 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds) |
| 05:20:01 | → | qbt joins (~edun@user/edun) |
| 05:21:02 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 05:21:05 | → | pfurla_ joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 05:21:49 | → | Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) |
| 05:23:35 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 258 seconds) |
| 05:25:45 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 05:25:46 | × | MQ-17J quits (~MQ-17J@8.6.144.192) (Ping timeout: 240 seconds) |
| 05:26:03 | → | MQ-17J joins (~MQ-17J@8.21.10.94) |
| 05:31:25 | × | michalz quits (~michalz@185.246.204.57) (Remote host closed the connection) |
| 05:32:34 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
| 05:35:16 | → | Sgeo_ joins (~Sgeo@user/sgeo) |
| 05:36:05 | → | michalz joins (~michalz@185.246.204.33) |
| 05:36:18 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 05:36:36 | → | notzmv joins (~zmv@user/notzmv) |
| 05:36:41 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 258 seconds) |
| 05:38:28 | × | Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer) |
| 05:39:07 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 05:42:06 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 05:47:51 | <Axman6> | Just a small reminder to everyone,, don't use Scala, not even once, and no, not even then >_< |
| 05:49:31 | <Axman6> | getting stack overflows in the bloody compiler |
| 05:49:46 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 240 seconds) |
| 05:49:49 | → | slavaqq joins (~slavaqq@sdmail.sdserver.cz) |
| 05:51:10 | → | hiruji joins (~hiruji@user/hiruji) |
| 06:00:32 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 245 seconds) |
| 06:01:22 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 06:02:22 | × | Sgeo_ quits (~Sgeo@user/sgeo) (Ping timeout: 258 seconds) |
| 06:03:29 | → | hiruji joins (~hiruji@user/hiruji) |
| 06:07:36 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:10:11 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 06:11:22 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 245 seconds) |
| 06:12:02 | → | hiruji joins (~hiruji@user/hiruji) |
| 06:12:23 | <dibblego> | haha how's ya day m8? |
| 06:18:28 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 258 seconds) |
| 06:25:03 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 06:25:34 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
| 06:26:19 | Lord_of_Life_ | is now known as Lord_of_Life |
| 06:28:26 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 06:33:16 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds) |
| 06:36:06 | → | neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) |
| 06:38:03 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 06:39:54 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 240 seconds) |
| 06:42:34 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 06:44:07 | → | hiruji joins (~hiruji@user/hiruji) |
| 06:48:20 | <Axman6> | well, I'm stuck unable to compile type correct code |
| 06:48:32 | <Axman6> | so the QFPL were right as always |
| 06:51:18 | → | vysn joins (~vysn@user/vysn) |
| 06:51:42 | <dibblego> | you 100% it is type-correct, including inference? |
| 06:52:06 | → | bontaq joins (~user@ool-18e47f8d.dyn.optonline.net) |
| 06:56:03 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:fb27:cb05:95c7:8c03) |
| 06:56:10 | × | oxide quits (~lambda@user/oxide) (Ping timeout: 240 seconds) |
| 06:56:12 | → | peterhil joins (~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi) |
| 06:56:22 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 245 seconds) |
| 06:59:56 | × | Neuromancer quits (~Neuromanc@user/neuromancer) (Ping timeout: 252 seconds) |
| 07:00:57 | → | chele joins (~chele@user/chele) |
| 07:00:58 | <dminuoso> | To be fair, GHC failing to compile modules without 16GiB or more RAM is not unheard of either... |
| 07:01:29 | <dminuoso> | Not sure what kind of internal GHC panics you get from that, but Im confident it's nothing pleasant. |
| 07:01:52 | <[exa]> | Axman6: lol the thing has stack? |
| 07:03:19 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 258 seconds) |
| 07:03:53 | → | hiruji joins (~hiruji@user/hiruji) |
| 07:08:22 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 07:10:22 | → | epolanski joins (uid312403@id-312403.brockwell.irccloud.com) |
| 07:11:45 | × | MQ-17J quits (~MQ-17J@8.21.10.94) (Ping timeout: 258 seconds) |
| 07:15:05 | <tomsmeding> | dminuoso: "killed by signal 11" :p |
| 07:17:01 | <Axman6> | dibblego: who knows -_- IDE says one thing, then building fails. fun times |
| 07:17:16 | <dibblego> | narrow it and send, I am up for the challenge |
| 07:17:23 | <dibblego> | (procrastinating exam study) |
| 07:17:24 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 07:18:30 | <Axman6> | Work would not be happy with that, and I wouldn't know where to start in making something unrelated to the project. it's in a library called Quill, which seems to be getting itself into an infinite loop |
| 07:19:17 | <dibblego> | find the smallest code that causes, then put in lots of type-ascriptions on that code |
| 07:20:18 | <dminuoso> | tomsmeding: wonderful. |
| 07:20:34 | × | azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 240 seconds) |
| 07:20:47 | <dminuoso> | I see the general problem that too much software is written under the assumption of inifinite unbound resources. |
| 07:21:09 | <Axman6> | well this definitely just has an infinite loop I think |
| 07:21:19 | <dminuoso> | GHC has these too! |
| 07:21:30 | × | peterhil quits (~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi) (Ping timeout: 240 seconds) |
| 07:21:52 | <dminuoso> | Who hasn't enabled UndecidableInstances before :-) |
| 07:22:18 | → | azeem joins (~azeem@176.200.220.247) |
| 07:22:44 | <dminuoso> | Or, you can trip infinite loops in the optimizer in some cases. |
| 07:22:48 | <tomsmeding> | dminuoso: to be fair, ghc not catching the out of memory condition isn't really ghc's fault on linux |
| 07:23:09 | × | azeem quits (~azeem@176.200.220.247) (Read error: Connection reset by peer) |
| 07:23:15 | <dminuoso> | tomsmeding: Isn't it? Couldn't GHC monitor it's resource usage? |
| 07:23:17 | <tomsmeding> | linux' memory system with the oom killer was designed around the assumption of infinite memory :p |
| 07:23:34 | → | azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
| 07:23:35 | <tomsmeding> | dminuoso: I believe you can't reasonably guess how much memory you can safely use |
| 07:23:58 | <tomsmeding> | there might be swap, compressed swap, zram, file caches, etc. doing their thing |
| 07:24:03 | <dminuoso> | Guess that's necessarily true on commodity multi user systems. |
| 07:24:51 | <tomsmeding> | so I'd say trying to guess the maximum amount of memory available to you, then panicing if you're going above that, is the wrong thing to do |
| 07:25:01 | <tomsmeding> | better to wait for the OS to tell you you're over your limits -- and linux doesn't :) |
| 07:25:04 | <dminuoso> | At a previous job we were writing aeronautical software, and there software was required to be very explicit in terms of time slots and memory uses. |
| 07:25:21 | <dminuoso> | It was a constraint hard real time system that would simply do a hard reboot if these were violated. |
| 07:25:29 | <dminuoso> | In comparison, the OOM killer is harmless. :p |
| 07:25:32 | <tomsmeding> | lol |
| 07:26:02 | <tomsmeding> | yeah I'm not saying you can't take a lower bound on the available memory and use that, which is the right thing to do in those circumstances I guess :) |
| 07:26:11 | <dminuoso> | In some sense this is a good thing. Consider what happens when the OOM killer has rampaged through your system |
| 07:26:13 | <tomsmeding> | wouldn't be right for ghc |
| 07:26:16 | <dminuoso> | In general you cant know the state of your system anymore |
| 07:26:19 | <tomsmeding> | true |
| 07:26:30 | <tomsmeding> | the design has significant downsides :p |
| 07:26:57 | <tomsmeding> | programmers have to handle less error conditions, and the devops get more |
| 07:30:09 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:30:15 | × | dextaa quits (~DV@aftr-37-201-214-197.unity-media.net) (Read error: Connection reset by peer) |
| 07:30:54 | → | dextaa joins (~DV@aftr-37-201-214-197.unity-media.net) |
| 07:31:59 | × | haykam1 quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
| 07:32:13 | → | haykam1 joins (~haykam@static.100.2.21.65.clients.your-server.de) |
| 07:35:58 | → | MoC joins (~moc@user/moc) |
| 07:42:01 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 07:42:24 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 07:43:40 | → | kuribas joins (~user@ptr-25vy0i8nm8p7ix7m4oi.18120a2.ip6.access.telenet.be) |
| 07:44:48 | → | pe200012 joins (~pe200012@113.105.10.33) |
| 07:45:36 | × | son0p quits (~ff@181.136.122.143) (Ping timeout: 272 seconds) |
| 07:48:56 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 07:49:04 | × | hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:50:37 | → | aman joins (~aman@user/aman) |
| 07:50:51 | → | acidjnk_new3 joins (~acidjnk@p200300d0c72b9506b4fcf3b689739a9c.dip0.t-ipconnect.de) |
| 07:51:08 | × | ozzymcduff quits (~mathieu@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection) |
| 07:55:49 | → | ozzymcduff joins (~mathieu@81-234-151-21-no94.tbcn.telia.com) |
| 07:57:20 | × | acidjnk_new3 quits (~acidjnk@p200300d0c72b9506b4fcf3b689739a9c.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 08:00:26 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 258 seconds) |
| 08:01:31 | → | hiruji joins (~hiruji@user/hiruji) |
| 08:05:18 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 08:06:11 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 258 seconds) |
| 08:06:23 | → | hendursa1 joins (~weechat@user/hendursaga) |
| 08:06:24 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 08:08:17 | × | hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
| 08:09:28 | → | hiruji joins (~hiruji@user/hiruji) |
| 08:09:30 | × | phma quits (phma@2001:5b0:210b:e008:a947:cb40:b68c:f4a9) (Read error: Connection reset by peer) |
| 08:10:19 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection) |
| 08:10:29 | → | phma joins (phma@2001:5b0:210d:cf58:911f:3237:b853:e162) |
| 08:10:34 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 08:12:58 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 08:14:11 | → | anandprabhu joins (~anandprab@94.202.243.198) |
| 08:17:18 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
| 08:17:21 | → | fendor joins (~fendor@91.141.48.200.wireless.dyn.drei.com) |
| 08:20:22 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds) |
| 08:29:09 | dragestil | is now known as dragestil-bot |
| 08:29:57 | × | anandprabhu quits (~anandprab@94.202.243.198) (Quit: Leaving) |
| 08:30:13 | dragestil-bot | is now known as dragestil |
| 08:32:18 | × | markpythonicbitc quits (~markpytho@2601:647:5a00:35:4433:c8ce:66b8:8b6e) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 08:32:20 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 08:34:19 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 08:35:28 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 08:37:50 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 252 seconds) |
| 08:43:12 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 256 seconds) |
| 08:48:50 | → | hiruji joins (~hiruji@user/hiruji) |
| 08:55:46 | → | Pickchea joins (~private@user/pickchea) |
| 08:55:59 | × | hiruji quits (~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in) |
| 08:56:25 | → | hiruji joins (~hiruji@user/hiruji) |
| 09:02:18 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 240 seconds) |
| 09:03:06 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 09:05:01 | → | hiruji joins (~hiruji@user/hiruji) |
| 09:05:15 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 09:08:36 | × | hiruji quits (~hiruji@user/hiruji) (Read error: Connection reset by peer) |
| 09:11:52 | → | hiruji joins (~hiruji@user/hiruji) |
| 09:12:02 | → | drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
| 09:16:57 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 09:18:42 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 272 seconds) |
| 09:19:01 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 258 seconds) |
| 09:20:46 | → | oxide joins (~lambda@user/oxide) |
| 09:23:46 | → | hiruji joins (~hiruji@user/hiruji) |
| 09:28:45 | × | oxide quits (~lambda@user/oxide) (Quit: oxide) |
| 09:28:50 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds) |
| 09:28:59 | → | oxide joins (~lambda@user/oxide) |
| 09:30:31 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:fb27:cb05:95c7:8c03) (Ping timeout: 258 seconds) |
| 09:30:37 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 09:33:25 | × | slavaqq quits (~slavaqq@sdmail.sdserver.cz) (Quit: Client closed) |
| 09:36:28 | → | __monty__ joins (~toonn@user/toonn) |
| 09:39:20 | × | oxide quits (~lambda@user/oxide) (Ping timeout: 258 seconds) |
| 09:40:28 | × | drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 250 seconds) |
| 09:42:11 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 09:43:19 | → | mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
| 09:44:07 | × | reumeth quits (~reumeth@user/reumeth) (Quit: reumeth) |
| 09:44:31 | <mastarija> | Can someone help me understand why Haskell thinks this piece of code is ambiguous, unless I add type application e.g. (nonempty @m)? |
| 09:44:33 | <mastarija> | https://github.com/mastarija/valor/blob/new/lib/Data/Valor.hs#L139 |
| 09:45:09 | <mastarija> | Here's the error I get: |
| 09:45:11 | <mastarija> | https://paste.tomsmeding.com/mgscfQUy |
| 09:46:35 | <mastarija> | I mean, I'd expect Haskell to understand that those two are the same "m", as there are no other instances of Check type class |
| 09:46:37 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
| 09:47:17 | <[exa]> | mastarija: any reason for the explicit `forall m` there? |
| 09:47:35 | <mastarija> | I used it in testing |
| 09:47:46 | <mastarija> | [exa], to add @m to nonempty |
| 09:47:51 | <mastarija> | forgot to remove it |
| 09:50:22 | → | oxide joins (~lambda@user/oxide) |
| 09:50:39 | <mastarija> | I mean, I understand my way of overloading isn't ideal, but I'm working on it :D |
| 09:50:54 | <[exa]> | mastarija: wild guess: add functional dependencies to the types in `Check` typeclass |
| 09:51:13 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 258 seconds) |
| 09:51:13 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 09:51:38 | <[exa]> | otherwise the "ambiguity" basically means that there's a monad appearing somewhere inside that can't be unified with the `m` that gets out of it |
| 09:51:50 | <mastarija> | [exa], I thought of that, but I'm not really sure what should depend on what |
| 09:52:02 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:52:20 | <[exa]> | nah that was a wild guess, it probably wouldn't help with ambiguity either |
| 09:52:35 | → | hiruji joins (~hiruji@user/hiruji) |
| 09:53:13 | <mastarija> | Hm... maybe I can use m1 m2 instead of just m everywhere and add m1~m2 constraint to the instance... although that's a stretch :D |
| 09:53:41 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 244 seconds) |
| 09:53:45 | <[exa]> | that should be the same by definition |
| 09:53:53 | <mastarija> | ye |
| 09:54:07 | <mastarija> | I guess I should rework my type class |
| 09:54:24 | <mastarija> | a -> b -> c is not very unifying apparently |
| 09:54:43 | <mastarija> | But it was simple |
| 09:56:30 | <[exa]> | yeah I kindof guess that it can't unify the `m` that gets out with the `m`'s it's getting from the individual checks, certainly not from just looking at the definition of typeclass |
| 09:56:41 | <[exa]> | you might wanna specialize it a bit |
| 09:56:58 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 09:56:59 | <[exa]> | now it's a typeclass basically for any 2-param functions |
| 09:57:06 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 09:57:52 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:58:05 | → | slavaqq joins (~slavaqq@sdmail.sdserver.cz) |
| 09:59:02 | <mastarija> | Yes. I have this case where I have the middle argument which can be either [v] or v, but that can happen in two other cases, so it's hard to make a more specialized type class... |
| 09:59:12 | <mastarija> | [exa], do we have something like Id on a type level? |
| 09:59:26 | <mastarija> | some type family which always return the type it was given |
| 10:00:07 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 245 seconds) |
| 10:00:19 | <mastarija> | Then I might be able to have param "t" which I could instantiate to either [] or Id |
| 10:02:58 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 10:03:47 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:07:29 | <[exa]> | mastarija: parametrize these things you want in with a type that the typeclass can send there |
| 10:07:30 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 10:09:03 | <[exa]> | eg `check :: a -> b -> c a` or so |
| 10:09:16 | <[exa]> | (type families to the rescue!) |
| 10:09:48 | <mastarija> | So I was thinking something like this: class Check m v x i e o c where check :: (v -> x) -> c (Validator m i e) -> Validator m v o |
| 10:09:58 | <mastarija> | Then I could make c either [] |
| 10:10:04 | <mastarija> | or Id |
| 10:10:10 | <[exa]> | is it really polymorphic in 7 different dimensions? |
| 10:10:21 | <mastarija> | Yes :D |
| 10:10:28 | <mastarija> | So far |
| 10:10:32 | <mastarija> | this is a working version |
| 10:10:48 | <mastarija> | But yes, now that I think about it. |
| 10:12:00 | <[exa]> | anyway yeah when you have the validator inside, it should at least typecheck |
| 10:12:07 | carbolymer_ | is now known as carbolymer |
| 10:12:14 | <mastarija> | Btw, how does one send in unapplied list type constructor? Do I just write []? |
| 10:12:25 | <[exa]> | yap |
| 10:12:36 | <[exa]> | [a] is syntax sugar for ([] a) |
| 10:12:51 | <mastarija> | Ok, cool |
| 10:13:21 | <[exa]> | (at least the last time I checked, which might have been 2008-ish) |
| 10:14:00 | → | ubert joins (~Thunderbi@91.141.45.149.wireless.dyn.drei.com) |
| 10:14:58 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 10:15:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:16:12 | → | agua_pesada joins (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) |
| 10:16:32 | <mastarija> | Damn, I thought I could do something like this: |
| 10:16:33 | <mastarija> | type family Id x where Id x = x |
| 10:16:37 | <mastarija> | class Check m v x i e o c where |
| 10:16:40 | <mastarija> | check :: (v -> x) -> c (Validator m i e) -> Validator m v o |
| 10:16:45 | <mastarija> | instance Functor m => Check m v x x e (Maybe e) Id where |
| 10:17:29 | <mastarija> | But apparently type family has to be applied before it goes inside the instance |
| 10:17:33 | <[exa]> | programming in the type system is likely not going to bring you closer to a well inferring code :D |
| 10:17:44 | <mastarija> | Who cares, I'm having fun :D |
| 10:17:59 | <[exa]> | maybe an associated type would suffice, as with `transformers` ? |
| 10:18:12 | <[exa]> | or what'sthatcalled |
| 10:18:19 | <mastarija> | Yes, but then I will have to use type application again |
| 10:18:27 | <mastarija> | If I understand you correctly |
| 10:18:50 | <mastarija> | Hm.. I'll have to rework things a bit more I guess. |
| 10:20:54 | <[exa]> | don't you want to have the monad constraint directly in the typeclass? |
| 10:21:13 | <[exa]> | it's already written as 'm' there, I'd say it would be fishy if that wasn't at least applicative |
| 10:22:54 | <mastarija> | [exa], hm... I guess |
| 10:23:08 | <mastarija> | That might actually be a good idea |
| 10:23:25 | <mastarija> | Although I always try to give the weakest possible constraint |
| 10:23:25 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 258 seconds) |
| 10:23:47 | <[exa]> | mastarija: weakest possible constraint leaves the typesystem empty handed |
| 10:24:44 | <mastarija> | [exa], not really, why limit your self to a monad if Functor is equally valid |
| 10:24:45 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:1b28:45fb:240d:9a03) |
| 10:25:05 | <[exa]> | it allows the TS to prove more stuff |
| 10:25:50 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 10:25:59 | <[exa]> | the "constraints" should be read more like "assumptions" in this sense |
| 10:26:15 | <[exa]> | btw not sure if functor will work there, you want the stuff to fail right? |
| 10:27:06 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:27:46 | × | mousey quits (~skymouse@gateway/tor-sasl/mousey) (Remote host closed the connection) |
| 10:28:03 | → | mousey joins (~skymouse@gateway/tor-sasl/mousey) |
| 10:28:42 | → | kspalaiologos joins (~kspalaiol@user/kspalaiologos) |
| 10:30:22 | → | Neuromancer joins (~Neuromanc@user/neuromancer) |
| 10:31:26 | <mastarija> | [exa], Sure, but that failure was already handled in the Validator, here I'm just transforming the input values |
| 10:32:14 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 10:32:19 | <mastarija> | Transforming a validator of some type x into a validator of a field from type v |
| 10:32:21 | <[exa]> | so Validators require at least applicatives? |
| 10:32:52 | <mastarija> | Yes |
| 10:33:01 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:33:19 | → | hiruji joins (~hiruji@user/hiruji) |
| 10:34:32 | × | ubert quits (~Thunderbi@91.141.45.149.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
| 10:36:28 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 10:38:22 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 10:38:54 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:39:08 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 10:44:07 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 10:44:38 | <[exa]> | mastarija: then it won't work if you only have functor in the typeclass right? |
| 10:44:40 | → | PinealGlandOptic joins (~PinealGla@37.115.210.35) |
| 10:45:00 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:45:34 | → | jgeerds joins (~jgeerds@55d45555.access.ecotel.net) |
| 10:46:44 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 256 seconds) |
| 10:47:31 | → | hiruji joins (~hiruji@user/hiruji) |
| 10:50:15 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 10:50:48 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:56:49 | × | dragestil_ quits (~quassel@user/dragestil) (Read error: Connection reset by peer) |
| 11:00:20 | × | michalz quits (~michalz@185.246.204.33) (Ping timeout: 256 seconds) |
| 11:06:42 | × | oxide quits (~lambda@user/oxide) (Ping timeout: 240 seconds) |
| 11:06:44 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 258 seconds) |
| 11:09:20 | → | hiruji joins (~hiruji@user/hiruji) |
| 11:09:58 | × | xff0x_ quits (~xff0x@2001:1a81:5296:aa00:31be:dd1b:a9d4:4976) (Ping timeout: 256 seconds) |
| 11:10:45 | → | xff0x_ joins (~xff0x@port-92-195-48-93.dynamic.as20676.net) |
| 11:13:52 | → | dragestil_ joins (~quassel@user/dragestil) |
| 11:16:18 | × | mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 240 seconds) |
| 11:18:24 | × | wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal) |
| 11:19:23 | → | michalz joins (~michalz@185.246.204.37) |
| 11:25:29 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 11:25:53 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 11:27:59 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 11:31:28 | → | mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
| 11:32:31 | → | Vajb joins (~Vajb@n2bovg6licdnldblt-2.v6.elisa-mobile.fi) |
| 11:32:49 | → | drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
| 11:34:07 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 11:47:32 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 272 seconds) |
| 11:48:32 | → | hiruji joins (~hiruji@user/hiruji) |
| 11:52:57 | → | ubert joins (~Thunderbi@91.141.45.149.wireless.dyn.drei.com) |
| 11:54:33 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 11:57:50 | × | pe200012 quits (~pe200012@113.105.10.33) (Remote host closed the connection) |
| 11:58:04 | × | ubert quits (~Thunderbi@91.141.45.149.wireless.dyn.drei.com) (Remote host closed the connection) |
| 11:58:16 | → | pe200012 joins (~pe200012@113.105.10.33) |
| 11:58:56 | → | oxide joins (~lambda@user/oxide) |
| 12:01:10 | × | slavaqq quits (~slavaqq@sdmail.sdserver.cz) (Ping timeout: 246 seconds) |
| 12:01:33 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds) |
| 12:02:13 | → | Pickchea joins (~private@user/pickchea) |
| 12:07:04 | → | mikoto-chan joins (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) |
| 12:07:14 | → | sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca) |
| 12:07:23 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection) |
| 12:07:29 | <guibou-> | I do have an `internal error: evacuate: strange closure type 2145043133` sometime when running a process. Sometime it is a segfault, and gdb shows a backtrace to evacuate. I can "fix" the problem by just adding a `traceShow () x` somewhere in the middle of a huge recursion (which may accumulate thunk). Is this ring a bell to someone? I'm thinking about opening an issue, but I cannot reproduce it outside |
| 12:07:31 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 12:07:35 | <guibou-> | of a proprietary codebase. |
| 12:08:52 | × | xff0x_ quits (~xff0x@port-92-195-48-93.dynamic.as20676.net) (Ping timeout: 245 seconds) |
| 12:11:32 | × | Vajb quits (~Vajb@n2bovg6licdnldblt-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer) |
| 12:12:08 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 12:13:19 | → | markpythonicbitc joins (~markpytho@2601:647:5a00:35:4433:c8ce:66b8:8b6e) |
| 12:13:45 | × | markpythonicbitc quits (~markpytho@2601:647:5a00:35:4433:c8ce:66b8:8b6e) (Client Quit) |
| 12:15:55 | <[exa]> | guibou-: pretty likely a memory corruption |
| 12:15:57 | → | xff0x_ joins (~xff0x@2001:1a81:5296:aa00:b4be:dba3:8175:6a33) |
| 12:16:43 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 12:22:51 | <guibou-> | [exa]: from my side or from GHC. Could it be a memory corruption from my side which does not appears anymore because the `traceShow` triggers different GC patterns. |
| 12:22:58 | × | oxide quits (~lambda@user/oxide) (Read error: Connection reset by peer) |
| 12:23:50 | <[exa]> | this isn't ghc process running right? |
| 12:24:15 | <[exa]> | if not, almost 100% likely from your side, or something very borderline about using the existing libraries |
| 12:24:30 | × | matijja quits (~matijja@193.77.181.201) (Quit: ZNC 1.8.1 - https://znc.in) |
| 12:24:45 | → | matijja joins (~matijja@193.77.181.201) |
| 12:24:57 | → | oxide joins (~lambda@user/oxide) |
| 12:25:34 | <guibou-> | I'll continue my research then, thank you [exa] |
| 12:26:13 | × | FragByte quits (~christian@user/fragbyte) (Quit: Quit) |
| 12:28:46 | <[exa]> | guibou-: 1] are you using any specific lowlevel stuff, anything `unsafe*` etc? 2] are the crashes predictable? |
| 12:28:55 | <[exa]> | s/predictable/replicable/ |
| 12:31:20 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 12:31:38 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 250 seconds) |
| 12:34:33 | × | hiruji quits (~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in) |
| 12:35:07 | → | hiruji joins (~hiruji@user/hiruji) |
| 12:36:32 | × | oxide quits (~lambda@user/oxide) (Ping timeout: 252 seconds) |
| 12:36:43 | <dminuoso> | guibou-: This is very hard to say. It could be that the presence of `traceShow ()` ties the hands of the simplifier and hides the bug. |
| 12:37:17 | <dminuoso> | But if its something along the lines of a misused accursedUnutterablePerformIO, then this will be very tough to find I reckon. |
| 12:37:23 | bwe_ | is now known as bwe |
| 12:37:33 | <dminuoso> | guibou-: Can you reliably reproduce the problem? |
| 12:39:29 | <guibou-> | I can reliably reproduce the problem. Everytime I ran this executable. |
| 12:40:22 | <guibou-> | And the "fix" is also perfectly reliable. I tried to inspect the "core", but it only shows that the `trace` call is there. Optimisations (if they are responsible) may happen later. |
| 12:40:35 | → | markpythonicbitc joins (~markpytho@50.228.44.6) |
| 12:40:39 | → | oxide joins (~lambda@user/oxide) |
| 12:41:03 | × | markpythonicbitc quits (~markpytho@50.228.44.6) (Client Quit) |
| 12:41:32 | <guibou-> | The code is using a bunch of unboxed vector, with certainly some unsafeWrite, so may be my fault. But the problem appears after a change which does not impact at all the "unsafe" part of the library. |
| 12:41:54 | → | FragByte joins (~christian@user/fragbyte) |
| 12:42:40 | → | chris joins (~chris@81.96.113.213) |
| 12:42:43 | chris | is now known as Guest1558 |
| 12:45:10 | <tomsmeding> | guibou-: out-of-bounds writes create pure epitome of "spooky action at a distance" |
| 12:45:21 | <tomsmeding> | so definitely inspect your unsafe writes :p |
| 12:45:32 | <[exa]> | guibou-: there as a good reason why this stuff is called "undefined behavior" :D |
| 12:46:41 | → | sczar joins (~zed@49.36.176.147) |
| 12:46:58 | <[exa]> | as a first thing I'd wrap the unsafes in something that can check the bounds and throw an error, then be easily switched off |
| 12:47:17 | → | slavaqq joins (~slavaqq@sdmail.sdserver.cz) |
| 12:47:57 | <[exa]> | Valgrind The Lifesaver probably doesn't work on the haskell stuff right? |
| 12:48:04 | <dminuoso> | [exa]: undefined behavior is not something that applies to general "out-of-bounds" writes. |
| 12:48:09 | <dminuoso> | It's a grossly misunderstood term, in fact. |
| 12:48:51 | <dminuoso> | It usually refers to semantics in the C programming language. Historically, the implied meaning of UB has changed radically. |
| 12:49:27 | <dminuoso> | An interesting related read by the way: https://www.yodaiken.com/2021/05/19/undefined-behavior-in-c-is-a-reading-error/ |
| 12:49:36 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 12:49:44 | → | markpythonicbitc joins (~markpytho@50.228.44.6) |
| 12:50:19 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 12:52:33 | <[exa]> | dminuoso: I'm using it for any spooky action at the distance now, but well yeah, you're right |
| 12:52:54 | <merijn> | guibou-: unsafeWrite will happily corrupt memory elsewhere :p |
| 12:53:04 | <merijn> | guibou-: Does it fail if you use the safe version of write? |
| 12:53:34 | <guibou-> | out-of-bounds write using a dynamic index are perfectly defined, but what it does depends on the context, the compiler, the code, ... UB appears when you explictly write with a static index which is obviously out of bounds ;) |
| 12:53:55 | <dminuoso> | guibou-: No, UB is something that happens with respect to the semantics of a particular programming language. |
| 12:54:22 | <merijn> | That, yeah |
| 12:54:28 | <guibou-> | merijn: Full disclosure: I'm just trying to help a collegue and I'm now digging in the middle of a part of the codebase that I had never seen before, so it will take a bit of time for me to relpace all the "unsafe" version of write ;) |
| 12:54:40 | <merijn> | also, UB (in C/C++ at least) retroactively invalidates the semantics of all preceding code :p |
| 12:54:46 | <merijn> | (fun times!) |
| 12:54:58 | <dminuoso> | guibou-: for instance, a memory read to an unmapped address is *very* *much* defined with respect to the linux memory model. |
| 12:55:56 | <dminuoso> | It will generate a SIGSEGV signal to the process that does the read. |
| 12:58:07 | <dminuoso> | The only "UB" I can see with an out-of-bounds access, is if your using the C backend. But if you're using native code generation, I'd say there's no "undefined behavior". |
| 12:58:28 | <dminuoso> | I'd just call it memory corruption. :-) |
| 12:58:28 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 272 seconds) |
| 12:59:09 | <guibou-> | dminuoso: yes, yes, sorry, I'm sure we are fighting with the same idea but improper (well, in my case) words ;) For example, I wanted to say that in C, reading array[offset] with offset "unknown" to the compiler is perfectly defined, it will read the value in memory at *(array + offset), and this is perfectly defined in the semantic of C, but will depends on the rest (OS, how the code was generated, ..). |
| 12:59:15 | <guibou-> | But if for example you write something such as int arr[8]; int i = 0; while(i <= 8){ arr[i] = 0; i++; } then you get undefined behavior because the compiler is authorised to replace that by an infinite loop (or anything, really ;) |
| 13:00:07 | <dminuoso> | guibou-: Give the link a read I mentioned above. :) |
| 13:00:08 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 13:00:08 | → | burnside_ joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 13:00:18 | <guibou-> | dminuoso: thank you, I will. |
| 13:00:35 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 258 seconds) |
| 13:01:07 | → | alx741 joins (~alx741@186.178.109.254) |
| 13:01:41 | → | lbseale joins (~lbseale@user/ep1ctetus) |
| 13:02:29 | → | Guest7988 joins (~Guest79@88.123.18.247) |
| 13:04:13 | → | Atum_ joins (~IRC@user/atum/x-2392232) |
| 13:05:36 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 13:08:35 | → | Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
| 13:09:20 | → | favonia joins (~favonia@user/favonia) |
| 13:10:07 | × | mikoto-chan quits (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Quit: mikoto-chan) |
| 13:10:10 | × | xff0x_ quits (~xff0x@2001:1a81:5296:aa00:b4be:dba3:8175:6a33) (Ping timeout: 258 seconds) |
| 13:10:24 | → | mikoto-chan joins (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) |
| 13:11:09 | <merijn> | guibou-: Eh, if the unknown offset is out of bounds, that is *not* defined behaviour in C |
| 13:11:09 | → | xff0x_ joins (~xff0x@2001:1a81:5296:aa00:7160:64f8:3763:f62c) |
| 13:11:20 | <[exa]> | dminuoso: wow that site is a good read |
| 13:13:44 | × | qbt quits (~edun@user/edun) (Quit: Leaving) |
| 13:17:36 | <guibou-> | merijn: Indeed, however if the offset is not "Known" at compile time, and if it cannot be infered in any way, the compiler can only assume "defined" behavior, and do the obvious "read memory at offset X". (Well, it can technically introduces a bound check and launch nuclear missiles in the out of bound case, but the point of compilers is not to generate crappy code ;). However, if the offset (or its |
| 13:17:42 | <guibou-> | domain) are known in any way, optimisations passes may (wrongly) make invalid transformations |
| 13:18:22 | <guibou-> | (and I'll finish the read proposed by dminuoso before contining this discussion ;) Both are super inetresting) |
| 13:18:35 | <merijn> | That's...not what defined behaviour means, though |
| 13:20:30 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 13:20:40 | × | burnside_ quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 13:20:40 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 13:20:57 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 13:22:09 | <guibou-> | merijn: sorry, I insisted a bit, certainly too much. I'll go back to my debuging and admit that I'm unclear about UB. ;) |
| 13:23:26 | → | burnside_ joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 13:23:26 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 13:23:48 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds) |
| 13:24:40 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8) |
| 13:24:57 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 13:28:37 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 13:28:48 | → | peterhil joins (~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi) |
| 13:28:53 | × | aman quits (~aman@user/aman) (Quit: aman) |
| 13:29:47 | → | Vajb joins (~Vajb@n2bovg6licdnldblt-2.v6.elisa-mobile.fi) |
| 13:30:45 | × | Guest7988 quits (~Guest79@88.123.18.247) (Quit: Client closed) |
| 13:30:45 | × | kuribas quits (~user@ptr-25vy0i8nm8p7ix7m4oi.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 13:32:10 | × | lbseale quits (~lbseale@user/ep1ctetus) (Quit: Leaving) |
| 13:35:34 | × | hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1) |
| 13:35:57 | <tomsmeding> | guibou-: while getting the definitions of terms like "undefined behaviour" straight is good, it ultimately distracts from trying to find your bug :p |
| 13:36:03 | → | stevenxl joins (uid133530@id-133530.highgate.irccloud.com) |
| 13:37:07 | → | hendursaga joins (~weechat@user/hendursaga) |
| 13:38:33 | × | slavaqq quits (~slavaqq@sdmail.sdserver.cz) (Quit: Client closed) |
| 13:44:32 | → | xsperry joins (~as@user/xsperry) |
| 13:47:28 | × | mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving) |
| 13:48:13 | → | slack1256 joins (~slack1256@181.203.123.157) |
| 13:50:03 | <guibou-> | And you know what? index out of bounds (6,4) ;) Ok, let's not accuse GHC of my own mistake (well, I'm happy here, I'm new on that codebase, that's not my fault, but I should have thought about this reason before accusing GHC ;) |
| 13:50:41 | → | time joins (~time@202.14.121.94) |
| 13:50:50 | <time> | hi |
| 13:51:14 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 13:52:00 | × | time quits (~time@202.14.121.94) (Remote host closed the connection) |
| 13:53:26 | → | time joins (~time@202.14.121.94) |
| 13:53:44 | × | kspalaiologos quits (~kspalaiol@user/kspalaiologos) (Quit: Leaving) |
| 13:53:50 | → | ubert joins (~Thunderbi@91.141.45.149.wireless.dyn.drei.com) |
| 13:54:17 | → | Meh joins (~Meh@202.14.121.94) |
| 13:54:40 | Meh | is now known as Guest378 |
| 13:55:27 | × | time quits (~time@202.14.121.94) (Read error: Connection reset by peer) |
| 13:55:41 | → | time joins (~time@202.14.121.94) |
| 13:57:03 | × | time quits (~time@202.14.121.94) (Read error: Connection reset by peer) |
| 13:58:29 | × | mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 252 seconds) |
| 13:59:31 | xerox | is now known as xeroxOutdoors |
| 13:59:37 | × | dajoer quits (~david@user/gvx) (Quit: leaving) |
| 13:59:42 | xeroxOutdoors | is now known as xerox |
| 14:03:04 | × | pbrisbin quits (~patrick@pool-108-52-124-197.phlapa.fios.verizon.net) (Ping timeout: 258 seconds) |
| 14:03:42 | → | amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
| 14:03:52 | → | ukari joins (~ukari@user/ukari) |
| 14:06:03 | × | Guest378 quits (~Meh@202.14.121.94) (Quit: Connection closed) |
| 14:08:16 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 14:09:02 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 14:09:03 | × | burnside_ quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 14:09:47 | → | burnside_ joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 14:09:47 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 14:11:22 | × | jgeerds quits (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 240 seconds) |
| 14:14:54 | → | slac49620 joins (~slack1256@181.203.118.140) |
| 14:15:42 | × | slac49620 quits (~slack1256@181.203.118.140) (Remote host closed the connection) |
| 14:16:56 | × | slack1256 quits (~slack1256@181.203.123.157) (Ping timeout: 250 seconds) |
| 14:17:26 | → | mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
| 14:17:55 | <mastarija> | So, why exactly is Haskell unable to unify the types in this case? |
| 14:17:59 | <mastarija> | class Eg m v x o where eg :: (v -> m x) -> v -> o |
| 14:18:02 | <mastarija> | instance Monad m => Eg m v x (m x) where eg f v = f v |
| 14:18:08 | <mastarija> | test :: forall m. Monad m => m Char |
| 14:18:11 | <mastarija> | test = eg @m (const $ return 'a') (1::Int) |
| 14:18:26 | <mastarija> | I have to explicitly write type application to unify the m |
| 14:18:38 | → | Guest25 joins (~Guest25@88.123.18.247) |
| 14:19:06 | <mastarija> | It seems like, if I have a class parameter that is composed of other class parameters, unification fails |
| 14:19:22 | × | MidAutumnHotaru quits (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge) |
| 14:19:30 | × | Cajun quits (~Cajun@user/cajun) (Quit: Client closed) |
| 14:20:03 | → | MidAutumnHotaru joins (~MidAutumn@user/midautumnmoon) |
| 14:20:48 | <[exa]> | mastarija: it's only looking at the typeclass signature, likely has no idea that it can use the instance |
| 14:20:59 | <[exa]> | (I'd do same) |
| 14:21:02 | <mastarija> | :) |
| 14:21:03 | × | sczar quits (~zed@49.36.176.147) (Read error: Connection reset by peer) |
| 14:22:43 | <[exa]> | that said, your instance may not be specific enough to actually decide that it's the one that it wants to use |
| 14:23:07 | <[exa]> | try adding a fundep like `| m v x -> o` |
| 14:24:12 | <mastarija> | [exa], hm... yes, that works |
| 14:25:16 | <mastarija> | but it's a problem in case I want to have two same o's for different m v x |
| 14:25:22 | <mastarija> | Oh well.. |
| 14:25:40 | <[exa]> | without the fundep, the typesystem needs to assume there might be additional choice of the output (not necessarily a monad, and not necessarily the original monad) |
| 14:25:41 | <merijn> | mastarija: I recommend reconsidering why this should be a class in the first place :p |
| 14:26:03 | <mastarija> | merijn, because I want it to be :P |
| 14:26:17 | × | MidAutumnHotaru quits (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge) |
| 14:26:48 | <[exa]> | mastarija: that's usually the common source of design problems in programming (much more pronounced with OOP though :D ) |
| 14:26:49 | → | MidAutumnHotaru joins (~MidAutumn@user/midautumnmoon) |
| 14:26:52 | × | Guest25 quits (~Guest25@88.123.18.247) (Quit: Client closed) |
| 14:27:20 | <mastarija> | I want stuff to work my way!!! |
| 14:27:22 | <[exa]> | mastarija: anyway, the common way is to wrap the 'o' in newtypes and make instances with that |
| 14:27:39 | <[exa]> | (disambiguates a lot) |
| 14:27:44 | <merijn> | mastarija: I recommend modifying your way to include code that is less of a hell to maintain :p |
| 14:27:58 | <mastarija> | Not satisfied with that, I'll have to think some more |
| 14:28:41 | <merijn> | I mean, without context that example class and type definition looks like the kinda code that makes me go "heh, good luck with that, I'll talk to you in 6 months when you've figured out this was a bad idea the painful way" :p |
| 14:29:18 | <mastarija> | merijn, that was just a contrived example |
| 14:29:31 | <mastarija> | I have something much worse for real usecase :D |
| 14:29:34 | <merijn> | Contrived examples give but feedback to questions :p |
| 14:29:42 | <merijn> | RIP your sanity 3 months from now |
| 14:29:44 | <[exa]> | mastarija: anyway, if a function gets `(v -> m x)` and `v`, how elase can it produce the `o` than taking it from a single place from `v`? |
| 14:30:23 | <mastarija> | It can't, I just created an example where I'm unable to unify the types |
| 14:30:23 | <[exa]> | (assuming a "normal" monad) |
| 14:30:33 | <[exa]> | ah ok |
| 14:30:35 | × | burnside_ quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection) |
| 14:30:36 | × | MidAutumnHotaru quits (~MidAutumn@user/midautumnmoon) (Client Quit) |
| 14:30:48 | <mastarija> | Question is why isn't this unifying, it's not about usefulness or sanity of the class |
| 14:30:49 | <mastarija> | :D |
| 14:31:04 | <merijn> | mastarija: Simple answer: Constraints on instances are ignored for selection |
| 14:31:23 | <merijn> | And "open world assumption" |
| 14:31:28 | <[exa]> | +1 ^ |
| 14:32:04 | <merijn> | mastarija: The fact that *currently* there is no other instance is insufficient for GHC to assume such an instance will not exist in the future, hence your choice is ambiguous |
| 14:32:09 | <mastarija> | What would that mean? That an instance can come in at a later date |
| 14:32:11 | <mastarija> | Oh.. |
| 14:32:15 | <merijn> | mastarija: Yes |
| 14:32:18 | <mastarija> | I guess I was on the right track |
| 14:32:23 | <[exa]> | mastarija: but it needs to compile at a present date :] |
| 14:32:31 | <mastarija> | Yes :) |
| 14:32:57 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 14:33:20 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Quit: FinnElija) |
| 14:33:20 | → | hexfive joins (~eric@50.35.83.177) |
| 14:33:24 | × | hexfive quits (~eric@50.35.83.177) (Client Quit) |
| 14:34:00 | → | pbrisbin joins (~patrick@50-196-56-254-static.hfc.comcastbusiness.net) |
| 14:35:23 | <[exa]> | mastarija: I see you kinda want to decide the computation by what result is expected, in that case I kinda feel the good fundep there might actually be `o -> m` |
| 14:35:55 | <[exa]> | if you want an IO action out, what else than IO stuff would you get in? |
| 14:36:05 | <mastarija> | I mean, I already got that working, but I have one final problem. |
| 14:36:07 | → | MidAutumnHotaru joins (~MidAutumn@user/midautumnmoon) |
| 14:36:37 | <mastarija> | I have this signature in my class `(v -> x) -> Validator m i e -> Validator m v o` |
| 14:36:48 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 256 seconds) |
| 14:36:57 | <mastarija> | But I so badly want to make an instance like this `(v -> x) -> [Validator m i e] -> Validator m v o` |
| 14:37:01 | <mastarija> | Alognside the first one |
| 14:37:07 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 14:37:21 | <[exa]> | functors to the rescue! |
| 14:37:26 | <mastarija> | And if I extract the second argument into the type class, then it doesn't unify e.g. (v -> x) -> stuff -> Validator m v o |
| 14:37:27 | → | notzmv joins (~zmv@user/notzmv) |
| 14:37:49 | <mastarija> | [exa], how would that help? |
| 14:38:06 | <[exa]> | say, `Traversable f => (v->x) -> f (Validator m i e) -> Validator m v o` |
| 14:38:19 | <[exa]> | which collapses to your original version with Identity |
| 14:38:43 | <mastarija> | But then I have to wrap my validator in Identity, no? |
| 14:38:49 | <[exa]> | yes |
| 14:38:59 | <[exa]> | or in [ ] |
| 14:39:02 | <mastarija> | Well, that just ain't gonna cut it :D |
| 14:39:15 | <mastarija> | Ah... I guess I give up. |
| 14:39:27 | <[exa]> | or just make a simple function like doThing1 which wraps it for you |
| 14:39:29 | <mastarija> | The first solution is ok. People can just use mconcat |
| 14:39:53 | <mastarija> | Yes, that's no problem, but I was hoping for a nice overloaded interface :) |
| 14:39:54 | × | Vajb quits (~Vajb@n2bovg6licdnldblt-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer) |
| 14:40:13 | <[exa]> | don't overoverload. :D |
| 14:40:26 | <mastarija> | Ye, I'm stopping now |
| 14:40:44 | <merijn> | Overloading is the one true way to unhappiness :p |
| 14:41:10 | <[exa]> | the more the interface is overloaded, the less stuff can be derived automatically, in turn the less happy rainbow magicks you get from the types |
| 14:41:41 | → | shriekingnoise joins (~shrieking@186.137.144.80) |
| 14:41:57 | <mastarija> | merijn, I was quite happy with my first version |
| 14:42:01 | <mastarija> | but then I wanted more |
| 14:42:11 | <[exa]> | mastarija: btw if you wanted to think about it-- it's sometimes very very very educating to just rewrite the MPTCs to prolog |
| 14:42:36 | <merijn> | It's very educating to just replace your typeclasses with datatypes/records instead :p |
| 14:42:59 | → | fef joins (~thedawn@user/thedawn) |
| 14:43:04 | <mastarija> | Yes, I did stuff like that |
| 14:43:26 | <mastarija> | then I'd have something like `check simple whatever` |
| 14:43:33 | <mastarija> | and `check array whatever` |
| 14:44:35 | <mastarija> | But then again, what's the point of having a nice high level language if you stick to the prolog capabilities |
| 14:44:45 | <mastarija> | I want more!! |
| 14:44:46 | <adamCS> | merijn: Yes! Especially the ones that don't have laws or do have laws but are not uniquely implemented on a per-type basis. |
| 14:45:07 | <merijn> | Replacing typeclasses with records of function is underrated |
| 14:45:09 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 14:45:30 | <[exa]> | (b but but they are records of functions) |
| 14:45:33 | <merijn> | Typeclass polymorphism, other than perhaps "tagless final"-style decomposition is overrated |
| 14:46:05 | <adamCS> | Nearly every time I have used typeclasses for convenience it has bitten me and nearly every time I have replaced them with something else I have ended up with something more powerful and nearly as convenient. |
| 14:46:14 | <merijn> | adamCS: Same |
| 14:46:23 | → | kuribas joins (~user@ptr-25vy0i9d6q57yj1bhvo.18120a2.ip6.access.telenet.be) |
| 14:46:41 | <merijn> | adamCS: The only thing that's really grown on me is (application/feature specific) tagless final classes, I'm appreciating those more and more |
| 14:47:02 | <merijn> | adamCS: But only if you can keep their definition very tiny and implement everything else on top of that |
| 14:47:55 | × | oxide quits (~lambda@user/oxide) (Ping timeout: 258 seconds) |
| 14:48:54 | → | oxide joins (~lambda@user/oxide) |
| 14:49:16 | <adamCS> | merijn: I've not done that, but I do appreciate that Typeclasses have their uses. And once in a while the convenience is overwhelming. But I think my stance is now that great skepticism is warranted before locking myself into a one-implementation-per-type commitment. |
| 14:49:46 | × | fendor quits (~fendor@91.141.48.200.wireless.dyn.drei.com) (Ping timeout: 240 seconds) |
| 14:50:07 | <merijn> | adamCS: Stuff like: https://github.com/merijn/Belewitte/blob/master/benchmark-analysis/src/Sql/Core.hs#L130-L148 |
| 14:50:56 | <merijn> | All my core logic for queries only uses those functions, so it's very easy to make all query-related boilerplate available in various contexts |
| 14:51:11 | <merijn> | Similar things for logging, etc. |
| 14:53:19 | <adamCS> | merijn: What makes typeclasses a better solution than records of functions there? |
| 14:53:43 | × | jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 14:53:52 | <merijn> | adamCS: Laziness :p |
| 14:54:10 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 14:54:11 | <merijn> | adamCS: If I'd use a record I'd have to carry that throughout my entire application |
| 14:54:24 | <merijn> | Which is doable, but obnoxious |
| 14:54:38 | × | ubert quits (~Thunderbi@91.141.45.149.wireless.dyn.drei.com) (Quit: ubert) |
| 14:54:43 | <adamCS> | Yeah, I get that. |
| 14:54:49 | × | drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 258 seconds) |
| 14:56:55 | → | aman joins (~aman@user/aman) |
| 14:57:27 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 14:58:41 | → | fendor joins (~fendor@178.115.49.9.wireless.dyn.drei.com) |
| 15:00:43 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
| 15:02:12 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 15:02:19 | × | jushur quits (~human@user/jushur) (Quit: ¯\_(ツ)_/¯) |
| 15:04:39 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 276 seconds) |
| 15:05:19 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 15:05:49 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 15:07:36 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 15:09:47 | → | jgeerds joins (~jgeerds@55d45555.access.ecotel.net) |
| 15:10:20 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:10:34 | × | hendursaga quits (~weechat@user/hendursaga) (Remote host closed the connection) |
| 15:10:59 | → | hendursaga joins (~weechat@user/hendursaga) |
| 15:11:56 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 15:12:58 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds) |
| 15:14:40 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 15:14:54 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 15:14:56 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection) |
| 15:15:02 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 15:21:00 | × | curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 256 seconds) |
| 15:21:24 | → | Pickchea joins (~private@user/pickchea) |
| 15:22:53 | → | vysn joins (~vysn@user/vysn) |
| 15:27:15 | → | dyeplexer joins (~dyeplexer@user/dyeplexer) |
| 15:28:35 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:1b28:45fb:240d:9a03) (Quit: WeeChat 2.8) |
| 15:40:21 | → | econo joins (uid147250@user/econo) |
| 15:41:35 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 258 seconds) |
| 15:41:38 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 15:42:03 | × | drlkf quits (~drlkf@2001:41d0:a:62bb::1) (Quit: q=) |
| 15:42:12 | → | drlkf joins (~drlkf@2001:41d0:a:62bb::1) |
| 15:43:53 | × | mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 258 seconds) |
| 15:47:20 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 15:48:25 | → | jao joins (jao@gateway/vpn/protonvpn/jao) |
| 15:51:16 | → | hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com) |
| 15:52:12 | × | meinside_ quits (uid24933@id-24933.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:56:16 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection) |
| 15:56:32 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds) |
| 15:56:45 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 15:56:48 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 15:57:24 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 16:00:35 | × | peterhil quits (~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi) (Ping timeout: 252 seconds) |
| 16:01:06 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 16:03:02 | × | ukari quits (~ukari@user/ukari) (Remote host closed the connection) |
| 16:03:02 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 272 seconds) |
| 16:03:36 | → | ukari joins (~ukari@user/ukari) |
| 16:07:20 | → | sczar joins (~zed@49.36.176.147) |
| 16:14:58 | × | azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 240 seconds) |
| 16:15:11 | × | aman quits (~aman@user/aman) (Quit: aman) |
| 16:16:18 | × | pbrisbin quits (~patrick@50-196-56-254-static.hfc.comcastbusiness.net) (Ping timeout: 240 seconds) |
| 16:17:03 | → | azeem joins (~azeem@176.200.247.52) |
| 16:17:14 | × | agua_pesada quits (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Ping timeout: 258 seconds) |
| 16:18:17 | → | son0p joins (~ff@181.136.122.143) |
| 16:22:31 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:22:31 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 16:23:45 | × | azeem quits (~azeem@176.200.247.52) (Ping timeout: 258 seconds) |
| 16:24:39 | → | azeem joins (~azeem@176.200.247.52) |
| 16:27:05 | × | kuribas quits (~user@ptr-25vy0i9d6q57yj1bhvo.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 16:27:35 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 16:28:11 | → | agua_pesada joins (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) |
| 16:31:33 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:31:36 | × | sczar quits (~zed@49.36.176.147) (Read error: Connection reset by peer) |
| 16:37:52 | → | masked joins (~masked@202.14.121.94) |
| 16:38:19 | × | azeem quits (~azeem@176.200.247.52) (Ping timeout: 258 seconds) |
| 16:38:39 | → | azeem joins (~azeem@176.200.247.52) |
| 16:40:29 | × | epolanski quits (uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
| 16:42:09 | × | masked quits (~masked@202.14.121.94) (Ping timeout: 258 seconds) |
| 16:45:52 | → | kayvank joins (~kayvank@52-119-115-185.PUBLIC.monkeybrains.net) |
| 16:46:59 | → | enoq joins (~enoq@194-208-179-35.lampert.tv) |
| 16:47:59 | × | Guest1558 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 16:48:37 | → | chris joins (~chris@81.96.113.213) |
| 16:48:42 | chris | is now known as Guest2194 |
| 16:49:26 | → | sczar joins (~zed@49.36.176.147) |
| 16:50:58 | × | shailangsa quits (~shailangs@host86-186-142-59.range86-186.btcentralplus.com) (Ping timeout: 258 seconds) |
| 16:52:53 | × | Guest2194 quits (~chris@81.96.113.213) (Ping timeout: 258 seconds) |
| 16:53:30 | → | chris joins (~chris@81.96.113.213) |
| 16:53:34 | chris | is now known as Guest1284 |
| 16:56:36 | × | Guest1284 quits (~chris@81.96.113.213) (Read error: Connection reset by peer) |
| 16:57:03 | → | chris joins (~chris@81.96.113.213) |
| 16:57:06 | chris | is now known as Guest5953 |
| 16:58:25 | × | Guest5953 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 16:59:02 | → | chris joins (~chris@81.96.113.213) |
| 16:59:05 | chris | is now known as Guest6960 |
| 16:59:28 | → | Pickchea joins (~private@user/pickchea) |
| 16:59:34 | × | sczar quits (~zed@49.36.176.147) (Read error: Connection reset by peer) |
| 16:59:39 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:02:26 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 17:02:58 | × | Guest6960 quits (~chris@81.96.113.213) (Ping timeout: 240 seconds) |
| 17:03:46 | → | berberman_ joins (~berberman@user/berberman) |
| 17:04:42 | × | berberman quits (~berberman@user/berberman) (Ping timeout: 256 seconds) |
| 17:05:27 | → | chris joins (~chris@81.96.113.213) |
| 17:05:30 | chris | is now known as Guest7075 |
| 17:06:27 | × | michalz quits (~michalz@185.246.204.37) (Remote host closed the connection) |
| 17:06:44 | × | azeem quits (~azeem@176.200.247.52) (Read error: Connection reset by peer) |
| 17:08:12 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 17:08:18 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 17:09:12 | → | azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
| 17:09:19 | → | xkuru joins (~xkuru@user/xkuru) |
| 17:09:22 | × | pe200012 quits (~pe200012@113.105.10.33) (Ping timeout: 258 seconds) |
| 17:09:45 | → | kayvank` joins (~user@52-119-115-185.PUBLIC.monkeybrains.net) |
| 17:09:45 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
| 17:10:22 | → | mattil joins (~mattilinn@87-92-27-109.bb.dnainternet.fi) |
| 17:11:33 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 17:11:48 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 272 seconds) |
| 17:12:34 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 17:13:48 | ← | kayvank` parts (~user@52-119-115-185.PUBLIC.monkeybrains.net) () |
| 17:13:52 | → | pbrisbin joins (~patrick@pool-108-52-124-197.phlapa.fios.verizon.net) |
| 17:15:17 | × | Guest7075 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 17:15:54 | → | chris joins (~chris@81.96.113.213) |
| 17:15:59 | chris | is now known as Guest9870 |
| 17:16:56 | × | Guest9870 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 17:18:42 | → | drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
| 17:19:55 | → | sczar joins (~zed@49.36.176.147) |
| 17:20:49 | × | sczar quits (~zed@49.36.176.147) (Client Quit) |
| 17:20:51 | → | dagit joins (~dagit@2601:1c2:1b7f:9fa0:459f:eccd:9a2b:f09a) |
| 17:21:44 | × | kayvank quits (~kayvank@52-119-115-185.PUBLIC.monkeybrains.net) (Quit: Client closed) |
| 17:22:38 | → | pschorf joins (~user@c-73-77-28-188.hsd1.tx.comcast.net) |
| 17:25:46 | × | azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Read error: Connection reset by peer) |
| 17:27:14 | → | shailangsa joins (~shailangs@host86-186-142-59.range86-186.btcentralplus.com) |
| 17:27:14 | → | azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
| 17:29:22 | × | pschorf quits (~user@c-73-77-28-188.hsd1.tx.comcast.net) (Remote host closed the connection) |
| 17:29:58 | → | pavonia joins (~user@user/siracusa) |
| 17:30:43 | → | peterhil joins (~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi) |
| 17:34:09 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds) |
| 17:34:21 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 17:34:39 | × | ukari quits (~ukari@user/ukari) (Remote host closed the connection) |
| 17:35:12 | → | ukari joins (~ukari@user/ukari) |
| 17:38:04 | → | moveeax joins (~moveeax@202.14.121.94) |
| 17:42:12 | × | azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 272 seconds) |
| 17:43:26 | × | mikoto-chan quits (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Read error: No route to host) |
| 17:44:01 | → | mikoto-chan joins (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) |
| 17:44:17 | → | azeem joins (~azeem@176.200.210.197) |
| 17:47:10 | → | pschorf joins (~user@c-73-77-28-188.hsd1.tx.comcast.net) |
| 17:47:17 | × | peterhil quits (~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi) (Ping timeout: 252 seconds) |
| 17:48:51 | × | azeem quits (~azeem@176.200.210.197) (Ping timeout: 258 seconds) |
| 17:51:30 | → | azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
| 17:55:31 | ← | PinealGlandOptic parts (~PinealGla@37.115.210.35) () |
| 17:59:04 | × | moveeax quits (~moveeax@202.14.121.94) (Quit: Connection closed) |
| 18:00:04 | → | slack1256 joins (~slack1256@181.203.118.140) |
| 18:01:05 | <slack1256> | Am I right in thinking that multiple functional dependencies are not supported on type families? I am working this example `type family UserFrom addresslike = userlike | userlike -> addresslike, addresslike -> userlike where`. |
| 18:01:47 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 18:03:27 | <slack1256> | Well that example is incorrect anyways. But I still want to know if multiple functional dependencies (injection constrains) are allowed on different parameters. |
| 18:03:46 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 18:04:18 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 18:04:18 | → | sheepduck joins (~sheepduck@user/sheepduck) |
| 18:05:32 | <pavonia> | You can have type families with fundeps? |
| 18:06:38 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 18:06:53 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 18:07:57 | → | Sgeo_ joins (~Sgeo@user/sgeo) |
| 18:08:00 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 18:10:31 | → | chris joins (~chris@81.96.113.213) |
| 18:10:35 | chris | is now known as Guest2623 |
| 18:11:34 | × | Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 256 seconds) |
| 18:12:45 | × | fef quits (~thedawn@user/thedawn) (Remote host closed the connection) |
| 18:12:47 | × | Guest2623 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 18:13:42 | → | mikemike joins (~acerion@176.221.121.90) |
| 18:14:10 | × | mikemike quits (~acerion@176.221.121.90) (Client Quit) |
| 18:15:40 | <geekosaur> | a\pavonia, yes, that enables you to declare injective type families |
| 18:16:39 | → | moveeax joins (~moveeax@202.14.121.94) |
| 18:17:47 | → | chris joins (~chris@81.96.113.213) |
| 18:17:51 | chris | is now known as Guest1529 |
| 18:19:07 | → | peterhil joins (~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi) |
| 18:22:29 | × | Guest1529 quits (~chris@81.96.113.213) (Ping timeout: 252 seconds) |
| 18:23:40 | × | moveeax quits (~moveeax@202.14.121.94) (Quit: Connection closed) |
| 18:25:51 | → | mikemike joins (~acerion@176.221.121.90) |
| 18:30:05 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 18:30:07 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds) |
| 18:30:11 | <Athas> | Is there an easy way to declare everything in a file NOINLINE? |
| 18:30:38 | × | peterhil quits (~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi) (Ping timeout: 258 seconds) |
| 18:31:31 | <geekosaur> | not that I'm aware of |
| 18:31:54 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 18:33:12 | <geekosaur> | aside from Big Hammers like OPTIONS_GHC -O0 |
| 18:33:41 | <Athas> | Will that even prevent other modules from inlining definitions in the affected module? |
| 18:33:43 | × | dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
| 18:33:47 | × | mikemike quits (~acerion@176.221.121.90) (Quit: leaving) |
| 18:34:32 | <geekosaur> | I think so, but that might be a question for #ghc |
| 18:38:35 | → | euandreh joins (~euandreh@2804:14c:33:9fe5:cf01:7cd6:622f:9fda) |
| 18:40:27 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 276 seconds) |
| 18:41:21 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 18:41:29 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection) |
| 18:41:36 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 18:43:45 | → | chris joins (~chris@81.96.113.213) |
| 18:43:49 | chris | is now known as Guest1164 |
| 18:44:33 | → | mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
| 18:45:05 | × | Guest1164 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 18:46:02 | × | Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 18:46:29 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 18:46:48 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
| 18:49:27 | → | chris joins (~chris@81.96.113.213) |
| 18:49:31 | chris | is now known as Guest5389 |
| 18:51:36 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 18:54:38 | × | Erutuon quits (~Erutuon@user/erutuon) (Client Quit) |
| 18:54:52 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 18:55:33 | × | xff0x_ quits (~xff0x@2001:1a81:5296:aa00:7160:64f8:3763:f62c) (Ping timeout: 258 seconds) |
| 18:55:34 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 18:56:20 | → | xff0x_ joins (~xff0x@2001:1a81:5296:aa00:d57e:94f9:9f5a:1218) |
| 18:58:08 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 19:00:59 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 19:02:50 | × | xff0x_ quits (~xff0x@2001:1a81:5296:aa00:d57e:94f9:9f5a:1218) (Ping timeout: 258 seconds) |
| 19:03:13 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
| 19:04:41 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 19:11:28 | × | nvmd quits (~nvmd@user/nvmd) (Quit: Later, nerds.) |
| 19:17:40 | → | Brumaire joins (~quassel@81-64-14-121.rev.numericable.fr) |
| 19:18:33 | × | drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 258 seconds) |
| 19:20:49 | → | burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
| 19:21:17 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 19:25:02 | × | burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 250 seconds) |
| 19:26:44 | → | drd joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 19:29:11 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 19:29:46 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 240 seconds) |
| 19:30:08 | × | mattil quits (~mattilinn@87-92-27-109.bb.dnainternet.fi) (Quit: Leaving) |
| 19:30:16 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:30:31 | → | nvmd joins (~nvmd@user/nvmd) |
| 19:34:27 | → | barzo joins (~hd@159.146.18.173) |
| 19:34:56 | → | xff0x_ joins (~xff0x@2001:1a81:5296:aa00:d57e:94f9:9f5a:1218) |
| 19:38:18 | × | oxide quits (~lambda@user/oxide) (Quit: oxide) |
| 19:41:59 | × | ukari quits (~ukari@user/ukari) (Remote host closed the connection) |
| 19:43:04 | → | ukari joins (~ukari@user/ukari) |
| 19:46:19 | → | euouae joins (~euouae@user/euouae) |
| 19:46:58 | <euouae> | Hello I’m reading the docs of cabal : https://cabal.readthedocs.io/en/3.4/installing-packages.html and section 3.2 on building and installing is not yet written |
| 19:47:14 | <euouae> | Do earlier versions of the docs have it? Or is it just missing? |
| 19:48:24 | <euouae> | Hmm I’m noticing that 3.2 has that section. Is there a reason why 3.4 doesn’t have it? |
| 19:49:59 | × | drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 258 seconds) |
| 19:53:29 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 20:01:24 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 20:01:24 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 20:01:27 | allbery_b | is now known as geekosaur |
| 20:02:38 | × | neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 258 seconds) |
| 20:03:06 | × | haykam1 quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
| 20:03:21 | → | haykam1 joins (~haykam@static.100.2.21.65.clients.your-server.de) |
| 20:04:57 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds) |
| 20:05:07 | × | juhp quits (~juhp@128.106.188.220) (Ping timeout: 268 seconds) |
| 20:06:09 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 20:07:16 | → | juhp joins (~juhp@128.106.188.220) |
| 20:07:58 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 20:11:31 | × | enoq quits (~enoq@194-208-179-35.lampert.tv) (Quit: enoq) |
| 20:15:40 | × | _0x47 quits (uid508683@id-508683.tinside.irccloud.com) (Ping timeout: 256 seconds) |
| 20:15:41 | × | agander_m_ quits (sid407952@id-407952.tinside.irccloud.com) (Ping timeout: 252 seconds) |
| 20:15:41 | × | jmct_ quits (sid160793@id-160793.tinside.irccloud.com) (Ping timeout: 252 seconds) |
| 20:15:46 | × | darxun quits (sid504814@id-504814.tinside.irccloud.com) (Ping timeout: 240 seconds) |
| 20:15:57 | × | hongminhee quits (sid295@id-295.tinside.irccloud.com) (Ping timeout: 245 seconds) |
| 20:16:03 | × | econo quits (uid147250@user/econo) (Ping timeout: 258 seconds) |
| 20:16:18 | × | glowcoil quits (sid3405@id-3405.tinside.irccloud.com) (Ping timeout: 240 seconds) |
| 20:16:36 | × | taktoa[c] quits (sid282096@id-282096.tinside.irccloud.com) (Ping timeout: 250 seconds) |
| 20:16:36 | × | jackdk quits (sid373013@cssa/jackdk) (Ping timeout: 250 seconds) |
| 20:16:48 | × | sa quits (sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 256 seconds) |
| 20:17:06 | × | hubvu quits (sid495858@id-495858.tinside.irccloud.com) (Ping timeout: 240 seconds) |
| 20:17:22 | × | typetetris quits (sid275937@id-275937.tinside.irccloud.com) (Ping timeout: 256 seconds) |
| 20:17:26 | × | bbhoss quits (sid18216@id-18216.tinside.irccloud.com) (Ping timeout: 251 seconds) |
| 20:17:56 | × | kristjansson_ quits (sid126207@id-126207.tinside.irccloud.com) (Ping timeout: 272 seconds) |
| 20:19:54 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 20:24:34 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.2) |
| 20:29:19 | × | markpythonicbitc quits (~markpytho@50.228.44.6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 20:29:19 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 20:30:57 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 20:32:11 | → | _0x47 joins (sid508683@tinside.irccloud.com) |
| 20:32:34 | → | taktoa[c] joins (sid282096@tinside.irccloud.com) |
| 20:32:45 | → | darxun joins (sid504814@tinside.irccloud.com) |
| 20:32:53 | → | glowcoil joins (sid3405@tinside.irccloud.com) |
| 20:33:07 | → | sa joins (sid1055@tinside.irccloud.com) |
| 20:34:08 | → | burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk) |
| 20:34:14 | → | markpythonicbitc joins (~markpytho@50.228.44.6) |
| 20:38:18 | × | markpythonicbitc quits (~markpytho@50.228.44.6) (Ping timeout: 240 seconds) |
| 20:38:40 | × | burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 258 seconds) |
| 20:43:05 | → | jackdk joins (sid373013@cssa/jackdk) |
| 20:45:50 | × | shailangsa quits (~shailangs@host86-186-142-59.range86-186.btcentralplus.com) () |
| 20:46:48 | × | euouae quits (~euouae@user/euouae) (Quit: Client closed) |
| 20:47:54 | → | mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
| 20:48:47 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving) |
| 20:48:47 | × | nvmd quits (~nvmd@user/nvmd) (Quit: Later, nerds.) |
| 20:50:46 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 20:53:16 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 20:53:22 | → | econo joins (uid147250@user/econo) |
| 20:53:43 | → | kristjansson_ joins (sid126207@tinside.irccloud.com) |
| 20:53:55 | → | bbhoss joins (sid18216@tinside.irccloud.com) |
| 20:54:26 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 20:56:24 | <seydar> | Ord is a class. A class defines a type. Ordering is a datatype. It is NOT an instance of the class. What is the word I should use to describe the relationship between a datatype and a class? |
| 20:56:49 | <dsal> | A class does not define a type. |
| 20:57:29 | <seydar> | How should I describe the relationship between a class and a type? |
| 20:57:30 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 20:58:08 | <dsal> | Classes specify constraints. If you have a type variable `a` then that basically means any type might be possible. A class constraint reduces the possible values of `a`. |
| 20:59:00 | <seydar> | Is this better? "Ord is a class. A class constrains a type." |
| 20:59:35 | <dsal> | It's better, but it's slightly akward. A class is a constraint. |
| 20:59:38 | → | nvmd joins (~nvmd@user/nvmd) |
| 20:59:41 | <dsal> | % :k Ord |
| 20:59:42 | <yahb> | dsal: * -> Constraint |
| 20:59:48 | <dsal> | % :k Ordering |
| 20:59:48 | <yahb> | dsal: * |
| 21:00:28 | <dsal> | % :k Ordering |
| 21:00:28 | <yahb> | dsal: Type |
| 21:00:44 | <seydar> | dsal: thank you! How would you describe the relationship between a datatype and a class? |
| 21:00:50 | <dsal> | (we used to call type `*` for some reason) |
| 21:01:12 | → | lavaman joins (~lavaman@98.38.249.169) |
| 21:01:29 | <dsal> | The way I did above, mostly. Classes are used to constrain the possible types. |
| 21:01:37 | <dsal> | % :t abs |
| 21:01:37 | <yahb> | dsal: Num a => a -> a |
| 21:02:13 | <seydar> | I guess I'm struggling in describing what Ordering is |
| 21:02:28 | <dsal> | % :t Ordering |
| 21:02:28 | <yahb> | dsal: ; <interactive>:1:1: error: Data constructor not in scope: Ordering |
| 21:02:32 | <dsal> | % :t k Ordering |
| 21:02:32 | <yahb> | dsal: ; <interactive>:1:1: error: Variable not in scope: k :: t0 -> t; <interactive>:1:3: error: Data constructor not in scope: Ordering |
| 21:02:34 | <dsal> | % :k Ordering |
| 21:02:34 | <yahb> | dsal: Type |
| 21:02:38 | <dsal> | Ordering is just a type. |
| 21:02:42 | <dsal> | % :i Ordering |
| 21:02:42 | <yahb> | dsal: type Ordering :: Type; data Ordering = LT | EQ | GT; -- Defined in `GHC.Types'; instance Eq Ordering -- Defined in `GHC.Classes'; instance Monoid Ordering -- Defined in `GHC.Base'; instance Ord Ordering -- Defined in `GHC.Classes'; instance Semigroup Ordering -- Defined in `GHC.Base'; instance Enum Ordering -- Defined in `GHC.Enum'; instance Show Ordering -- Defined in `GHC.Show'; instance Data Ordering |
| 21:02:52 | <geekosaur> | Ordering is not directly related to Ord |
| 21:03:10 | <geekosaur> | althoiugh it has an Ord instance |
| 21:03:48 | <dsal> | And `Ord` *uses* `Ordering` in `compare` |
| 21:03:54 | → | jmct_ joins (sid160793@tinside.irccloud.com) |
| 21:03:54 | → | hongminhee joins (sid295@tinside.irccloud.com) |
| 21:03:55 | → | agander_m joins (sid407952@tinside.irccloud.com) |
| 21:03:58 | <geekosaur> | types which have an Ord instance promise to have instance methods one of which happens to return Ordering |
| 21:04:16 | <dsal> | But there's nothing particularly special about it. It might be slightly confusing that `Ordering`s are orderable themselves. |
| 21:04:38 | <geekosaur> | but there's nothing in the class which requires a class member to do something like that, it's just how Ord works |
| 21:04:54 | <dsal> | % LT < GT |
| 21:04:54 | <yahb> | dsal: True |
| 21:04:54 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 21:05:08 | <dsal> | That's actually a little weird. heh |
| 21:05:14 | <seydar> | When we say that Int is an instance of the Ord class, we're saying that Int implements the constraints prescribed by Ord |
| 21:05:42 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 21:05:46 | <dsal> | I don't think we say "Int is an instance of the Ord class" -- the language is slightly backwards there. |
| 21:05:50 | <dsal> | We say "Int has an Ord instance" |
| 21:06:24 | <dsal> | But otherwise, yeah. |
| 21:06:52 | <seydar> | Ordering is just an arbitrary constructor that the Ord class uses in the implementation of `compare` because it needs to return something |
| 21:06:53 | <dsal> | The subtle difference is that "Int" doesn't do anything to "implement" the class. The instance can come from somewhere else altogether. |
| 21:07:16 | <dsal> | seydar: Yes! Some languages use int there, but that's bad for numerous reasons. |
| 21:07:18 | <seydar> | Ordering is a datatype that can be use by anyone and anything and just happens to be used by the Ord class |
| 21:07:21 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Remote host closed the connection) |
| 21:09:02 | <dsal> | Ordering also has a really useful semigroup instance such that you can append multiple orderings together in a useful way. Int can't exactly do that because what it means to append to Ints is too specific to what you're doing. |
| 21:09:13 | <dsal> | > EQ <> LT <> GT |
| 21:09:14 | <lambdabot> | LT |
| 21:10:31 | <dsal> | e.g., you couldn't do something like this if it returned an int: |
| 21:10:31 | <dsal> | > (comparing fst <> comparing snd) (0, 'c') (0, 'a') |
| 21:10:33 | <lambdabot> | GT |
| 21:11:26 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2) |
| 21:12:35 | <dsal> | But in general, you can think of the class from the consumer point of view. If I want to write a function that does some addition, I don't need to specify something concrete like an Int or whatever, I just need to specify that the type I'm operating on knows how to add to values of itself together. This lets me work with Ints or types I've never heard of. |
| 21:13:53 | <seydar> | Thank you! |
| 21:13:59 | <seydar> | This has been super helpful |
| 21:14:16 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Quit: leaving) |
| 21:14:29 | → | hubvu joins (sid495858@tinside.irccloud.com) |
| 21:18:31 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 21:19:35 | jess | is now known as j |
| 21:25:51 | × | mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving) |
| 21:26:31 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 21:26:58 | × | mikoto-chan quits (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 240 seconds) |
| 21:27:15 | → | shailangsa joins (~shailangs@host86-186-142-59.range86-186.btcentralplus.com) |
| 21:29:47 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 21:32:15 | × | MoC quits (~moc@user/moc) (Quit: Konversation terminated!) |
| 21:34:58 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 21:35:34 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds) |
| 21:37:42 | → | arkho joins (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) |
| 21:46:31 | × | Brumaire quits (~quassel@81-64-14-121.rev.numericable.fr) (Ping timeout: 258 seconds) |
| 21:57:11 | → | enoq joins (~enoq@194-208-179-35.lampert.tv) |
| 21:59:10 | × | agua_pesada quits (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Ping timeout: 258 seconds) |
| 22:00:52 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:03:36 | × | Atum_ quits (~IRC@user/atum/x-2392232) (Quit: Atum_) |
| 22:04:22 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 22:05:27 | × | Neuromancer quits (~Neuromanc@user/neuromancer) (Remote host closed the connection) |
| 22:05:40 | × | pschorf quits (~user@c-73-77-28-188.hsd1.tx.comcast.net) (Ping timeout: 272 seconds) |
| 22:08:01 | × | fendor quits (~fendor@178.115.49.9.wireless.dyn.drei.com) (Remote host closed the connection) |
| 22:12:20 | → | agua_pesada joins (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) |
| 22:14:18 | × | amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 276 seconds) |
| 22:15:09 | → | typetetris joins (sid275937@tinside.irccloud.com) |
| 22:18:20 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Quit: Quit) |
| 22:18:20 | × | xff0x_ quits (~xff0x@2001:1a81:5296:aa00:d57e:94f9:9f5a:1218) (Ping timeout: 258 seconds) |
| 22:18:34 | → | MQ-17J joins (~MQ-17J@8.21.10.94) |
| 22:19:08 | → | xff0x_ joins (~xff0x@2001:1a81:5296:aa00:8dc0:fe3f:5c9e:fa3a) |
| 22:25:07 | × | sheepduck quits (~sheepduck@user/sheepduck) (Quit: Konversation terminated!) |
| 22:25:15 | → | meinside_ joins (uid24933@id-24933.brockwell.irccloud.com) |
| 22:27:12 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 22:28:03 | × | barzo quits (~hd@159.146.18.173) (Read error: Connection reset by peer) |
| 22:30:00 | → | Guest34 joins (~Guest34@2406:3003:2006:447e:fc93:a477:b13c:4b43) |
| 22:33:07 | × | Guest34 quits (~Guest34@2406:3003:2006:447e:fc93:a477:b13c:4b43) (Client Quit) |
| 22:33:09 | × | agua_pesada quits (~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Quit: CoreIRC for Android - www.coreirc.com) |
| 22:35:26 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 22:36:41 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 22:36:42 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Client Quit) |
| 22:36:52 | wrengr | is now known as wrengr_away |
| 22:37:10 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 22:37:31 | wrengr_away | is now known as wrengr |
| 22:48:08 | × | jgeerds quits (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 252 seconds) |
| 22:48:33 | → | aman joins (~aman@user/aman) |
| 22:59:26 | → | dajoer joins (~david@user/gvx) |
| 23:05:43 | × | Nahra quits (~user@static.161.95.99.88.clients.your-server.de) (Remote host closed the connection) |
| 23:11:22 | j | is now known as jess |
| 23:14:32 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
| 23:17:56 | → | markpythonicbitc joins (~markpytho@2601:647:5a00:35:b0d1:cd6e:d590:7ec7) |
| 23:21:10 | × | Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:22:21 | × | markpythonicbitc quits (~markpytho@2601:647:5a00:35:b0d1:cd6e:d590:7ec7) (Ping timeout: 258 seconds) |
| 23:23:15 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
| 23:26:02 | × | vysn quits (~vysn@user/vysn) (Remote host closed the connection) |
| 23:26:27 | → | markpythonicbitc joins (~markpytho@2601:647:5a00:35:298a:b52c:58df:cdd4) |
| 23:27:11 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 23:34:30 | → | Nahra joins (~user@static.161.95.99.88.clients.your-server.de) |
| 23:59:09 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 258 seconds) |
| 23:59:22 | × | enoq quits (~enoq@194-208-179-35.lampert.tv) (Quit: enoq) |
All times are in UTC on 2021-08-05.