2021/08/05

2021-08-05 00:01:55 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-08-05 00:01:59 +0200Guest17(~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 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-08-05 00:11:56 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-08-05 00:12:15 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-05 00:16:42 +0200ec(~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 +0200acidjnk_new3(~acidjnk@p5487d90a.dip0.t-ipconnect.de)
2021-08-05 00:23:36 +0200acidjnk_new(~acidjnk@p200300d0c72b9506b4fcf3b689739a9c.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-08-05 00:25:43 +0200Brumaire(~quassel@81-64-14-121.rev.numericable.fr) (Quit: ran away)
2021-08-05 00:27:51 +0200Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Quit: Leaving)
2021-08-05 00:28:00 +0200ec(~ec@gateway/tor-sasl/ec)
2021-08-05 00:28:05 +0200Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com)
2021-08-05 00:28:23 +0200Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Client Quit)
2021-08-05 00:28:37 +0200Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com)
2021-08-05 00:30:02 +0200Guest17(~Guest17@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
2021-08-05 00:43:02 +0200arkho(~ccc@dynamic-acs-24-112-153-241.zoominternet.net)
2021-08-05 00:43:03 +0200cjb(~cjb@user/cjb)
2021-08-05 00:43:27 +0200acidjnk_new3(~acidjnk@p5487d90a.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-08-05 00:49:08 +0200dajoer(~david@user/gvx)
2021-08-05 00:54:18 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 252 seconds)
2021-08-05 00:55:43 +0200drd(~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 +0200oxide(~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 +0200oxide(~lambda@user/oxide)
2021-08-05 01:01:08 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-08-05 01:12:34 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-08-05 01:15:23 +0200delYsid(~user@84-115-55-45.cable.dynamic.surfer.at) (ERC (IRC client for Emacs 27.1.50))
2021-08-05 01:15:57 +0200P1RATEZ(~piratez@user/p1ratez) (Remote host closed the connection)
2021-08-05 01:18:38 +0200ec(~ec@gateway/tor-sasl/ec)
2021-08-05 01:18:58 +0200vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2021-08-05 01:19:31 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-08-05 01:25:57 +0200ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2021-08-05 01:27:39 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-08-05 01:41:28 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2021-08-05 01:44:33 +0200hexemeldlework
2021-08-05 02:00:52 +0200xsperry(~as@user/xsperry) ()
2021-08-05 02:01:05 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-08-05 02:02:50 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 250 seconds)
2021-08-05 02:05:21 +0200Guest6270(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-05 02:06:18 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
2021-08-05 02:06:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 02:08:07 +0200notzmv(~zmv@user/notzmv)
2021-08-05 02:17:53 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 252 seconds)
2021-08-05 02:19:59 +0200cjb(~cjb@user/cjb) (Ping timeout: 260 seconds)
2021-08-05 02:24:33 +0200xsperry(~as@user/xsperry)
2021-08-05 02:34:14 +0200pschorf(~user@c-73-77-28-188.hsd1.tx.comcast.net) (Ping timeout: 258 seconds)
2021-08-05 02:38:22 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds)
2021-08-05 02:40:26 +0200merijn(~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 +0200Atum_(~IRC@user/atum/x-2392232)
2021-08-05 02:52:13 +0200enoq(~enoq@194-208-179-35.lampert.tv)
2021-08-05 02:59:09 +0200xsperry(~as@user/xsperry) (Ping timeout: 258 seconds)
2021-08-05 03:14:03 +0200KeziahMasonmnrmnaugh
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 +0200Ananta-shesha(~pjetcetal@2.95.210.188)
2021-08-05 03:17:14 +0200alx741(~alx741@186.178.109.254) (Quit: alx741)
2021-08-05 03:17:31 +0200Ananta-shesha(~pjetcetal@2.95.210.188) (Remote host closed the connection)
2021-08-05 03:18:19 +0200curiousgay(~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 +0200Atum_(~IRC@user/atum/x-2392232) (Quit: Atum_)
2021-08-05 03:24:24 +0200enoq(~enoq@194-208-179-35.lampert.tv) (Quit: enoq)
2021-08-05 03:31:57 +0200retroid_(~retro@5ec19a54.skybroadband.com)
2021-08-05 03:37:31 +0200notzmv(~zmv@user/notzmv)
2021-08-05 03:44:21 +0200theproffesor(~theproffe@user/theproffesor) (Read error: Connection reset by peer)
2021-08-05 03:44:35 +0200wei2912(~wei2912@112.199.250.21)
2021-08-05 03:44:41 +0200theproffesor(~theproffe@2601:282:847f:8010::3a29)
2021-08-05 03:46:28 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-08-05 03:48:27 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 245 seconds)
2021-08-05 03:57:04 +0200notzmv(~zmv@user/notzmv)
2021-08-05 03:59:03 +0200xff0x_(~xff0x@2001:1a81:5296:aa00:31be:dd1b:a9d4:4976)
2021-08-05 03:59:59 +0200theproffesor(~theproffe@2601:282:847f:8010::3a29) (Changing host)
2021-08-05 03:59:59 +0200theproffesor(~theproffe@user/theproffesor)
2021-08-05 04:02:20 +0200xff0x(~xff0x@port-92-193-173-141.dynamic.as20676.net) (Ping timeout: 272 seconds)
2021-08-05 04:04:09 +0200brettgilio(~brettgili@45.55.53.68) (The Lounge - https://thelounge.chat)
2021-08-05 04:10:13 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-08-05 04:13:46 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-05 04:18:33 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-08-05 04:18:34 +0200FinnElijaGuest7218
2021-08-05 04:18:34 +0200Guest7218(~finn_elij@user/finn-elija/x-0085643) (Killed (erbium.libera.chat (Nickname regained by services)))
2021-08-05 04:18:34 +0200finn_elijaFinnElija
2021-08-05 04:25:01 +0200td_(~td@muedsl-82-207-238-041.citykom.de) (Ping timeout: 258 seconds)
2021-08-05 04:26:42 +0200td_(~td@94.134.91.183)
2021-08-05 04:30:34 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2021-08-05 04:34:44 +0200arahael1Arahael
2021-08-05 04:37:08 +0200derelict(~derelict@user/derelict) (Ping timeout: 256 seconds)
2021-08-05 04:37:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 04:38:29 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2021-08-05 04:38:32 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Client Quit)
2021-08-05 04:38:49 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
2021-08-05 04:39:48 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-05 04:44:13 +0200lbseale(~lbseale@user/ep1ctetus)
2021-08-05 04:45:29 +0200MQ-17J(~MQ-17J@8.6.144.192)
2021-08-05 04:45:49 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-08-05 04:47:12 +0200trufas(~trufas@177.240.218.218) (Ping timeout: 245 seconds)
2021-08-05 04:50:25 +0200lbseale(~lbseale@user/ep1ctetus) (Quit: Leaving)
2021-08-05 04:53:12 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-08-05 05:05:16 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 258 seconds)
2021-08-05 05:11:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-08-05 05:13:53 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-08-05 05:18:06 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-08-05 05:20:16 +0200ikex(~ash@user/ikex) (Quit: ZNC - https://znc.in)
2021-08-05 05:20:29 +0200ikex(ash@user/ikex)
2021-08-05 05:35:26 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-08-05 05:36:30 +0200arkho(~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Quit: Leaving)
2021-08-05 05:41:46 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-08-05 05:43:40 +0200xsperry(~as@user/xsperry)
2021-08-05 05:45:34 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
2021-08-05 05:45:54 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 258 seconds)
2021-08-05 05:48:10 +0200Cajun(~Cajun@user/cajun)
2021-08-05 05:48:58 +0200sheepduck(~sheepduck@user/sheepduck) (Ping timeout: 258 seconds)
2021-08-05 05:50:12 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-08-05 05:52:20 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-08-05 06:02:30 +0200gzj(~GZJ0X@192.243.120.171.16clouds.com)
2021-08-05 06:09:09 +0200gzj(~GZJ0X@192.243.120.171.16clouds.com) (Quit: Leaving)
2021-08-05 06:11:13 +0200xsperry(~as@user/xsperry) ()
2021-08-05 06:18:06 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
2021-08-05 06:21:33 +0200dagit(~dagit@c-24-21-226-72.hsd1.or.comcast.net) (Ping timeout: 258 seconds)
2021-08-05 06:21:54 +0200cods(~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 240 seconds)
2021-08-05 06:22:35 +0200the_proffesor(~theproffe@2601:282:847f:8010::3a29)
2021-08-05 06:23:47 +0200cods(~fred@82-65-232-44.subs.proxad.net)
2021-08-05 06:27:29 +0200berberman(~berberman@user/berberman)
2021-08-05 06:27:54 +0200berberman_(~berberman@user/berberman) (Ping timeout: 240 seconds)
2021-08-05 06:29:31 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-08-05 06:29:54 +0200slack1256(~slack1256@181.203.123.157) (Ping timeout: 272 seconds)
2021-08-05 06:31:06 +0200the_proffesor(~theproffe@2601:282:847f:8010::3a29) (Changing host)
2021-08-05 06:31:06 +0200the_proffesor(~theproffe@user/theproffesor)
2021-08-05 06:31:54 +0200jao(jao@gateway/vpn/protonvpn/jao) (Ping timeout: 258 seconds)
2021-08-05 06:47:38 +0200ishutin(~ishutin@176-241-45-166.pool.digikabel.hu)
2021-08-05 06:48:42 +0200sim590(~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 258 seconds)
2021-08-05 06:51:00 +0200ishutin_(~ishutin@92-249-150-169.static.digikabel.hu) (Ping timeout: 258 seconds)
2021-08-05 06:52:04 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 272 seconds)
2021-08-05 06:52:35 +0200michalz(~michalz@185.246.204.57)
2021-08-05 06:55:57 +0200reumeth(~reumeth@user/reumeth)
2021-08-05 06:57:17 +0200flukiluke(~flukiluke@2603:c023:c000:6c7e:8945:ad24:9113:a962)
2021-08-05 07:02:39 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 07:04:16 +0200derelict(~derelict@user/derelict)
2021-08-05 07:07:51 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 07:15:02 +0200Sgeo(~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 +0200Sgeo(~Sgeo@user/sgeo)
2021-08-05 07:17:35 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection)
2021-08-05 07:18:19 +0200the_proffesor(~theproffe@user/theproffesor) (Quit: ¯\_(ツ)_/¯)
2021-08-05 07:19:49 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
2021-08-05 07:20:01 +0200qbt(~edun@user/edun)
2021-08-05 07:21:02 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-08-05 07:21:05 +0200pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-08-05 07:21:49 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
2021-08-05 07:23:35 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 258 seconds)
2021-08-05 07:25:45 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-05 07:25:46 +0200MQ-17J(~MQ-17J@8.6.144.192) (Ping timeout: 240 seconds)
2021-08-05 07:26:03 +0200MQ-17J(~MQ-17J@8.21.10.94)
2021-08-05 07:31:25 +0200michalz(~michalz@185.246.204.57) (Remote host closed the connection)
2021-08-05 07:32:34 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-08-05 07:35:16 +0200Sgeo_(~Sgeo@user/sgeo)
2021-08-05 07:36:05 +0200michalz(~michalz@185.246.204.33)
2021-08-05 07:36:18 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-08-05 07:36:36 +0200notzmv(~zmv@user/notzmv)
2021-08-05 07:36:41 +0200favonia(~favonia@user/favonia) (Ping timeout: 258 seconds)
2021-08-05 07:38:28 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
2021-08-05 07:39:07 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-08-05 07:42:06 +0200merijn(~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 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 240 seconds)
2021-08-05 07:49:49 +0200slavaqq(~slavaqq@sdmail.sdserver.cz)
2021-08-05 07:51:10 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 08:00:32 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 245 seconds)
2021-08-05 08:01:22 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-08-05 08:02:22 +0200Sgeo_(~Sgeo@user/sgeo) (Ping timeout: 258 seconds)
2021-08-05 08:03:29 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 08:07:36 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-08-05 08:10:11 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-08-05 08:11:22 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 245 seconds)
2021-08-05 08:12:02 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 08:12:23 +0200 <dibblego> haha how's ya day m8?
2021-08-05 08:18:28 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 258 seconds)
2021-08-05 08:25:03 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-08-05 08:25:34 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2021-08-05 08:26:19 +0200Lord_of_Life_Lord_of_Life
2021-08-05 08:28:26 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-05 08:33:16 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds)
2021-08-05 08:36:06 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
2021-08-05 08:38:03 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-08-05 08:39:54 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 240 seconds)
2021-08-05 08:42:34 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-08-05 08:44:07 +0200hiruji(~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 +0200vysn(~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 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net)
2021-08-05 08:56:03 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:fb27:cb05:95c7:8c03)
2021-08-05 08:56:10 +0200oxide(~lambda@user/oxide) (Ping timeout: 240 seconds)
2021-08-05 08:56:12 +0200peterhil(~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi)
2021-08-05 08:56:22 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 245 seconds)
2021-08-05 08:59:56 +0200Neuromancer(~Neuromanc@user/neuromancer) (Ping timeout: 252 seconds)
2021-08-05 09:00:57 +0200chele(~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 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 258 seconds)
2021-08-05 09:03:53 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 09:08:22 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-08-05 09:10:22 +0200epolanski(uid312403@id-312403.brockwell.irccloud.com)
2021-08-05 09:11:45 +0200MQ-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 +0200tzh(~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 +0200azeem(~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 +0200peterhil(~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 +0200azeem(~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 +0200azeem(~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 +0200azeem(~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 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 09:30:15 +0200dextaa(~DV@aftr-37-201-214-197.unity-media.net) (Read error: Connection reset by peer)
2021-08-05 09:30:54 +0200dextaa(~DV@aftr-37-201-214-197.unity-media.net)
2021-08-05 09:31:59 +0200haykam1(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-08-05 09:32:13 +0200haykam1(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-05 09:35:58 +0200MoC(~moc@user/moc)
2021-08-05 09:42:01 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-08-05 09:42:24 +0200gehmehgeh(~user@user/gehmehgeh)
2021-08-05 09:43:40 +0200kuribas(~user@ptr-25vy0i8nm8p7ix7m4oi.18120a2.ip6.access.telenet.be)
2021-08-05 09:44:48 +0200pe200012(~pe200012@113.105.10.33)
2021-08-05 09:45:36 +0200son0p(~ff@181.136.122.143) (Ping timeout: 272 seconds)
2021-08-05 09:48:56 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-08-05 09:49:04 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-05 09:50:37 +0200aman(~aman@user/aman)
2021-08-05 09:50:51 +0200acidjnk_new3(~acidjnk@p200300d0c72b9506b4fcf3b689739a9c.dip0.t-ipconnect.de)
2021-08-05 09:51:08 +0200ozzymcduff(~mathieu@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection)
2021-08-05 09:55:49 +0200ozzymcduff(~mathieu@81-234-151-21-no94.tbcn.telia.com)
2021-08-05 09:57:20 +0200acidjnk_new3(~acidjnk@p200300d0c72b9506b4fcf3b689739a9c.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2021-08-05 10:00:26 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 258 seconds)
2021-08-05 10:01:31 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 10:05:18 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-08-05 10:06:11 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 258 seconds)
2021-08-05 10:06:23 +0200hendursa1(~weechat@user/hendursaga)
2021-08-05 10:06:24 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 10:08:17 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-08-05 10:09:28 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 10:09:30 +0200phma(phma@2001:5b0:210b:e008:a947:cb40:b68c:f4a9) (Read error: Connection reset by peer)
2021-08-05 10:10:19 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-05 10:10:29 +0200phma(phma@2001:5b0:210d:cf58:911f:3237:b853:e162)
2021-08-05 10:10:34 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-05 10:12:58 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-05 10:14:11 +0200anandprabhu(~anandprab@94.202.243.198)
2021-08-05 10:17:18 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-08-05 10:17:21 +0200fendor(~fendor@91.141.48.200.wireless.dyn.drei.com)
2021-08-05 10:20:22 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
2021-08-05 10:29:09 +0200dragestildragestil-bot
2021-08-05 10:29:57 +0200anandprabhu(~anandprab@94.202.243.198) (Quit: Leaving)
2021-08-05 10:30:13 +0200dragestil-botdragestil
2021-08-05 10:32:18 +0200markpythonicbitc(~markpytho@2601:647:5a00:35:4433:c8ce:66b8:8b6e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-08-05 10:32:20 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-05 10:34:19 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 10:35:28 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-08-05 10:37:50 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 252 seconds)
2021-08-05 10:43:12 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 256 seconds)
2021-08-05 10:48:50 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 10:55:46 +0200Pickchea(~private@user/pickchea)
2021-08-05 10:55:59 +0200hiruji(~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in)
2021-08-05 10:56:25 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 11:02:18 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 240 seconds)
2021-08-05 11:03:06 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-08-05 11:05:01 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 11:05:15 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-08-05 11:08:36 +0200hiruji(~hiruji@user/hiruji) (Read error: Connection reset by peer)
2021-08-05 11:11:52 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 11:12:02 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-08-05 11:16:57 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-05 11:18:42 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
2021-08-05 11:19:01 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 258 seconds)
2021-08-05 11:20:46 +0200oxide(~lambda@user/oxide)
2021-08-05 11:23:46 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 11:28:45 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-08-05 11:28:50 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2021-08-05 11:28:59 +0200oxide(~lambda@user/oxide)
2021-08-05 11:30:31 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:fb27:cb05:95c7:8c03) (Ping timeout: 258 seconds)
2021-08-05 11:30:37 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-08-05 11:33:25 +0200slavaqq(~slavaqq@sdmail.sdserver.cz) (Quit: Client closed)
2021-08-05 11:36:28 +0200__monty__(~toonn@user/toonn)
2021-08-05 11:39:20 +0200oxide(~lambda@user/oxide) (Ping timeout: 258 seconds)
2021-08-05 11:40:28 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 250 seconds)
2021-08-05 11:42:11 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-05 11:43:19 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr)
2021-08-05 11:44:07 +0200reumeth(~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 +0200eggplantade(~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 +0200oxide(~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 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 258 seconds)
2021-08-05 11:51:13 +0200merijn(~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 +0200merijn(~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 +0200hiruji(~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 +0200jpds(~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 +0200jpds(~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 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-05 11:57:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 11:58:05 +0200slavaqq(~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 +0200Pickchea(~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 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-05 12:03:47 +0200merijn(~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 +0200jakalx(~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 +0200carbolymer_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 +0200ubert(~Thunderbi@91.141.45.149.wireless.dyn.drei.com)
2021-08-05 12:14:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-08-05 12:15:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 12:16:12 +0200agua_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 +0200hiruji(~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 +0200lortabac(~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 +0200merijn(~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 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 12:27:46 +0200mousey(~skymouse@gateway/tor-sasl/mousey) (Remote host closed the connection)
2021-08-05 12:28:03 +0200mousey(~skymouse@gateway/tor-sasl/mousey)
2021-08-05 12:28:42 +0200kspalaiologos(~kspalaiol@user/kspalaiologos)
2021-08-05 12:30:22 +0200Neuromancer(~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 +0200merijn(~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 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 12:33:19 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 12:34:32 +0200ubert(~Thunderbi@91.141.45.149.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
2021-08-05 12:36:28 +0200jakalx(~jakalx@base.jakalx.net)
2021-08-05 12:38:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-08-05 12:38:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 12:39:08 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-08-05 12:44:07 +0200merijn(~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 +0200PinealGlandOptic(~PinealGla@37.115.210.35)
2021-08-05 12:45:00 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 12:45:34 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net)
2021-08-05 12:46:44 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 256 seconds)
2021-08-05 12:47:31 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 12:50:15 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-08-05 12:50:48 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 12:56:49 +0200dragestil_(~quassel@user/dragestil) (Read error: Connection reset by peer)
2021-08-05 13:00:20 +0200michalz(~michalz@185.246.204.33) (Ping timeout: 256 seconds)
2021-08-05 13:06:42 +0200oxide(~lambda@user/oxide) (Ping timeout: 240 seconds)
2021-08-05 13:06:44 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 258 seconds)
2021-08-05 13:09:20 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 13:09:58 +0200xff0x_(~xff0x@2001:1a81:5296:aa00:31be:dd1b:a9d4:4976) (Ping timeout: 256 seconds)
2021-08-05 13:10:45 +0200xff0x_(~xff0x@port-92-195-48-93.dynamic.as20676.net)
2021-08-05 13:13:52 +0200dragestil_(~quassel@user/dragestil)
2021-08-05 13:16:18 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 240 seconds)
2021-08-05 13:18:24 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-08-05 13:19:23 +0200michalz(~michalz@185.246.204.37)
2021-08-05 13:25:29 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-08-05 13:25:53 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-08-05 13:27:59 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-08-05 13:31:28 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr)
2021-08-05 13:32:31 +0200Vajb(~Vajb@n2bovg6licdnldblt-2.v6.elisa-mobile.fi)
2021-08-05 13:32:49 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-08-05 13:34:07 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-08-05 13:47:32 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 272 seconds)
2021-08-05 13:48:32 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 13:52:57 +0200ubert(~Thunderbi@91.141.45.149.wireless.dyn.drei.com)
2021-08-05 13:54:33 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-08-05 13:57:50 +0200pe200012(~pe200012@113.105.10.33) (Remote host closed the connection)
2021-08-05 13:58:04 +0200ubert(~Thunderbi@91.141.45.149.wireless.dyn.drei.com) (Remote host closed the connection)
2021-08-05 13:58:16 +0200pe200012(~pe200012@113.105.10.33)
2021-08-05 13:58:56 +0200oxide(~lambda@user/oxide)
2021-08-05 14:01:10 +0200slavaqq(~slavaqq@sdmail.sdserver.cz) (Ping timeout: 246 seconds)
2021-08-05 14:01:33 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds)
2021-08-05 14:02:13 +0200Pickchea(~private@user/pickchea)
2021-08-05 14:07:04 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
2021-08-05 14:07:14 +0200sim590(~simon@modemcable090.207-203-24.mc.videotron.ca)
2021-08-05 14:07:23 +0200burnsidesLlama(~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 +0200burnsidesLlama(~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 +0200xff0x_(~xff0x@port-92-195-48-93.dynamic.as20676.net) (Ping timeout: 245 seconds)
2021-08-05 14:11:32 +0200Vajb(~Vajb@n2bovg6licdnldblt-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
2021-08-05 14:12:08 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-08-05 14:13:19 +0200markpythonicbitc(~markpytho@2601:647:5a00:35:4433:c8ce:66b8:8b6e)
2021-08-05 14:13:45 +0200markpythonicbitc(~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 +0200xff0x_(~xff0x@2001:1a81:5296:aa00:b4be:dba3:8175:6a33)
2021-08-05 14:16:43 +0200MQ-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 +0200oxide(~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 +0200matijja(~matijja@193.77.181.201) (Quit: ZNC 1.8.1 - https://znc.in)
2021-08-05 14:24:45 +0200matijja(~matijja@193.77.181.201)
2021-08-05 14:24:57 +0200oxide(~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 +0200FragByte(~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 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-08-05 14:31:38 +0200Pickchea(~private@user/pickchea) (Ping timeout: 250 seconds)
2021-08-05 14:34:33 +0200hiruji(~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in)
2021-08-05 14:35:07 +0200hiruji(~hiruji@user/hiruji)
2021-08-05 14:36:32 +0200oxide(~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 +0200bwe_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 +0200markpythonicbitc(~markpytho@50.228.44.6)
2021-08-05 14:40:39 +0200oxide(~lambda@user/oxide)
2021-08-05 14:41:03 +0200markpythonicbitc(~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 +0200FragByte(~christian@user/fragbyte)
2021-08-05 14:42:40 +0200chris(~chris@81.96.113.213)
2021-08-05 14:42:43 +0200chrisGuest1558
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 +0200sczar(~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 +0200slavaqq(~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 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-08-05 14:49:44 +0200markpythonicbitc(~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 +0200Gurkenglas(~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 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-08-05 15:00:08 +0200burnside_(~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 +0200vysn(~vysn@user/vysn) (Ping timeout: 258 seconds)
2021-08-05 15:01:07 +0200alx741(~alx741@186.178.109.254)
2021-08-05 15:01:41 +0200lbseale(~lbseale@user/ep1ctetus)
2021-08-05 15:02:29 +0200Guest7988(~Guest79@88.123.18.247)
2021-08-05 15:04:13 +0200Atum_(~IRC@user/atum/x-2392232)
2021-08-05 15:05:36 +0200gehmehgeh(~user@user/gehmehgeh)
2021-08-05 15:08:35 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-08-05 15:09:20 +0200favonia(~favonia@user/favonia)
2021-08-05 15:10:07 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Quit: mikoto-chan)
2021-08-05 15:10:10 +0200xff0x_(~xff0x@2001:1a81:5296:aa00:b4be:dba3:8175:6a33) (Ping timeout: 258 seconds)
2021-08-05 15:10:24 +0200mikoto-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 +0200xff0x_(~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 +0200qbt(~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 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 15:20:40 +0200burnside_(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-08-05 15:20:40 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-08-05 15:20:57 +0200burnsidesLlama(~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 +0200burnside_(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 15:23:26 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-08-05 15:23:48 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2021-08-05 15:24:40 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8)
2021-08-05 15:24:57 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-08-05 15:28:37 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-08-05 15:28:48 +0200peterhil(~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi)
2021-08-05 15:28:53 +0200aman(~aman@user/aman) (Quit: aman)
2021-08-05 15:29:47 +0200Vajb(~Vajb@n2bovg6licdnldblt-2.v6.elisa-mobile.fi)
2021-08-05 15:30:45 +0200Guest7988(~Guest79@88.123.18.247) (Quit: Client closed)
2021-08-05 15:30:45 +0200kuribas(~user@ptr-25vy0i8nm8p7ix7m4oi.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-08-05 15:32:10 +0200lbseale(~lbseale@user/ep1ctetus) (Quit: Leaving)
2021-08-05 15:35:34 +0200hendursa1(~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 +0200stevenxl(uid133530@id-133530.highgate.irccloud.com)
2021-08-05 15:37:07 +0200hendursaga(~weechat@user/hendursaga)
2021-08-05 15:38:33 +0200slavaqq(~slavaqq@sdmail.sdserver.cz) (Quit: Client closed)
2021-08-05 15:44:32 +0200xsperry(~as@user/xsperry)
2021-08-05 15:47:28 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving)
2021-08-05 15:48:13 +0200slack1256(~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 +0200time(~time@202.14.121.94)
2021-08-05 15:50:50 +0200 <time> hi
2021-08-05 15:51:14 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-08-05 15:52:00 +0200time(~time@202.14.121.94) (Remote host closed the connection)
2021-08-05 15:53:26 +0200time(~time@202.14.121.94)
2021-08-05 15:53:44 +0200kspalaiologos(~kspalaiol@user/kspalaiologos) (Quit: Leaving)
2021-08-05 15:53:50 +0200ubert(~Thunderbi@91.141.45.149.wireless.dyn.drei.com)
2021-08-05 15:54:17 +0200Meh(~Meh@202.14.121.94)
2021-08-05 15:54:40 +0200MehGuest378
2021-08-05 15:55:27 +0200time(~time@202.14.121.94) (Read error: Connection reset by peer)
2021-08-05 15:55:41 +0200time(~time@202.14.121.94)
2021-08-05 15:57:03 +0200time(~time@202.14.121.94) (Read error: Connection reset by peer)
2021-08-05 15:58:29 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 252 seconds)
2021-08-05 15:59:31 +0200xeroxxeroxOutdoors
2021-08-05 15:59:37 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-08-05 15:59:42 +0200xeroxOutdoorsxerox
2021-08-05 16:03:04 +0200pbrisbin(~patrick@pool-108-52-124-197.phlapa.fios.verizon.net) (Ping timeout: 258 seconds)
2021-08-05 16:03:42 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-08-05 16:03:52 +0200ukari(~ukari@user/ukari)
2021-08-05 16:06:03 +0200Guest378(~Meh@202.14.121.94) (Quit: Connection closed)
2021-08-05 16:08:16 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-08-05 16:09:02 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 16:09:03 +0200burnside_(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-08-05 16:09:47 +0200burnside_(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 16:09:47 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-08-05 16:11:22 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 240 seconds)
2021-08-05 16:14:54 +0200slac49620(~slack1256@181.203.118.140)
2021-08-05 16:15:42 +0200slac49620(~slack1256@181.203.118.140) (Remote host closed the connection)
2021-08-05 16:16:56 +0200slack1256(~slack1256@181.203.123.157) (Ping timeout: 250 seconds)
2021-08-05 16:17:26 +0200mastarija(~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 +0200Guest25(~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 +0200MidAutumnHotaru(~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge)
2021-08-05 16:19:30 +0200Cajun(~Cajun@user/cajun) (Quit: Client closed)
2021-08-05 16:20:03 +0200MidAutumnHotaru(~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 +0200sczar(~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 +0200MidAutumnHotaru(~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 +0200MidAutumnHotaru(~MidAutumn@user/midautumnmoon)
2021-08-05 16:26:52 +0200Guest25(~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 +0200burnside_(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-05 16:30:36 +0200MidAutumnHotaru(~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 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-08-05 16:33:20 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Quit: FinnElija)
2021-08-05 16:33:20 +0200hexfive(~eric@50.35.83.177)
2021-08-05 16:33:24 +0200hexfive(~eric@50.35.83.177) (Client Quit)
2021-08-05 16:34:00 +0200pbrisbin(~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 +0200MidAutumnHotaru(~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 +0200waleee(~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 +0200FinnElija(~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 +0200notzmv(~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 +0200Vajb(~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 +0200shriekingnoise(~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 +0200fef(~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 +0200Vajb(~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 +0200kuribas(~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 +0200oxide(~lambda@user/oxide) (Ping timeout: 258 seconds)
2021-08-05 16:48:54 +0200oxide(~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 +0200fendor(~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 +0200jmorris(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 +0200Gurkenglas(~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 +0200ubert(~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 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 258 seconds)
2021-08-05 16:56:55 +0200aman(~aman@user/aman)
2021-08-05 16:57:27 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-08-05 16:58:41 +0200fendor(~fendor@178.115.49.9.wireless.dyn.drei.com)
2021-08-05 17:00:43 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-08-05 17:02:12 +0200Sgeo(~Sgeo@user/sgeo)
2021-08-05 17:02:19 +0200jushur(~human@user/jushur) (Quit: ¯\_(ツ)_/¯)
2021-08-05 17:04:39 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 276 seconds)
2021-08-05 17:05:19 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-05 17:05:49 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-05 17:07:36 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 17:09:47 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net)
2021-08-05 17:10:20 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-05 17:10:34 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-08-05 17:10:59 +0200hendursaga(~weechat@user/hendursaga)
2021-08-05 17:11:56 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-08-05 17:12:58 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds)
2021-08-05 17:14:40 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-05 17:14:54 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 17:14:56 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-05 17:15:02 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 17:21:00 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 256 seconds)
2021-08-05 17:21:24 +0200Pickchea(~private@user/pickchea)
2021-08-05 17:22:53 +0200vysn(~vysn@user/vysn)
2021-08-05 17:27:15 +0200dyeplexer(~dyeplexer@user/dyeplexer)
2021-08-05 17:28:35 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:1b28:45fb:240d:9a03) (Quit: WeeChat 2.8)
2021-08-05 17:40:21 +0200econo(uid147250@user/econo)
2021-08-05 17:41:35 +0200Pickchea(~private@user/pickchea) (Ping timeout: 258 seconds)
2021-08-05 17:41:38 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-08-05 17:42:03 +0200drlkf(~drlkf@2001:41d0:a:62bb::1) (Quit: q=)
2021-08-05 17:42:12 +0200drlkf(~drlkf@2001:41d0:a:62bb::1)
2021-08-05 17:43:53 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 258 seconds)
2021-08-05 17:47:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-08-05 17:48:25 +0200jao(jao@gateway/vpn/protonvpn/jao)
2021-08-05 17:51:16 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-08-05 17:52:12 +0200meinside_(uid24933@id-24933.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-05 17:56:16 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-05 17:56:32 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
2021-08-05 17:56:45 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 17:56:48 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-05 17:57:24 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-05 18:00:35 +0200peterhil(~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi) (Ping timeout: 252 seconds)
2021-08-05 18:01:06 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2021-08-05 18:03:02 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-08-05 18:03:02 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 272 seconds)
2021-08-05 18:03:36 +0200ukari(~ukari@user/ukari)
2021-08-05 18:07:20 +0200sczar(~zed@49.36.176.147)
2021-08-05 18:14:58 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 240 seconds)
2021-08-05 18:15:11 +0200aman(~aman@user/aman) (Quit: aman)
2021-08-05 18:16:18 +0200pbrisbin(~patrick@50-196-56-254-static.hfc.comcastbusiness.net) (Ping timeout: 240 seconds)
2021-08-05 18:17:03 +0200azeem(~azeem@176.200.247.52)
2021-08-05 18:17:14 +0200agua_pesada(~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Ping timeout: 258 seconds)
2021-08-05 18:18:17 +0200son0p(~ff@181.136.122.143)
2021-08-05 18:22:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 18:22:31 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-05 18:23:45 +0200azeem(~azeem@176.200.247.52) (Ping timeout: 258 seconds)
2021-08-05 18:24:39 +0200azeem(~azeem@176.200.247.52)
2021-08-05 18:27:05 +0200kuribas(~user@ptr-25vy0i9d6q57yj1bhvo.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-08-05 18:27:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-08-05 18:28:11 +0200agua_pesada(~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b)
2021-08-05 18:31:33 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-05 18:31:36 +0200sczar(~zed@49.36.176.147) (Read error: Connection reset by peer)
2021-08-05 18:37:52 +0200masked(~masked@202.14.121.94)
2021-08-05 18:38:19 +0200azeem(~azeem@176.200.247.52) (Ping timeout: 258 seconds)
2021-08-05 18:38:39 +0200azeem(~azeem@176.200.247.52)
2021-08-05 18:40:29 +0200epolanski(uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-05 18:42:09 +0200masked(~masked@202.14.121.94) (Ping timeout: 258 seconds)
2021-08-05 18:45:52 +0200kayvank(~kayvank@52-119-115-185.PUBLIC.monkeybrains.net)
2021-08-05 18:46:59 +0200enoq(~enoq@194-208-179-35.lampert.tv)
2021-08-05 18:47:59 +0200Guest1558(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-05 18:48:37 +0200chris(~chris@81.96.113.213)
2021-08-05 18:48:42 +0200chrisGuest2194
2021-08-05 18:49:26 +0200sczar(~zed@49.36.176.147)
2021-08-05 18:50:58 +0200shailangsa(~shailangs@host86-186-142-59.range86-186.btcentralplus.com) (Ping timeout: 258 seconds)
2021-08-05 18:52:53 +0200Guest2194(~chris@81.96.113.213) (Ping timeout: 258 seconds)
2021-08-05 18:53:30 +0200chris(~chris@81.96.113.213)
2021-08-05 18:53:34 +0200chrisGuest1284
2021-08-05 18:56:36 +0200Guest1284(~chris@81.96.113.213) (Read error: Connection reset by peer)
2021-08-05 18:57:03 +0200chris(~chris@81.96.113.213)
2021-08-05 18:57:06 +0200chrisGuest5953
2021-08-05 18:58:25 +0200Guest5953(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-05 18:59:02 +0200chris(~chris@81.96.113.213)
2021-08-05 18:59:05 +0200chrisGuest6960
2021-08-05 18:59:28 +0200Pickchea(~private@user/pickchea)
2021-08-05 18:59:34 +0200sczar(~zed@49.36.176.147) (Read error: Connection reset by peer)
2021-08-05 18:59:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 19:02:26 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-08-05 19:02:58 +0200Guest6960(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2021-08-05 19:03:46 +0200berberman_(~berberman@user/berberman)
2021-08-05 19:04:42 +0200berberman(~berberman@user/berberman) (Ping timeout: 256 seconds)
2021-08-05 19:05:27 +0200chris(~chris@81.96.113.213)
2021-08-05 19:05:30 +0200chrisGuest7075
2021-08-05 19:06:27 +0200michalz(~michalz@185.246.204.37) (Remote host closed the connection)
2021-08-05 19:06:44 +0200azeem(~azeem@176.200.247.52) (Read error: Connection reset by peer)
2021-08-05 19:08:12 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 19:08:18 +0200Sgeo(~Sgeo@user/sgeo)
2021-08-05 19:09:12 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
2021-08-05 19:09:19 +0200xkuru(~xkuru@user/xkuru)
2021-08-05 19:09:22 +0200pe200012(~pe200012@113.105.10.33) (Ping timeout: 258 seconds)
2021-08-05 19:09:45 +0200kayvank`(~user@52-119-115-185.PUBLIC.monkeybrains.net)
2021-08-05 19:09:45 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2021-08-05 19:10:22 +0200mattil(~mattilinn@87-92-27-109.bb.dnainternet.fi)
2021-08-05 19:11:33 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-08-05 19:11:48 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 272 seconds)
2021-08-05 19:12:34 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2021-08-05 19:13:48 +0200kayvank`(~user@52-119-115-185.PUBLIC.monkeybrains.net) ()
2021-08-05 19:13:52 +0200pbrisbin(~patrick@pool-108-52-124-197.phlapa.fios.verizon.net)
2021-08-05 19:15:17 +0200Guest7075(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-05 19:15:54 +0200chris(~chris@81.96.113.213)
2021-08-05 19:15:59 +0200chrisGuest9870
2021-08-05 19:16:56 +0200Guest9870(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-05 19:18:42 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-08-05 19:19:55 +0200sczar(~zed@49.36.176.147)
2021-08-05 19:20:49 +0200sczar(~zed@49.36.176.147) (Client Quit)
2021-08-05 19:20:51 +0200dagit(~dagit@2601:1c2:1b7f:9fa0:459f:eccd:9a2b:f09a)
2021-08-05 19:21:44 +0200kayvank(~kayvank@52-119-115-185.PUBLIC.monkeybrains.net) (Quit: Client closed)
2021-08-05 19:22:38 +0200pschorf(~user@c-73-77-28-188.hsd1.tx.comcast.net)
2021-08-05 19:25:46 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-08-05 19:27:14 +0200shailangsa(~shailangs@host86-186-142-59.range86-186.btcentralplus.com)
2021-08-05 19:27:14 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
2021-08-05 19:29:22 +0200pschorf(~user@c-73-77-28-188.hsd1.tx.comcast.net) (Remote host closed the connection)
2021-08-05 19:29:58 +0200pavonia(~user@user/siracusa)
2021-08-05 19:30:43 +0200peterhil(~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi)
2021-08-05 19:34:09 +0200merijn(~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 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-08-05 19:35:12 +0200ukari(~ukari@user/ukari)
2021-08-05 19:38:04 +0200moveeax(~moveeax@202.14.121.94)
2021-08-05 19:42:12 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 272 seconds)
2021-08-05 19:43:26 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Read error: No route to host)
2021-08-05 19:44:01 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
2021-08-05 19:44:17 +0200azeem(~azeem@176.200.210.197)
2021-08-05 19:47:10 +0200pschorf(~user@c-73-77-28-188.hsd1.tx.comcast.net)
2021-08-05 19:47:17 +0200peterhil(~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi) (Ping timeout: 252 seconds)
2021-08-05 19:48:51 +0200azeem(~azeem@176.200.210.197) (Ping timeout: 258 seconds)
2021-08-05 19:51:30 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
2021-08-05 19:55:31 +0200PinealGlandOptic(~PinealGla@37.115.210.35) ()
2021-08-05 19:59:04 +0200moveeax(~moveeax@202.14.121.94) (Quit: Connection closed)
2021-08-05 20:00:04 +0200slack1256(~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 +0200Sgeo(~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 +0200Sgeo(~Sgeo@user/sgeo)
2021-08-05 20:04:18 +0200sheepduck(~sheepduck@user/sheepduck)
2021-08-05 20:05:32 +0200 <pavonia> You can have type families with fundeps?
2021-08-05 20:06:38 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-08-05 20:06:53 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-05 20:07:57 +0200Sgeo_(~Sgeo@user/sgeo)
2021-08-05 20:08:00 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-05 20:10:31 +0200chris(~chris@81.96.113.213)
2021-08-05 20:10:35 +0200chrisGuest2623
2021-08-05 20:11:34 +0200Sgeo(~Sgeo@user/sgeo) (Ping timeout: 256 seconds)
2021-08-05 20:12:45 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-08-05 20:12:47 +0200Guest2623(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-05 20:13:42 +0200mikemike(~acerion@176.221.121.90)
2021-08-05 20:14:10 +0200mikemike(~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 +0200moveeax(~moveeax@202.14.121.94)
2021-08-05 20:17:47 +0200chris(~chris@81.96.113.213)
2021-08-05 20:17:51 +0200chrisGuest1529
2021-08-05 20:19:07 +0200peterhil(~peterhil@mobile-access-5d6aa6-103.dhcp.inet.fi)
2021-08-05 20:22:29 +0200Guest1529(~chris@81.96.113.213) (Ping timeout: 252 seconds)
2021-08-05 20:23:40 +0200moveeax(~moveeax@202.14.121.94) (Quit: Connection closed)
2021-08-05 20:25:51 +0200mikemike(~acerion@176.221.121.90)
2021-08-05 20:30:05 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 20:30:07 +0200wroathe(~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 +0200peterhil(~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 +0200waleee(~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 +0200dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-08-05 20:33:47 +0200mikemike(~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 +0200euandreh(~euandreh@2804:14c:33:9fe5:cf01:7cd6:622f:9fda)
2021-08-05 20:40:27 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 276 seconds)
2021-08-05 20:41:21 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-05 20:41:29 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-05 20:41:36 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-08-05 20:43:45 +0200chris(~chris@81.96.113.213)
2021-08-05 20:43:49 +0200chrisGuest1164
2021-08-05 20:44:33 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr)
2021-08-05 20:45:05 +0200Guest1164(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-05 20:46:02 +0200Sgeo_(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-08-05 20:46:29 +0200Sgeo(~Sgeo@user/sgeo)
2021-08-05 20:46:48 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-08-05 20:49:27 +0200chris(~chris@81.96.113.213)
2021-08-05 20:49:31 +0200chrisGuest5389
2021-08-05 20:51:36 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-05 20:54:38 +0200Erutuon(~Erutuon@user/erutuon) (Client Quit)
2021-08-05 20:54:52 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-05 20:55:33 +0200xff0x_(~xff0x@2001:1a81:5296:aa00:7160:64f8:3763:f62c) (Ping timeout: 258 seconds)
2021-08-05 20:55:34 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-05 20:56:20 +0200xff0x_(~xff0x@2001:1a81:5296:aa00:d57e:94f9:9f5a:1218)
2021-08-05 20:58:08 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-05 21:00:59 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-05 21:02:50 +0200xff0x_(~xff0x@2001:1a81:5296:aa00:d57e:94f9:9f5a:1218) (Ping timeout: 258 seconds)
2021-08-05 21:03:13 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-08-05 21:04:41 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-08-05 21:11:28 +0200nvmd(~nvmd@user/nvmd) (Quit: Later, nerds.)
2021-08-05 21:17:40 +0200Brumaire(~quassel@81-64-14-121.rev.numericable.fr)
2021-08-05 21:18:33 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 258 seconds)
2021-08-05 21:20:49 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-05 21:21:17 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-05 21:25:02 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
2021-08-05 21:26:44 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it)
2021-08-05 21:29:11 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-08-05 21:29:46 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 240 seconds)
2021-08-05 21:30:08 +0200mattil(~mattilinn@87-92-27-109.bb.dnainternet.fi) (Quit: Leaving)
2021-08-05 21:30:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-05 21:30:31 +0200nvmd(~nvmd@user/nvmd)
2021-08-05 21:34:27 +0200barzo(~hd@159.146.18.173)
2021-08-05 21:34:56 +0200xff0x_(~xff0x@2001:1a81:5296:aa00:d57e:94f9:9f5a:1218)
2021-08-05 21:38:18 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-08-05 21:41:59 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-08-05 21:43:04 +0200ukari(~ukari@user/ukari)
2021-08-05 21:46:19 +0200euouae(~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 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 258 seconds)
2021-08-05 21:53:29 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-08-05 22:01:24 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-08-05 22:01:24 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-08-05 22:01:27 +0200allbery_bgeekosaur
2021-08-05 22:02:38 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 258 seconds)
2021-08-05 22:03:06 +0200haykam1(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-08-05 22:03:21 +0200haykam1(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-05 22:04:57 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-08-05 22:05:07 +0200juhp(~juhp@128.106.188.220) (Ping timeout: 268 seconds)
2021-08-05 22:06:09 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-05 22:07:16 +0200juhp(~juhp@128.106.188.220)
2021-08-05 22:07:58 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-05 22:11:31 +0200enoq(~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 +0200agander_m_(sid407952@id-407952.tinside.irccloud.com) (Ping timeout: 252 seconds)
2021-08-05 22:15:41 +0200jmct_(sid160793@id-160793.tinside.irccloud.com) (Ping timeout: 252 seconds)
2021-08-05 22:15:46 +0200darxun(sid504814@id-504814.tinside.irccloud.com) (Ping timeout: 240 seconds)
2021-08-05 22:15:57 +0200hongminhee(sid295@id-295.tinside.irccloud.com) (Ping timeout: 245 seconds)
2021-08-05 22:16:03 +0200econo(uid147250@user/econo) (Ping timeout: 258 seconds)
2021-08-05 22:16:18 +0200glowcoil(sid3405@id-3405.tinside.irccloud.com) (Ping timeout: 240 seconds)
2021-08-05 22:16:36 +0200taktoa[c](sid282096@id-282096.tinside.irccloud.com) (Ping timeout: 250 seconds)
2021-08-05 22:16:36 +0200jackdk(sid373013@cssa/jackdk) (Ping timeout: 250 seconds)
2021-08-05 22:16:48 +0200sa(sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 256 seconds)
2021-08-05 22:17:06 +0200hubvu(sid495858@id-495858.tinside.irccloud.com) (Ping timeout: 240 seconds)
2021-08-05 22:17:22 +0200typetetris(sid275937@id-275937.tinside.irccloud.com) (Ping timeout: 256 seconds)
2021-08-05 22:17:26 +0200bbhoss(sid18216@id-18216.tinside.irccloud.com) (Ping timeout: 251 seconds)
2021-08-05 22:17:56 +0200kristjansson_(sid126207@id-126207.tinside.irccloud.com) (Ping timeout: 272 seconds)
2021-08-05 22:19:54 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-08-05 22:24:34 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.2)
2021-08-05 22:29:19 +0200markpythonicbitc(~markpytho@50.228.44.6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-08-05 22:29:19 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-08-05 22:30:57 +0200eggplantade(~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 +0200taktoa[c](sid282096@tinside.irccloud.com)
2021-08-05 22:32:45 +0200darxun(sid504814@tinside.irccloud.com)
2021-08-05 22:32:53 +0200glowcoil(sid3405@tinside.irccloud.com)
2021-08-05 22:33:07 +0200sa(sid1055@tinside.irccloud.com)
2021-08-05 22:34:08 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk)
2021-08-05 22:34:14 +0200markpythonicbitc(~markpytho@50.228.44.6)
2021-08-05 22:38:18 +0200markpythonicbitc(~markpytho@50.228.44.6) (Ping timeout: 240 seconds)
2021-08-05 22:38:40 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 258 seconds)
2021-08-05 22:43:05 +0200jackdk(sid373013@cssa/jackdk)
2021-08-05 22:45:50 +0200shailangsa(~shailangs@host86-186-142-59.range86-186.btcentralplus.com) ()
2021-08-05 22:46:48 +0200euouae(~euouae@user/euouae) (Quit: Client closed)
2021-08-05 22:47:54 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-08-05 22:48:47 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Quit: Leaving)
2021-08-05 22:48:47 +0200nvmd(~nvmd@user/nvmd) (Quit: Later, nerds.)
2021-08-05 22:50:46 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-05 22:53:16 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-05 22:53:22 +0200econo(uid147250@user/econo)
2021-08-05 22:53:43 +0200kristjansson_(sid126207@tinside.irccloud.com)
2021-08-05 22:53:55 +0200bbhoss(sid18216@tinside.irccloud.com)
2021-08-05 22:54:26 +0200seydar(~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 +0200eggplantade(~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 +0200nvmd(~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 +0200lavaman(~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 +0200jmct_(sid160793@tinside.irccloud.com)
2021-08-05 23:03:54 +0200hongminhee(sid295@tinside.irccloud.com)
2021-08-05 23:03:55 +0200agander_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 +0200eggplantade(~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 +0200norias(~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 +0200dhouthoo(~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 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Quit: leaving)
2021-08-05 23:14:29 +0200hubvu(sid495858@tinside.irccloud.com)
2021-08-05 23:18:31 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-08-05 23:19:35 +0200jessj
2021-08-05 23:25:51 +0200mastarija(~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving)
2021-08-05 23:26:31 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-05 23:26:58 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 240 seconds)
2021-08-05 23:27:15 +0200shailangsa(~shailangs@host86-186-142-59.range86-186.btcentralplus.com)
2021-08-05 23:29:47 +0200jakalx(~jakalx@base.jakalx.net)
2021-08-05 23:32:15 +0200MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-08-05 23:34:58 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-05 23:35:34 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds)
2021-08-05 23:37:42 +0200arkho(~ccc@dynamic-acs-24-112-153-241.zoominternet.net)
2021-08-05 23:46:31 +0200Brumaire(~quassel@81-64-14-121.rev.numericable.fr) (Ping timeout: 258 seconds)
2021-08-05 23:57:11 +0200enoq(~enoq@194-208-179-35.lampert.tv)
2021-08-05 23:59:10 +0200agua_pesada(~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Ping timeout: 258 seconds)