2021/04/06

2021-04-06 00:03:11 +0200dyamon(~dyamon@cpc69058-oxfd26-2-0-cust662.4-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-04-06 00:06:52 +0200geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-04-06 00:07:38 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 00:07:52 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-04-06 00:10:06 +0200nbloomf(~nbloomf@2600:1700:ad14:3020:71b5:c607:ffb7:22fe)
2021-04-06 00:10:41 +0200p8m_(p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 240 seconds)
2021-04-06 00:12:00 +0200p8m(p8m@gateway/vpn/protonvpn/p8m)
2021-04-06 00:13:04 +0200superstar64(6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net)
2021-04-06 00:13:04 +0200kris-krus(~kris-krus@78-56-32-39.static.zebra.lt)
2021-04-06 00:13:11 +0200Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds)
2021-04-06 00:14:09 +0200 <superstar64> are prism functors a thing? `prismMap :: Prism a b -> f a -> f b`, where `Prism a b = Prism (a -> b) (b -> Maybe a)`
2021-04-06 00:15:11 +0200hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 240 seconds)
2021-04-06 00:15:24 +0200hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2021-04-06 00:15:44 +0200 <superstar64> i just implemented this paper https://www.mathematik.uni-marburg.de/~rendel/rendel10invertible.pdf similar pattern for partial isomorphisms, but i found out you only really need prisms
2021-04-06 00:16:41 +0200geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-04-06 00:18:15 +0200DavidEichmann(~david@47.27.93.209.dyn.plus.net) (Remote host closed the connection)
2021-04-06 00:20:30 +0200ADG1089(~aditya@122.163.139.43) (Remote host closed the connection)
2021-04-06 00:21:14 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 00:21:47 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2021-04-06 00:25:28 +0200__monty__(~toonn@unaffiliated/toonn) (Quit: Not today, zaeph)
2021-04-06 00:25:43 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-04-06 00:25:57 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Remote host closed the connection)
2021-04-06 00:26:11 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds)
2021-04-06 00:28:07 +0200nbloomf(~nbloomf@2600:1700:ad14:3020:71b5:c607:ffb7:22fe) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-04-06 00:31:25 +0200tuomasi(~thom@507285D4.static.ziggozakelijk.nl)
2021-04-06 00:32:06 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-04-06 00:34:17 +0200rprije(~rprije@59-102-63-15.tpgi.com.au)
2021-04-06 00:34:51 +0200stree(~stree@68.36.8.116) (Ping timeout: 260 seconds)
2021-04-06 00:36:23 +0200tuomasi(~thom@507285D4.static.ziggozakelijk.nl) (Quit: Leaving)
2021-04-06 00:38:12 +0200nbloomf(~nbloomf@2600:1700:ad14:3020:ede4:25d6:732a:13e6)
2021-04-06 00:39:14 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.1)
2021-04-06 00:40:30 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 00:41:00 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-04-06 00:43:31 +0200neiluj(~jco@unaffiliated/neiluj) (Quit: leaving)
2021-04-06 00:44:40 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-04-06 00:45:42 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 268 seconds)
2021-04-06 00:47:59 +0200stree(~stree@68.36.8.116)
2021-04-06 00:48:01 +0200N3RGY(~N3RGY@65.141.87.122)
2021-04-06 00:50:56 +0200malumore(~malumore@151.62.127.167) (Ping timeout: 260 seconds)
2021-04-06 00:53:02 +0200royal_screwup216(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 00:56:18 +0200Guest50588(~textual@zrcout.mskcc.org) (Ping timeout: 240 seconds)
2021-04-06 00:58:17 +0200s00pcan(~chris@075-133-056-178.res.spectrum.com) (Ping timeout: 265 seconds)
2021-04-06 00:59:02 +0200 <Axma70544> % :T fmapping
2021-04-06 00:59:02 +0200 <yahb> Axma70544: unknown command ':T'; use :? for help.
2021-04-06 00:59:06 +0200Axma70544Axman6
2021-04-06 00:59:13 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 00:59:13 +0200 <Axman6> % :t fmapping
2021-04-06 00:59:13 +0200 <yahb> Axman6: ; <interactive>:1:1: error:; * Variable not in scope: fmapping; * Perhaps you meant one of these: `lmapping' (imported from Control.Lens), `mapping' (imported from Control.Lens), `rmapping' (imported from Control.Lens)
2021-04-06 00:59:19 +0200 <Axman6> % :t mapping
2021-04-06 00:59:19 +0200 <yahb> Axman6: (Functor f, Functor g) => AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
2021-04-06 00:59:26 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-04-06 00:59:50 +0200s00pcan(~chris@107.181.165.217)
2021-04-06 01:03:21 +0200mp___(mp@hell.cx) (Ping timeout: 252 seconds)
2021-04-06 01:04:02 +0200Unode(~Unode@unaffiliated/unode) (Remote host closed the connection)
2021-04-06 01:04:25 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Quit: WeeChat 3.1)
2021-04-06 01:04:27 +0200Eliel(~jojkaart@163.172.153.251) (Ping timeout: 252 seconds)
2021-04-06 01:04:35 +0200Eliel(~jojkaart@163.172.153.251)
2021-04-06 01:06:14 +0200Unode(~Unode@unaffiliated/unode)
2021-04-06 01:09:21 +0200N3RGY(~N3RGY@65.141.87.122) ()
2021-04-06 01:11:15 +0200deviantfero(~deviantfe@190.150.27.58) (Quit: WeeChat 3.1)
2021-04-06 01:11:21 +0200aenesidemus(~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net)
2021-04-06 01:11:36 +0200deviantfero(~deviantfe@190.150.27.58)
2021-04-06 01:13:27 +0200Alleria__(~textual@2603-7000-3040-0000-18fd-c638-1b22-bd1e.res6.spectrum.com)
2021-04-06 01:14:05 +0200kris-krus(~kris-krus@78-56-32-39.static.zebra.lt) (Quit: Leaving)
2021-04-06 01:14:05 +0200kristijonas(~Kristijon@78-56-32-39.static.zebra.lt) (Quit: Leaving)
2021-04-06 01:14:28 +0200kris-krus(~kris-krus@78-56-32-39.static.zebra.lt)
2021-04-06 01:14:41 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 01:14:44 +0200s00pcan(~chris@107.181.165.217) (Ping timeout: 246 seconds)
2021-04-06 01:14:57 +0200kris-krus(~kris-krus@78-56-32-39.static.zebra.lt) (Remote host closed the connection)
2021-04-06 01:15:08 +0200kristijonas(~Kristijon@78-56-32-39.static.zebra.lt)
2021-04-06 01:16:00 +0200kristijonas(~Kristijon@78-56-32-39.static.zebra.lt) (Remote host closed the connection)
2021-04-06 01:16:13 +0200kristijonas(~kristijon@78-56-32-39.static.zebra.lt)
2021-04-06 01:16:41 +0200Morrow_(~MorrowM_@147.161.9.44)
2021-04-06 01:16:42 +0200MorrowM(~MorrowM_@147.161.9.44)
2021-04-06 01:16:54 +0200s00pcan(~chris@075-133-056-178.res.spectrum.com)
2021-04-06 01:17:16 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-04-06 01:17:17 +0200MorrowM(~MorrowM_@147.161.9.44) (Client Quit)
2021-04-06 01:17:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-04-06 01:18:32 +0200lotuseater(~user@p200300e787027c008c32f0e981f17738.dip0.t-ipconnect.de) (Quit: ERC (IRC client for Emacs 27.1))
2021-04-06 01:18:41 +0200Sorny(~Sornaensi@077213203030.dynamic.telenor.dk)
2021-04-06 01:20:06 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds)
2021-04-06 01:22:27 +0200Sorna(~Sornaensi@185.192.69.50) (Ping timeout: 265 seconds)
2021-04-06 01:24:11 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-04-06 01:24:18 +0200s00pcan(~chris@075-133-056-178.res.spectrum.com) (Ping timeout: 240 seconds)
2021-04-06 01:25:17 +0200s00pcan(~chris@075-133-056-178.res.spectrum.com)
2021-04-06 01:25:39 +0200zebrag(~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-04-06 01:25:59 +0200zebrag(~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr)
2021-04-06 01:26:00 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Client Quit)
2021-04-06 01:26:23 +0200acidjnk_new(~acidjnk@p200300d0c72b95396118d8d56ee70ad6.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-04-06 01:26:31 +0200aenesidemus(~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) (Quit: Leaving)
2021-04-06 01:27:27 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Remote host closed the connection)
2021-04-06 01:27:59 +0200kristijonas(~kristijon@78-56-32-39.static.zebra.lt) (Quit: Leaving)
2021-04-06 01:28:06 +0200 <Tritlo> Is there any way to define Foldable or Traversable for non-generic structures? E.g. I have data A = A1 A A | A2 A A A | A3 A, and I want to be able to fold over A
2021-04-06 01:28:23 +0200kristijonas(~kristijon@78-56-32-39.static.zebra.lt)
2021-04-06 01:29:05 +0200kristijonas(~kristijon@78-56-32-39.static.zebra.lt) (Remote host closed the connection)
2021-04-06 01:29:17 +0200kristijonas(~kristijon@78-56-32-39.static.zebra.lt)
2021-04-06 01:30:01 +0200 <hpc> sounds like you might want it to be a semigroup?
2021-04-06 01:30:19 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-04-06 01:30:55 +0200 <infinisil> Tritlo: Check out mono-traversable
2021-04-06 01:31:22 +0200 <infinisil> It defines a common way to iterate over both things like `[a]` and `Text`
2021-04-06 01:31:51 +0200wrunt(~ajc@vmx14030.hosting24.com.au)
2021-04-06 01:32:03 +0200 <infinisil> https://hackage.haskell.org/package/mono-traversable-1.0.15.1/docs/Data-MonoTraversable.html#t:Mon…
2021-04-06 01:32:40 +0200 <Tritlo> infinisil: thanks! Exactly what I need!
2021-04-06 01:32:45 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Client Quit)
2021-04-06 01:35:26 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-04-06 01:35:46 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds)
2021-04-06 01:36:43 +0200tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com)
2021-04-06 01:38:20 +0200dinciorip(~dincio@5.170.104.221) (Quit: WeeChat 3.1)
2021-04-06 01:39:15 +0200dcbdan(~dcbdan@c-73-76-129-120.hsd1.tx.comcast.net) (Ping timeout: 260 seconds)
2021-04-06 01:39:42 +0200 <Axman6> So I noticed in the latest VS Code release notes that it seems to support notebooks (I assume python notebooks). I wonder if iHaskell could work (and also, it would be very cool if HLS had iHaskell integration)
2021-04-06 01:40:57 +0200dcbdan(~dcbdan@c-73-76-129-120.hsd1.tx.comcast.net)
2021-04-06 01:42:24 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-04-06 01:43:29 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-04-06 01:43:53 +0200royal_screwup216(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-04-06 01:43:53 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-04-06 01:44:13 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 01:44:17 +0200jakalx(~jakalx@base.jakalx.net) ("Error from remote client")
2021-04-06 01:44:21 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-04-06 01:45:15 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-04-06 01:46:58 +0200jakalx(~jakalx@base.jakalx.net)
2021-04-06 01:47:35 +0200cyphase(~cyphase@unaffiliated/cyphase) (Ping timeout: 265 seconds)
2021-04-06 01:48:03 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 01:49:02 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-04-06 01:49:03 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2021-04-06 01:50:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-04-06 01:51:19 +0200cyphase(~cyphase@unaffiliated/cyphase)
2021-04-06 01:52:51 +0200thc202(~thc202@unaffiliated/thc202) (Ping timeout: 245 seconds)
2021-04-06 01:53:38 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds)
2021-04-06 01:56:21 +0200tanner_(~tanner@216.106.138.184)
2021-04-06 01:59:19 +0200tanner_(~tanner@216.106.138.184) (Client Quit)
2021-04-06 01:59:39 +0200tanner_(~tanner@216.106.138.184)
2021-04-06 02:01:38 +0200 <edwardk> lens also offers 'each' in the case you might actually want to trade out As for Bs or some other limited subset
2021-04-06 02:01:41 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-04-06 02:02:13 +0200tanner_(~tanner@216.106.138.184) (Client Quit)
2021-04-06 02:06:37 +0200hypercube(~hypercube@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com)
2021-04-06 02:07:28 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 02:11:39 +0200 <Tritlo> edwardk: thanks!
2021-04-06 02:12:58 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds)
2021-04-06 02:13:09 +0200shailangsa(~shailangs@host86-186-177-164.range86-186.btcentralplus.com) (Ping timeout: 246 seconds)
2021-04-06 02:13:11 +0200star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
2021-04-06 02:14:15 +0200tetrahedron(hypercube@gateway/vpn/protonvpn/hypercube)
2021-04-06 02:15:31 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 02:17:03 +0200hypercube(~hypercube@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-04-06 02:20:22 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2021-04-06 02:25:39 +0200zebrag(~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-04-06 02:25:58 +0200zebrag(~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr)
2021-04-06 02:28:50 +0200olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-04-06 02:34:45 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-04-06 02:35:13 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 246 seconds)
2021-04-06 02:35:41 +0200turq(~electro@unaffiliated/turq) (Ping timeout: 240 seconds)
2021-04-06 02:35:55 +0200shailangsa(~shailangs@host86-186-177-179.range86-186.btcentralplus.com)
2021-04-06 02:36:46 +0200turq(~electro@138.197.8.173)
2021-04-06 02:38:40 +0200nbloomf(~nbloomf@2600:1700:ad14:3020:ede4:25d6:732a:13e6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-04-06 02:42:53 +0200nbloomf(~nbloomf@2600:1700:ad14:3020:ede4:25d6:732a:13e6)
2021-04-06 02:55:39 +0200ezrakilty(~ezrakilty@97-126-95-37.tukw.qwest.net)
2021-04-06 02:56:13 +0200stree(~stree@68.36.8.116) (Ping timeout: 265 seconds)
2021-04-06 02:58:44 +0200vicfred(vicfred@gateway/vpn/mullvad/vicfred)
2021-04-06 02:59:08 +0200ezrakilty(~ezrakilty@97-126-95-37.tukw.qwest.net) (Client Quit)
2021-04-06 03:00:23 +0200haasn(~nand@mpv/developer/haasn) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2021-04-06 03:00:23 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
2021-04-06 03:01:33 +0200haasn(~nand@mpv/developer/haasn)
2021-04-06 03:02:15 +0200Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-04-06 03:04:26 +0200Morrow_(~MorrowM_@147.161.9.44) (Ping timeout: 240 seconds)
2021-04-06 03:07:40 +0200hexfive(~hexfive@50.35.83.177)
2021-04-06 03:09:20 +0200stree(~stree@68.36.8.116)
2021-04-06 03:10:26 +0200bitmapper(uid464869@gateway/web/irccloud.com/x-fukzxaddseekbgyz)
2021-04-06 03:17:41 +0200minoru_shiraeesh(~shiraeesh@109.166.56.44) (Ping timeout: 240 seconds)
2021-04-06 03:18:00 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 03:21:15 +0200ddellacosta(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 03:22:23 +0200Tario(~Tario@201.192.165.173) (Ping timeout: 260 seconds)
2021-04-06 03:22:31 +0200xff0x(~xff0x@2001:1a81:523f:b000:30db:80f7:2aff:f171) (Ping timeout: 250 seconds)
2021-04-06 03:22:46 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-04-06 03:24:10 +0200Tario(~Tario@200.119.187.21)
2021-04-06 03:24:17 +0200xff0x(~xff0x@2001:1a81:5274:b300:d2ad:1716:ab64:e445)
2021-04-06 03:25:39 +0200zebrag(~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-04-06 03:25:41 +0200Morrow_(~MorrowM_@147.161.9.44)
2021-04-06 03:25:41 +0200ddellacosta(~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds)
2021-04-06 03:25:59 +0200zebrag(~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr)
2021-04-06 03:29:01 +0200rosterok(uid236576@gateway/web/irccloud.com/x-rwvwjsgikbgkbaif) (Quit: Connection closed for inactivity)
2021-04-06 03:36:06 +0200hiroaki(~hiroaki@2a02:8108:8c40:2bb8:bf0d:f77b:ccaf:dfd1) (Ping timeout: 246 seconds)
2021-04-06 03:37:49 +0200viluon(uid453725@gateway/web/irccloud.com/x-gdkvwokxpicoslby) (Quit: Connection closed for inactivity)
2021-04-06 03:37:50 +0200Tario(~Tario@200.119.187.21) (Read error: Connection reset by peer)
2021-04-06 03:38:47 +0200Tario(~Tario@201.192.165.173)
2021-04-06 03:43:13 +0200Morrow_(~MorrowM_@147.161.9.44) (Quit: Leaving)
2021-04-06 03:43:32 +0200Morrow_(~MorrowM_@147.161.9.44)
2021-04-06 03:46:00 +0200vv8(~egp_@128-71-69-136.broadband.corbina.ru) (Ping timeout: 265 seconds)
2021-04-06 03:47:27 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 265 seconds)
2021-04-06 03:47:57 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-04-06 03:49:21 +0200superstar64(6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) (Quit: Connection closed)
2021-04-06 03:50:40 +0200CMCDragonkai2(~Thunderbi@120.18.215.85)
2021-04-06 03:57:29 +0200conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-04-06 03:58:01 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
2021-04-06 03:58:20 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-04-06 03:58:22 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 03:58:24 +0200stree(~stree@68.36.8.116) (Quit: Caught exception)
2021-04-06 03:58:46 +0200stree(~stree@68.36.8.116)
2021-04-06 03:59:28 +0200Alleria_(~AllahuAkb@2603-7000-3040-0000-e074-3699-e1b9-39a2.res6.spectrum.com) (Remote host closed the connection)
2021-04-06 04:01:43 +0200conal(~conal@64.71.133.70)
2021-04-06 04:06:25 +0200zebrag(~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-04-06 04:06:55 +0200juri__(~juri@79.140.114.222)
2021-04-06 04:08:44 +0200urodna_(~urodna@unaffiliated/urodna) (Quit: urodna_)
2021-04-06 04:09:41 +0200juri_(~juri@79.140.122.136) (Ping timeout: 240 seconds)
2021-04-06 04:10:37 +0200drbean_(~drbean@TC210-63-209-214.static.apol.com.tw)
2021-04-06 04:21:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-04-06 04:22:04 +0200star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-04-06 04:26:41 +0200carlomagno(~cararell@148.87.23.11) (Quit: Leaving.)
2021-04-06 04:27:05 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 268 seconds)
2021-04-06 04:37:04 +0200rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-04-06 04:46:25 +0200Morrow_(~MorrowM_@147.161.9.44) (Ping timeout: 260 seconds)
2021-04-06 04:48:26 +0200esp32_prog(~esp32_pro@91.193.4.202) (Ping timeout: 240 seconds)
2021-04-06 04:50:02 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Remote host closed the connection)
2021-04-06 04:52:08 +0200aerona(~aerona@2600:6c54:4600:f300:3cfc:ae1:3be3:38e1) (Remote host closed the connection)
2021-04-06 04:52:12 +0200rajivr(uid269651@gateway/web/irccloud.com/x-capllcjtsollkkrc)
2021-04-06 04:53:09 +0200gnumonic(~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net)
2021-04-06 04:53:14 +0200rdivyanshu(uid322626@gateway/web/irccloud.com/x-zbthekzvhrqpupmy)
2021-04-06 04:53:20 +0200solvr(57e3c46d@87.227.196.109)
2021-04-06 04:54:19 +0200theDon(~td@muedsl-82-207-238-169.citykom.de) (Ping timeout: 260 seconds)
2021-04-06 04:56:02 +0200theDon(~td@94.134.91.185)
2021-04-06 04:57:44 +0200FinnElija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
2021-04-06 04:57:44 +0200finn_elijaGuest60184
2021-04-06 04:57:44 +0200FinnElijafinn_elija
2021-04-06 04:59:52 +0200ddellacosta(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 05:01:09 +0200Guest60184(~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 240 seconds)
2021-04-06 05:05:23 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 246 seconds)
2021-04-06 05:05:56 +0200ddellacosta(~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 268 seconds)
2021-04-06 05:06:20 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-04-06 05:08:39 +0200sagax(~sagax_nb@213.138.71.146) (Quit: Konversation terminated!)
2021-04-06 05:08:53 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Client Quit)
2021-04-06 05:16:00 +0200Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-04-06 05:16:15 +0200Tario(~Tario@201.192.165.173)
2021-04-06 05:18:50 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 05:20:45 +0200kum0(~kumo@139.180.144.166)
2021-04-06 05:24:25 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 268 seconds)
2021-04-06 05:25:21 +0200solvr(57e3c46d@87.227.196.109) (Quit: Connection closed)
2021-04-06 05:37:14 +0200cake_eater(~kiweun@2607:fea8:2a62:9600:9db9:9a23:8a1e:6f8c) (Remote host closed the connection)
2021-04-06 05:37:30 +0200zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-04-06 05:39:34 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-04-06 05:40:03 +0200Hellaenergy(~Hellaener@178.239.168.171) (Remote host closed the connection)
2021-04-06 05:45:11 +0200ba(bandali@fsf/emeritus/bandali) (Quit: ZNC - https://znc.in)
2021-04-06 05:47:36 +0200vv8(~egp_@128-71-69-136.broadband.corbina.ru)
2021-04-06 05:51:23 +0200esp32_prog(~esp32_pro@91.193.4.202)
2021-04-06 05:55:45 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 05:55:50 +0200sankarshan(~sankarsha@185.204.1.185)
2021-04-06 06:00:15 +0200SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2021-04-06 06:00:48 +0200SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2021-04-06 06:06:41 +0200stree(~stree@68.36.8.116) (Ping timeout: 240 seconds)
2021-04-06 06:15:31 +0200raym(~ray@115.187.32.14)
2021-04-06 06:18:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-04-06 06:20:03 +0200stree(~stree@68.36.8.116)
2021-04-06 06:24:46 +0200frozenErebus(~frozenEre@37.231.244.249)
2021-04-06 06:27:25 +0200ddellacosta(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 06:31:54 +0200ddellacosta(~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 260 seconds)
2021-04-06 06:33:12 +0200irc_user(uid423822@gateway/web/irccloud.com/x-qgihnlrmtbcmmifd)
2021-04-06 06:34:27 +0200irc_user(uid423822@gateway/web/irccloud.com/x-qgihnlrmtbcmmifd) ()
2021-04-06 06:42:16 +0200 <koz_> What's a good way to generate a ByteArray inside a quasi-quoter?
2021-04-06 06:42:23 +0200 <koz_> ByteArray# is fine too.
2021-04-06 06:42:25 +0200conal(~conal@64.71.133.70) (Ping timeout: 265 seconds)
2021-04-06 06:43:32 +0200minoru_shiraeesh(~shiraeesh@109.166.56.44)
2021-04-06 06:43:42 +0200jakalx(~jakalx@base.jakalx.net) ("Error from remote client")
2021-04-06 06:49:48 +0200jakalx(~jakalx@base.jakalx.net)
2021-04-06 06:52:18 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-04-06 06:54:56 +0200berberman(~berberman@unaffiliated/berberman)
2021-04-06 06:55:49 +0200berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 245 seconds)
2021-04-06 06:56:46 +0200Benett(~Benett@unaffiliated/benett) (Remote host closed the connection)
2021-04-06 06:59:19 +0200rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2021-04-06 07:00:05 +0200mp___(mp@hell.cx)
2021-04-06 07:06:01 +0200gnumonic(~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2021-04-06 07:09:47 +0200Benett(~Benett@unaffiliated/benett)
2021-04-06 07:12:27 +0200Alleria__(~textual@2603-7000-3040-0000-18fd-c638-1b22-bd1e.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-04-06 07:12:46 +0200Alleria(~textual@2603-7000-3040-0000-e045-d645-2e21-7cec.res6.spectrum.com)
2021-04-06 07:13:11 +0200AlleriaGuest66883
2021-04-06 07:13:47 +0200emmanuel_erc(~user@cpe-74-71-106-64.nyc.res.rr.com)
2021-04-06 07:16:28 +0200plutoniix(~q@node-ukd.pool-125-24.dynamic.totinternet.net) (Quit: Leaving)
2021-04-06 07:17:27 +0200sankarshan(~sankarsha@185.204.1.185) (Remote host closed the connection)
2021-04-06 07:17:31 +0200v01d4lph4(~v01d4lph4@223.177.184.123)
2021-04-06 07:17:50 +0200v01d4lph4(~v01d4lph4@223.177.184.123) (Remote host closed the connection)
2021-04-06 07:18:10 +0200v01d4lph4(~v01d4lph4@223.177.184.123)
2021-04-06 07:18:19 +0200v01d4lph4(~v01d4lph4@223.177.184.123) (Remote host closed the connection)
2021-04-06 07:18:59 +0200v01d4lph4(~v01d4lph4@223.177.184.123)
2021-04-06 07:19:39 +0200v01d4lph4(~v01d4lph4@223.177.184.123) (Remote host closed the connection)
2021-04-06 07:19:54 +0200v01d4lph4(~v01d4lph4@223.177.184.123)
2021-04-06 07:19:55 +0200dougsko(~dougsko@139.28.218.148)
2021-04-06 07:19:57 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 07:22:34 +0200v01d4lph4(~v01d4lph4@223.177.184.123) (Read error: Connection reset by peer)
2021-04-06 07:23:24 +0200v01d4lph4(~v01d4lph4@223.177.184.123)
2021-04-06 07:24:41 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 252 seconds)
2021-04-06 07:26:37 +0200v01d4lph_(~v01d4lph4@223.177.184.123)
2021-04-06 07:26:37 +0200v01d4lph4(~v01d4lph4@223.177.184.123) (Read error: Connection reset by peer)
2021-04-06 07:32:46 +0200yoneda(~mike@193.206.102.122)
2021-04-06 07:33:26 +0200aerona(~aerona@2600:6c54:4600:f300:e355:7c0:28e4:1962)
2021-04-06 07:34:02 +0200v01d4lph_(~v01d4lph4@223.177.184.123) (Read error: No route to host)
2021-04-06 07:34:12 +0200minoru_shiraeesh(~shiraeesh@109.166.56.44) (Ping timeout: 252 seconds)
2021-04-06 07:34:19 +0200v01d4lph4(~v01d4lph4@223.177.184.123)
2021-04-06 07:35:32 +0200CMCDragonkai2(~Thunderbi@120.18.215.85) (Quit: CMCDragonkai2)
2021-04-06 07:37:11 +0200proteusguy(~proteusgu@cm-58-10-155-117.revip7.asianet.co.th) (Ping timeout: 260 seconds)
2021-04-06 07:37:35 +0200waleee-cl(uid373333@gateway/web/irccloud.com/x-jauuiqcdkjlizmjn) (Quit: Connection closed for inactivity)
2021-04-06 07:37:46 +0200minoru_shiraeesh(~shiraeesh@109.166.56.44)
2021-04-06 07:37:52 +0200kiweun(~kiweun@2607:fea8:2a62:9600:1112:7dc0:d4f4:fdda)
2021-04-06 07:37:54 +0200vchlup(~vchlup@nat.brnet.cz)
2021-04-06 07:42:54 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Remote host closed the connection)
2021-04-06 07:43:01 +0200kiweun(~kiweun@2607:fea8:2a62:9600:1112:7dc0:d4f4:fdda) (Ping timeout: 276 seconds)
2021-04-06 07:43:39 +0200danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-04-06 07:44:15 +0200 <edwardk> koz_ does it need to be an actual byte array or can you get away with something like an Addr# literal?
2021-04-06 07:47:40 +0200Tario(~Tario@201.192.165.173) (Ping timeout: 265 seconds)
2021-04-06 07:48:45 +0200 <edwardk> you can produce an Addr# literal and then allocate a bytearray and copy it into the bytearray from the slab of memory. (or if we ever get the ability to talk about 'unmanaged' bytearray#'s, then you'd be able to just directly point an unmanaged bytearray# at the addr# literal)
2021-04-06 07:49:14 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 07:50:57 +0200nut(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2021-04-06 07:52:24 +0200Varis(~Tadas@unaffiliated/varis)
2021-04-06 07:56:17 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-04-06 07:57:57 +0200Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-04-06 08:04:18 +0200Pickchea(~private@unaffiliated/pickchea)
2021-04-06 08:05:08 +0200sord937(~sord937@gateway/tor-sasl/sord937)
2021-04-06 08:06:33 +0200gnumonic(~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net)
2021-04-06 08:08:03 +0200v01d4lph_(~v01d4lph4@223.177.183.124)
2021-04-06 08:08:56 +0200v01d4lph4(~v01d4lph4@223.177.184.123) (Ping timeout: 265 seconds)
2021-04-06 08:11:41 +0200alx741(~alx741@181.196.69.45) (Ping timeout: 240 seconds)
2021-04-06 08:11:49 +0200nbloomf(~nbloomf@2600:1700:ad14:3020:ede4:25d6:732a:13e6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-04-06 08:14:50 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-04-06 08:18:48 +0200mice-user(b4960d8b@180-150-13-139.b4960d.syd.static.aussiebb.net)
2021-04-06 08:22:26 +0200v01d4lph4(~v01d4lph4@223.177.183.124)
2021-04-06 08:22:26 +0200v01d4lph_(~v01d4lph4@223.177.183.124) (Read error: Connection reset by peer)
2021-04-06 08:22:50 +0200 <koz_> edwardk: Nope, has to be an actual byte array.
2021-04-06 08:24:20 +0200Desmond373(b49673ba@180.150.115.186)
2021-04-06 08:24:24 +0200 <Axman6> There's no IsList instance for ByteArray# right? (mostly unrelated to koz_'s question)
2021-04-06 08:24:32 +0200alx741(~alx741@181.196.68.238)
2021-04-06 08:26:06 +0200esp32_prog(~esp32_pro@91.193.4.202) (Ping timeout: 240 seconds)
2021-04-06 08:26:24 +0200v01d4lph4(~v01d4lph4@223.177.183.124) (Client Quit)
2021-04-06 08:26:26 +0200dyamon(~dyamon@cpc69058-oxfd26-2-0-cust662.4-3.cable.virginm.net)
2021-04-06 08:27:11 +0200dyamon(~dyamon@cpc69058-oxfd26-2-0-cust662.4-3.cable.virginm.net) (Client Quit)
2021-04-06 08:28:16 +0200stree(~stree@68.36.8.116) (Ping timeout: 265 seconds)
2021-04-06 08:28:34 +0200 <koz_> There isn't, but there _is_ for ByteArray in primitive.
2021-04-06 08:30:54 +0200frozenErebus(~frozenEre@37.231.244.249) (Quit: leaving)
2021-04-06 08:31:12 +0200frozenErebus(~frozenEre@37.231.244.249)
2021-04-06 08:31:21 +0200proteusguy(~proteusgu@cm-58-10-209-239.revip7.asianet.co.th)
2021-04-06 08:31:51 +0200 <edwardk> Axman6: can't be. wrong kind
2021-04-06 08:35:53 +0200v01d4lph4(~v01d4lph4@223.177.183.124)
2021-04-06 08:38:27 +0200 <Axman6> :'( that's kind of annoying
2021-04-06 08:41:22 +0200stree(~stree@68.36.8.116)
2021-04-06 08:42:31 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2021-04-06 08:44:20 +0200v01d4lph4(~v01d4lph4@223.177.183.124) (Remote host closed the connection)
2021-04-06 08:44:26 +0200 <edwardk> Axman6: working on it https://github.com/ekmett/unboxed
2021-04-06 08:45:32 +0200 <edwardk> 9.2 gives us unlifted data declarations, and moves BoxedRep in with Unlifted and Lifted as specializations of the same type. so you can now in theory write code that is able to instantiate instances for both Lifted and Unlifted pointer types easily. e.g. Eq
2021-04-06 08:48:10 +0200stree(~stree@68.36.8.116) (Quit: Caught exception)
2021-04-06 08:48:36 +0200stree(~stree@68.36.8.116)
2021-04-06 08:49:14 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-04-06 08:49:37 +0200amerocu[m](amerocumat@gateway/shell/matrix.org/x-vtmtlyxuaeoeiccp)
2021-04-06 08:50:49 +0200solvr(57e3c46d@87.227.196.109)
2021-04-06 08:57:14 +0200Sornaensis(~Sornaensi@79.142.232.102.static.router4.bolignet.dk)
2021-04-06 08:57:33 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-04-06 08:58:28 +0200Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-04-06 09:00:15 +0200Sorny(~Sornaensi@077213203030.dynamic.telenor.dk) (Ping timeout: 260 seconds)
2021-04-06 09:01:24 +0200v01d4lph4(~v01d4lph4@223.177.183.124)
2021-04-06 09:01:55 +0200v01d4lph4(~v01d4lph4@223.177.183.124) (Read error: Connection reset by peer)
2021-04-06 09:07:03 +0200v01d4lph4(~v01d4lph4@223.177.183.124)
2021-04-06 09:08:15 +0200srk(~sorki@2a00:1028:83a6:10aa:333a:80ef:9696:7eea)
2021-04-06 09:09:17 +0200nut`(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2021-04-06 09:10:38 +0200Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 240 seconds)
2021-04-06 09:12:08 +0200howdoi(uid224@gateway/web/irccloud.com/x-sykzqmpormchxxqk) (Quit: Connection closed for inactivity)
2021-04-06 09:12:40 +0200gtk(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2021-04-06 09:15:38 +0200nut(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds)
2021-04-06 09:16:56 +0200srk(~sorki@2a00:1028:83a6:10aa:333a:80ef:9696:7eea) (Quit: ZNC 1.8.2 - https://znc.in)
2021-04-06 09:18:04 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Remote host closed the connection)
2021-04-06 09:19:03 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 09:20:28 +0200frozenErebus(~frozenEre@37.231.244.249) (Ping timeout: 265 seconds)
2021-04-06 09:20:37 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 09:20:49 +0200bgamari_(~bgamari@2001:470:e438::1) (Ping timeout: 245 seconds)
2021-04-06 09:21:01 +0200bgamari(~bgamari@72.65.102.162)
2021-04-06 09:21:14 +0200Varis(~Tadas@unaffiliated/varis)
2021-04-06 09:22:31 +0200kamotaketsunumin(6769235f@103.105.35.95)
2021-04-06 09:22:31 +0200 <kamotaketsunumin> https://media.discordapp.net/attachments/747637197548552193/828892217254739978/Screenshot_20210406…
2021-04-06 09:22:49 +0200 <kamotaketsunumin> What cause Maybe () instead of IO() in there? anyone know?
2021-04-06 09:23:06 +0200minoru_shiraeesh(~shiraeesh@109.166.56.44) (Ping timeout: 240 seconds)
2021-04-06 09:23:10 +0200 <kamotaketsunumin> I'm trying to desugar do notation
2021-04-06 09:23:30 +0200 <DigitalKiwi> cabal-install-ghc74: Temporary version of cabal-install for ghc-7.4
2021-04-06 09:23:41 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 245 seconds)
2021-04-06 09:23:54 +0200 <raehik> kamotaketsunumin: lookup returns a Maybe
2021-04-06 09:23:57 +0200 <DigitalKiwi> i do not think temporary means what they think it means
2021-04-06 09:24:22 +0200 <raehik> looks like it's expecting the lambda on the end to return a Maybe because of that
2021-04-06 09:24:27 +0200 <DigitalKiwi> is from 2012 lol
2021-04-06 09:24:46 +0200 <kamotaketsunumin> how to return a Just instead?
2021-04-06 09:24:52 +0200 <kamotaketsunumin> I though lookup is return Just
2021-04-06 09:24:59 +0200 <kamotaketsunumin> from type signature I check it
2021-04-06 09:25:05 +0200 <raehik> :t fromJust
2021-04-06 09:25:07 +0200 <lambdabot> Maybe a -> a
2021-04-06 09:25:12 +0200 <kamotaketsunumin> Oh no it's Maybe b
2021-04-06 09:25:13 +0200 <DigitalKiwi> well, last one...copyright says 2005. all kinds of not temporary lol
2021-04-06 09:25:16 +0200 <kamotaketsunumin> Eq a => a -> [(a, b)] -> Maybe b
2021-04-06 09:25:24 +0200 <kamotaketsunumin> did I have to do case of ?
2021-04-06 09:25:33 +0200 <raehik> your commented code essentially does fromJust via a pattern match so same thing
2021-04-06 09:25:38 +0200mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-04-06 09:25:43 +0200 <raehik> :t return . fromJust
2021-04-06 09:25:44 +0200 <lambdabot> Monad m => Maybe a -> m a
2021-04-06 09:25:53 +0200 <raehik> That gets you what you want (replace m with IO)
2021-04-06 09:25:53 +0200 <kamotaketsunumin> what?
2021-04-06 09:26:01 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2021-04-06 09:26:12 +0200 <kamotaketsunumin> formJust ?
2021-04-06 09:26:23 +0200Desmond373(b49673ba@180.150.115.186) (Quit: Connection closed)
2021-04-06 09:26:24 +0200 <kamotaketsunumin> what is fromJust here?
2021-04-06 09:26:32 +0200 <raehik> fromJust takes a Maybe and returns the term stored in Just
2021-04-06 09:26:40 +0200 <raehik> it takes a Maybe a and returns the a
2021-04-06 09:26:46 +0200 <raehik> if it's Nothing, it errors out
2021-04-06 09:26:59 +0200 <kamotaketsunumin> ahhh I see, lemme try.
2021-04-06 09:27:10 +0200 <kamotaketsunumin> strange, it's not in Prelude?
2021-04-06 09:27:17 +0200 <kamotaketsunumin> did I have to add module/library?
2021-04-06 09:27:22 +0200 <raehik> so use fromJust to unwrap, and rewrap in IO with return
2021-04-06 09:27:31 +0200 <raehik> yeah, import Data.Maybe (fromJust)
2021-04-06 09:27:40 +0200 <kamotaketsunumin> ohh okay Data.Maybe, I got it.
2021-04-06 09:27:46 +0200 <raehik> (Hoogle is handy for figuring out where to import things)
2021-04-06 09:28:14 +0200 <kamotaketsunumin> hoogle is hard to explore?
2021-04-06 09:28:18 +0200 <kamotaketsunumin> Am I the only one?
2021-04-06 09:28:26 +0200 <raehik> https://hoogle.haskell.org/?hoogle=fromJust
2021-04-06 09:29:05 +0200 <raehik> I think the UI is fine personally
2021-04-06 09:29:32 +0200 <raehik> some features might be unclear I'll agree
2021-04-06 09:30:32 +0200gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-04-06 09:31:46 +0200minoru_shiraeesh(~shiraeesh@109.166.56.44)
2021-04-06 09:32:28 +0200 <DigitalKiwi> it took me years to find the Contents button on hackage
2021-04-06 09:32:56 +0200mkDoku(~TheMule@aftr-37-201-195-134.unity-media.net)
2021-04-06 09:33:16 +0200 <kamotaketsunumin> main = getArgs >>= \(command : args) -> fromJust (lookup command dispatch) args
2021-04-06 09:33:16 +0200 <kamotaketsunumin> great
2021-04-06 09:33:24 +0200 <kamotaketsunumin> it's just work
2021-04-06 09:33:26 +0200 <raehik> nice!
2021-04-06 09:33:28 +0200srk(~sorki@unaffiliated/srk)
2021-04-06 09:33:59 +0200 <raehik> sometimes you can replace the fromJust lookup pattern with a function
2021-04-06 09:34:14 +0200 <raehik> that way you can remove the fromJust and feel a bit safer
2021-04-06 09:35:06 +0200 <kamotaketsunumin> emm really? I don't know what happen under fromJust, is there pattern matching behind it? the type signatur just Maybe a -> a
2021-04-06 09:35:19 +0200 <kamotaketsunumin> safer means no error thrown right?
2021-04-06 09:35:23 +0200 <raehik> yes, if you pass a Nothing to fromJust it throws a runtime error
2021-04-06 09:35:27 +0200 <kamotaketsunumin> and the program crash
2021-04-06 09:35:33 +0200 <kamotaketsunumin> yeah
2021-04-06 09:35:53 +0200 <raehik> in your code it probably doesn't matter all that much because it would be a clear programmer error and probably happen early
2021-04-06 09:36:09 +0200 <raehik> but it's good practice to avoid unsafe stuff where possible
2021-04-06 09:36:23 +0200zaquest(~notzaques@5.128.210.178)
2021-04-06 09:37:11 +0200 <raehik> try changing your `[(String, [String] -> IO ())]` to a `String -> ([String] -> IO ())`
2021-04-06 09:37:22 +0200beka(~beka@gothdyke.mom) (Quit: ZNC 1.6.5+deb1+deb9u2 - http://znc.in)
2021-04-06 09:37:34 +0200 <kamotaketsunumin> hstodo: Main.hs:30:20-79: Non-exhaustive patterns in lambda <= funny
2021-04-06 09:38:02 +0200 <kamotaketsunumin> raehik why though?
2021-04-06 09:38:10 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 09:38:31 +0200 <raehik> why change it? to clarify your types
2021-04-06 09:38:34 +0200coot(~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl)
2021-04-06 09:39:04 +0200kiweun(~kiweun@2607:fea8:2a62:9600:49c1:f7f6:7281:486d)
2021-04-06 09:39:06 +0200 <kamotaketsunumin> so? no more lookup?
2021-04-06 09:39:13 +0200 <raehik> no huge reason, it stood out to me because it was something I noticed in a codebase recently
2021-04-06 09:39:32 +0200beka(~beka@gothdyke.mom)
2021-04-06 09:39:49 +0200 <raehik> yes, you could replace `fromJust (lookup command dispatch) args` with `(dispatch command) args`
2021-04-06 09:40:51 +0200 <raehik> you'll want to change the type as I mentioned, and the dispatch function should be `case cmd of "add" -> add` etc
2021-04-06 09:41:24 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit)
2021-04-06 09:41:36 +0200sayola(~vekto@dslb-002-201-085-157.002.201.pools.vodafone-ip.de) (Ping timeout: 245 seconds)
2021-04-06 09:41:43 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 09:42:04 +0200 <kamotaketsunumin> ah, I use guard instead
2021-04-06 09:42:57 +0200mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Quit: mikoto-chan)
2021-04-06 09:43:00 +0200 <raehik> yep any way is fine
2021-04-06 09:43:19 +0200mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-04-06 09:43:19 +0200kiweun(~kiweun@2607:fea8:2a62:9600:49c1:f7f6:7281:486d) (Ping timeout: 258 seconds)
2021-04-06 09:43:21 +0200 <raehik> if lambda case was default yet I would've said that, it's clearest and shortest
2021-04-06 09:43:23 +0200 <kamotaketsunumin> ah the way dispatch store is in list, yeah perhaps it's good to just store dispatch as a Param(:t String) -> Command(:t [String] -> IO())
2021-04-06 09:43:25 +0200mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Client Quit)
2021-04-06 09:43:45 +0200 <raehik> great idea
2021-04-06 09:43:46 +0200 <kamotaketsunumin> lol, I learn a lot of stuff and it's just make sense now.
2021-04-06 09:43:52 +0200lurkless(~ll@unaffiliated/lurkless)
2021-04-06 09:43:57 +0200aerona(~aerona@2600:6c54:4600:f300:e355:7c0:28e4:1962) (Remote host closed the connection)
2021-04-06 09:44:33 +0200 <raehik> do you know how to make a type synonym? you should do that for the command at least
2021-04-06 09:45:04 +0200chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de)
2021-04-06 09:45:07 +0200 <raehik> > type Command = [String] -> IO ()
2021-04-06 09:45:09 +0200 <lambdabot> <hint>:1:1: error: <hint>:1:1: error: parse error on input ‘type’
2021-04-06 09:45:40 +0200 <raehik> (ok I don't know how to use the bots here lol)
2021-04-06 09:46:02 +0200 <kamotaketsunumin> yeah I do know.
2021-04-06 09:46:25 +0200 <kamotaketsunumin> I'm just get into newtype, but didn't use it right now.
2021-04-06 09:46:34 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-04-06 09:46:35 +0200 <kamotaketsunumin> a stuff like deriving, etc.
2021-04-06 09:46:59 +0200jespada(~jespada@90.254.243.187)
2021-04-06 09:47:39 +0200JON13(a5e1c284@165.225.194.132)
2021-04-06 09:47:51 +0200gnumonic(~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2021-04-06 09:48:03 +0200JON13(a5e1c284@165.225.194.132) (Client Quit)
2021-04-06 09:49:10 +0200kritzefitz(~kritzefit@p548c9398.dip0.t-ipconnect.de)
2021-04-06 09:49:20 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 09:49:45 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-04-06 09:53:48 +0200 <kamotaketsunumin> @raeh
2021-04-06 09:53:48 +0200 <lambdabot> Unknown command, try @list
2021-04-06 09:53:49 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 250 seconds)
2021-04-06 09:54:05 +0200 <kamotaketsunumin> raehik what big codebase you see?
2021-04-06 09:54:15 +0200 <kamotaketsunumin> what kind of app is it?
2021-04-06 09:54:24 +0200thc202(~thc202@unaffiliated/thc202)
2021-04-06 09:56:06 +0200 <raehik> a compiler I work on, they used the same lookup pattern
2021-04-06 09:56:23 +0200 <kamotaketsunumin> compiler, oh right.
2021-04-06 09:56:29 +0200 <raehik> kamotaketsunumin: I'm also very new to Haskell so I wasn't sure if there was a reason to use it
2021-04-06 09:56:30 +0200 <kamotaketsunumin> are you making a programming language?
2021-04-06 09:56:33 +0200bitmapper(uid464869@gateway/web/irccloud.com/x-fukzxaddseekbgyz) (Quit: Connection closed for inactivity)
2021-04-06 09:56:42 +0200 <raehik> now I'm quite certain it's an anti-pattern
2021-04-06 09:56:50 +0200 <kamotaketsunumin> haskell is used in two major thing, compiler or blockchain hahaha
2021-04-06 09:57:03 +0200 <raehik> no I'm simply working on some research stuff
2021-04-06 09:57:30 +0200acidjnk_new(~acidjnk@p200300d0c72b95396118d8d56ee70ad6.dip0.t-ipconnect.de)
2021-04-06 09:59:51 +0200xourt(d4c620ea@212-198-32-234.rev.numericable.fr)
2021-04-06 10:04:05 +0200gitgood(~gitgood@80-44-12-39.dynamic.dsl.as9105.com) (Quit: Probably away to do something really awesome)
2021-04-06 10:07:00 +0200hendursaga(~weechat@gateway/tor-sasl/hendursaga)
2021-04-06 10:09:57 +0200hendursa1(~weechat@gateway/tor-sasl/hendursaga) (Ping timeout: 240 seconds)
2021-04-06 10:10:38 +0200kritzefitz(~kritzefit@p548c9398.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-04-06 10:10:56 +0200kritzefitz(~kritzefit@2003:5b:203b:200::10:49)
2021-04-06 10:17:12 +0200mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-04-06 10:17:24 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-04-06 10:17:55 +0200jack1909_(~qpls@cpeb4750e67d202-cmf81d0fad5840.cpe.net.fido.ca) (Ping timeout: 248 seconds)
2021-04-06 10:20:04 +0200jack1909(~qpls@23.105.170.167)
2021-04-06 10:20:50 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 10:25:31 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 276 seconds)
2021-04-06 10:26:02 +0200Franciman(~francesco@host-87-20-23-243.retail.telecomitalia.it)
2021-04-06 10:28:27 +0200jack1909(~qpls@23.105.170.167) (Ping timeout: 260 seconds)
2021-04-06 10:28:55 +0200gnumonic(~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net)
2021-04-06 10:28:58 +0200shailangsa(~shailangs@host86-186-177-179.range86-186.btcentralplus.com) (Ping timeout: 260 seconds)
2021-04-06 10:29:21 +0200mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Quit: mikoto-chan)
2021-04-06 10:29:40 +0200cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
2021-04-06 10:30:16 +0200jack1909(~qpls@cpeb4750e67d202-cmf81d0fad5840.cpe.net.fido.ca)
2021-04-06 10:33:06 +0200clog(~nef@66.114.33.57) (Ping timeout: 260 seconds)
2021-04-06 10:33:39 +0200 <int-e> shapr: No, I had not seen https://grin-compiler.github.io/ ...quite a bit of activity there, too. Thanks for the link!
2021-04-06 10:35:30 +0200solvr(57e3c46d@87.227.196.109) (Quit: Connection closed)
2021-04-06 10:36:31 +0200 <DigitalKiwi> (setting aside that everything's a compiler) haskell is used for a lot more than that :/
2021-04-06 10:37:35 +0200juri__juri_
2021-04-06 10:38:58 +0200oish(~charlie@228.25.169.217.in-addr.arpa)
2021-04-06 10:40:10 +0200 <minoru_shiraeesh> do people really create compilers with haskell or just prototypes of compilers? and then implement them in C
2021-04-06 10:40:29 +0200Pickchea(~private@unaffiliated/pickchea) (Ping timeout: 252 seconds)
2021-04-06 10:42:32 +0200 <DigitalKiwi> wow i know ghc has some rough spots but to call it a prototype is a bit harsh don't you think ;)
2021-04-06 10:42:53 +0200 <tomsmeding> someone who implements a compiler in haskell only to then reimplement the thing in C is someone who thoroughly hates themselves
2021-04-06 10:43:25 +0200jumper149(~jumper149@80.240.31.34)
2021-04-06 10:43:26 +0200jumper149(~jumper149@80.240.31.34) (Client Quit)
2021-04-06 10:44:44 +0200jumper149(~jumper149@80.240.31.34)
2021-04-06 10:45:05 +0200jumper149(~jumper149@80.240.31.34) (Client Quit)
2021-04-06 10:45:14 +0200 <Uniaika> yes
2021-04-06 10:45:28 +0200bahamas(~lucian@unaffiliated/bahamas)
2021-04-06 10:46:47 +0200 <minoru_shiraeesh> I mean, if I'm not mistaken, putting esoteric experimental side-projects aside, majority of compiler are written in C.
2021-04-06 10:46:57 +0200 <minoru_shiraeesh> *compilers
2021-04-06 10:47:31 +0200 <raehik> lots of compilers have components written in C for various reasons but otherwise that's not true
2021-04-06 10:47:33 +0200 <minoru_shiraeesh> I think this is because of manual memory management
2021-04-06 10:47:44 +0200 <minoru_shiraeesh> as one of the reasons
2021-04-06 10:47:55 +0200 <Uniaika> minoru_shiraeesh: Elm, PureScript, OCaml, Rust, NodeJS, Go are not written in C
2021-04-06 10:48:02 +0200 <raehik> the rust compiler is self-hosted
2021-04-06 10:48:15 +0200 <Uniaika> raehik: and was written in OCaml before that
2021-04-06 10:48:20 +0200Pickchea(~private@unaffiliated/pickchea)
2021-04-06 10:48:23 +0200elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-04-06 10:48:29 +0200 <Uniaika> GHC was first implemented in LazyML
2021-04-06 10:48:35 +0200 <Uniaika> Hugs on the other hand is in C
2021-04-06 10:48:53 +0200 <aldum> rust is a lot of C++ also, isn't it?
2021-04-06 10:48:55 +0200 <Uniaika> p. sure javac is in Java
2021-04-06 10:49:20 +0200 <Uniaika> hmm, in absolute numbers idk, aldum
2021-04-06 10:49:30 +0200 <Uniaika> 0.3% of C++ in their GH repo
2021-04-06 10:49:46 +0200 <Uniaika> but there's also the library/ folder in this repo
2021-04-06 10:51:09 +0200jumper149(~jumper149@80.240.31.34)
2021-04-06 10:51:43 +0200shailangsa(~shailangs@host86-186-136-21.range86-186.btcentralplus.com)
2021-04-06 10:51:51 +0200 <raehik> Uniaika: wow, I had no idea the Rust compiler was written in an ML originally! very cool
2021-04-06 10:52:07 +0200 <raehik> I'm surprised. I honestly expected C lol
2021-04-06 10:52:27 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 10:52:42 +0200kamotaketsunumin(6769235f@103.105.35.95) (Ping timeout: 240 seconds)
2021-04-06 10:54:15 +0200cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-04-06 10:54:28 +0200 <minoru_shiraeesh> Uniaika: "Elm, PureScript, OCaml, Rust, NodeJS, Go are not written in C" - C++ ?
2021-04-06 10:54:28 +0200LKoen(~LKoen@65.250.88.92.rev.sfr.net)
2021-04-06 10:54:51 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 10:56:36 +0200drbean_(~drbean@TC210-63-209-214.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2021-04-06 10:56:55 +0200stree(~stree@68.36.8.116) (Ping timeout: 260 seconds)
2021-04-06 10:56:55 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 258 seconds)
2021-04-06 10:57:10 +0200cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Client Quit)
2021-04-06 10:58:32 +0200 <xsperry> minoru_shiraeesh agda and idris copmilers were written in haskell
2021-04-06 10:58:58 +0200nut`(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-04-06 10:59:19 +0200 <Franciman> and that was a serious error
2021-04-06 10:59:29 +0200frozenErebus(~frozenEre@37.231.244.249)
2021-04-06 10:59:33 +0200 <xsperry> meh
2021-04-06 10:59:43 +0200gtk(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
2021-04-06 10:59:45 +0200CaptainIRS(9d339880@157.51.152.128)
2021-04-06 10:59:50 +0200 <enikar> since version 1.5 the go compiler is written in go.
2021-04-06 11:00:41 +0200 <minoru_shiraeesh> from the rust page in wikipedia: The same year, work shifted from the initial compiler (written in OCaml) to the LLVM-based self-hosting compiler written in Rust.
2021-04-06 11:01:24 +0200sedeki(~textual@unaffiliated/sedeki)
2021-04-06 11:01:25 +0200 <merijn> minoru_shiraeesh: Elm and PureScript are written in Haskell, Ocaml is presumably written in Ocaml
2021-04-06 11:01:25 +0200__monty__(~toonn@unaffiliated/toonn)
2021-04-06 11:01:29 +0200 <Uniaika> minoru_shiraeesh: NodeJS is indeed made in C++ if I'm not mistaken
2021-04-06 11:02:05 +0200 <merijn> minoru_shiraeesh: The main reason compiler components tend to be written in C is that C is the only language with a standardised ABI
2021-04-06 11:02:23 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 11:02:25 +0200 <merijn> And once you write some component temporarily in C and it works, why bother rewriting it
2021-04-06 11:03:04 +0200 <minoru_shiraeesh> what do they need llvm for? maybe it simplifies the work
2021-04-06 11:03:30 +0200 <minoru_shiraeesh> can you create a compiler with java script and llvm?
2021-04-06 11:03:38 +0200 <minoru_shiraeesh> or python and llvm
2021-04-06 11:03:38 +0200 <merijn> Same reason with people complaining "Why is GHCs RTS written in C?!" to which the obvious is "Because the first version was and by now we have a 3 decades old, high-performance, battle-tested RTS...why would you spend a year rewriting it from scratch if the only reason is "to make it not C"?"
2021-04-06 11:03:53 +0200mettekou(~mettekou@d8D875214.access.telenet.be)
2021-04-06 11:03:55 +0200viluon(uid453725@gateway/web/irccloud.com/x-vxyigueamtfqricd)
2021-04-06 11:04:01 +0200 <mettekou> Any advice on storing recursive algebraic data types in a relational database?
2021-04-06 11:04:10 +0200 <merijn> minoru_shiraeesh: LLVM == the low-level virtual machine, it's a framework for generating and optimising assembly in a platform independent way
2021-04-06 11:04:19 +0200 <merijn> mettekou: "do it manually"
2021-04-06 11:04:49 +0200Unhammer(~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection)
2021-04-06 11:05:03 +0200 <mettekou> merijn: I am doing it manually, but you have a lot of options: adjacency lists, nested sets...
2021-04-06 11:05:22 +0200Unhammer(~Unhammer@gateway/tor-sasl/unhammer)
2021-04-06 11:05:32 +0200 <mettekou> I was wondering whether there's a canonical way.
2021-04-06 11:05:43 +0200 <merijn> mettekou: tbh, I would forget about ADTs when defining a database schema
2021-04-06 11:06:27 +0200 <merijn> mettekou: In the sense of: Define a schema for the data you have (and maybe the operation you'll need) and then figure out how to map between that and ADTs
2021-04-06 11:06:39 +0200 <mettekou> merijn: I don't know, the sum and product types map quite well, if you use the same approach you would use for classes in a class hierarchy in an object-oriented programming language.
2021-04-06 11:06:47 +0200 <merijn> replicating ADTs in your database sounds way to tightly coupled
2021-04-06 11:07:02 +0200 <mettekou> merijn: I'm actually trying to store ASTs and program executions for some really minimal DSL.
2021-04-06 11:07:12 +0200vicfred(vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving)
2021-04-06 11:08:08 +0200kuribas(~user@ptr-25vy0i98ky9sotgacau.18120a2.ip6.access.telenet.be)
2021-04-06 11:08:09 +0200 <merijn> That sounds...odd? But I'd probably have something like 1 table for the AST itself and 1 table for each type of node, the AST table just referencing those
2021-04-06 11:08:33 +0200 <aldum> tables are a product type of sorts ;)
2021-04-06 11:08:45 +0200 <merijn> So, like, a table of binary operators has an id, operator and 2 references back into the AST table
2021-04-06 11:08:52 +0200 <sedeki> mettekou i'm here as well (not only in the postgres channel).
2021-04-06 11:09:09 +0200 <mettekou> merijn: That's the adjacency list approach, which is what I would do as well.
2021-04-06 11:09:23 +0200 <mettekou> With a recursive CTE, it's easy to query.
2021-04-06 11:09:28 +0200 <merijn> Morbidly curious why you wanna store an AST into a database, though :>
2021-04-06 11:09:35 +0200michalz(~user@185.246.204.46)
2021-04-06 11:10:06 +0200stree(~stree@68.36.8.116)
2021-04-06 11:10:37 +0200 <mettekou> merijn: I'm modelling industrial processes using a DSL which is based on Gilbreth-style flow process charts.
2021-04-06 11:11:36 +0200 <mettekou> merijn: Industrial engineers do not like text-based languages, so I'm building a flow process chart editor which also makes these charts executable programs in the DSL.
2021-04-06 11:12:04 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-04-06 11:12:22 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 11:13:14 +0200 <Maxdamantus> If you were creating a text-based language, would you still be trying to store the AST in the database?
2021-04-06 11:13:41 +0200 <Maxdamantus> ("in the database" presumably means something other than "as a single blob of data"(
2021-04-06 11:13:44 +0200 <Maxdamantus> ))
2021-04-06 11:14:14 +0200 <mettekou> Maxdamantus: Yes, because I want to link executions of the process steps to the process steps.
2021-04-06 11:14:40 +0200 <mettekou> The alternative is indeed JSON/XML/BLOB or files, which is just moving the linking problem to the application code.
2021-04-06 11:15:48 +0200 <mettekou> Not smart, in my opinion, since an important advantage of using a relational database is delegating referential integrity to it.
2021-04-06 11:15:54 +0200 <merijn> mettekou: Oooh
2021-04-06 11:16:10 +0200 <Maxdamantus> I find it hard to imagine that it would be simpler to maintain these things in a relational database, otherwise people would be generally using relational database when writing compilers.
2021-04-06 11:16:28 +0200 <merijn> mettekou: "Other people who liked process flowcharts and Haskell also liked: Clean" ;)
2021-04-06 11:16:30 +0200 <mettekou> Maxdamntus: I don't think so, they don't require persistence.
2021-04-06 11:16:56 +0200 <merijn> mettekou: You should lookup itasks
2021-04-06 11:17:00 +0200 <Maxdamantus> mettekou: the source files persist.
2021-04-06 11:17:25 +0200 <merijn> mettekou: https://clean.cs.ru.nl/ITasks
2021-04-06 11:17:36 +0200 <mettekou> merijn: I'm doing it in F#, but it's a general functional programming problem, so I asked about it here, since there's more activity here. :P
2021-04-06 11:17:56 +0200 <Maxdamantus> mettekou: you're presumably treating contents of the database as source code, rather than the contents of a text/JSON/binary string/file.
2021-04-06 11:18:10 +0200Aquazi(uid312403@gateway/web/irccloud.com/x-bmhbjzvaxfjgfshr)
2021-04-06 11:18:11 +0200cafce25(~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de)
2021-04-06 11:18:25 +0200 <merijn> mettekou: Well, they literally have a pre-built DSL generating GUIs etc for exactly the kinda stuff you're talking about ;)
2021-04-06 11:18:47 +0200 <merijn> mettekou: So if your adventurous it could save you weeks/months of work :p
2021-04-06 11:19:04 +0200 <Maxdamantus> Having worked on something similar, I imagine you would run into issues at some point regarding versioning of the code, including merging.
2021-04-06 11:19:58 +0200 <Maxdamantus> When people work on the code, they'll probably think in terms of a particular snapshot and make changes to that, then at some point those changes will be merged into the master copy.
2021-04-06 11:20:37 +0200 <mettekou> Maxdamantus: They define the process once and only revise details, kind of important for production lines.
2021-04-06 11:21:00 +0200 <mettekou> A single edit after the production line runs already makes them nervous.
2021-04-06 11:21:09 +0200 <Maxdamantus> and at various stages, you have different "versions" of this code. That will be a bit tricky I think to represent in a RDBMS. Probably a lot simpler to just keep each version of the code in a big string (or JSON/XML structure, whatever)
2021-04-06 11:22:24 +0200 <Maxdamantus> Right, I would also be nervous using a system built like that.
2021-04-06 11:24:08 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-04-06 11:24:27 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 11:24:33 +0200coni(d4338494@212-51-132-148.fiber7.init7.net)
2021-04-06 11:24:35 +0200 <Maxdamantus> another reason that the single-version blob approach is useful is that you know that a single version of the entire code is represented by just a string, which in the worst case could be understood by someone technical enough, but you just have to optimise the way you view that string by producing appropriate tooling, so tools that just render that string as a graph, etc.
2021-04-06 11:25:28 +0200noCheese(~nocheese@unaffiliated/nocheese) (Quit: I'm out!)
2021-04-06 11:25:29 +0200 <Maxdamantus> RDBMSes are potentially useful when it doesn't make sense to look at the entire dataset as a unit.
2021-04-06 11:25:51 +0200noCheese(~nocheese@gw2.aibor.de)
2021-04-06 11:25:51 +0200noCheese(~nocheese@gw2.aibor.de) (Changing host)
2021-04-06 11:25:51 +0200noCheese(~nocheese@unaffiliated/nocheese)
2021-04-06 11:27:16 +0200 <mettekou> Maxdamantus: "Right, I would also be nervous using a system built like that." - What's that supposed to mean?
2021-04-06 11:27:56 +0200fendor(~fendor@91.141.0.13.wireless.dyn.drei.com)
2021-04-06 11:28:00 +0200Ranhir(~Ranhir@157.97.53.139)
2021-04-06 11:28:58 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-04-06 11:29:30 +0200bahamas(~lucian@unaffiliated/bahamas) (Ping timeout: 268 seconds)
2021-04-06 11:33:33 +0200 <Maxdamantus> mettekou: I find it hard to trust systems that don't have some clear representation of the overall code.
2021-04-06 11:34:11 +0200 <Maxdamantus> mettekou: for a typical text-based programming language, that can simply be the text that makes up each source file.
2021-04-06 11:34:50 +0200 <Maxdamantus> mettekou: but even for a graphical programming system, there should be something analogous. Something that can at least be serialised into such a source file.
2021-04-06 11:35:11 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 260 seconds)
2021-04-06 11:35:41 +0200 <Maxdamantus> So someone can capture the state of the system into a file, and any other representation can be seen as derived from the contents of that file.
2021-04-06 11:36:11 +0200dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2021-04-06 11:36:24 +0200 <mettekou> Maxdamantus: I don't see why a relational database is not trustworthy in that respect, and flat files are.
2021-04-06 11:37:56 +0200 <mettekou> mettekou: I'd hate to do reporting queries over flat files, by the way. Even with PostgreSQL's excellent JSON support, for example, I would still hate to do reporting queries over JSON.
2021-04-06 11:38:52 +0200 <mettekou> I just realized that that's why I want a relational database and compiler writers don't: I need to store executions and do reporting based on them.
2021-04-06 11:40:18 +0200 <Maxdamantus> Well, your original question was about representing ASTs in relational databases. Unless the approach is to just store the entire tree in a string (which is what I would advocate), you're going to be creating some representation that is harder to use than regular AST structures you would create in memory.
2021-04-06 11:40:54 +0200 <Maxdamantus> since the way you normally represent ASTs is as some sort of recursive structure, which doesn't inherently work in an RDBMS.
2021-04-06 11:42:19 +0200 <Maxdamantus> Things like "counting AST nodes" *might* be simpler, but I think the usual things you expect to do with ASTs will likely be harder, since you've got a less direct representation.
2021-04-06 11:42:29 +0200 <merijn> Maxdamantus: I disagree, recursive things work very well in relational databases
2021-04-06 11:42:40 +0200 <mettekou> Maxdamantus: an adjacency list works fine with a recursive CTE query.
2021-04-06 11:42:48 +0200 <merijn> Recursive CTEs are great
2021-04-06 11:43:02 +0200 <merijn> SQLite has a bunch of nice example applications of recursive CTEs for Fossil
2021-04-06 11:43:32 +0200 <mettekou> merijn: I'm using PostgreSQL, so I have good recursive CTE support as well.
2021-04-06 11:43:57 +0200sedeki(~textual@unaffiliated/sedeki) (Quit: Textual IRC Client: www.textualapp.com)
2021-04-06 11:45:51 +0200lotuseater(~user@p200300e78705e200e5bac9463b911ab3.dip0.t-ipconnect.de)
2021-04-06 11:47:04 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 11:47:04 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2021-04-06 11:47:20 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-04-06 11:47:41 +0200mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-04-06 11:48:43 +0200Pickchea(~private@unaffiliated/pickchea) (Ping timeout: 260 seconds)
2021-04-06 11:51:14 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 245 seconds)
2021-04-06 11:51:23 +0200mice-user(b4960d8b@180-150-13-139.b4960d.syd.static.aussiebb.net) (Ping timeout: 240 seconds)
2021-04-06 11:51:31 +0200p4trix(~p4trix@19.red-83-49-45.dynamicip.rima-tde.net)
2021-04-06 11:51:56 +0200DavidEichmann(~david@47.27.93.209.dyn.plus.net)
2021-04-06 11:52:31 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-04-06 11:52:53 +0200clog(~nef@bespin.org)
2021-04-06 11:53:18 +0200 <mettekou> merijn: iTasks seems interesting, but it may be overkill for my use case (really, the DSL I have doesn't have procedural abstraction, not even branching currently, it's very close to a flow process chart, with only 3 types of nodes).
2021-04-06 11:53:33 +0200haskellstudent(~quassel@213-225-9-45.nat.highway.a1.net)
2021-04-06 11:54:30 +0200kiweun(~kiweun@2607:fea8:2a62:9600:615f:d2ef:3b34:54be)
2021-04-06 11:54:40 +0200 <Maxdamantus> merijn: still seems like unnecessary cognitive overhead. That's all stuff that is abstracted away when dealing with structures in normal programming languages.
2021-04-06 11:54:58 +0200 <merijn> It should have branching? Pretty sure I saw that years ago already during one of the NL-FP days...at any rate, you can at least steal their design ;)
2021-04-06 11:55:09 +0200 <Maxdamantus> merijn: when writing recursive structures in Haskell or whatever, you're not having to produce the pointer values for cross-referencing. You can't even inspect them.
2021-04-06 11:55:26 +0200 <merijn> Maxdamantus: I don't think it's overhead at all, I find recursive CTEs (and really all of SQL) very natural with a purely functional mindset
2021-04-06 11:55:49 +0200 <merijn> Maxdamantus: heh?
2021-04-06 11:55:50 +0200 <Maxdamantus> merijn: so why do programming languages normally abstract these things away?
2021-04-06 11:56:23 +0200 <merijn> Maxdamantus: Have you seen how those recursive CTEs look like? They're...like...the most purely functional thing you can imagine :p
2021-04-06 11:56:43 +0200 <mettekou> merijn: Yeah, iTasks has branching and much more, I was talking about my own DSL. It doesn't have anything fancy at all.
2021-04-06 11:57:08 +0200 <kuribas> merijn: but representing stuff like ASTs in a database involves many small tables, and corresponding overhead. I'd just serialize to JSON, and do any processing in haskell.
2021-04-06 11:57:08 +0200 <mettekou> merijn: No procedural abstraction, no branching, and just 3 "statements" or "expressions".
2021-04-06 11:57:37 +0200 <merijn> Maxdamantus: See the 3.2, 3.3 and 3.4 examples here: https://sqlite.org/lang_with.html
2021-04-06 11:57:38 +0200 <mettekou> kuribas: That works fine until you want reporting over executions.
2021-04-06 11:57:47 +0200 <merijn> kuribas: WHo says "many small tables"
2021-04-06 11:57:55 +0200 <merijn> kuribas: How many nodetypes does your AST have?
2021-04-06 11:58:02 +0200 <merijn> kuribas: I'd say 20 is already way high
2021-04-06 11:58:06 +0200 <Maxdamantus> merijn: admittedly, not, sorry. But if I just imagine fundamentally what the model of a relational datastore is, it seems like if you want to represent recursive things, you need to be exposed somehow to things that are for good reason abstracted away already in typical programming languages.
2021-04-06 11:58:14 +0200 <merijn> kuribas: And you can probably compact several nodetypes into the same tables
2021-04-06 11:58:44 +0200 <kuribas> merijn: I was just thinking about my previous company, where they implemented a static schema (for taxes) using many tables..
2021-04-06 11:58:57 +0200 <kuribas> merijn: it was more than 20 I believe...
2021-04-06 11:59:08 +0200 <merijn> kuribas: For an AST?
2021-04-06 11:59:16 +0200 <Maxdamantus> (eg, creating identifiers to be used essentially as pointers)
2021-04-06 11:59:20 +0200 <tdammers> SQL schemas in the wild are a never-ending source of cruel entertainment
2021-04-06 11:59:24 +0200kiweun(~kiweun@2607:fea8:2a62:9600:615f:d2ef:3b34:54be) (Ping timeout: 258 seconds)
2021-04-06 11:59:31 +0200 <kuribas> merijn: it was a static schema for tax reports.
2021-04-06 11:59:47 +0200 <merijn> kuribas: How does that relate to the number of tables you'd need for an AST?
2021-04-06 11:59:55 +0200 <merijn> Also, many tables isn't *inherently* bad
2021-04-06 11:59:58 +0200mkDoku(~TheMule@aftr-37-201-195-134.unity-media.net) (Ping timeout: 265 seconds)
2021-04-06 12:00:07 +0200 <kuribas> merijn: because an AST tend to have many branches as well.
2021-04-06 12:00:09 +0200 <merijn> As with all tech things: "It Depends (TM)"
2021-04-06 12:00:30 +0200 <tdammers> my favorite antipattern in this regard is to create tables dynamically, and store their names in columns, as quasi-foreign keys
2021-04-06 12:00:38 +0200 <merijn> Anyway, the freshly baked bread for lunch is done and it smells better than any tech discussion ;)
2021-04-06 12:00:39 +0200 <Maxdamantus> I really can't imagine myself looking at a spreadsheet denoting an AST and seeing something more obvious than an AST represented in JSON.
2021-04-06 12:01:09 +0200 <Maxdamantus> if a spreadsheet is denoting an AST with a bunch of cross-referencing identifiers, I can probably transform it into some JSON that is easier to understand at a glance.
2021-04-06 12:01:19 +0200Rudd0(~Rudd0@185.189.115.108)
2021-04-06 12:01:26 +0200 <kuribas> merijn: the primary reason for using database tables is searchability.
2021-04-06 12:02:05 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 250 seconds)
2021-04-06 12:02:07 +0200 <kuribas> if you don't need that, I don't see any reason at all for dividing you structures into tables.
2021-04-06 12:02:54 +0200 <kuribas> the haskell typesystem already takes care of consistency.
2021-04-06 12:03:09 +0200 <mettekou> kuribas: The primary reason for using database tables is eliminating data redundancy, not searchability.
2021-04-06 12:03:13 +0200tomboy64(~tomboy64@unaffiliated/tomboy64) (Ping timeout: 260 seconds)
2021-04-06 12:03:18 +0200 <tdammers> ^
2021-04-06 12:03:57 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 12:04:02 +0200 <kuribas> mettekou: why would you have data redundancy in a static scheme, or AST?
2021-04-06 12:04:41 +0200 <mettekou> kuribas: Network and hierarchical databases (i.e. CODASYL) had indices before Codd came up with the relational model, so they were searchable. The problems were access path dependence and data redundancy.
2021-04-06 12:05:22 +0200 <mettekou> kuribas: I mean data redundancy in the relational model sense, i.e. the result of unnormalized data.
2021-04-06 12:05:31 +0200 <tdammers> and in fact modern tree-shaped noSQL databases have the same problem
2021-04-06 12:05:43 +0200 <tdammers> (or document databases, for that matter)
2021-04-06 12:05:52 +0200 <mettekou> tdammers: Indeed, as Stonebraker pointed out in "Those that do not learn from the past..."
2021-04-06 12:06:26 +0200 <tdammers> if you're smart about noSQL, you realize that that's a tradeoff, and that tradeoff may, under certain circumstances, be worth it
2021-04-06 12:06:50 +0200 <tdammers> but it certainly ruins the idea that noSQL databases are unambiguously superior
2021-04-06 12:06:52 +0200Tops2(~Tobias@dyndsl-095-033-088-082.ewe-ip-backbone.de)
2021-04-06 12:06:58 +0200 <aldum> if you are smart, you realize everythng is a tradeoff, there are no solutions :)
2021-04-06 12:07:28 +0200 <tdammers> there are solutions alright, it's just that as an adult, you realize at some point that "solution" doesn't mean what you thought it did
2021-04-06 12:07:36 +0200 <kuribas> tdammers: I just wonder what advantage they have over storing JSONs in a RDBMS.
2021-04-06 12:07:59 +0200 <mettekou> tdammers: The problem with the NoSQL term is that MongoDB ends up together with Apache Cassandra and Redis.
2021-04-06 12:08:28 +0200 <mettekou> Whereas relational or SQL is pretty narrow as a category, NoSQL is just anything else.
2021-04-06 12:08:29 +0200 <tdammers> mettekou: agree completely. couchdb has about as much in common with mongodb as it does with postgres, if not less
2021-04-06 12:09:15 +0200 <kuribas> mettekou: right, and a good NoSQL database would be complementary to a RDBMs, not a replacement.
2021-04-06 12:10:00 +0200royal_screwup211(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 12:10:11 +0200 <tdammers> kuribas: not necessarily. they do serve the same general concern, that of persisting large data sets for efficient partial querying and modification
2021-04-06 12:10:47 +0200 <kuribas> tdammers: but a RDBMs works well for most cases.
2021-04-06 12:11:04 +0200 <kuribas> I often think people want NoSQL because they don't understand SQL.
2021-04-06 12:14:00 +0200 <tdammers> because they don't understand SQL, because they don't understand NoSQL, because they believe in unicorns and silver bullets, because they are practicing hype-driven development, because management makes them, ...
2021-04-06 12:15:51 +0200 <Maxdamantus> in all seriousness though, why are compilers not using SQL?
2021-04-06 12:16:15 +0200 <Maxdamantus> 21:16:10 < Maxdamantus> I find it hard to imagine that it would be simpler to maintain these things in a relational database, otherwise people would be generally using relational database when writing compilers.
2021-04-06 12:16:19 +0200shalokshalom(~quassel@2a02:1748:dd5e:7f60:cf49:8384:7c93:3106) (Remote host closed the connection)
2021-04-06 12:16:35 +0200shalokshalom(~quassel@2a02:1748:dd5e:7f60:cf49:8384:7c93:3106)
2021-04-06 12:16:42 +0200 <Maxdamantus> If these relational models are so great, why not replace general data structures in programming languages with relational ones?
2021-04-06 12:17:39 +0200 <Maxdamantus> You almost never see relational patterns used in memory. They're normally just used for querying larger sets of data stored outside of the main program's memory.
2021-04-06 12:18:03 +0200 <kuribas> Maxdamantus: I sometimes use a relational model in haskell, for example storing IDs and a map of ID to the object.
2021-04-06 12:18:06 +0200 <tdammers> relational data structures in memory are a thing in game programming
2021-04-06 12:18:09 +0200 <haskellstudent> kuribas: do you think high availability requirements is a legitimate reason because of schema migrations? if i store everything as json in a kv store or a kv table in a rdbms i never have to do a schema migration in the db and pause it
2021-04-06 12:19:02 +0200 <kuribas> haskellstudent: well, you may need to do migration if your datatype that the JSON represents changes.
2021-04-06 12:19:21 +0200 <haskellstudent> sure, but not in the db
2021-04-06 12:19:56 +0200 <kuribas> depends, you may want to make sure that the JSON types all have the same structure.
2021-04-06 12:20:06 +0200 <kuribas> which would require migration
2021-04-06 12:20:49 +0200 <haskellstudent> which means i can have a newer version of a service write and read a newer version of e.g. an event json in the db while the older versions just ignore any fields in the json they dont know yet.
2021-04-06 12:21:05 +0200coni(d4338494@212-51-132-148.fiber7.init7.net) (Quit: Connection closed)
2021-04-06 12:21:24 +0200 <Maxdamantus> tdammers: I feel like even in game programming, that model ("entity" something something) seems mostly useful if you're intending to share the state incrementally across a network at some point.
2021-04-06 12:21:59 +0200 <Maxdamantus> So it still doesn't seem inherently better as an in-memory model.
2021-04-06 12:22:09 +0200 <kuribas> haskellstudent: that will not always work
2021-04-06 12:22:15 +0200royal_screwup211(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-04-06 12:22:15 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-04-06 12:22:27 +0200 <tdammers> Maxdamantus: the main reason this is done is performance, and specifically, cache performance. The idea is that you lay out your data structures such that for the most performance critical operations, the data you need is laid out linearly in memory, so you can zoom over it with the minimum amount of cache misses
2021-04-06 12:22:35 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 12:22:46 +0200rdivyanshu(uid322626@gateway/web/irccloud.com/x-zbthekzvhrqpupmy) (Quit: Connection closed for inactivity)
2021-04-06 12:23:00 +0200 <haskellstudent> kuribas: can you give an example where it would not work?
2021-04-06 12:23:53 +0200 <tdammers> the alternative, the classic object graph, is really really bad for cache performance: when traversing a list of objects, you're walking a list of pointers to arbitrary heap locations, and each of those pointers is relatively likely to cause a cache miss. And if those objects then contain pointers to other objects, it gets worse.
2021-04-06 12:24:00 +0200 <kuribas> haskellstudent: if the type changes in incompatible ways
2021-04-06 12:24:52 +0200 <haskellstudent> kuribas: of course if i removed a field from the json event for example the older services could no longer read it, but they can "ignore" it (logging a parsing error) while they are still running until all old versions of the service are upgraded
2021-04-06 12:24:59 +0200pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-04-06 12:25:03 +0200 <tdammers> the schema migration problem exists regardless of sql or not-sql
2021-04-06 12:25:08 +0200Guest66883(~textual@2603-7000-3040-0000-e045-d645-2e21-7cec.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-04-06 12:25:11 +0200 <kuribas> this
2021-04-06 12:25:15 +0200tomboy64(~tomboy64@unaffiliated/tomboy64)
2021-04-06 12:25:16 +0200 <tdammers> and the mitigation strategies are largely the same too
2021-04-06 12:25:28 +0200 <tdammers> the disadvantage of a "schema-less
2021-04-06 12:25:33 +0200 <tdammers> " store is that the schema is implicit
2021-04-06 12:25:45 +0200Alleria_(~AllahuAkb@2603-7000-3040-0000-51cb-91e5-ecfa-0406.res6.spectrum.com)
2021-04-06 12:25:57 +0200zebrag(~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr)
2021-04-06 12:26:20 +0200 <kuribas> tdammers: yeah, it's the same problem with clojure. The idea is that you don't need schemas and static structure, but you still end up with it, just in an implicit and ad-hoc way.
2021-04-06 12:26:22 +0200 <haskellstudent> tdammers: not necessarily. its can be very explicit, its just defined e.g. in haskell rather than both in the db and in haskell
2021-04-06 12:26:57 +0200 <tdammers> if you define the schema, then it's no longer schema-less, is it
2021-04-06 12:27:27 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2021-04-06 12:27:28 +0200lawt(~lawt@c-73-151-3-92.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
2021-04-06 12:27:30 +0200 <haskellstudent> correct, i never said it would be. there is no such thing. but i dont need to pause the db to do a migration, that was the only point.
2021-04-06 12:28:09 +0200 <tdammers> a decent rdbms can do schema modifications without downtime too
2021-04-06 12:28:27 +0200 <tdammers> you just can't have inconsistent data at any point
2021-04-06 12:28:36 +0200 <tdammers> like, half of the records in the old schema and the other half in the new
2021-04-06 12:28:42 +0200 <tdammers> but that's a design feature, really
2021-04-06 12:29:31 +0200 <kuribas> tdammers: doing a huge transaction to migrate may slow the DB down though...
2021-04-06 12:30:09 +0200 <tdammers> sure. but so can a huge sweep over a "schema-less" database that changes all the records (documents, whatever) to match the new structure
2021-04-06 12:30:37 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 12:32:01 +0200Alleria_(~AllahuAkb@2603-7000-3040-0000-51cb-91e5-ecfa-0406.res6.spectrum.com) (Ping timeout: 245 seconds)
2021-04-06 12:32:50 +0200 <haskellstudent> tdammers: but in the case of e.g. an immutable event history that is what i might want. in an sql db i would probably have to create have to create a new table then with the new "incompatible" version. but then i would end up with another table for each such schema change that i ever made.
2021-04-06 12:33:09 +0200 <kuribas> and then, how do you synchonize the changes in the DB with the service version?
2021-04-06 12:34:18 +0200 <kuribas> or do let the service detect the previous database version, and handle it gracefully?
2021-04-06 12:35:10 +0200 <olligobber> No instance for (Language.Haskell.TH.Syntax.Lift TH.Type)
2021-04-06 12:35:12 +0200 <olligobber> >:(
2021-04-06 12:35:21 +0200 <haskellstudent> kuribas: service v1 keeps reading v1 events as usual, service v2 still knows how to read the v1 events but also v2
2021-04-06 12:35:27 +0200 <tdammers> note that it is perfectly possible to implement many changes to an SQL schema in a backwards-compatible way
2021-04-06 12:36:00 +0200 <tdammers> so what exactly is the difference between v1 and v2? typically, such a change will be "widening" rather than completely changing the schema
2021-04-06 12:36:13 +0200 <kuribas> tdammers: I suppose you keep your schemas backward compatible unless it because too messy, then run a breaking migration?
2021-04-06 12:36:15 +0200 <tdammers> add a field, extend a field type to support more values, etc.
2021-04-06 12:36:28 +0200 <haskellstudent> typically, yes. but we were talking about incompatible chanegs
2021-04-06 12:36:37 +0200 <haskellstudent> (deleting or renaming a field)
2021-04-06 12:36:56 +0200geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-04-06 12:36:57 +0200 <tdammers> and even when you make "breaking" changes, you can often *still* uphold backwards compatibility, e.g., by providing views that have the same structure and name as the old table
2021-04-06 12:37:30 +0200 <tdammers> deleting fields: don't delete, make optional.
2021-04-06 12:37:38 +0200 <tdammers> renaming is just delete + add
2021-04-06 12:37:42 +0200 <tdammers> so just do that
2021-04-06 12:37:58 +0200 <tdammers> add a column, make the old one optional, and maybe add a constraint saying you can only have one or the other, but not both
2021-04-06 12:38:05 +0200 <tdammers> or do the "compatibility view" trick
2021-04-06 12:38:39 +0200 <kuribas> tdammers: so you use a stored procedure to implement the old table "view"?
2021-04-06 12:40:05 +0200 <tdammers> no, just a plain view will usually work
2021-04-06 12:40:09 +0200 <tdammers> except for inserts ofc
2021-04-06 12:40:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-04-06 12:40:41 +0200 <kuribas> how does that work for JSON?
2021-04-06 12:41:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-04-06 12:41:16 +0200 <tdammers> JSON? I'm talking about relational schemas. JSON you put in there is pretty much opaque.
2021-04-06 12:42:11 +0200frozenErebus(~frozenEre@37.231.244.249) (Ping timeout: 240 seconds)
2021-04-06 12:43:48 +0200olligobber1(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-04-06 12:44:26 +0200olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 265 seconds)
2021-04-06 12:46:08 +0200 <olligobber1> merijn, hey, why can't I lift a type?
2021-04-06 12:46:21 +0200 <olligobber1> `No instance for (Language.Haskell.TH.Syntax.Lift TH.Type)'
2021-04-06 12:46:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-04-06 12:46:58 +0200 <olligobber1> lol
2021-04-06 12:46:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-04-06 12:47:03 +0200 <olligobber1> merijn, wb
2021-04-06 12:47:18 +0200olligobber1olligobber
2021-04-06 12:48:20 +0200 <haskellstudent> tdammers: ok so zero downtime migrations might be possible, but it seems like there are still traps and while they could be avoided it seems more complicated than just having a kv store/table for my events so i know exactly how the system will behave. example: https://gocardless.com/blog/zero-downtime-postgres-migrations-the-hard-parts/
2021-04-06 12:50:16 +0200MindlessDrone(~MindlessD@unaffiliated/mindlessdrone) (Ping timeout: 268 seconds)
2021-04-06 12:51:35 +0200royal_screwup211(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 12:51:55 +0200MindlessDrone(~MindlessD@unaffiliated/mindlessdrone)
2021-04-06 12:51:57 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2021-04-06 12:53:06 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-04-06 12:54:06 +0200rdivyanshu(uid322626@gateway/web/irccloud.com/x-frmbfjisqfxmhgqn)
2021-04-06 12:55:38 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-04-06 12:56:24 +0200ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-04-06 12:57:04 +0200 <olligobber> merijn, can I have template haskell help pls?
2021-04-06 12:57:21 +0200ukari(~ukari@unaffiliated/ukari)
2021-04-06 12:58:06 +0200gnumonic(~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2021-04-06 12:58:25 +0200 <merijn> olligobber: Eh, maybe? I'm not really a TH expert :p
2021-04-06 12:58:43 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2021-04-06 12:58:45 +0200NinjaTrappeur(~ninja@unaffiliated/ninjatrappeur) (Quit: WeeChat 3.1)
2021-04-06 12:58:48 +0200 <olligobber> merijn, I'm getting No instance for (Lift Type)
2021-04-06 12:58:54 +0200 <olligobber> `No instance for (Language.Haskell.TH.Syntax.Lift TH.Type)'
2021-04-06 12:59:04 +0200 <merijn> Oof...cursed error
2021-04-06 12:59:26 +0200NinjaTrappeur(~ninja@unaffiliated/ninjatrappeur)
2021-04-06 12:59:34 +0200 <olligobber> mmhmm
2021-04-06 12:59:40 +0200 <merijn> I mean, seems perfectly normal there is no Lift instance for Type, but I dread the code that requires that :p
2021-04-06 13:00:00 +0200Alleria(~textual@2603-7000-3040-0000-e045-d645-2e21-7cec.res6.spectrum.com)
2021-04-06 13:00:08 +0200 <olligobber> I'm just trying to take in a function's name and get its type in an Exp
2021-04-06 13:00:23 +0200AlleriaGuest63000
2021-04-06 13:00:25 +0200 <olligobber> so I guess I want to lift the string instead of the type?
2021-04-06 13:01:07 +0200 <olligobber> also, why wouldn't there be a lift instance for type?
2021-04-06 13:01:11 +0200jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-04-06 13:01:34 +0200 <olligobber> lol can I just add deriveLift $ mkName "Type" to my source?
2021-04-06 13:01:35 +0200jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-04-06 13:01:40 +0200 <merijn> Lift is the typeclass for "values that can be written as source literals"
2021-04-06 13:01:51 +0200 <merijn> Type is not something that has values
2021-04-06 13:02:02 +0200 <olligobber> isn't it?
2021-04-06 13:02:05 +0200 <merijn> Sounds like you want something like reify or something
2021-04-06 13:02:10 +0200 <merijn> olligobber: no?
2021-04-06 13:02:20 +0200 <merijn> What values does type have?
2021-04-06 13:02:30 +0200LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
2021-04-06 13:02:35 +0200 <olligobber> https://hackage.haskell.org/package/template-haskell-2.17.0.0/docs/Language-Haskell-TH.html#g:22
2021-04-06 13:02:52 +0200LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2021-04-06 13:03:05 +0200 <merijn> Wait
2021-04-06 13:03:11 +0200 <olligobber> VarT (Name "Int") ?
2021-04-06 13:03:18 +0200 <merijn> You're constructing TH *in* TH?
2021-04-06 13:03:27 +0200 <olligobber> no?
2021-04-06 13:03:41 +0200 <merijn> olligobber: Then you're very confused ;)
2021-04-06 13:04:00 +0200mkDoku(~TheMule@aftr-37-201-195-134.unity-media.net)
2021-04-06 13:04:01 +0200 <olligobber> D:
2021-04-06 13:04:04 +0200 <merijn> olligobber: Let's rewind
2021-04-06 13:04:06 +0200Guest63000(~textual@2603-7000-3040-0000-e045-d645-2e21-7cec.res6.spectrum.com) (Ping timeout: 245 seconds)
2021-04-06 13:04:30 +0200 <merijn> So, we have Template Haskell which is code, that runs at compile time and produces an AST (that gets compiled into the final program)
2021-04-06 13:04:40 +0200 <olligobber> yes
2021-04-06 13:04:43 +0200 <merijn> That AST is represented as Type
2021-04-06 13:05:12 +0200 <olligobber> part of it is, sure
2021-04-06 13:05:20 +0200frozenErebus(~frozenEre@37.231.244.249)
2021-04-06 13:05:38 +0200Alleria_(~textual@2603-7000-3040-0000-e045-d645-2e21-7cec.res6.spectrum.com)
2021-04-06 13:05:49 +0200 <olligobber> oh
2021-04-06 13:05:51 +0200 <olligobber> hm
2021-04-06 13:05:52 +0200 <merijn> The Lift class has, essentially, 1 function: "liftTyped :: t -> m Exp"
2021-04-06 13:06:11 +0200tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Read error: No route to host)
2021-04-06 13:06:13 +0200acidjnk_new(~acidjnk@p200300d0c72b95396118d8d56ee70ad6.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-04-06 13:06:19 +0200 <merijn> i.e. "given a value (at TH execution time), give me the AST representating that value"
2021-04-06 13:06:40 +0200 <olligobber> I fixed it!
2021-04-06 13:06:47 +0200tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-04-06 13:06:48 +0200 <olligobber> now I get a different error
2021-04-06 13:07:01 +0200 <sshine> merijn, "liftTyped" as in "it passed GHC's type-check"?
2021-04-06 13:07:03 +0200 <merijn> But, trying to Lift "Type" implies you are trying to construct the AST of a TH AST at compile time
2021-04-06 13:07:07 +0200rprije(~rprije@59-102-63-15.tpgi.com.au) (Ping timeout: 260 seconds)
2021-04-06 13:07:12 +0200 <olligobber> yeah I was
2021-04-06 13:07:25 +0200 <merijn> sshine: Well, there's "two" THs in GHC
2021-04-06 13:07:48 +0200 <olligobber> instead I used a let bind to make it lift the string instead of the Type
2021-04-06 13:07:52 +0200 <merijn> sshine: There's regular old Template Haskell, which is a Haskell AST that gets compiled, but that AST might be broken and have type errors
2021-04-06 13:08:10 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-04-06 13:08:12 +0200 <merijn> sshine: There's also Typed TH which guarantees the TH generated AST is well-typed
2021-04-06 13:08:18 +0200hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 240 seconds)
2021-04-06 13:08:25 +0200 <sshine> merijn, cool!
2021-04-06 13:08:33 +0200 <merijn> sshine: So really it's more like "liftTyped :: t -> Q (TExp t)"
2021-04-06 13:08:34 +0200 <olligobber> yeah, I can't use typed th here
2021-04-06 13:08:44 +0200 <merijn> sshine: vs "lift :: t -> Q Exp"
2021-04-06 13:08:50 +0200 <sshine> merijn, so supposedly that reduces the C++-like type-error-wall-of-text scenarios?
2021-04-06 13:09:12 +0200 <merijn> sshine: It means that you get the type error in your TH code, rather then the *generated* code, yeah
2021-04-06 13:09:19 +0200 <merijn> sshine: Also, it allows some funky hacks
2021-04-06 13:09:31 +0200 <merijn> sshine: Because you can smuggle typeclass instances backwards!
2021-04-06 13:09:56 +0200 <olligobber> merijn, so I was basically doing [| show t |] where t :: Type, but now I'm doing let showt = show t in [| showt |]
2021-04-06 13:10:08 +0200 <sshine> merijn, >_<
2021-04-06 13:10:09 +0200 <merijn> @hackage validated-literals
2021-04-06 13:10:09 +0200 <lambdabot> https://hackage.haskell.org/package/validated-literals
2021-04-06 13:10:35 +0200 <merijn> sshine: I take a look at the "final" type, then smuggle the typeclass from that back to compile time to do validation
2021-04-06 13:11:16 +0200 <merijn> I need to update it for 9.0, 9.2 and TH 2.17 though >.>
2021-04-06 13:11:17 +0200 <olligobber> ok, now to make "ForallT [KindedTV a_6989586621679019993 StarT,KindedTV v_7566047373982443483 StarT] [] (AppT (AppT (ConT Functional.Lambda.Typed.TypedLambda) (AppT (AppT ArrowT (VarT a_6989586621679019993)) (VarT a_6989586621679019993))) (VarT v_7566047373982443483))" into something readable
2021-04-06 13:11:58 +0200 <sshine> merijn, validated-literals is a good example of somewhere where the type-level fu is pretty encapsulated, and the exposed interface is clean and Boring in the exciting way. :-D
2021-04-06 13:12:08 +0200 <merijn> sshine: Thanks :D
2021-04-06 13:12:13 +0200 <merijn> That was the goal
2021-04-06 13:12:23 +0200 <merijn> tbh
2021-04-06 13:12:25 +0200 <olligobber> yeah, validated-literals is super cool
2021-04-06 13:12:29 +0200 <merijn> the implementation is trivial
2021-04-06 13:12:34 +0200 <sshine> I've seen it before. I just haven't used it yet. so nice to get reminded.
2021-04-06 13:13:04 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-04-06 13:14:05 +0200 <merijn> I'm trying to sneak in enough hacking time to fix Haskell-CI to my liking for GitHub Actions so I can restore CI testing on my repos and update for GHC 9.0 and later, but coding energy is low stuck at home all year >.>
2021-04-06 13:14:26 +0200hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2021-04-06 13:14:41 +0200Alleria_(~textual@2603-7000-3040-0000-e045-d645-2e21-7cec.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-04-06 13:14:56 +0200 <olligobber> ah, pprint, nice: `forall (a_0 :: *) (v_1 :: *) .Functional.Lambda.Typed.TypedLambda (a_0 -> a_0) v_1'
2021-04-06 13:16:05 +0200 <merijn> olligobber: I can't help but be suspicious of showing a type, then quoting that? Really seems like you'd want something like Name or reify instead?
2021-04-06 13:16:32 +0200 <olligobber> merijn, I am using reify to get the type
2021-04-06 13:17:05 +0200 <olligobber> and I'm gonna use pprint instead of show
2021-04-06 13:17:05 +0200 <merijn> olligobber: Why the show, though?
2021-04-06 13:17:11 +0200 <olligobber> so it's a string
2021-04-06 13:17:17 +0200 <merijn> What's gonna happen with that string?
2021-04-06 13:17:19 +0200 <olligobber> print
2021-04-06 13:17:42 +0200 <merijn> So you're trying to print the string of the generated TH at compile time?
2021-04-06 13:17:43 +0200xourt(d4c620ea@212-198-32-234.rev.numericable.fr) (Ping timeout: 240 seconds)
2021-04-06 13:17:48 +0200 <olligobber> no
2021-04-06 13:17:55 +0200 <olligobber> I'm trying to print the type of a function
2021-04-06 13:18:04 +0200 <olligobber> at runtime
2021-04-06 13:18:11 +0200stree(~stree@68.36.8.116) (Ping timeout: 240 seconds)
2021-04-06 13:18:44 +0200 <merijn> olligobber: A polymorphic function, I assume?
2021-04-06 13:18:50 +0200 <olligobber> yeah
2021-04-06 13:18:55 +0200 <merijn> Else you could just use typeRep
2021-04-06 13:19:16 +0200geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 268 seconds)
2021-04-06 13:19:18 +0200 <olligobber> oh, I don't just want the type of the thing
2021-04-06 13:19:30 +0200 <olligobber> the type is TypedLambda t v, and I just want to print t
2021-04-06 13:20:01 +0200 <olligobber> and it worked! wow
2021-04-06 13:24:01 +0200 <olligobber> merijn, see: https://gist.github.com/olligobber/a8931ae1ed972e6d524063b079dcdefb
2021-04-06 13:24:08 +0200 <olligobber> works fine
2021-04-06 13:24:42 +0200 <olligobber> for one example
2021-04-06 13:26:06 +0200 <merijn> olligobber: Careful an elder god doesn't fry your brain, staring into that abyss ;)
2021-04-06 13:26:17 +0200 <olligobber> it's fine
2021-04-06 13:26:46 +0200 <merijn> That's what all Lovecraft protoganists think before descending into gibbering madness ;)
2021-04-06 13:27:26 +0200acidjnk_new(~acidjnk@p200300d0c72b95396118d8d56ee70ad6.dip0.t-ipconnect.de)
2021-04-06 13:27:46 +0200 <olligobber> I chose this path when I started learning haskell
2021-04-06 13:28:44 +0200 <olligobber> though better variable names from pprinting the types would be nice
2021-04-06 13:28:46 +0200 <merijn> olligobber: Oh, I am not saying you *shouldn't*, I learned a lot messing with dark arts, but it helps to be aware that what you are doing is in fact dark voodoo :p
2021-04-06 13:30:00 +0200 <olligobber> oh yeah, typing in "compose" and it returning "(b_0 -> c_1) -> (a_2 -> b_0) -> a_2 -> c_1" and "(λabc.a(bc))" is definitely voodoo
2021-04-06 13:30:16 +0200 <olligobber> I just wish the voodoo had less unnecessary underscores
2021-04-06 13:30:48 +0200 <Logio> extra precision is needed when dealing with demons
2021-04-06 13:31:30 +0200stree(~stree@68.36.8.116)
2021-04-06 13:32:23 +0200 <merijn> olligobber: I'm still fond of this horror: https://gist.github.com/merijn/6130082 ;)
2021-04-06 13:32:46 +0200 <merijn> olligobber: You need the underscores because naming things is hard, even if you're a compiler!
2021-04-06 13:34:03 +0200 <Logio> I'm tempted to press the "report abuse" button on the gist
2021-04-06 13:34:09 +0200malumore(~malumore@151.62.116.133)
2021-04-06 13:35:10 +0200 <merijn> Logio: Now realise I wrote that in 2013
2021-04-06 13:35:14 +0200 <merijn> ;)
2021-04-06 13:35:26 +0200 <merijn> You can do much worse now :p
2021-04-06 13:36:24 +0200 <olligobber> merijn, wait, so that is the identity function but it doesn't work on () or Int?
2021-04-06 13:36:39 +0200 <merijn> olligobber: YEs
2021-04-06 13:36:42 +0200 <olligobber> o_O
2021-04-06 13:36:43 +0200 <merijn> Well
2021-04-06 13:36:46 +0200minoru_shiraeesh(~shiraeesh@109.166.56.44) (Ping timeout: 240 seconds)
2021-04-06 13:36:56 +0200 <olligobber> also, I fixed the underscore thing, why can't ghc do it too?
2021-04-06 13:36:57 +0200 <merijn> olligobber: There's...some catches
2021-04-06 13:37:01 +0200 <olligobber> oh no
2021-04-06 13:37:15 +0200 <merijn> olligobber: As in, if you write "1" GHC can't tell if it's Int or not
2021-04-06 13:37:22 +0200 <olligobber> right
2021-04-06 13:37:30 +0200 <merijn> So (at least in 2013) it'd throw a hissy fit on polymorphic literals
2021-04-06 13:37:34 +0200 <olligobber> lol
2021-04-06 13:37:47 +0200 <merijn> But at least it was a compile time hissy fit!
2021-04-06 13:38:23 +0200 <merijn> You could probably write something better
2021-04-06 13:38:33 +0200 <olligobber> so I can't get rid of the underscores?
2021-04-06 13:38:37 +0200CitizenSnips(~CitizenSn@irc.refl.club) (Quit: ZNC 1.8.2 - https://znc.in)
2021-04-06 13:38:44 +0200 <merijn> This is also using a hacky ~ abuse to force the error, because there was no custom type errors at the time
2021-04-06 13:38:48 +0200 <merijn> olligobber: Probably no
2021-04-06 13:38:52 +0200 <olligobber> :(
2021-04-06 13:39:02 +0200 <merijn> olligobber: those type variable names are an internal detail of GHC
2021-04-06 13:39:37 +0200 <merijn> I mean, you could write code to rename all the type variables before printing...but that seems excessive >.>
2021-04-06 13:39:40 +0200 <olligobber> I've written a function that takes a traversable of ords and replaces each thing with a distinct name before though
2021-04-06 13:40:02 +0200CitizenSnips(~CitizenSn@irc.refl.club)
2021-04-06 13:40:04 +0200 <olligobber> fine, underscores are ok
2021-04-06 13:40:14 +0200 <olligobber> the point of using template haskell here is to be lazy
2021-04-06 13:41:58 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-04-06 13:42:19 +0200royal_screwup211(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-04-06 13:42:19 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-04-06 13:42:30 +0200geekosaur(ac3a53f2@172.58.83.242)
2021-04-06 13:42:38 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 13:42:39 +0200 <olligobber> as for dark magic, I type "fix", I get "(a_0 -> a_0) -> a_0" and "(λa.(λb.bb)(λb.a(bb)))"
2021-04-06 13:46:25 +0200Sorna(~Sornaensi@077213203030.dynamic.telenor.dk)
2021-04-06 13:46:32 +0200 <merijn> I am both impressed and appalled :p
2021-04-06 13:46:39 +0200 <olligobber> :D
2021-04-06 13:47:11 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-04-06 13:49:38 +0200 <olligobber> oh no, GHC.Types.Bool?
2021-04-06 13:49:41 +0200Sornaensis(~Sornaensi@79.142.232.102.static.router4.bolignet.dk) (Ping timeout: 252 seconds)
2021-04-06 13:49:42 +0200 <olligobber> I just want Bool!
2021-04-06 13:50:06 +0200maroloccio(~marolocci@pousada3ja.mma.com.br)
2021-04-06 13:51:43 +0200Alleria_(~AllahuAkb@2603-7000-3040-0000-51cb-91e5-ecfa-0406.res6.spectrum.com)
2021-04-06 13:52:27 +0200dougsko(~dougsko@139.28.218.148) (Remote host closed the connection)
2021-04-06 13:53:19 +0200v01d4lph4(~v01d4lph4@223.177.183.124) (Read error: Connection reset by peer)
2021-04-06 13:53:48 +0200v01d4lph4(~v01d4lph4@223.177.183.124)
2021-04-06 13:55:21 +0200kiweun(~kiweun@2607:fea8:2a62:9600:9c30:fa43:beb0:8b1b)
2021-04-06 13:56:01 +0200drbean_(~drbean@TC210-63-209-216.static.apol.com.tw)
2021-04-06 13:58:45 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2021-04-06 13:59:57 +0200kiweun(~kiweun@2607:fea8:2a62:9600:9c30:fa43:beb0:8b1b) (Ping timeout: 250 seconds)
2021-04-06 14:00:32 +0200frozenErebus(~frozenEre@37.231.244.249) (Ping timeout: 246 seconds)
2021-04-06 14:02:10 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-04-06 14:03:27 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 14:03:38 +0200urodna(~urodna@unaffiliated/urodna)
2021-04-06 14:06:01 +0200malumore(~malumore@151.62.116.133) (Ping timeout: 260 seconds)
2021-04-06 14:08:00 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-04-06 14:09:11 +0200haskellstudent(~quassel@213-225-9-45.nat.highway.a1.net) (Ping timeout: 260 seconds)
2021-04-06 14:15:11 +0200manuel(~manuel@185.204.1.185)
2021-04-06 14:15:38 +0200 <olligobber> huh, is regex not in haskell by default?
2021-04-06 14:16:04 +0200 <geekosaur> we tend to prefer parsers
2021-04-06 14:16:16 +0200 <olligobber> fair, but I'm doing hacky stuff
2021-04-06 14:16:17 +0200Alleria(~textual@mskresolve-a.mskcc.org)
2021-04-06 14:16:19 +0200 <yushyin> 'in haskell'? we have regex libs on hackage
2021-04-06 14:16:30 +0200 <olligobber> yeah, but it isn't in base
2021-04-06 14:16:41 +0200AlleriaGuest96189
2021-04-06 14:17:03 +0200 <geekosaur> base is small, not "contains everything"
2021-04-06 14:17:28 +0200 <olligobber> yeah, and regex should be avoided
2021-04-06 14:17:30 +0200 <olligobber> hmm
2021-04-06 14:17:41 +0200 <olligobber> can I do this without regex
2021-04-06 14:18:10 +0200 <xsperry> you can get regex packages on hackage, just like parser packages
2021-04-06 14:18:39 +0200 <olligobber> yeah, but there must be a better way of doing this...
2021-04-06 14:19:01 +0200 <merijn> olligobber: Parser combinators :p
2021-04-06 14:19:11 +0200 <xsperry> what are you doing?
2021-04-06 14:19:22 +0200 <merijn> xsperry: Black magic :p
2021-04-06 14:19:35 +0200 <olligobber> printing a Type but without the underscores after type variables and library names before type constructors
2021-04-06 14:20:20 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-04-06 14:20:24 +0200Tario(~Tario@201.192.165.173)
2021-04-06 14:20:53 +0200 <olligobber> I could write my own function...
2021-04-06 14:21:00 +0200 <geekosaur> :t span
2021-04-06 14:21:01 +0200 <lambdabot> (a -> Bool) -> [a] -> ([a], [a])
2021-04-06 14:21:21 +0200 <olligobber> nah, I'll just write my own function to render the ast
2021-04-06 14:21:30 +0200 <olligobber> famous last words
2021-04-06 14:21:59 +0200Sorny(~Sornaensi@79.142.232.102.static.router4.bolignet.dk)
2021-04-06 14:23:18 +0200 <Uniaika> olligobber: what do you need regexps for?
2021-04-06 14:23:28 +0200 <Uniaika> ah, curse, my client has scrolled up
2021-04-06 14:23:31 +0200 <Uniaika> olligobber: don't mind me
2021-04-06 14:23:48 +0200bahamas(~lucian@86.120.22.101)
2021-04-06 14:23:48 +0200bahamas(~lucian@86.120.22.101) (Changing host)
2021-04-06 14:23:48 +0200bahamas(~lucian@unaffiliated/bahamas)
2021-04-06 14:24:09 +0200 <tdammers> personally, my first instinct would be to find a better representation of that Type, one that has more structure to it than just String
2021-04-06 14:24:23 +0200nbloomf(~nbloomf@76.217.43.73)
2021-04-06 14:24:26 +0200Sorna(~Sornaensi@077213203030.dynamic.telenor.dk) (Ping timeout: 240 seconds)
2021-04-06 14:24:34 +0200 <tdammers> and then build a custom pretty-printer for that, rather than trying to reverse-engineer the existing pretty-printing
2021-04-06 14:25:36 +0200 <olligobber> well, Type kinda captures that
2021-04-06 14:26:16 +0200 <tdammers> right, it's Type from TH, isn't it
2021-04-06 14:26:23 +0200 <olligobber> yeah
2021-04-06 14:26:47 +0200 <tdammers> so you'd have to bite the bullet and write a pretty-printer that covers all the constructors
2021-04-06 14:27:26 +0200 <olligobber> or I could make it fail on constructors I don't think it will actually encounter
2021-04-06 14:27:27 +0200 <tdammers> and then use https://hackage.haskell.org/package/template-haskell-2.17.0.0/docs/Language-Haskell-TH.html#g:16 these fellows to massage individual names into a format you like
2021-04-06 14:27:43 +0200 <tdammers> yeah, or that. or just print something useless for them
2021-04-06 14:27:57 +0200 <tdammers> depends how serious and reusable you want to make it
2021-04-06 14:28:14 +0200 <olligobber> I expect most of my types to be fairly normal
2021-04-06 14:28:24 +0200andreas303(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2021-04-06 14:28:35 +0200 <olligobber> huh, what does nameBase do to type variables I wonder
2021-04-06 14:29:00 +0200andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-04-06 14:29:08 +0200 <tdammers> same as term variables. report the local name without a module prefix.
2021-04-06 14:29:25 +0200 <tdammers> if there's an underscore at the end, it'll still havethat
2021-04-06 14:29:30 +0200 <olligobber> I see
2021-04-06 14:29:33 +0200 <tdammers> but just removing the underscore isn't difficult at all
2021-04-06 14:29:42 +0200 <olligobber> what if there is a_0 and a_1
2021-04-06 14:29:45 +0200solvr(57e3c46d@87.227.196.109)
2021-04-06 14:29:57 +0200 <tdammers> well, then you would normally want to retain the whole thing to distinguish them
2021-04-06 14:30:15 +0200 <olligobber> I'm gonna write a smart renamer instead that just uses ['a'..'z'] as type variable names
2021-04-06 14:30:33 +0200 <tdammers> depends on your use case, but yes, that you could do
2021-04-06 14:33:47 +0200mkDoku(~TheMule@aftr-37-201-195-134.unity-media.net) (Ping timeout: 246 seconds)
2021-04-06 14:34:22 +0200malumore(~malumore@151.62.116.133)
2021-04-06 14:34:36 +0200 <olligobber> yeah I can re-use something like `reLabelInt :: (Ord x, Traversable t) => t x -> t Integer' from https://github.com/olligobber/DirectProof/blob/master/ReLabel.hs
2021-04-06 14:36:39 +0200geekosaur(ac3a53f2@172.58.83.242) (Quit: Connection closed)
2021-04-06 14:39:35 +0200geekosaur(ac3a53f2@172.58.83.242)
2021-04-06 14:41:45 +0200mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Remote host closed the connection)
2021-04-06 14:41:50 +0200CitizenSnips(~CitizenSn@irc.refl.club) (Remote host closed the connection)
2021-04-06 14:42:52 +0200ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-04-06 14:43:02 +0200CitizenSnips(~CitizenSn@irc.refl.club)
2021-04-06 14:43:40 +0200ukari(~ukari@unaffiliated/ukari)
2021-04-06 14:45:38 +0200ddellacosta(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 14:46:10 +0200CitizenSnips(~CitizenSn@irc.refl.club) (Client Quit)
2021-04-06 14:47:00 +0200waleee-cl(uid373333@gateway/web/irccloud.com/x-nfsshumoaduyxswb)
2021-04-06 14:50:01 +0200CitizenSnips(~CitizenSn@irc.refl.club)
2021-04-06 14:51:22 +0200mmmattyx(uid17782@gateway/web/irccloud.com/x-kuttqhjrmgrkynne)
2021-04-06 14:53:43 +0200shalokshalom(~quassel@2a02:1748:dd5e:7f60:cf49:8384:7c93:3106) (Ping timeout: 246 seconds)
2021-04-06 14:54:58 +0200ddellacosta(~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds)
2021-04-06 14:55:32 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-04-06 14:56:59 +0200maroloccio(~marolocci@pousada3ja.mma.com.br) (Quit: WeeChat 2.3)
2021-04-06 14:59:41 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-04-06 15:00:14 +0200bergey(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-04-06 15:02:11 +0200typetetris(uid275937@gateway/web/irccloud.com/x-ffiqklyrigbqxewu)
2021-04-06 15:02:47 +0200minoru_shiraeesh(~shiraeesh@109.166.56.223)
2021-04-06 15:04:42 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-04-06 15:08:57 +0200frozenErebus(~frozenEre@37.231.244.249)
2021-04-06 15:09:06 +0200haskellstudent(~quassel@213-225-9-45.nat.highway.a1.net)
2021-04-06 15:10:15 +0200bergey(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 268 seconds)
2021-04-06 15:10:58 +0200forell(~forell@unaffiliated/forell) (Quit: ZNC - https://znc.in)
2021-04-06 15:11:11 +0200deviantfero(~deviantfe@190.150.27.58) (Quit: WeeChat 3.1)
2021-04-06 15:11:51 +0200forell(~forell@unaffiliated/forell)
2021-04-06 15:13:05 +0200Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2021-04-06 15:13:08 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 15:13:29 +0200nbloomf(~nbloomf@76.217.43.73) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-04-06 15:15:16 +0200carlomagno(~cararell@148.87.23.11)
2021-04-06 15:17:04 +0200CaptainIRS(9d339880@157.51.152.128) (Quit: Connection closed)
2021-04-06 15:19:26 +0200bahamas(~lucian@unaffiliated/bahamas) (Ping timeout: 240 seconds)
2021-04-06 15:19:33 +0200barthandelous(~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9)
2021-04-06 15:19:46 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-04-06 15:20:05 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 15:21:49 +0200xourt(d4c620ea@212-198-32-234.rev.numericable.fr)
2021-04-06 15:22:17 +0200 <olligobber> ok, my render function is slightly better
2021-04-06 15:22:26 +0200 <olligobber> `((->) a) a'
2021-04-06 15:22:32 +0200 <olligobber> `((->) Bool) ((->) Bool) Bool'
2021-04-06 15:22:46 +0200 <olligobber> could use some work though
2021-04-06 15:24:47 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2021-04-06 15:26:23 +0200 <olligobber> ah, missing brackets, yay
2021-04-06 15:30:00 +0200LKoen(~LKoen@65.250.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2021-04-06 15:31:57 +0200LKoen(~LKoen@65.250.88.92.rev.sfr.net)
2021-04-06 15:31:59 +0200LKoen(~LKoen@65.250.88.92.rev.sfr.net) (Read error: Connection reset by peer)
2021-04-06 15:33:11 +0200 <olligobber> yay it worked!
2021-04-06 15:34:54 +0200kiweun(~kiweun@2607:fea8:2a62:9600:b11f:2c4a:f9e7:6e7d)
2021-04-06 15:37:08 +0200 <emmanuel_erc> So at my soon to be previous job, I had to maintain a Haskell codebase that is going to be rewritten (to Typescript)
2021-04-06 15:37:23 +0200 <emmanuel_erc> I think I've heard from people here before that Haskell codebase rewrites are common in the industry.
2021-04-06 15:37:43 +0200 <olligobber> why not purescript?
2021-04-06 15:37:57 +0200 <emmanuel_erc> I don't see the need to go into th reasons why it happened at my previous job, but I'd like to ask if it is common that Haskell codebases, what are some common reasons.
2021-04-06 15:38:53 +0200 <emmanuel_erc> olligobber: Because they think typescript is more popular and they'd like to open source the project (they really want PRs from other people not at the compnay)
2021-04-06 15:39:06 +0200cafce25(~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-04-06 15:39:11 +0200kiweun(~kiweun@2607:fea8:2a62:9600:b11f:2c4a:f9e7:6e7d) (Ping timeout: 250 seconds)
2021-04-06 15:39:17 +0200 <olligobber> hmm, as someone who hasn't used typescript I guess I can't judge yet
2021-04-06 15:39:41 +0200stree(~stree@68.36.8.116) (Ping timeout: 252 seconds)
2021-04-06 15:39:45 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 15:40:24 +0200 <lortabac> emmanuel_erc: I don't know how common they are, it has happened to me and I've heard of at least 3 similar rewrite stories at big companies
2021-04-06 15:40:45 +0200 <olligobber> merijn, want to see the dark magic? https://github.com/olligobber/IotaBF/blob/70d04088bac1f56c4660be1f7ba6e16ef0403a01/src/PrintLambda…
2021-04-06 15:41:21 +0200 <olligobber> note I have no idea if it works properly, but it works on my test cases
2021-04-06 15:41:46 +0200 <lortabac> emmanuel_erc: the common theme seem to be an ambitious manager looking for an easy way of promoting themselves
2021-04-06 15:43:35 +0200cafce25(~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de)
2021-04-06 15:44:07 +0200cafce25(~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de) (Client Quit)
2021-04-06 15:44:18 +0200cafce25(~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de)
2021-04-06 15:44:23 +0200geekosaur(ac3a53f2@172.58.83.242) (Quit: Connection closed)
2021-04-06 15:45:11 +0200 <emmanuel_erc> that seems to be the case here as well.
2021-04-06 15:45:18 +0200tetrahedron(hypercube@gateway/vpn/protonvpn/hypercube) (Ping timeout: 240 seconds)
2021-04-06 15:46:44 +0200 <emmanuel_erc> I mean they don't come right out and say that. How did everyone else come to the conclusion that there was some ambitious manager looking to promote themselves?
2021-04-06 15:47:12 +0200 <lortabac> that was my own conclusion
2021-04-06 15:47:23 +0200 <lortabac> based on the stories I have witnessed and heard
2021-04-06 15:47:39 +0200Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 260 seconds)
2021-04-06 15:49:18 +0200 <lortabac> that said, I have also heard of rewrites for technical reasons -- there was a team migrating to Go because of the long GC pauses
2021-04-06 15:50:05 +0200 <lortabac> they wrote a blog post IIRC
2021-04-06 15:50:09 +0200drbean_(~drbean@TC210-63-209-216.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2021-04-06 15:50:10 +0200 <merijn> emmanuel_erc: Usually what happens is: Some small team of people write something cool in Haskell that blows other solutions out the water. It takes of. Managers and corporate come in, look at Haskell and go "oh...shit what do we do with this...", hire 100 code monkeys to reimplement the entire thing in Java/C++ and repeat
2021-04-06 15:50:25 +0200 <merijn> See: BlueSpec
2021-04-06 15:51:47 +0200 <merijn> Managers/companies don't wanna deal with needing to find people with the right skills, training, etc. they mostly want easily replaced, predictable machine cogs :p
2021-04-06 15:51:55 +0200 <lortabac> in the company where I work, 2 out of the 3 projects I've worked on have been rewritten
2021-04-06 15:52:04 +0200stree(~stree@68.36.8.116)
2021-04-06 15:52:05 +0200 <lortabac> the first one was more or less as merijn described
2021-04-06 15:52:33 +0200 <lortabac> the second one was more about an ambitious manager blaming Haskell instead of management problems
2021-04-06 15:53:15 +0200 <merijn> emmanuel_erc: Orson Scott Card's essay on software companies is always relevant: http://www.call-with-current-continuation.org/rants/how-companies-die.txt
2021-04-06 15:53:16 +0200 <lortabac> then blaming the C# devs who quit the project before finishing the rewrite (because they ran into the same problems as the Haskell team)
2021-04-06 15:54:44 +0200bahamas(~lucian@unaffiliated/bahamas)
2021-04-06 15:55:16 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection)
2021-04-06 15:55:39 +0200justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 3.0.1)
2021-04-06 15:56:16 +0200 <maerwald> lortabac: yes, they tried to hire haskellers with Go experience, I remember.
2021-04-06 15:56:19 +0200ukari(~ukari@unaffiliated/ukari) (Ping timeout: 265 seconds)
2021-04-06 15:56:52 +0200 <merijn> lortabac: To be fair, the project couldn't have been a more perfect worst-case for GHC's GC if they'd tried :p
2021-04-06 15:56:57 +0200 <merijn> s/the/that
2021-04-06 15:57:23 +0200LKoen(~LKoen@65.250.88.92.rev.sfr.net)
2021-04-06 15:58:16 +0200 <maerwald> emmanuel_erc: Typescript is awesome. I know haskellers who switched to TypeScript jobs
2021-04-06 15:59:47 +0200bahamas(~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds)
2021-04-06 16:01:07 +0200 <shapr> int-e: much more activity here https://github.com/grin-compiler/
2021-04-06 16:01:34 +0200 <zzz> msg lambdabot :t 3
2021-04-06 16:01:43 +0200 <zzz> ignore that please
2021-04-06 16:01:54 +0200 <merijn> zzz: You can't make me!
2021-04-06 16:01:55 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 16:02:41 +0200notzmv(~zmv@unaffiliated/zmv) (Ping timeout: 268 seconds)
2021-04-06 16:03:29 +0200 <fendor> maerwald, while I agree, typescript is really cool, I don't like the ecosystem that comes with it, usually
2021-04-06 16:04:49 +0200 <lortabac> typescript is cool, but rewrites are almost always a bad idea
2021-04-06 16:04:59 +0200Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-04-06 16:05:58 +0200 <merijn> I disagree
2021-04-06 16:06:04 +0200 <merijn> Lots of times they're a great idea
2021-04-06 16:06:05 +0200 <emmanuel_erc> Regardless, I'm leaving the current job partially because I think the rewrite is a dumb idea and I don't want to work on a codebase that is going to be thrown out eventually.
2021-04-06 16:06:27 +0200 <emmanuel_erc> They didn't really have an interest in listening to what I had to say about the whole venture.
2021-04-06 16:06:31 +0200`slikts(~nelabs@wikipedia/reinis) (Ping timeout: 246 seconds)
2021-04-06 16:06:32 +0200 <emmanuel_erc> So I've decided to leave.
2021-04-06 16:06:42 +0200Tops21(~Tobias@dyndsl-095-033-088-082.ewe-ip-backbone.de)
2021-04-06 16:07:14 +0200 <maerwald> merijn: the problem is that most ppl think rewrite should include changing langague
2021-04-06 16:07:20 +0200 <maerwald> while that's often one of the lesser problems
2021-04-06 16:08:06 +0200 <maerwald> most of the time the continuous growing of the codebase is what kills the bird
2021-04-06 16:08:33 +0200 <maerwald> assumptions that were true in the beginning aren't anymore, but are still intrinic part of the architecture
2021-04-06 16:08:38 +0200 <merijn> maerwald: More people should listen to Brooks. Build one to throw away
2021-04-06 16:08:43 +0200 <maerwald> everything after that is going to be sh*te
2021-04-06 16:09:42 +0200 <zzz> if i have 'x = 1 :: Num a => a ; y = x :: Int' are x and y the same or is y a copy of x?
2021-04-06 16:09:50 +0200 <lortabac> merijn: rewrites in the real world are different, they are often made by different people, who end up reinventing the same wheels and making the same mistakes
2021-04-06 16:10:02 +0200 <merijn> zzz: Yes, no, maybe, you shouldn't care :)
2021-04-06 16:10:08 +0200 <maerwald> so we have ppl switch languages, frameworks and whatnot... but they rarely switch their *approach* to software engineering
2021-04-06 16:10:24 +0200 <merijn> lortabac: I'm not responsible for people doing sensible things in a stupid way, thereby ruining the sensibility
2021-04-06 16:10:25 +0200 <lortabac> "Build one to throw away" is a very good idea if you gain knowledge from the first try
2021-04-06 16:10:31 +0200Tops2(~Tobias@dyndsl-095-033-088-082.ewe-ip-backbone.de) (Ping timeout: 260 seconds)
2021-04-06 16:10:47 +0200 <merijn> maerwald: Wait...I have to think to program?
2021-04-06 16:10:58 +0200 <merijn> maerwald: I thought I could just copy&paste from SO
2021-04-06 16:11:39 +0200 <zzz> merijn: i see. 'x / 2' is fine but 'y / 2' is not
2021-04-06 16:11:49 +0200 <maerwald> yeah and read blog posts from Google engineers to figure out what framework you need
2021-04-06 16:12:06 +0200 <maerwald> (because you really have the same set of problem as google has, right?)
2021-04-06 16:12:38 +0200Guest15377stilgart
2021-04-06 16:13:24 +0200 <merijn> zzz: Yes, but that's unrelated?
2021-04-06 16:13:33 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection)
2021-04-06 16:13:42 +0200tetrahedron(~hypercube@137.112.237.23)
2021-04-06 16:13:46 +0200rdivyanshu(uid322626@gateway/web/irccloud.com/x-frmbfjisqfxmhgqn) (Quit: Connection closed for inactivity)
2021-04-06 16:13:53 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 16:15:00 +0200haskellstudent(~quassel@213-225-9-45.nat.highway.a1.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-04-06 16:15:15 +0200haskellstudent(~quassel@213-225-9-45.nat.highway.a1.net)
2021-04-06 16:15:51 +0200kiweun(~kiweun@dsl-173-206-238-190.tor.primus.ca)
2021-04-06 16:15:59 +0200haskellstudent(~quassel@213-225-9-45.nat.highway.a1.net) (Client Quit)
2021-04-06 16:16:05 +0200 <zzz> merijn: it is?
2021-04-06 16:16:13 +0200 <merijn> :t (/)
2021-04-06 16:16:14 +0200 <lambdabot> Fractional a => a -> a -> a
2021-04-06 16:16:15 +0200haskellstudent(~quassel@213-225-9-45.nat.highway.a1.net)
2021-04-06 16:16:30 +0200 <merijn> zzz: / only works on types that are instances of Fractional
2021-04-06 16:16:38 +0200 <merijn> zzz: Int is not an instance of Fractional
2021-04-06 16:16:44 +0200 <tdammers> maerwald: and also because the choice of framework is the one thing that defines you as an "engineer"
2021-04-06 16:16:45 +0200kiweun(~kiweun@dsl-173-206-238-190.tor.primus.ca) (Remote host closed the connection)
2021-04-06 16:16:49 +0200 <merijn> So using / on something of type Int is a type error
2021-04-06 16:17:05 +0200frozenErebus(~frozenEre@37.231.244.249) (Ping timeout: 252 seconds)
2021-04-06 16:17:10 +0200barthandelous(~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) (Ping timeout: 276 seconds)
2021-04-06 16:17:15 +0200 <merijn> zzz: 'y' has type "Int" (whether it's the same as x or not)
2021-04-06 16:17:24 +0200 <merijn> zzz: You probably want div
2021-04-06 16:17:34 +0200 <merijn> > 10 `div` 3
2021-04-06 16:17:36 +0200 <lambdabot> 3
2021-04-06 16:17:54 +0200 <zzz> no. thats the thing
2021-04-06 16:18:00 +0200 <zzz> ok, let me try to explain
2021-04-06 16:18:04 +0200 <merijn> Then you want fromIntegral
2021-04-06 16:18:13 +0200 <zzz> (1 :: Num a => a) / 2
2021-04-06 16:18:13 +0200 <merijn> > (10 :: Int) / 3
2021-04-06 16:18:15 +0200 <lambdabot> error:
2021-04-06 16:18:15 +0200 <lambdabot> • No instance for (Fractional Int) arising from a use of ‘/’
2021-04-06 16:18:15 +0200 <lambdabot> • In the expression: (10 :: Int) / 3
2021-04-06 16:18:17 +0200 <merijn> eh
2021-04-06 16:18:18 +0200 <merijn> what
2021-04-06 16:18:20 +0200 <zzz> > (1 :: Num a => a) / 2
2021-04-06 16:18:21 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2021-04-06 16:18:21 +0200 <lambdabot> 0.5
2021-04-06 16:18:22 +0200 <merijn> ah, right
2021-04-06 16:18:32 +0200 <merijn> > fromIntegral (10 :: Int) / 3
2021-04-06 16:18:34 +0200 <lambdabot> 3.3333333333333335
2021-04-06 16:18:45 +0200 <zzz> no merijn, here's my problem
2021-04-06 16:18:47 +0200 <merijn> :t fromIntegral
2021-04-06 16:18:48 +0200 <lambdabot> (Integral a, Num b) => a -> b
2021-04-06 16:18:57 +0200 <zzz> i get that, but listen
2021-04-06 16:19:05 +0200 <zzz> ill try to be concise
2021-04-06 16:19:09 +0200 <zzz> > (1 :: Num a => a) / 2
2021-04-06 16:19:11 +0200 <lambdabot> 0.5
2021-04-06 16:19:32 +0200 <zzz> > (1 :: Int) / 2
2021-04-06 16:19:33 +0200 <lambdabot> error:
2021-04-06 16:19:34 +0200 <lambdabot> • No instance for (Fractional Int) arising from a use of ‘/’
2021-04-06 16:19:34 +0200 <lambdabot> • In the expression: (1 :: Int) / 2
2021-04-06 16:19:34 +0200 <merijn> That's GHC infers (and solves) a Fractional constraint there
2021-04-06 16:19:41 +0200 <zzz> this is all good and obvious
2021-04-06 16:19:44 +0200CaptainIRS(9d339880@157.51.152.128)
2021-04-06 16:20:58 +0200notzmv(~zmv@unaffiliated/zmv)
2021-04-06 16:21:11 +0200 <zzz> my problem is when i do 'x = 1 :: Num a => a ; y = x :: Int' i can do x/2 but not y/2
2021-04-06 16:21:25 +0200 <merijn> Yes
2021-04-06 16:21:42 +0200 <zzz> which kind of clashes with my idea of referential transparency
2021-04-06 16:21:50 +0200 <maerwald> tdammers: I've been thinking whether there's a way to capture the notion of code complexity (in terms of intellectual/practical complexity) better, especially over time. But it would always sorta be per compontent/module/function (e.g. via self-reports after a ticket is complete)
2021-04-06 16:21:55 +0200 <merijn> zzz: Why?
2021-04-06 16:22:02 +0200 <maerwald> But that quickly breaks down with code refactors
2021-04-06 16:22:04 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-04-06 16:22:27 +0200tetrahedron(~hypercube@137.112.237.23) (Quit: WeeChat 3.1)
2021-04-06 16:22:35 +0200 <emmanuel_erc> Given what has happened to me at this last job, it makes me wonder if persuing Haskell has been worth it or will be so.
2021-04-06 16:22:45 +0200 <merijn> zzz: If you rewrote "y = 1 :: Int" you'd get the same result
2021-04-06 16:22:57 +0200 <maerwald> emmanuel_erc: worth for?
2021-04-06 16:23:03 +0200 <zzz> merijn: because if 'x = y', shouldn't 'x/2 == y/2' ?
2021-04-06 16:23:04 +0200 <merijn> So, you can trivially replace 'x' with its definition in y.
2021-04-06 16:23:29 +0200LKoen(~LKoen@65.250.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2021-04-06 16:23:33 +0200 <emmanuel_erc> maerwald: Was learning Haskell worth it? (For job prospects/satisfication)
2021-04-06 16:23:37 +0200 <lortabac> emmanuel_erc: instead of a big company with a small Haskell team, try targeting companies that are fully committed to Haskell
2021-04-06 16:23:46 +0200 <merijn> zzz: But x and y have different types
2021-04-06 16:23:54 +0200 <tdammers> maerwald: "WTF/s" is the established unit for that, I think
2021-04-06 16:23:56 +0200 <lortabac> it has worked for me (I am starting a new job in a couple of weeks)
2021-04-06 16:23:59 +0200 <zzz> merijn: i see
2021-04-06 16:24:03 +0200 <maerwald> tdammers: :p
2021-04-06 16:24:36 +0200 <merijn> zzz: You can replace sub expressions *in a well-typed expression* with their definition
2021-04-06 16:24:46 +0200 <merijn> zzz: But your 'y/2' isn't well typed to begin with
2021-04-06 16:24:52 +0200 <maerwald> emmanuel_erc: well, there are some well paid haskell jobs, but generally you can make better money with other languages
2021-04-06 16:25:02 +0200 <tdammers> emmanuel_erc: I would say that learning Haskell is worth it even if you never get to use the language itself professionally. Just the concepts you're exposed to, and the clarity gained from working through them and making them your own, is worth every minute of it.
2021-04-06 16:25:22 +0200 <merijn> zzz: Basically, claims are limited to well-typed expression. Expression that are *not* well-typed may (or may not) conform to those claims
2021-04-06 16:25:24 +0200 <tdammers> emmanuel_erc: the risk is of course that you may end up spoiling your brain for more, ahem, pedestrian languages
2021-04-06 16:25:33 +0200 <maerwald> pedestrian :p
2021-04-06 16:25:44 +0200 <merijn> zzz: In this case, the claim would still hold for your example, despite 'y/2' not being well-typed
2021-04-06 16:25:46 +0200 <tdammers> *cough*phpedestrian*cough**diescoughing*
2021-04-06 16:26:03 +0200 <emmanuel_erc> tdammers: Yeah, I can sympathize with that last statement. It annoys me when I don't have algebraic data types (I'm talking the most basic kind).
2021-04-06 16:26:22 +0200 <maerwald> emmanuel_erc: you can *sorta* have them in typescript
2021-04-06 16:26:30 +0200 <kuribas> tdammers: that happened. I find every other language painful.
2021-04-06 16:26:39 +0200 <merijn> zzz: Basically, the idea of interactions between proofs/claims and types is that, to keep our proofs doable, we restrict to proving properties of well-typed expressions
2021-04-06 16:26:43 +0200 <maerwald> and there are way more opportunities in typescript, so if you're looking for that only...
2021-04-06 16:26:58 +0200 <merijn> zzz: Making use of the type system to rule out cases that we don't care about
2021-04-06 16:27:35 +0200 <tdammers> emmanuel_erc: algebraic data types are still a relatively superficial feature. I'm talking more about the big picture. Things like being more aware of side effects, and designing code to keep them contained. Even if your code isn't pure the way Haskell code is, just having the clarity of mind to realize that effects are thing that need particular attention, and understanding some strategies for dealing with
2021-04-06 16:27:37 +0200 <tdammers> them, is worth a lot.
2021-04-06 16:27:54 +0200 <merijn> zzz: Consider the trivial type system where no expressions are well-typed. Now all our proofs are trivial! Everything is always true for all well-typed expressions ('cause there aren't any)!
2021-04-06 16:28:05 +0200 <maerwald> tdammers: rust sharpens your mind too about mutability, just in a different way
2021-04-06 16:28:17 +0200 <tdammers> maerwald: no doubt.
2021-04-06 16:28:20 +0200 <zzz> merijn: that used to be my intuition, but then 'x = 1 ; y = x :: Int ; z = x :: Double' gives me an error
2021-04-06 16:28:23 +0200 <merijn> zzz: Vice versa, consider the untyped case where *everything* is well-typed, now proving anything becomes impossible
2021-04-06 16:28:23 +0200 <haskellstudent> i would have said just having any decent static type system is a huge improvement
2021-04-06 16:28:30 +0200 <tdammers> maerwald: rust also wasn't the first thing I thought of when I said "pedestrian"
2021-04-06 16:28:31 +0200 <merijn> zzz: Ah!
2021-04-06 16:28:36 +0200bahamas(~lucian@unaffiliated/bahamas)
2021-04-06 16:28:37 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection)
2021-04-06 16:28:39 +0200 <emmanuel_erc> rust is even more esoteric than Haskell in some ways
2021-04-06 16:28:40 +0200 <merijn> zzz: That one is a kinda funny edge case
2021-04-06 16:28:55 +0200 <maerwald> I can be convinced to do haskell, rust and typescript. They all have ADTs
2021-04-06 16:28:56 +0200 <merijn> zzz: You have discovered the "Dreaded Monomorphism Restriction"
2021-04-06 16:29:01 +0200 <haskellstudent> esoteric? :)
2021-04-06 16:29:01 +0200 <emmanuel_erc> well esoteric isn't the right word... there are less use cases for rust IMO
2021-04-06 16:29:07 +0200 <tdammers> yeah, having a type system and type checker that actually pull their weight can do wonder to the damage that Java and its brethren may have inflicted on your brain
2021-04-06 16:29:12 +0200v01d4lph4(~v01d4lph4@223.177.183.124) (Remote host closed the connection)
2021-04-06 16:29:12 +0200 <maerwald> emmanuel_erc: it's verbose af, but pretty neat
2021-04-06 16:29:25 +0200 <merijn> zzz: Which is actually kinda related to your original question
2021-04-06 16:29:30 +0200tanuki(~quassel@173.168.178.1)
2021-04-06 16:29:46 +0200 <zzz> merijn: oh i see
2021-04-06 16:29:52 +0200 <merijn> zzz: Since '1' is polymorphic it can be used at infinitely many different types, right?
2021-04-06 16:30:20 +0200 <merijn> zzz: Now, logically, you can't keep infinite different values in memory, so your only other option is to compute them every time their used
2021-04-06 16:30:32 +0200 <maerwald> and verbose languages (like C) have the tendency to make you skip lines of code in order to understand the broad meaning... and then there's this huge gap between high-level and actual understaning (including all the memory tricks in a codepath)
2021-04-06 16:30:33 +0200 <zzz> i would think so. but i have an idea of what you are talking about i've encountered it before
2021-04-06 16:30:35 +0200rj(~x@gateway/tor-sasl/rj)
2021-04-06 16:30:36 +0200 <merijn> zzz: But assume '1' was instead something that was super expensive to compute. That'd be bad
2021-04-06 16:31:18 +0200 <merijn> zzz: We have the situation where 'x = ...' *looks* like it is a value that's only computed once, but ends up computed many times...that'd be bad
2021-04-06 16:31:21 +0200kritzefitz(~kritzefit@2003:5b:203b:200::10:49) (Remote host closed the connection)
2021-04-06 16:31:43 +0200 <haskellstudent> emmanuel_erc: afaik a simple way to put it is that rust is better if performance and latency (no gc pauses) and/or memory usage is really important. haskell is more high level but has gc with the pros and cons of that, its harder to reason about performance and memory usage.
2021-04-06 16:31:59 +0200 <zzz> merijn: yes
2021-04-06 16:32:06 +0200 <merijn> zzz: So the monomorphism restriction says "if something *looks* like a value (as opposed to a function), we monomorphise it" this guarantees the expected "constant computation time"
2021-04-06 16:32:14 +0200 <maerwald> pick the language your engineers like, whatever that is :)
2021-04-06 16:32:20 +0200 <emmanuel_erc> haskellstudent: Yeah, I realize that distinction.
2021-04-06 16:32:21 +0200 <haskellstudent> emmanuel_erc: but i also found rust pretty viable for building an API backend service
2021-04-06 16:32:33 +0200 <merijn> zzz: But that only works if it *can* be monomorphic. But you example tries to turn it into both Int *and* Double
2021-04-06 16:32:46 +0200 <emmanuel_erc> haskellstudent: Have you tinkered around with rust + webassembly?
2021-04-06 16:32:49 +0200 <merijn> zzz: That's only possible if 'x = 1' was polymorphic, which we just said was tricky
2021-04-06 16:33:11 +0200bahamas(~lucian@unaffiliated/bahamas) (Ping timeout: 240 seconds)
2021-04-06 16:33:15 +0200mkDoku(~TheMule@aftr-37-201-195-134.unity-media.net)
2021-04-06 16:33:32 +0200 <merijn> zzz: If you wrote your original example as 'x :: Num a => a; x = 1' (so explicit polymorphic literal) then 'y :: Double; y = x' and 'z :: Int; z = x' *would* work
2021-04-06 16:34:00 +0200 <merijn> (The polymorphic type signature on 'x' saying "I know what I'm doing, I'm okay with recomputing this for all possible values"
2021-04-06 16:34:06 +0200 <merijn> )
2021-04-06 16:34:10 +0200 <haskellstudent> emmanuel_erc: i have a couple months experience each with both haskell (and a bit with ghcjs) and rust but didnt try webassembly because it still seems a bit too early for that. it seems like webassembly bundles turn out even bigger than what ghcjs produces?
2021-04-06 16:34:50 +0200 <dolio> Wow, that's hard to believe.
2021-04-06 16:36:01 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 16:36:01 +0200 <haskellstudent> emmanuel_erc: for frontend i tried miso and i found it pretty quick go get started with and the minified and gzipped js is around 100k minimum. i am currently evaluating reflex so i have no opinion on it yet but the minimum js size turns out around 200k IIRC
2021-04-06 16:36:36 +0200 <zzz> merijn: so in conclusion, be dilligent with your signatures
2021-04-06 16:37:05 +0200 <maerwald> haskellstudent: hasn't ghcjs development basically stalled?
2021-04-06 16:37:33 +0200frozenErebus(~frozenEre@37.231.244.249)
2021-04-06 16:37:45 +0200 <haskellstudent> maerwald: not at all as far as i can tell? both miso and reflex/obelisk seem to be actively maintained and used in production
2021-04-06 16:37:59 +0200 <maerwald> haskellstudent: those are frameworks
2021-04-06 16:38:17 +0200 <emmanuel_erc> haskellstudent: So which framework is easier to use in your opinion, reflex or miso?
2021-04-06 16:38:28 +0200 <merijn> zzz: Well, the MMR trade-off is: MMR enabled (default): things that look like values behave like values (in terms of compute), which sometimes triggers loud type errors when monomorphising fails. The alternative (MMR disabled) is: it always compiles, but sometimes things that look like values are super expensive in a way that's hard to detect
2021-04-06 16:38:30 +0200 <haskellstudent> maerwald: yes i know but if you are talking about ghcjs that is what you are probably using
2021-04-06 16:38:50 +0200 <maerwald> haskellstudent: I mean only the compiler and it looks stalled
2021-04-06 16:39:20 +0200 <haskellstudent> maerwald: i am assuming that if they are actively used and maintained, ghcjs would at least get bugfixes when needed?
2021-04-06 16:39:51 +0200 <maerwald> https://github.com/ghcjs/ghcjs is this the correct repo?
2021-04-06 16:40:41 +0200 <haskellstudent> emmanuel_erc: thats what im trying to find out, but as i said so far i can only tell you that miso is easier to get started with, and it might have a bit better performance, which may or may not matter to you
2021-04-06 16:40:47 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection)
2021-04-06 16:41:19 +0200olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 260 seconds)
2021-04-06 16:41:55 +0200 <maerwald> latest commit 14 months old doesn't sound like a healthy, well-maintained compiler
2021-04-06 16:41:58 +0200mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2021-04-06 16:41:58 +0200mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-04-06 16:41:58 +0200mouseghost(~draco@wikipedia/desperek)
2021-04-06 16:42:19 +0200 <zzz> merijn: got it. thank you for the explanation
2021-04-06 16:42:24 +0200 <haskellstudent> maerwald: new dev activity is on other branches, at least here for example: https://github.com/ghcjs/ghcjs/commits/hkm/nix-ghc-8.10
2021-04-06 16:42:37 +0200 <maerwald> ah
2021-04-06 16:43:06 +0200 <haskellstudent> maerwald: you are looking at the "stable" branch i guess which will probably only get bugfixes while they work on the next release somewhere else
2021-04-06 16:43:20 +0200barthandelous(~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9)
2021-04-06 16:44:48 +0200 <haskellstudent> maerwald: as far as i can tell there is enough production usage of reflex and miso and therefore ghcjs to be reasonably confident that it will be sufficiently well supported for the next years and i would invest in learning and building on it
2021-04-06 16:47:02 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 16:47:50 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-04-06 16:47:51 +0200barthandelous(~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) (Ping timeout: 260 seconds)
2021-04-06 16:48:06 +0200mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-04-06 16:50:38 +0200 <haskellstudent> maerwald: especially if you ask, what are the alternatives? i briefly tried purescript, the compiler is slow af so not an option. with miso and reflex you can use instant live reload. which i really want to have in my workflow. elm is fast to compile and run but its far too limiting from what i have read. and its they are both not haskell obviously which means no code sharing which means wasted time. i have not looked closely at
2021-04-06 16:50:38 +0200 <haskellstudent> rust wasm but since i prefer haskell in general it would be ideal ofc if using haskell everywhere works well. and according to obsidian systems at least it works very well, so i am optimistic (also from what i have tried so far).
2021-04-06 16:51:08 +0200 <maerwald> haskellstudent: well, the obvious alternative is typescript
2021-04-06 16:51:28 +0200 <merijn> PureScript seems the more obvious alternative :p
2021-04-06 16:51:50 +0200 <maerwald> too volatile
2021-04-06 16:51:52 +0200 <tdammers> personally, I still find myself going back to just hand-writing javascript
2021-04-06 16:53:11 +0200 <merijn> maerwald: Yes, but your volatility is below channel average :p
2021-04-06 16:53:22 +0200 <merijn> s/volatility/volatility tolerance
2021-04-06 16:53:27 +0200 <tdammers> it's not great, it's not haskell, but it has massive social inertia going for it, it's practically guaranteed to not go anywhere anytime soon, it's maintained, I know it well enough for there to be no nasty surprises, and it offers an absolutely seamless gradation of "fanciness", starting from writing in a <script> tag directly in your HTML template all the way to webpack + nodejs + whatever
2021-04-06 16:53:42 +0200 <solvr> I thought we tried the "alternate JS syntax" thing with CoffeeScript and we agreed it's not worth it
2021-04-06 16:53:48 +0200 <solvr> But I guess bad ideas never die.
2021-04-06 16:53:49 +0200 <haskellstudent> tdammers: as long as the quantity and complexity stays very low interpreted languages can be nice. the moment you exceed that however you get problems in my experience.
2021-04-06 16:53:50 +0200bahamas(~lucian@unaffiliated/bahamas)
2021-04-06 16:54:09 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-04-06 16:54:12 +0200 <tdammers> haskellstudent: yes, and so the trick is to keep the complexity low, which, with enough discipline, is often possible.
2021-04-06 16:54:40 +0200 <tdammers> you have to draw very clear boundaries in order to keep things contained, and be religiously about documenting and respecting those boundaries, but it is doable
2021-04-06 16:54:51 +0200 <haskellstudent> solvr: coffeescript is pointless, its just another syntax. it does not give you a type system, which would be the crucial difference.
2021-04-06 16:55:00 +0200 <maerwald> aha! I figured out a minimal example that breaks lazy bytestring GC/streaming: https://paste.tomsmeding.com/o1aCZ5wk
2021-04-06 16:55:12 +0200 <solvr> haskellstudent, I agree
2021-04-06 16:55:34 +0200 <solvr> haskell_1, I use TS but TS crucially minimizes non-standard syntax, and offers types.
2021-04-06 16:55:34 +0200 <tdammers> of course "enough discipline" isn't something you can get in the kind of team that would typically write JS, so there's that
2021-04-06 16:55:38 +0200 <maerwald> I guess this is what happens in `tar` too
2021-04-06 16:55:42 +0200 <haskellstudent> tdammers: but why do that if you can do that AND have a good type system to help you reduce defects (and thus save time) even more? i mean thas why i am using haskell in the first place
2021-04-06 16:56:00 +0200 <tdammers> haskellstudent: because all that type stuff comes with a harsh penalty in practice
2021-04-06 16:56:03 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-04-06 16:56:09 +0200 <tdammers> the language itself is just a small part of the equation
2021-04-06 16:56:15 +0200 <emmanuel_erc> So I'm just trying out miso right now.
2021-04-06 16:56:20 +0200 <haskellstudent> tdammers: and i think there is also a lot of potential to increase productivity and decrease complexity if you can leverage code sharing
2021-04-06 16:56:22 +0200 <emmanuel_erc> Installation was super easy
2021-04-06 16:56:32 +0200 <haskellstudent> tdammers: what penalty?
2021-04-06 16:56:35 +0200 <emmanuel_erc> and much faster than reflex
2021-04-06 16:56:35 +0200 <solvr> tdammers depends on the type system and the community around it
2021-04-06 16:56:43 +0200 <tomsmeding> maerwald: that's unfortunate
2021-04-06 16:56:57 +0200 <haskellstudent> tdammers: except for having to spend some time learning new things?
2021-04-06 16:57:15 +0200 <tdammers> haskellstudent: compile times. library ecosystem. additional accidental complexity introduced by the compiler. longer turnaround times. potentially buggy compilers. more moving parts to your build system.
2021-04-06 16:57:48 +0200 <haskellstudent> tdammers: like i said earlier, i have instant love reloading working with both miso and reflex
2021-04-06 16:57:52 +0200 <tdammers> fun story: we had a fairly decent purescript codebase at one job, things were humming along smoothly, until someone asked for a slippy map
2021-04-06 16:58:03 +0200 <haskellstudent> and i mean instant. on a old cpu.
2021-04-06 16:58:06 +0200 <fresheyeball> haskellstudent: shameless plug http://shpadoinkle.org/docs/index.html
2021-04-06 16:58:13 +0200 <fresheyeball> my alternative to Reflex and Miso
2021-04-06 16:58:19 +0200 <merijn> haskellstudent: For small stuff, maybe :)
2021-04-06 16:58:23 +0200 <Uniaika> fresheyeball: hehe
2021-04-06 16:58:26 +0200 <fresheyeball> Faster than Reflex, without the boilerplate of Elm
2021-04-06 16:58:28 +0200 <merijn> haskellstudent: GHC isn't super fast, sadly
2021-04-06 16:58:39 +0200 <merijn> haskellstudent: I highly doubt ghcjs is faster
2021-04-06 16:58:50 +0200 <maerwald> rust isn't fast either
2021-04-06 16:58:54 +0200 <maerwald> Go is
2021-04-06 16:59:04 +0200 <fresheyeball> maerwald: you mean compile times?
2021-04-06 16:59:05 +0200 <merijn> maerwald: Yeah, but Go is shite :p
2021-04-06 16:59:06 +0200 <Uniaika> compiler speed or executable speed?
2021-04-06 16:59:11 +0200 <maerwald> compiler speed
2021-04-06 16:59:14 +0200 <Uniaika> yes
2021-04-06 16:59:18 +0200 <Uniaika> you're indeed right
2021-04-06 16:59:30 +0200 <maerwald> developing Go is awesome, if you can bear the language
2021-04-06 16:59:31 +0200 <haskellstudent> merijn: so far i could at least always see any compiler errors within 1s or so using halive
2021-04-06 16:59:39 +0200 <fresheyeball> yes yes, compilers that don't help the engineer go super fast by not helping
2021-04-06 16:59:44 +0200 <haskellstudent> gotta go now, see you later
2021-04-06 16:59:46 +0200 <tdammers> now, in a JS project, I could have just dropped leaflet into my dependencies, and whip up a map to show anywhere on any page with maybe a dozen lines of code. not elegant, but works as advertised. for purescript, I looked into the options, and concluded that I had two of them: create my own slippy map library in native purescript, or make a purescript wrapper for leaflet
2021-04-06 17:00:09 +0200 <Uniaika> fresheyeball: actually I think codegen has also been somewhat sacrificed for compiler speed
2021-04-06 17:00:14 +0200 <maerwald> tdammers: and both of them expensive engineering tasks
2021-04-06 17:00:17 +0200 <tdammers> I picked option 2, but fortunately, the company in question went out of business before I got to do more than superficial work on that
2021-04-06 17:00:23 +0200 <fresheyeball> Uniaika: good point
2021-04-06 17:00:23 +0200 <tdammers> maerwald: exactly.
2021-04-06 17:00:25 +0200 <maerwald> heh
2021-04-06 17:00:47 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 17:00:48 +0200nbloomf(~nbloomf@2600:1700:ad14:3020:9469:29ae:2372:7bd6)
2021-04-06 17:00:50 +0200 <maerwald> that reminds me when I was working on an event sourced haskell codebase...
2021-04-06 17:00:53 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection)
2021-04-06 17:01:13 +0200 <maerwald> tdammers: which relied heavily on ixset-typed :)
2021-04-06 17:01:25 +0200 <maerwald> (we even forked it)
2021-04-06 17:01:35 +0200 <maerwald> none of those were business domain problems
2021-04-06 17:01:37 +0200 <tdammers> I mean, yes, an idiomatic slippy map in purescript would be a hell of a lot more elegant than leaflet. but leaflet has the whopping advantage of existing.
2021-04-06 17:01:53 +0200_d0t(void@gateway/vpn/mullvad/d0t/x-89419360)
2021-04-06 17:01:56 +0200 <merijn> maerwald: I blame acid-state for false advertising, popularising ixset
2021-04-06 17:01:58 +0200bitmapper(uid464869@gateway/web/irccloud.com/x-fmeoowlskniejelz)
2021-04-06 17:02:23 +0200acidjnk_new(~acidjnk@p200300d0c72b95396118d8d56ee70ad6.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-04-06 17:02:31 +0200 <tdammers> 90% of all problems in "haskell in industry" code are the fault of acid-state. or servant.
2021-04-06 17:02:35 +0200tdammersruns away
2021-04-06 17:02:44 +0200 <merijn> tdammers: Probably true
2021-04-06 17:03:16 +0200 <maerwald> most of the engineering hours went into either debugging performance issues or buying more ram or into solving problems that don't exist in actual database systems
2021-04-06 17:03:43 +0200 <merijn> Most people excited about acid-state should really just want SQLite
2021-04-06 17:03:47 +0200 <maerwald> because someone in the beginning thought: hey, it might be cool if we...
2021-04-06 17:04:11 +0200haskellstudent(~quassel@213-225-9-45.nat.highway.a1.net) (Ping timeout: 240 seconds)
2021-04-06 17:04:28 +0200 <maerwald> and like always... the guy didn't stay long enough to see all of the fallout of their decisions :)
2021-04-06 17:04:38 +0200ddellaco_(~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 17:04:56 +0200 <_d0t> ohai! I'm getting HLS to segfault on my project. How do I even begin with debugging it? 0_o
2021-04-06 17:04:59 +0200 <tdammers> merijn: IMO, anyone who isn't using postgresql and cannot explain in under 100 words why not should be using postgresql
2021-04-06 17:05:24 +0200 <merijn> tdammers: "managing a server is a hassle" :p
2021-04-06 17:05:28 +0200 <maerwald> tdammers: "event sourcing is cooler"?
2021-04-06 17:05:43 +0200 <maerwald> (tbf, you can bolt it onto a postgresql database anyway)
2021-04-06 17:05:45 +0200 <shapr> _d0t: did you install from ghcup?
2021-04-06 17:05:47 +0200 <tdammers> apt install postgres; createdb whatever; psql whatever # there, you just "managed a server"
2021-04-06 17:05:55 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-04-06 17:06:00 +0200 <_d0t> shapr: nope. I tried both nixos version and the last git build.
2021-04-06 17:06:03 +0200 <merijn> tdammers: That requires me to have a machine
2021-04-06 17:06:06 +0200 <shapr> _d0t: also, you could ask on the #haskell-language-server IRC channel, sometimes it's more active
2021-04-06 17:06:11 +0200malumore(~malumore@151.62.116.133) (Ping timeout: 268 seconds)
2021-04-06 17:06:14 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 17:06:21 +0200 <_d0t> ah didn't know it was a thing
2021-04-06 17:06:22 +0200 <merijn> tdammers: I can run SQLite anywere :p
2021-04-06 17:06:23 +0200 <shapr> _d0t: you get the same segfault from both? that sounds like a bug to me
2021-04-06 17:06:36 +0200 <_d0t> shapr: dunno about the "same", but both do segfault
2021-04-06 17:06:47 +0200 <tdammers> merijn: "I have to run on a machine where I can't install anything" would be a valid excuse, I guess
2021-04-06 17:07:02 +0200 <shapr> _d0t: do you get a segfault from any project?
2021-04-06 17:07:13 +0200 <_d0t> shapr: doesn't seem so
2021-04-06 17:07:23 +0200 <_d0t> shapr: but it seems restricted to only ghc 8.6.5
2021-04-06 17:07:25 +0200 <merijn> tdammers: How about: "I wanna treat my database as an application file format" and "I want to easily archive, share, and distribute my database"? :p
2021-04-06 17:07:45 +0200 <shapr> _d0t: are you able to try a later version? perhaps 8.10.4 ?
2021-04-06 17:07:58 +0200 <tdammers> merijn: those would work too.
2021-04-06 17:08:01 +0200 <_d0t> shapr: not with this project. But I tried with another one and it worked.
2021-04-06 17:08:08 +0200 <shapr> I don't remember whether HLS 1.0 supports 8.6.5
2021-04-06 17:08:10 +0200 <tdammers> though one could arguably share psql-dumps
2021-04-06 17:08:11 +0200tomboy64(~tomboy64@unaffiliated/tomboy64) (Ping timeout: 240 seconds)
2021-04-06 17:08:16 +0200 <_d0t> shapr: it does
2021-04-06 17:08:19 +0200 <shapr> oh good
2021-04-06 17:08:34 +0200 <_d0t> in fact, it's the oldest supported version rn
2021-04-06 17:08:35 +0200 <tdammers> but yeah, if you want to use it as an application file format, then that's smack in the middle of sqlite's design space
2021-04-06 17:09:02 +0200 <infinisil> Is there a good `Arbitrary Value` somewhere? Where Value is from aeson
2021-04-06 17:09:05 +0200 <shapr> _d0t: did you generate your own hie.yaml ?
2021-04-06 17:09:13 +0200 <merijn> tdammers: My flowchart is usually: "I need a database" -> 'Will SQLite work? If yes, then SQLite. If no, then are you sure?' -> "Yes, I'm sure" -> 'Ok, use postgres' :p
2021-04-06 17:09:25 +0200 <_d0t> shapr: yup
2021-04-06 17:09:47 +0200 <shapr> _d0t: if you're using hls 1.0 does it work without a generated hie.yaml ?
2021-04-06 17:10:04 +0200 <_d0t> shapr: lemme check
2021-04-06 17:10:04 +0200 <shapr> that is, does the implicit cradle succeed?
2021-04-06 17:10:06 +0200 <maerwald> merijn: I had to migrate at least once from sqlite to postgresql, so I start with postgresql too
2021-04-06 17:10:15 +0200 <tdammers> merijn: same for me, except the other way around.
2021-04-06 17:10:23 +0200 <maerwald> even if it's not the optimal decision, it's not a problem
2021-04-06 17:10:42 +0200 <tdammers> maerwald: the key is to realize that you need to up your game early, when switching DBMS isn't too painful yet
2021-04-06 17:10:47 +0200 <merijn> maerwald, tdammers: Maybe I would too in a company setting where we had servers anyway
2021-04-06 17:11:08 +0200 <tdammers> and yeah, if "having a server" is an issue, then I can totally understand your choice
2021-04-06 17:11:14 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-04-06 17:11:17 +0200 <merijn> But for my personal code that's generally "application running on one machine, not networked" SQLite is a much more sensible default
2021-04-06 17:11:18 +0200 <tdammers> for me, "database is locked" is more of a show stopper
2021-04-06 17:11:38 +0200 <tdammers> most of my stuff is networked in some way anyway
2021-04-06 17:11:49 +0200 <merijn> And the ability to just SCP a file from my laptop to a remote server/etc. is a feature
2021-04-06 17:12:40 +0200 <infinisil> Oh, found the answer myself, there's an Arbitrary Value in aeson itself: https://github.com/haskell/aeson/blob/master/tests/Instances.hs#L170
2021-04-06 17:12:50 +0200Deide(~Deide@217.155.19.23)
2021-04-06 17:12:57 +0200 <maerwald> I could see using sqlite in desktop apps or other tools. It's cheap, why store config etc in files?
2021-04-06 17:13:08 +0200 <maerwald> but for backend I don't find it too appealing
2021-04-06 17:13:14 +0200 <merijn> maerwald: Right, that's the sorta thing I'm thinking
2021-04-06 17:13:34 +0200 <merijn> maerwald: But even for backend stuff it'd be better than acid-state :p
2021-04-06 17:14:03 +0200barthandelous(~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9)
2021-04-06 17:14:30 +0200 <shapr> _d0t: my hope is that the hie.yaml is confusing hls, but it still shouldn't segfault
2021-04-06 17:14:31 +0200LKoen(~LKoen@65.250.88.92.rev.sfr.net)
2021-04-06 17:14:32 +0200 <_d0t> shapr: it started, but then it began running the build via cabal+nix, and I'm not gonna wait for that
2021-04-06 17:14:42 +0200 <shapr> _d0t: you may have to
2021-04-06 17:14:51 +0200 <shapr> I mean
2021-04-06 17:15:02 +0200 <shapr> If you haven't already built the project, hls will do that for you
2021-04-06 17:15:05 +0200 <_d0t> shapr: not sure it's a good idea. It's gonna take quite a while. Is it possible to force hls to use stack?
2021-04-06 17:15:18 +0200 <shapr> I don't know, sorry
2021-04-06 17:15:37 +0200 <shapr> At work we use stack without nix for building, hls is okay with that
2021-04-06 17:15:46 +0200 <shapr> at home I use cabal+nix
2021-04-06 17:15:57 +0200 <_d0t> shapr: yeah, I do this to. But here without hie.yaml hls reverts to cabal.
2021-04-06 17:16:09 +0200 <shapr> that's surprising
2021-04-06 17:16:26 +0200 <shapr> oh wait, at work I've always generated my own hie.yaml
2021-04-06 17:16:36 +0200 <_d0t> and now it tries to build ghc from source
2021-04-06 17:16:41 +0200 <_d0t> nope, definitely not going this way
2021-04-06 17:16:42 +0200 <shapr> and at home I never do, and I always use cabal+nix at home
2021-04-06 17:16:45 +0200rj(~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds)
2021-04-06 17:16:46 +0200 <shapr> _d0t: ok that's bad
2021-04-06 17:17:11 +0200 <shapr> _d0t: I'd suggest reporting a bug on github or joining #haskell-language-server and asking one of the devs
2021-04-06 17:17:15 +0200bahamas(~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds)
2021-04-06 17:17:16 +0200 <_d0t> ok
2021-04-06 17:17:20 +0200 <shapr> I'm just an excited user :-)
2021-04-06 17:17:21 +0200 <_d0t> thanks!
2021-04-06 17:18:04 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-04-06 17:18:04 +0200 <tdammers> merijn: re scp, if you can have postgresql databases on both ends, with unix auth, then it's almost as easy: psql-dump thedatabase | ssh theserver psql thedatabase
2021-04-06 17:18:25 +0200 <merijn> tdammers: Now I have to manage *double* the number of servers!
2021-04-06 17:18:37 +0200barthandelous(~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) (Ping timeout: 252 seconds)
2021-04-06 17:19:08 +0200 <tdammers> well, all my computers basically have postgres clusters running on them anyway, so the overhead is absolutely minimal
2021-04-06 17:19:18 +0200 <maerwald> merijn: hire a nix engineer, they'll do it for you
2021-04-06 17:19:42 +0200 <tdammers> but my use cases are different. I need multiple concurrent connections pretty much from day 1 in most projects
2021-04-06 17:21:07 +0200rj(~x@gateway/tor-sasl/rj)
2021-04-06 17:21:19 +0200raym(~ray@115.187.32.14) (Quit: leaving)
2021-04-06 17:22:22 +0200 <merijn> maerwald: I can't even afford to work on my own stuff, let alone pay someone for it :p
2021-04-06 17:22:42 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-04-06 17:22:43 +0200steerio(~steerio@aviv.kinneret.de) (Quit: leaving)
2021-04-06 17:22:55 +0200whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-04-06 17:24:02 +0200whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-04-06 17:24:55 +0200whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-04-06 17:26:02 +0200whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-04-06 17:31:15 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-04-06 17:31:44 +0200LKoen(~LKoen@65.250.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2021-04-06 17:33:24 +0200ulidtko(~ulidtko@194.54.80.38)
2021-04-06 17:39:10 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-04-06 17:41:11 +0200dcoutts(~duncan@94.186.125.91.dyn.plus.net) (Ping timeout: 240 seconds)
2021-04-06 17:41:50 +0200mettekou(~mettekou@d8D875214.access.telenet.be) (Quit: Leaving)
2021-04-06 17:44:11 +0200z0(~zzz@2001:8a0:de1b:9601:85ea:cf54:e2e4:7d25)
2021-04-06 17:44:28 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 17:44:40 +0200hiptobecubic(~john@unaffiliated/hiptobecubic)
2021-04-06 17:48:04 +0200barthandelous(~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9)
2021-04-06 17:48:12 +0200LKoen(~LKoen@65.250.88.92.rev.sfr.net)
2021-04-06 17:49:18 +0200esp32_prog(~esp32_pro@91.193.4.202)
2021-04-06 17:49:27 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2021-04-06 17:50:01 +0200alx741(~alx741@181.196.68.238) (Ping timeout: 260 seconds)
2021-04-06 17:52:12 +0200barthandelous(~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) (Ping timeout: 246 seconds)
2021-04-06 17:53:10 +0200Wuzzy(~Wuzzy@p5790e46d.dip0.t-ipconnect.de)
2021-04-06 17:55:44 +0200ukari(~ukari@unaffiliated/ukari)
2021-04-06 17:56:30 +0200hypercube(hypercube@gateway/vpn/protonvpn/hypercube)
2021-04-06 17:57:46 +0200gtk(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2021-04-06 17:58:00 +0200zyklotomic(~ethan@unaffiliated/chocopuff)
2021-04-06 17:58:20 +0200z0(~zzz@2001:8a0:de1b:9601:85ea:cf54:e2e4:7d25) (Quit: z0)
2021-04-06 17:58:54 +0200 <dmj`> maerwald: nix engineer is a thing now?
2021-04-06 17:59:08 +0200 <maerwald> dmj`: sure
2021-04-06 18:00:01 +0200 <monochrom> I would s/engineer/admin/ but it is a millenial trend to call every position "engineer".
2021-04-06 18:00:31 +0200stree(~stree@68.36.8.116) (Ping timeout: 260 seconds)
2021-04-06 18:00:36 +0200 <aldum> imo better than the gen X trend of calling every position a manager
2021-04-06 18:00:46 +0200esp32_prog(~esp32_pro@91.193.4.202) (Ping timeout: 240 seconds)
2021-04-06 18:01:02 +0200 <aldum> or at least not worse
2021-04-06 18:01:42 +0200 <dmj`> bash engineer
2021-04-06 18:02:11 +0200gtk(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-04-06 18:02:17 +0200 <monochrom> If you answer emails for an elected politician you can be called "legislator's social media engineer"
2021-04-06 18:03:13 +0200 <monochrom> If you were a spin doctor for said politician, you are now a spin engineer.
2021-04-06 18:03:15 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-04-06 18:03:31 +0200 <aldum> spin epidemiologist these days :V
2021-04-06 18:03:41 +0200 <maerwald> is this supposed to "leak" 1GB? https://paste.tomsmeding.com/WbAcQ3rq
2021-04-06 18:03:51 +0200ToastInTheMachin(~ToastInTh@172.93.177.196)
2021-04-06 18:04:05 +0200molehillish(~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4) (Ping timeout: 252 seconds)
2021-04-06 18:04:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-04-06 18:05:42 +0200tomboy64(~tomboy64@unaffiliated/tomboy64)
2021-04-06 18:06:39 +0200ToastInTheMachin(~ToastInTh@172.93.177.196) (Read error: Connection reset by peer)
2021-04-06 18:07:19 +0200 <dmj`> maerwald: yes
2021-04-06 18:07:32 +0200 <dmj`> maerwald: you're not incrementally processing the list
2021-04-06 18:07:46 +0200 <dmj`> maerwald: the sink is your writeFile, but you're keeping the list in memory with null check
2021-04-06 18:08:01 +0200 <maerwald> dmj`: but there's no chunk overlap
2021-04-06 18:08:40 +0200 <dmj`> maerwald: it's still a list, it's same problem with avg xs = sum xs / fromIntegral (length xs)
2021-04-06 18:08:56 +0200whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-04-06 18:09:00 +0200 <dmj`> the second you have to take two passes on a list, you're can't incrementally process it
2021-04-06 18:09:21 +0200 <dmj`> you*
2021-04-06 18:09:22 +0200Rudd0(~Rudd0@185.189.115.108)
2021-04-06 18:09:42 +0200bahamas(~lucian@unaffiliated/bahamas)
2021-04-06 18:09:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-04-06 18:10:02 +0200whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-04-06 18:10:35 +0200 <maerwald> is there a way to make this work with bytestring only?
2021-04-06 18:11:00 +0200 <tomsmeding> maerwald: let's apply fusion terminologies to this; to remove the sharing in that code, you need vertical fusion to merge the 'take' and 'writeFile' loops over the buffer into, say, loop 1, and again vertical fusion to merge the 'drop' and 'null' loops into loop 2; then you can use horizontal fusion to merge loop 1 and loop 2 into a single loop. At this point there is only one consumer, which can
2021-04-06 18:11:00 +0200 <tomsmeding> then merge using vertical fusion with 'readFile' to produce constant memory usage
2021-04-06 18:11:17 +0200 <tomsmeding> I suspect that the horizontal fusion is the thing that's not being performed because there's explicit monadic sequencing between the writeFile and the null
2021-04-06 18:11:17 +0200 <shapr> I want to be a nix engineer!
2021-04-06 18:11:33 +0200fendor_(~fendor@91.141.3.10.wireless.dyn.drei.com)
2021-04-06 18:12:13 +0200 <tomsmeding> intuition for vertical vs horizontal fusion: make a data flow graph of your code where nodes are operations (take/drop/writeFile etc), and arrows generally point downwards
2021-04-06 18:12:51 +0200 <tomsmeding> vertical fusion is merging two directly vertically connected nodes into one; horizontal mutatus mutandis
2021-04-06 18:12:55 +0200 <tomsmeding> *mutatis
2021-04-06 18:13:26 +0200stree(~stree@68.36.8.116)
2021-04-06 18:13:46 +0200fendor(~fendor@91.141.0.13.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
2021-04-06 18:14:01 +0200gitgood(~gitgood@80-44-12-39.dynamic.dsl.as9105.com)
2021-04-06 18:15:49 +0200 <tomsmeding> in fact, in dmj` 's avg example, it's again horizontal fusion of the 'sum' and 'length' loops that could make it constant-memory; not sure if ghc does that, but there are other compilers for other languages that do
2021-04-06 18:16:21 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2021-04-06 18:17:17 +0200 <dmj`> streaming is about keeping a predictable amount of bytes in memory at any given time, laziness does this for you, for free, but it only works if nobody else is sharing your thunk, the second someone else shares it, you just accumulate in memory instead of incrementally processing
2021-04-06 18:17:51 +0200 <dmj`> sum and length both share `xs`, sum can't process it incrementally, because length is demanding it
2021-04-06 18:18:08 +0200 <dmj`> it's the same with writeFile and null in maerwald's example
2021-04-06 18:18:13 +0200 <maerwald> is there an unsafe way to work around it?
2021-04-06 18:18:47 +0200 <tomsmeding> dmj`: indeed, unless the compiler can see the definitions of 'sum' and 'length' and fuse their loops together into one pass over the list; again I don't know if ghc does this, but it's theoretically possible
2021-04-06 18:19:01 +0200 <dmj`> tomsmeding: I haven't been able to get ghc to do horizontal fusion of sum and length, code had to become uncurry (/) $ foldl' (\(x,y) n -> (x + n, y + 1)) (0,0) xs
2021-04-06 18:19:13 +0200 <tomsmeding> maerwald: wild guess: does it help if you use BSL.splitAt instead of take/drop? Small chance
2021-04-06 18:19:24 +0200Sornaensis(~Sornaensi@077213203030.dynamic.telenor.dk)
2021-04-06 18:19:42 +0200 <tomsmeding> dmj`: yeah there you manually performed horizontal fusion :) Too bad about ghc
2021-04-06 18:19:48 +0200 <dmj`> tomsmeding: GHCs optimizer won't do that I believe, and vector fusion relies on rewrite rules that don't always fire
2021-04-06 18:19:50 +0200 <tomsmeding> it's very difficult to do in general though
2021-04-06 18:19:52 +0200notzmv(~zmv@unaffiliated/zmv) (Ping timeout: 265 seconds)
2021-04-06 18:19:55 +0200 <maerwald> tomsmeding: I thought that too, but no, splitAt can't do it
2021-04-06 18:20:01 +0200 <tomsmeding> sad
2021-04-06 18:20:38 +0200 <dmj`> tomsmeding: GHC only optimizes across a single module at a time as well (blind JMP problem), those functions are defined in a different module, GHC would need to have the entire program in memory to do that.
2021-04-06 18:20:47 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-04-06 18:21:03 +0200 <dmj`> maerwald: delete the "rest" and the "null"
2021-04-06 18:21:10 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2021-04-06 18:21:31 +0200 <maerwald> dmj`: this is a minimal example... can't be done in the real code
2021-04-06 18:21:54 +0200 <maerwald> there, rest is part of an unfoldr
2021-04-06 18:22:15 +0200 <maerwald> and at every step it will leak `content`
2021-04-06 18:22:21 +0200 <tomsmeding> dmj`: surely sum and length are inlined in ghc :p
2021-04-06 18:22:53 +0200 <maerwald> I think it's time to get a drink and be sad
2021-04-06 18:23:00 +0200 <tomsmeding> dmj`: 1. that's what {-# INLINE abc #-} is for, and 2. ghc does that for small functions anyway
2021-04-06 18:23:31 +0200Sorny(~Sornaensi@79.142.232.102.static.router4.bolignet.dk) (Ping timeout: 260 seconds)
2021-04-06 18:23:44 +0200 <tomsmeding> maerwald: if bytestring had offered a read function that only reads a prefix of a file (i.e. 1GB), then you could split the readFile in two; that would work
2021-04-06 18:23:51 +0200 <tomsmeding> but that probably doesn't work in the full tar case either
2021-04-06 18:24:44 +0200 <maerwald> I'll just rewrite that logic with streamly
2021-04-06 18:24:58 +0200Sorna(~Sornaensi@79.142.232.102.static.router4.bolignet.dk)
2021-04-06 18:25:24 +0200 <tomsmeding> yeah making the bytestring _explicitly_ streaming instead of only implicitly via laziness is probably the way out
2021-04-06 18:25:45 +0200 <maerwald> and streamly interacts well with bytestring, so it can be done incrementally
2021-04-06 18:26:07 +0200 <dmj`> tomsmeding: main = do { [n] <- fmap read <$> getArgs; let xs = [1..n]; print (sum xs / fromIntegral (length xs)) }
2021-04-06 18:26:12 +0200 <dmj`> tomsmeding: that will OOM your process for large n
2021-04-06 18:26:45 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2021-04-06 18:27:09 +0200 <dmj`> tomsmeding: I don't think inlining can save you here
2021-04-06 18:27:26 +0200Sornaensis(~Sornaensi@077213203030.dynamic.telenor.dk) (Ping timeout: 240 seconds)
2021-04-06 18:28:47 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-04-06 18:29:04 +0200 <dmj`> tomsmeding: running with +RTS -s -RTS will be like 0% productivity
2021-04-06 18:30:41 +0200MidAutumnHotaru(~MidAutumn@unaffiliated/midautumnhotaru) (Quit: Quit 啾)
2021-04-06 18:31:21 +0200MidAutumnHotaru(~MidAutumn@unaffiliated/midautumnhotaru)
2021-04-06 18:32:46 +0200alx741(~alx741@181.196.68.238)
2021-04-06 18:33:41 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-04-06 18:34:38 +0200MidAutumnHotaru(~MidAutumn@unaffiliated/midautumnhotaru) (Client Quit)
2021-04-06 18:35:43 +0200MidAutumnHotaru(~MidAutumn@unaffiliated/midautumnhotaru)
2021-04-06 18:37:18 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-04-06 18:37:41 +0200mkDoku(~TheMule@aftr-37-201-195-134.unity-media.net) (Ping timeout: 240 seconds)
2021-04-06 18:37:50 +0200geekosaur(82650c7a@130.101.12.122)
2021-04-06 18:38:51 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-04-06 18:39:08 +0200 <tomsmeding> dmj`: inlining + horizontal fusion can fix that because it yields the same as your handwritten foldr
2021-04-06 18:39:08 +0200howdoi(uid224@gateway/web/irccloud.com/x-unpvrllwptrnqqhb)
2021-04-06 18:39:30 +0200 <tomsmeding> ghc does the inlining but not the hor. fusion
2021-04-06 18:41:19 +0200qqqq3(3e1d4450@62.29.68.80)
2021-04-06 18:42:39 +0200zyklotomic(~ethan@unaffiliated/chocopuff) (Remote host closed the connection)
2021-04-06 18:42:41 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2021-04-06 18:43:05 +0200zyklotomic(~ethan@66.154.104.2)
2021-04-06 18:43:42 +0200 <qqqq3> Hello everyone, im faced with this error https://paste.tomsmeding.com/siTshGL1. Can someone explain this to me ?
2021-04-06 18:44:24 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-04-06 18:45:09 +0200xourt(d4c620ea@212-198-32-234.rev.numericable.fr) (Quit: Connection closed)
2021-04-06 18:45:34 +0200 <geekosaur> what were you expecting (xs "-") to do?
2021-04-06 18:46:09 +0200 <geekosaur> it's complaining because it expects xs to be a function, since it's applied to a string argument, but it's not
2021-04-06 18:46:37 +0200 <qqqq3> how can i spesify my input to be char?
2021-04-06 18:47:45 +0200 <dcbdan> '-' is a Char, "-" == ['-'] is a String
2021-04-06 18:48:21 +0200 <qqqq3> so if i do a function like this test 'x' = x
2021-04-06 18:48:29 +0200 <qqqq3> would the test function only expect chars ?
2021-04-06 18:49:13 +0200 <joel135> :t \x -> 'x' == x
2021-04-06 18:49:14 +0200 <lambdabot> Char -> Bool
2021-04-06 18:49:25 +0200 <geekosaur> yes
2021-04-06 18:49:37 +0200 <qqqq3> Thanks everyone
2021-04-06 18:50:06 +0200zaquest(~notzaques@5.128.210.178) (Read error: Connection reset by peer)
2021-04-06 18:50:34 +0200zaquest(~notzaques@5.128.210.178)
2021-04-06 18:51:40 +0200 <fresheyeball> error, called at compiler/utils/Maybes.hs:55:27 in ghc:Maybes
2021-04-06 18:51:42 +0200 <fresheyeball> expectJust, called at compiler/ghci/Linker.hs:719:28 in ghc:Linker
2021-04-06 18:51:45 +0200 <fresheyeball> how can I begin debugging this?
2021-04-06 18:51:50 +0200 <fresheyeball> I have no idea how to begin
2021-04-06 18:51:59 +0200 <fresheyeball> I think this is an issue with backpack and TH
2021-04-06 18:54:47 +0200ericsagn1(~ericsagne@2405:6580:0:5100:3c1:b586:27b7:7153) (Ping timeout: 260 seconds)
2021-04-06 18:55:24 +0200esp32_prog(~esp32_pro@91.193.4.202)
2021-04-06 18:55:44 +0200cafce25(~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-04-06 18:55:54 +0200 <dcbdan> I don't know. Could it be that a Nothing is being passed in incorrectly?
2021-04-06 18:56:09 +0200rdivyanshu(uid322626@gateway/web/irccloud.com/x-gwsdixqwmnlinkah)
2021-04-06 18:56:37 +0200 <geekosaur> that error is buried somewhere inside of ghc itself
2021-04-06 18:56:43 +0200haskellstudent(~quassel@213-225-9-45.nat.highway.a1.net)
2021-04-06 18:59:40 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-04-06 19:00:29 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-04-06 19:01:00 +0200aerona(~aerona@2600:6c54:4600:f300:17d9:d4ff:325b:67dc)
2021-04-06 19:01:09 +0200kritzefitz(~kritzefit@212.86.56.80)
2021-04-06 19:02:29 +0200cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-04-06 19:04:31 +0200Enrico63(520efe97@cpc92708-cmbg20-2-0-cust150.5-4.cable.virginm.net)
2021-04-06 19:04:43 +0200mupf(~micha@v22017094964653601.ultrasrv.de) (Quit: WeeChat 3.0)
2021-04-06 19:05:11 +0200 <Enrico63> Hello there, can anybody help me get started with  http://mightybyte.github.io/monad-challenges/
2021-04-06 19:05:12 +0200 <Enrico63> ?
2021-04-06 19:05:15 +0200mupf(~micha@v22017094964653601.ultrasrv.de)
2021-04-06 19:05:18 +0200qqqq3(3e1d4450@62.29.68.80) (Quit: Connection closed)
2021-04-06 19:05:26 +0200 <fresheyeball> Enrico63: what do you need help with?
2021-04-06 19:06:17 +0200 <Enrico63> I've posted a message on the github page: https://github.com/mightybyte/monad-challenges/issues/81 . In short, when I do `ghci Set1.hs` I get the error `ghc: unexpected RTS argument: Set1.hs`
2021-04-06 19:06:21 +0200notzmv(~zmv@unaffiliated/zmv)
2021-04-06 19:07:48 +0200 <Enrico63> fresheyeball, I have to mention that following the instruction I run `cabal install` in the directory of the repo. Then when I found that issue on the github page, I also run `cabal install --package-env /PATH_TO_YOUR_FOLDER --lib` (with `/PATH_TO_YOUR_FOLDER` changed to `$PWD`, and I was in the repo's dir).
2021-04-06 19:07:54 +0200ericsagn1(~ericsagne@2405:6580:0:5100:a729:cf9f:aaab:a664)
2021-04-06 19:08:45 +0200mkDoku(~TheMule@aftr-37-201-195-134.unity-media.net)
2021-04-06 19:09:38 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-04-06 19:09:46 +0200solvr(57e3c46d@87.227.196.109) (Quit: Connection closed)
2021-04-06 19:10:13 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-04-06 19:10:29 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-04-06 19:10:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-04-06 19:12:11 +0200molehillish(~molehilli@ip98-165-87-166.ph.ph.cox.net)
2021-04-06 19:12:16 +0200molehillish(~molehilli@ip98-165-87-166.ph.ph.cox.net) (Client Quit)
2021-04-06 19:12:27 +0200 <joel135> https://hoogle.haskell.org/?hoogle=Application
2021-04-06 19:12:56 +0200 <joel135> There are no parentheses in the second entry! "type Application = Request -> Response -> IO ResponseReceived -> IO ResponseReceived"
2021-04-06 19:14:33 +0200 <monochrom> Are they even remotely related?
2021-04-06 19:14:51 +0200 <geekosaur> the parentheses are in the originals, if you click through
2021-04-06 19:15:01 +0200 <joel135> yes they are there when i click
2021-04-06 19:15:11 +0200 <Enrico63> Hello there, can anybody help me get started with http://mightybyte.github.io/monad-challenges/ ? I've posted a message on the github page: https://github.com/mightybyte/monad-challenges/issues/81 . In short, when I do `ghci Set1.hs` I get the error `ghc: unexpected RTS argument: Set1.hs`. I have to mention that following the instruction I run
2021-04-06 19:15:11 +0200 <Enrico63> `cabal install` in the directory of the repo. Then when I found that issue on the github page, I also run `cabal install --package-env /PATH_TO_YOUR_FOLDER --lib` (with `/PATH_TO_YOUR_FOLDER` changed to `$PWD`, and I was in the repo's dir).
2021-04-06 19:15:57 +0200 <geekosaur> Enrico63, do you have an alias for ghci, perhaps?
2021-04-06 19:16:38 +0200 <Enrico63> Yes, `alias ghci='ghci +RTS -M100M -c30'`. I forgot about that. And I don't even know why I have it :/
2021-04-06 19:16:49 +0200 <Enrico63> i suppose `command ghci` will be enough..?
2021-04-06 19:16:59 +0200 <Enrico63> yes
2021-04-06 19:16:59 +0200 <geekosaur> yes
2021-04-06 19:17:04 +0200 <monochrom> Well that's easy. ghci='ghci +RTS -M100M -c30 -RTS'
2021-04-06 19:17:06 +0200 <geekosaur> or add '-RTS' to the end of that aliass
2021-04-06 19:17:32 +0200 <monochrom> This is why remote tech support is impossible.
2021-04-06 19:18:11 +0200 <Enrico63> monochrom, what? Forgetting we have some settings/aliases?
2021-04-06 19:18:17 +0200 <monochrom> Yes.
2021-04-06 19:18:29 +0200bahamas(~lucian@unaffiliated/bahamas) (Quit: leaving)
2021-04-06 19:18:33 +0200 <Enrico63> Eh, that happens when we're new to some things, I suppose
2021-04-06 19:19:12 +0200ADG1089(~aditya@122.163.139.43)
2021-04-06 19:19:15 +0200solvr(57e3c46d@87.227.196.109)
2021-04-06 19:19:23 +0200 <Enrico63> If that alias is there, it's for some reason I thought was good, at that time. I vaguely remember ghci using a load of RAM
2021-04-06 19:19:54 +0200 <Enrico63> However, it seems geekosaur makes impossible things, then :D
2021-04-06 19:19:55 +0200Pickchea(~private@unaffiliated/pickchea)
2021-04-06 19:20:09 +0200 <geekosaur> I'm a sysadmin, I think of such things :)
2021-04-06 19:20:12 +0200HannaM(~quassel@p54849510.dip0.t-ipconnect.de)
2021-04-06 19:21:08 +0200 <Enrico63> geekosaur, for whatever reason I did put that alias in my config files, appending `-RTS` at the end of it... what does it?
2021-04-06 19:21:24 +0200 <monochrom> "end of the RTS things"
2021-04-06 19:21:38 +0200 <geekosaur> +RTS starts passing parameters directly to ghc's runtime system, -RTS stops
2021-04-06 19:22:09 +0200 <geekosaur> --RTS (with double hyphen) both stops and forces any later +RTS to be passed through to the application, if you need to do that for some reason
2021-04-06 19:23:06 +0200 <Enrico63> oh,ok, so it's just like +RTS and -RTS are opening and closing parenthesis around stuff to be passed to the runtime system (whatever that means)
2021-04-06 19:24:45 +0200 <ADG1089> why don't people check in cabal.project?
2021-04-06 19:25:10 +0200doraemon(~doraemon@117.222.71.159)
2021-04-06 19:26:29 +0200 <tomsmeding> Enrico63: indeed :)
2021-04-06 19:27:04 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4)
2021-04-06 19:27:32 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection)
2021-04-06 19:27:40 +0200 <geekosaur> Enrico63, you may want to close that issue with an explanation. also you appended to an unrelated issue, you should probably have opened a new one (it's too late now)
2021-04-06 19:28:13 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4)
2021-04-06 19:28:46 +0200barthandelous(~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9)
2021-04-06 19:29:43 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-04-06 19:31:02 +0200cub3s_(bifunc2@gateway/vpn/protonvpn/bifunc2)
2021-04-06 19:31:03 +0200forell(~forell@unaffiliated/forell) (Quit: ZNC - https://znc.in)
2021-04-06 19:31:25 +0200aenesidemus(~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net)
2021-04-06 19:31:43 +0200todda7(~torstein@athedsl-09242.home.otenet.gr) (Ping timeout: 268 seconds)
2021-04-06 19:32:14 +0200notzmv(~zmv@unaffiliated/zmv) (Read error: Connection reset by peer)
2021-04-06 19:32:39 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Ping timeout: 246 seconds)
2021-04-06 19:32:42 +0200Enrico63(520efe97@cpc92708-cmbg20-2-0-cust150.5-4.cable.virginm.net) (Quit: Connection closed)
2021-04-06 19:32:52 +0200forell(~forell@unaffiliated/forell)
2021-04-06 19:34:00 +0200 <cub3s_> When I publish a Haskell library, I usually put a stack.yaml file in there with a resolver. Should I be doing this? This file is sort of useless because anyone who compiles the library is going to use their own stack.yaml resolver (or Nix file, or just pure cabal) anyway.
2021-04-06 19:34:11 +0200kuribas(~user@ptr-25vy0i98ky9sotgacau.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-04-06 19:34:30 +0200 <cub3s_> well, unless they just want to download my library only, and compile/test it in isolation
2021-04-06 19:34:47 +0200 <glguy> cub3s_: it's not useful for someone depending on your library, but if stack's useful at all it could be useful for someone developing your library
2021-04-06 19:34:51 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2021-04-06 19:35:09 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2021-04-06 19:35:16 +0200dcoutts(~duncan@94.186.125.91.dyn.plus.net)
2021-04-06 19:35:27 +0200 <glguy> if you have interesting extra-deps listed, it could serve as a shortcut to updating their own file
2021-04-06 19:35:28 +0200 <cub3s_> glguy, ok now, in a similar way, shouldn't i also include a nix file pinned to a specific nixpkgs commit? (in a similar way that stack.yaml is pinned to specific resolver)
2021-04-06 19:35:34 +0200vicfred(~vicfred@unaffiliated/vicfred)
2021-04-06 19:36:05 +0200 <glguy> cub3s_: I'd suppose it's just a question of what your other library developers need and what you want to support and actively test
2021-04-06 19:36:19 +0200 <glguy> stale build information doesn't help anyone
2021-04-06 19:36:48 +0200barthandelous(~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) (Quit: WeeChat 3.1)
2021-04-06 19:37:17 +0200 <cub3s_> yeah
2021-04-06 19:37:36 +0200 <cub3s_> it's starting to make sense to me to have both stack and nix support, as those are the most common
2021-04-06 19:38:29 +0200CaptainIRS(9d339880@157.51.152.128) (Quit: Connection closed)
2021-04-06 19:38:43 +0200 <minoru_shiraeesh> emmanuel_erc: "Regardless, I'm leaving the current job partially because I think the rewrite is a dumb idea and I don't want to work on a codebase that is going to be thrown out eventually."
2021-04-06 19:38:51 +0200 <minoru_shiraeesh> emmanuel_erc: "They didn't really have an interest in listening to what I had to say about the whole venture."
2021-04-06 19:39:08 +0200 <minoru_shiraeesh> emmanuel_erc: "Given what has happened to me at this last job, it makes me wonder if persuing Haskell has been worth it or will be so."
2021-04-06 19:39:36 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-04-06 19:39:51 +0200ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-04-06 19:40:18 +0200 <minoru_shiraeesh> I see your point and the way you feel, but on the other hand, I recently heard a saying "don't let a love for a language blind you"
2021-04-06 19:40:19 +0200vicfred(~vicfred@unaffiliated/vicfred) (Client Quit)
2021-04-06 19:40:27 +0200ukari(~ukari@unaffiliated/ukari)
2021-04-06 19:41:44 +0200 <minoru_shiraeesh> if you take another perspective, the task of rewriting a codebase is an interesting one.
2021-04-06 19:42:30 +0200 <monochrom> How long ago was that conversation?
2021-04-06 19:42:52 +0200 <minoru_shiraeesh> :) it was 3 hours ago
2021-04-06 19:43:34 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4)
2021-04-06 19:44:46 +0200 <cub3s_> yeah rewrite in haskell and get paid for it?! not bad if you otherwise like it and will gain valuable haskell experience. "it'll be thrown out eventually". that's not really the employee's problem, is it? someone else bears the risk.
2021-04-06 19:45:22 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 19:45:31 +0200 <geekosaur> this is rewriting away from haskell, iirc
2021-04-06 19:45:34 +0200 <geekosaur> to typescript
2021-04-06 19:45:39 +0200 <cub3s_> oh, my bad
2021-04-06 19:46:06 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 260 seconds)
2021-04-06 19:46:56 +0200zyklotomic(~ethan@66.154.104.2) (Changing host)
2021-04-06 19:46:56 +0200zyklotomic(~ethan@unaffiliated/chocopuff)
2021-04-06 19:48:28 +0200zfnmxt_zfnmxt
2021-04-06 19:49:26 +0200vicfred(vicfred@gateway/vpn/mullvad/vicfred)
2021-04-06 19:49:27 +0200 <minoru_shiraeesh> hmm, turns out he was in the position of maintaining legacy code that was in the process of being ported to other language
2021-04-06 19:49:48 +0200 <minoru_shiraeesh> then my point about rewriting being an interesting task doesn't apply
2021-04-06 19:50:19 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2021-04-06 19:50:25 +0200Tops2(~Tobias@dyndsl-095-033-088-082.ewe-ip-backbone.de)
2021-04-06 19:52:11 +0200Tops21(~Tobias@dyndsl-095-033-088-082.ewe-ip-backbone.de) (Ping timeout: 240 seconds)
2021-04-06 19:52:53 +0200Ory0n(~Ory0n@mob-5-91-113-166.net.vodafone.it)
2021-04-06 19:53:43 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-04-06 19:54:01 +0200zyklotomic(~ethan@unaffiliated/chocopuff) (Quit: WeeChat 3.1)
2021-04-06 19:54:46 +0200zaquest(~notzaques@5.128.210.178) (Ping timeout: 240 seconds)
2021-04-06 19:54:56 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 19:55:05 +0200mkDoku(~TheMule@aftr-37-201-195-134.unity-media.net) (Ping timeout: 265 seconds)
2021-04-06 19:55:22 +0200geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-04-06 19:55:53 +0200Ory0n(~Ory0n@mob-5-91-113-166.net.vodafone.it) ("Leaving")
2021-04-06 19:56:46 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Client Quit)
2021-04-06 20:05:24 +0200esp32_prog(~esp32_pro@91.193.4.202) (Quit: esp32_prog)
2021-04-06 20:05:41 +0200solvr(57e3c46d@87.227.196.109) (Quit: Connection closed)
2021-04-06 20:07:04 +0200ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-04-06 20:07:10 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection)
2021-04-06 20:07:52 +0200ukari(~ukari@unaffiliated/ukari)
2021-04-06 20:08:49 +0200coot(~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-04-06 20:10:20 +0200geekosaur(82650c7a@130.101.12.122)
2021-04-06 20:12:26 +0200rajivr(uid269651@gateway/web/irccloud.com/x-capllcjtsollkkrc) (Quit: Connection closed for inactivity)
2021-04-06 20:13:23 +0200notzmv(~zmv@unaffiliated/zmv)
2021-04-06 20:14:24 +0200 <maerwald> did they ever say what kind of code it was?
2021-04-06 20:14:35 +0200 <maerwald> If it was frontend, I'd say that might be quite reasonable
2021-04-06 20:15:22 +0200jj2021(~JJ@cpe-76-185-168-105.satx.res.rr.com)
2021-04-06 20:15:26 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4)
2021-04-06 20:17:45 +0200shalokshalom(~quassel@2a02:1748:dd5e:7f60:cf49:8384:7c93:3106)
2021-04-06 20:17:46 +0200 <maerwald> tomsmeding: https://arxiv.org/abs/1207.2017 can I maybe hack around my problem with that? :p
2021-04-06 20:18:54 +0200 <tomsmeding> maerwald: I'm not sure how "un-sharing" a 1GB buffer would look :p
2021-04-06 20:19:33 +0200srk(~sorki@unaffiliated/srk) (Ping timeout: 246 seconds)
2021-04-06 20:20:29 +0200eacameron(uid256985@gateway/web/irccloud.com/x-ewulhovpekfjgces)
2021-04-06 20:21:35 +0200stree(~stree@68.36.8.116) (Ping timeout: 260 seconds)
2021-04-06 20:22:40 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection)
2021-04-06 20:25:00 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-04-06 20:25:19 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 20:25:59 +0200thc202(~thc202@unaffiliated/thc202) (Quit: thc202)
2021-04-06 20:26:28 +0200 <maerwald> hmm, so another workaround would be to ditch lazy bytestring and recored file offsets, then have the call site re-read the file at those offsets
2021-04-06 20:26:37 +0200fendor__(~fendor@178.115.129.28.wireless.dyn.drei.com)
2021-04-06 20:27:03 +0200 <tomsmeding> that should work yes
2021-04-06 20:27:17 +0200 <maerwald> since metadata is small in size, the memory leaks there aren't noticable
2021-04-06 20:27:20 +0200doraemon(~doraemon@117.222.71.159) ()
2021-04-06 20:27:43 +0200 <maerwald> s/metadata/header/
2021-04-06 20:29:38 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-04-06 20:29:42 +0200fendor_(~fendor@91.141.3.10.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
2021-04-06 20:30:53 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4)
2021-04-06 20:31:53 +0200 <haskellstudent> ok i was wrong regarding wasm bundle size. maybe what i remembered reading was the size before optimizations. afterwards rust wasm is just slightly larger than js and performs better. asterius (haskell wasm) output .wasm for todomvc (https://asterius.netlify.app/demo/todomvc/index.html#/completed) is 132k gzipped which is pretty good actually. but of course it will take a while untill haskell wasm is production ready, if ever.
2021-04-06 20:33:56 +0200fendor(~fendor@178.165.131.170.wireless.dyn.drei.com)
2021-04-06 20:34:56 +0200stree(~stree@68.36.8.116)
2021-04-06 20:35:35 +0200fendor__(~fendor@178.115.129.28.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2021-04-06 20:36:32 +0200typetetris(uid275937@gateway/web/irccloud.com/x-ffiqklyrigbqxewu) (Quit: Connection closed for inactivity)
2021-04-06 20:36:43 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection)
2021-04-06 20:37:12 +0200manuel(~manuel@185.204.1.185) (Remote host closed the connection)
2021-04-06 20:39:11 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4)
2021-04-06 20:41:34 +0200tomboy64(~tomboy64@unaffiliated/tomboy64) (Quit: Off to see the wizard.)
2021-04-06 20:41:38 +0200darjeeling_(~darjeelin@115.215.43.37) (Ping timeout: 246 seconds)
2021-04-06 20:43:49 +0200tomboy64(~tomboy64@unaffiliated/tomboy64)
2021-04-06 20:45:04 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection)
2021-04-06 20:45:33 +0200aenesidemus(~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) (Quit: Leaving)
2021-04-06 20:47:28 +0200Forlorn_(~Forlorn@unaffiliated/forlorn)
2021-04-06 20:48:41 +0200maroloccio(~marolocci@pousada3ja.mma.com.br)
2021-04-06 20:48:46 +0200Codaraxis(Codaraxis@gateway/vpn/mullvad/codaraxis)
2021-04-06 20:48:49 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4)
2021-04-06 20:50:01 +0200 <mikoto-chan> sorry if off-topic but what are a free category and a graph in category theory?
2021-04-06 20:50:27 +0200 <mikoto-chan> most search results are very vague, I'm learning CT to better understand Haskell
2021-04-06 20:51:49 +0200ADG1089(~aditya@122.163.139.43) (Remote host closed the connection)
2021-04-06 20:54:09 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection)
2021-04-06 20:54:29 +0200 <koz_> Learning CT will not necessarily help understanding Haskell, FWIW.
2021-04-06 20:54:32 +0200 <hololeap> https://ncatlab.org/nlab/show/free+category ; https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)
2021-04-06 20:54:36 +0200darjeeling_(~darjeelin@122.245.210.109)
2021-04-06 20:56:12 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 20:56:40 +0200 <mikoto-chan> koz_: things like Monoids and Kleisli categories were far easier to grasp in mathematics than Haskell for me
2021-04-06 20:56:55 +0200 <koz_> mikoto-chan: YMMV.
2021-04-06 20:57:06 +0200hive-mind(~hivemind@rrcs-67-53-148-69.west.biz.rr.com) (Ping timeout: 260 seconds)
2021-04-06 20:59:20 +0200__minoru__shirae(~shiraeesh@5.101.59.224)
2021-04-06 20:59:24 +0200notzmv(~zmv@unaffiliated/zmv) (Ping timeout: 252 seconds)
2021-04-06 20:59:26 +0200minoru_shiraeesh(~shiraeesh@109.166.56.223) (Ping timeout: 240 seconds)
2021-04-06 21:00:53 +0200tomboy64(~tomboy64@unaffiliated/tomboy64) (Ping timeout: 246 seconds)
2021-04-06 21:01:11 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2021-04-06 21:01:19 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4)
2021-04-06 21:01:21 +0200molehillish(~molehilli@2600:8800:8d06:1800:6d47:e2d7:e78c:8f4) (Remote host closed the connection)
2021-04-06 21:01:30 +0200 <cub3s_> is it possible to configure cabal such that it will ERROR instead of downloading a package, if that package is not found in Nix store?
2021-04-06 21:02:04 +0200 <cub3s_> the default seems to be, if it's not found on nix store (within a nix shell), it still downloads/builds it using regular hackage
2021-04-06 21:02:18 +0200 <hololeap> mikoto-chan: i think the concept is just really obvious and simple, which is why it feels "vague" to you
2021-04-06 21:02:25 +0200norsxa(uid494793@gateway/web/irccloud.com/x-nletjvianbknahyj)
2021-04-06 21:02:28 +0200LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
2021-04-06 21:02:46 +0200LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2021-04-06 21:03:30 +0200maroloccio(~marolocci@pousada3ja.mma.com.br) (Quit: WeeChat 2.3)
2021-04-06 21:03:34 +0200Franciman(~francesco@host-87-20-23-243.retail.telecomitalia.it) (Quit: Leaving)
2021-04-06 21:03:39 +0200 <mikoto-chan> hololeap: alright let's say I want to learn CT for fun but there's no channel to discuss it on Freenode
2021-04-06 21:03:43 +0200 <mikoto-chan> maybe ##math?
2021-04-06 21:04:51 +0200 <hololeap> i've asked CT questions on occasion in #haskell and nobody complained. ##math works but don't expect anyone there to know anything about haskell
2021-04-06 21:05:39 +0200rdivyanshu(uid322626@gateway/web/irccloud.com/x-gwsdixqwmnlinkah) (Quit: Connection closed for inactivity)
2021-04-06 21:06:08 +0200frozenErebus(~frozenEre@37.231.244.249) (Ping timeout: 246 seconds)
2021-04-06 21:07:55 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-04-06 21:08:14 +0200 <mikoto-chan> I will change the state of the universe with Monad IO so that Haskell doesn't exist when I'm gonna ask questions in ##math :)
2021-04-06 21:08:37 +0200 <monochrom> ##category-theory or ##category, I forgot which
2021-04-06 21:08:59 +0200 <joel135> ^ both are empty
2021-04-06 21:08:59 +0200 <hololeap> as far as your question about free categories, that nLab article lays it out well. there really isn't much to it.
2021-04-06 21:09:47 +0200hive-mind(~hivemind@rrcs-67-53-148-69.west.biz.rr.com)
2021-04-06 21:10:57 +0200 <monochrom> ##categorytheory
2021-04-06 21:11:31 +0200 <joel135> ok
2021-04-06 21:11:32 +0200 <monochrom> Some of them are some of us, you will be in good hands. :)
2021-04-06 21:11:52 +0200cub3s_(bifunc2@gateway/vpn/protonvpn/bifunc2) (Quit: Leaving)
2021-04-06 21:12:00 +0200ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-04-06 21:13:05 +0200ukari(~ukari@unaffiliated/ukari)
2021-04-06 21:15:50 +0200hiroaki(~hiroaki@2a02:908:4b18:8c40:cdf8:a3f:92b1:70de)
2021-04-06 21:18:36 +0200son0p(~ff@181.136.122.143)
2021-04-06 21:23:16 +0200Guest29958(~amcrae@194.37.96.82)
2021-04-06 21:25:40 +0200zebrag(~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-04-06 21:25:58 +0200zebrag(~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr)
2021-04-06 21:26:11 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-04-06 21:26:33 +0200cgfuh(~cgfuh@181.167.191.58)
2021-04-06 21:31:49 +0200`slikts(~nelabs@wikipedia/reinis)
2021-04-06 21:34:02 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-04-06 21:34:43 +0200todda7(~torstein@athedsl-09242.home.otenet.gr)
2021-04-06 21:35:13 +0200hololeap(~hololeap@unaffiliated/hololeap) (Quit: Quit)
2021-04-06 21:37:17 +0200coot(~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl)
2021-04-06 21:38:08 +0200tomboy64(~tomboy64@unaffiliated/tomboy64)
2021-04-06 21:39:00 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-04-06 21:41:48 +0200Sorny(~Sornaensi@077213203030.dynamic.telenor.dk)
2021-04-06 21:42:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-04-06 21:42:43 +0200notzmv(~zmv@unaffiliated/zmv)
2021-04-06 21:43:51 +0200hololeap(~hololeap@unaffiliated/hololeap)
2021-04-06 21:44:51 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-04-06 21:45:11 +0200Sorna(~Sornaensi@79.142.232.102.static.router4.bolignet.dk) (Ping timeout: 240 seconds)
2021-04-06 21:45:12 +0200hololeap(~hololeap@unaffiliated/hololeap) (Client Quit)
2021-04-06 21:46:08 +0200Franciman(~francesco@host-87-20-23-243.retail.telecomitalia.it)
2021-04-06 21:46:36 +0200gesties(a7f8ae19@167.248.174.25)
2021-04-06 21:47:05 +0200notzmv(~zmv@unaffiliated/zmv) (Ping timeout: 246 seconds)
2021-04-06 21:48:08 +0200hololeap(~hololeap@gateway/tor-sasl/hololeap)
2021-04-06 21:48:11 +0200hypercube(hypercube@gateway/vpn/protonvpn/hypercube) (Ping timeout: 265 seconds)
2021-04-06 21:48:22 +0200Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-04-06 21:49:19 +0200Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 260 seconds)
2021-04-06 21:49:41 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-04-06 21:49:48 +0200Lord_of_Life_Lord_of_Life
2021-04-06 21:49:50 +0200royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-04-06 21:50:32 +0200hololeap(~hololeap@gateway/tor-sasl/hololeap) (Remote host closed the connection)
2021-04-06 21:50:54 +0200hololeap(~hololeap@gateway/tor-sasl/hololeap)
2021-04-06 21:56:14 +0200dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0)
2021-04-06 21:56:26 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-04-06 22:00:59 +0200__minoru__shirae(~shiraeesh@5.101.59.224) (Ping timeout: 260 seconds)
2021-04-06 22:02:58 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-04-06 22:03:35 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-04-06 22:05:11 +0200petersen(~petersen@redhat/juhp) (Ping timeout: 240 seconds)
2021-04-06 22:05:55 +0200coot(~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-04-06 22:07:10 +0200coot(~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl)
2021-04-06 22:08:19 +0200petersen(~petersen@redhat/juhp)
2021-04-06 22:08:25 +0200hypercube(~hypercube@75.186.121.128)
2021-04-06 22:08:40 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-04-06 22:09:36 +0200todda7(~torstein@athedsl-09242.home.otenet.gr) (Ping timeout: 260 seconds)
2021-04-06 22:12:42 +0200todda7(~torstein@athedsl-09242.home.otenet.gr)
2021-04-06 22:12:45 +0200mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Ping timeout: 240 seconds)
2021-04-06 22:13:35 +0200notzmv(~zmv@unaffiliated/zmv)
2021-04-06 22:14:17 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-04-06 22:15:49 +0200jessj
2021-04-06 22:19:41 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-04-06 22:19:45 +0200coot(~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-04-06 22:22:27 +0200Guest29958(~amcrae@194.37.96.82) (Remote host closed the connection)
2021-04-06 22:23:49 +0200sm2n(~sm2n@bras-base-hmtnon143hw-grc-13-70-54-76-62.dsl.bell.ca) (Read error: Connection reset by peer)
2021-04-06 22:23:50 +0200sm2n_(~sm2n@bras-base-hmtnon143hw-grc-13-70-54-76-62.dsl.bell.ca)
2021-04-06 22:23:52 +0200sm2n_sm2n
2021-04-06 22:28:55 +0200jakalx(~jakalx@base.jakalx.net)
2021-04-06 22:32:49 +0200enoq(~textual@194-208-146-143.lampert.tv)
2021-04-06 22:35:13 +0200kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2021-04-06 22:38:21 +0200Forlorn_(~Forlorn@unaffiliated/forlorn) (Read error: Connection reset by peer)
2021-04-06 22:41:21 +0200sudden(~lax@unaffiliated/laxask) (Ping timeout: 265 seconds)
2021-04-06 22:41:45 +0200geekosaur(82650c7a@130.101.12.122) (Quit: Connection closed)
2021-04-06 22:41:53 +0200mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh) ("Leaving")
2021-04-06 22:42:09 +0200sudden(~lax@unaffiliated/laxask)
2021-04-06 22:42:17 +0200awk(~mnrmnaugh@unaffiliated/mnrmnaugh)
2021-04-06 22:42:56 +0200awk(~mnrmnaugh@unaffiliated/mnrmnaugh) (Remote host closed the connection)
2021-04-06 22:42:59 +0200stree(~stree@68.36.8.116) (Ping timeout: 260 seconds)
2021-04-06 22:43:27 +0200mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh)
2021-04-06 22:45:37 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.1)
2021-04-06 22:47:36 +0200Eprom(~Eprom@185.169.233.10)
2021-04-06 22:49:16 +0200todda7(~torstein@athedsl-09242.home.otenet.gr) (Ping timeout: 260 seconds)
2021-04-06 22:50:24 +0200todda7(~torstein@athedsl-09242.home.otenet.gr)
2021-04-06 22:50:46 +0200Pickchea(~private@unaffiliated/pickchea) (Quit: Leaving)
2021-04-06 22:53:54 +0200danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 246 seconds)
2021-04-06 22:54:43 +0200lawt(~lawt@c-73-151-3-92.hsd1.ca.comcast.net)
2021-04-06 22:55:23 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-04-06 22:56:18 +0200stree(~stree@68.36.8.116)
2021-04-06 22:57:27 +0200nut(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2021-04-06 22:59:51 +0200gesties(a7f8ae19@167.248.174.25) (Quit: Connection closed)
2021-04-06 23:00:45 +0200xff0x(~xff0x@2001:1a81:5274:b300:d2ad:1716:ab64:e445) (Ping timeout: 250 seconds)
2021-04-06 23:01:46 +0200xff0x(~xff0x@2001:1a81:5274:b300:8230:bebe:5967:a961)
2021-04-06 23:02:51 +0200ADG1089(~aditya@122.163.139.43)
2021-04-06 23:04:16 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-04-06 23:04:39 +0200 <ADG1089> does this (https://paste.tomsmeding.com/jngJObwO) mean I have to switch away form using HashMap, what are some other alternatives?
2021-04-06 23:05:02 +0200vv8(~egp_@128-71-69-136.broadband.corbina.ru) (Ping timeout: 265 seconds)
2021-04-06 23:05:36 +0200Varis(~Tadas@unaffiliated/varis) (Ping timeout: 260 seconds)
2021-04-06 23:05:44 +0200gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-04-06 23:06:07 +0200Narinas(~Narinas@187-178-93-112.dynamic.axtel.net) (Read error: Connection reset by peer)
2021-04-06 23:06:59 +0200acidjnk_new(~acidjnk@p200300d0c72b9510b1ed14260384c0cf.dip0.t-ipconnect.de)
2021-04-06 23:08:16 +0200Narinas(~Narinas@187-178-93-112.dynamic.axtel.net)
2021-04-06 23:08:38 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2021-04-06 23:11:41 +0200todda7(~torstein@athedsl-09242.home.otenet.gr) (Ping timeout: 240 seconds)
2021-04-06 23:12:00 +0200_d0t(void@gateway/vpn/mullvad/d0t/x-89419360) (Quit: Konversation terminated!)
2021-04-06 23:12:58 +0200dpl(~dpl@77-121-78-163.chn.volia.net)
2021-04-06 23:16:21 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-04-06 23:16:47 +0200Tops2(~Tobias@dyndsl-095-033-088-082.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-04-06 23:17:31 +0200jj2021(~JJ@cpe-76-185-168-105.satx.res.rr.com) (Ping timeout: 260 seconds)
2021-04-06 23:21:23 +0200 <haskellstudent> ADG1089: i am just a haskell noob, but my first thought is how could anyone answer that without any context? i can see that you have some haskell application that spends around 20% of its time in hashmap related functions. ok now what does that tell us? nothing.
2021-04-06 23:23:16 +0200xff0x(~xff0x@2001:1a81:5274:b300:8230:bebe:5967:a961) (Ping timeout: 258 seconds)
2021-04-06 23:23:59 +0200xff0x(~xff0x@2001:1a81:5274:b300:73fd:d48e:9253:e66b)
2021-04-06 23:25:07 +0200deviantfero(~deviantfe@190.150.27.58)
2021-04-06 23:25:58 +0200rzmt(~rzmt@87-92-180-112.rev.dnainternet.fi) (Ping timeout: 260 seconds)
2021-04-06 23:28:10 +0200usr25(~usr25@unaffiliated/usr25)
2021-04-06 23:28:49 +0200kristijonas(~kristijon@78-56-32-39.static.zebra.lt) (Remote host closed the connection)
2021-04-06 23:29:12 +0200kristijonas(~kristijon@78-56-32-39.static.zebra.lt)
2021-04-06 23:31:23 +0200nut(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds)
2021-04-06 23:32:13 +0200heatsink(~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-04-06 23:32:27 +0200notzmv(~zmv@unaffiliated/zmv) (Ping timeout: 260 seconds)
2021-04-06 23:33:38 +0200Franciman(~francesco@host-87-20-23-243.retail.telecomitalia.it) (Quit: Leaving)
2021-04-06 23:34:00 +0200__minoru__shirae(~shiraeesh@5.101.59.224)
2021-04-06 23:34:17 +0200todda7(~torstein@athedsl-09242.home.otenet.gr)
2021-04-06 23:36:42 +0200star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2021-04-06 23:37:00 +0200star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-04-06 23:37:46 +0200oish(~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 268 seconds)
2021-04-06 23:38:00 +0200 <ADG1089> yeah maybe that was a wrong question without context
2021-04-06 23:43:30 +0200pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-47-67-70-101-46.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in)
2021-04-06 23:44:10 +0200pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-47-67-70-101-46.dsl.bell.ca)
2021-04-06 23:45:44 +0200chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-04-06 23:46:41 +0200enoq(~textual@194-208-146-143.lampert.tv) (Quit: Textual IRC Client: www.textualapp.com)
2021-04-06 23:46:45 +0200star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-04-06 23:48:00 +0200star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-04-06 23:53:06 +0200HannaM(~quassel@p54849510.dip0.t-ipconnect.de) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2021-04-06 23:54:43 +0200rzmt(~rzmt@87-92-180-112.rev.dnainternet.fi)
2021-04-06 23:57:36 +0200NGravity(csp@gateway/shell/xshellz/x-beigeckolcvbhubi) (Ping timeout: 246 seconds)
2021-04-06 23:57:50 +0200fendor(~fendor@178.165.131.170.wireless.dyn.drei.com) (Remote host closed the connection)
2021-04-06 23:58:26 +0200zebrag(~inkbottle@aaubervilliers-651-1-244-162.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-04-06 23:58:41 +0200__minoru__shirae(~shiraeesh@5.101.59.224) (Ping timeout: 265 seconds)
2021-04-06 23:58:44 +0200LKoen(~LKoen@65.250.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)