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