2020/11/05

2020-11-05 00:04:25 +0100theDon(~td@94.134.91.97) (Ping timeout: 240 seconds)
2020-11-05 00:04:58 +0100DTZUZU_(~DTZUZU@207.81.171.87)
2020-11-05 00:06:47 +0100DTZUZU(~DTZUZU@207.81.171.87) (Ping timeout: 258 seconds)
2020-11-05 00:09:13 +0100conal(~conal@66.115.157.70)
2020-11-05 00:10:46 +0100 <nshepperd> using lenses for text manipulation is fun
2020-11-05 00:11:45 +0100Tario(~Tario@201.192.165.173)
2020-11-05 00:14:05 +0100 <nshepperd> i made a little library with functions like: take a parser and return a traversal of each matching substring
2020-11-05 00:18:15 +0100Franciman(~francesco@host-79-36-167-172.retail.telecomitalia.it) (Quit: Leaving)
2020-11-05 00:18:30 +0100hackageWin32 2.10.1.0 - A binding to Windows Win32 API. https://hackage.haskell.org/package/Win32-2.10.1.0 (TamarChristina)
2020-11-05 00:22:19 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 00:24:47 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
2020-11-05 00:25:41 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-05 00:26:00 +0100pavonia(~user@unaffiliated/siracusa)
2020-11-05 00:26:01 +0100xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 246 seconds)
2020-11-05 00:26:08 +0100 <Axman6> nshepperd: link? that sounds familliar
2020-11-05 00:26:39 +0100 <Axman6> lens-regex is super cool too
2020-11-05 00:27:17 +0100 <nshepperd> it's not anything i uploaded
2020-11-05 00:27:23 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-11-05 00:27:25 +0100 <nshepperd> maybe i should tho
2020-11-05 00:27:31 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
2020-11-05 00:27:48 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-05 00:28:32 +0100conal(~conal@66.115.157.70) (Quit: Computer has gone to sleep.)
2020-11-05 00:29:11 +0100conal(~conal@66.115.157.70)
2020-11-05 00:30:02 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 00:30:33 +0100christo(~chris@81.96.113.213)
2020-11-05 00:32:37 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
2020-11-05 00:33:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-05 00:33:16 +0100mmohammadi9812(~mmohammad@2.178.217.171) (Ping timeout: 256 seconds)
2020-11-05 00:35:35 +0100christo(~chris@81.96.113.213) (Ping timeout: 272 seconds)
2020-11-05 00:35:59 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-05 00:36:04 +0100 <bqv> d.nnr
2020-11-05 00:36:24 +0100christo(~chris@81.96.113.213)
2020-11-05 00:36:44 +0100 <bqv> is it possible in any context to use foreign imports in typeclass instances?
2020-11-05 00:37:01 +0100 <bqv> (without resorting to templatehaskell, which is probably pretty heatheny :D)
2020-11-05 00:37:07 +0100 <glguy> The foreign imports will be top-level definitions
2020-11-05 00:37:28 +0100 <glguy> you can then use the identifiers declared there in your instance declarations
2020-11-05 00:37:47 +0100 <bqv> so that's a no
2020-11-05 00:37:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-05 00:38:00 +0100hackagemassiv-io 0.4.0.0 - Import/export of Image files into massiv Arrays https://hackage.haskell.org/package/massiv-io-0.4.0.0 (lehins)
2020-11-05 00:38:20 +0100 <bqv> was hoping for a type parameter'd foreign import
2020-11-05 00:38:40 +0100 <bqv> actually, might still be able to...
2020-11-05 00:38:49 +0100 <bqv> who likes void pointers...
2020-11-05 00:40:13 +0100 <monochrom> I don't see any limitation apart from barely inconvenient syntax.
2020-11-05 00:40:30 +0100dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2020-11-05 00:41:36 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-11-05 00:44:10 +0100mmohammadi9812(~mmohammad@2.178.132.235)
2020-11-05 00:44:44 +0100jakob_(~textual@p200300f49f1622005c3255e4d89f5bc8.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…)
2020-11-05 00:45:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-05 00:47:00 +0100jakob_(~textual@p200300f49f1622009d826d3ed3c60d57.dip0.t-ipconnect.de)
2020-11-05 00:49:21 +0100 <xe4> where can I ask questions about using stylish-haskell with my text editor?
2020-11-05 00:49:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2020-11-05 00:49:45 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-05 00:50:25 +0100nut(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
2020-11-05 00:52:41 +0100ystael(~ystael@209.6.50.55) (Ping timeout: 256 seconds)
2020-11-05 00:52:55 +0100conal(~conal@66.115.157.70) (Quit: Computer has gone to sleep.)
2020-11-05 00:55:01 +0100LKoen(~LKoen@53.253.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.”)
2020-11-05 00:55:51 +0100alp(~alp@2a01:e0a:58b:4920:543f:1fa8:3f98:5d73) (Ping timeout: 272 seconds)
2020-11-05 00:56:38 +0100theDon(~td@i5E86B1F0.versanet.de)
2020-11-05 00:57:28 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-05 00:57:45 +0100xff0x(~fox@2001:1a81:53f2:500:153c:e136:7dea:e190) (Ping timeout: 272 seconds)
2020-11-05 00:58:08 +0100xff0x(~fox@2001:1a81:53f2:500:5f26:7f0a:da68:24d7)
2020-11-05 00:58:25 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2020-11-05 00:59:27 +0100Entertainment(~entertain@104.246.132.210) (Quit: Leaving.)
2020-11-05 00:59:58 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-05 01:00:01 +0100kest10(~kest10@139.28.218.148) ()
2020-11-05 01:00:40 +0100argent0(~argent0@168.227.96.2) (Ping timeout: 246 seconds)
2020-11-05 01:03:53 +0100Tario(~Tario@201.192.165.173)
2020-11-05 01:07:29 +0100conal(~conal@64.71.133.70)
2020-11-05 01:10:32 +0100ulidtko(~ulidtko@193.111.48.79) (Remote host closed the connection)
2020-11-05 01:16:40 +0100Ariakenom(~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Read error: Connection reset by peer)
2020-11-05 01:17:31 +0100ulidtko(~ulidtko@193.111.48.79)
2020-11-05 01:19:48 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-05 01:20:52 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-11-05 01:21:14 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-05 01:21:43 +0100Smaczny(~Smaczny@185.204.1.185)
2020-11-05 01:21:43 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-11-05 01:22:18 +0100coot(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-11-05 01:23:25 +0100elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-11-05 01:23:57 +0100texasmynsted(~texasmyns@185.247.70.76)
2020-11-05 01:25:48 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-11-05 01:26:32 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-11-05 01:27:50 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-05 01:33:08 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-05 01:37:05 +0100elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2020-11-05 01:37:39 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 244 seconds)
2020-11-05 01:37:53 +0100linker_(~linker@185.12.21.77) (Remote host closed the connection)
2020-11-05 01:38:56 +0100master_o(50a46f47@80-164-111-71-dynamic.dk.customer.tdc.net)
2020-11-05 01:39:53 +0100elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
2020-11-05 01:41:26 +0100xff0x(~fox@2001:1a81:53f2:500:5f26:7f0a:da68:24d7) (Ping timeout: 264 seconds)
2020-11-05 01:42:19 +0100xff0x(~fox@2001:1a81:53f2:500:7ba4:92a8:6e01:ae71)
2020-11-05 01:42:46 +0100gentauro(~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer)
2020-11-05 01:43:16 +0100gentauro(~gentauro@unaffiliated/gentauro)
2020-11-05 01:43:28 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:ed58:dda3:fd80:2c46) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-05 01:45:29 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-05 01:47:05 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 240 seconds)
2020-11-05 01:48:16 +0100catchme(uid355354@gateway/web/irccloud.com/x-jjbcbrnidixjkmxm) (Quit: Connection closed for inactivity)
2020-11-05 01:48:34 +0100Jeanne-Kamikaze(~Jeanne-Ka@68.235.43.150)
2020-11-05 01:48:57 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net)
2020-11-05 01:49:15 +0100elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2020-11-05 01:50:11 +0100enva2712(~enva2712@cpe-75-86-42-2.wi.res.rr.com)
2020-11-05 01:51:46 +0100asthasr(~asthasr@162.210.29.120)
2020-11-05 01:55:28 +0100asthasr(~asthasr@162.210.29.120) (Client Quit)
2020-11-05 01:57:13 +0100DavidEichmann(~david@43.240.198.146.dyn.plus.net) (Ping timeout: 264 seconds)
2020-11-05 01:57:36 +0100plutoniix(~q@175.176.222.7)
2020-11-05 02:00:38 +0100 <fresheyeball> \q
2020-11-05 02:00:41 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.7.1)
2020-11-05 02:03:34 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
2020-11-05 02:05:19 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 02:08:05 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-11-05 02:10:35 +0100christo(~chris@81.96.113.213)
2020-11-05 02:15:39 +0100christo(~chris@81.96.113.213) (Ping timeout: 272 seconds)
2020-11-05 02:15:56 +0100lucasb(uid333435@gateway/web/irccloud.com/x-cbmhwogtcotlrzny) (Quit: Connection closed for inactivity)
2020-11-05 02:17:33 +0100master_o(50a46f47@80-164-111-71-dynamic.dk.customer.tdc.net) (Remote host closed the connection)
2020-11-05 02:18:45 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 240 seconds)
2020-11-05 02:20:06 +0100guest115(~user@49.5.6.87)
2020-11-05 02:21:28 +0100inkbottle(~inkbottle@aaubervilliers-654-1-110-84.w86-212.abo.wanadoo.fr)
2020-11-05 02:21:39 +0100zebrag(~inkbottle@aaubervilliers-654-1-104-94.w86-212.abo.wanadoo.fr) (Ping timeout: 256 seconds)
2020-11-05 02:24:07 +0100 <Axman6> xe4: asking here is fine, but I can't guarantee you'll get a good answer
2020-11-05 02:24:37 +0100Lord_of_Life(~Lord@46.217.217.162)
2020-11-05 02:24:38 +0100Lord_of_Life_(~Lord@46.217.221.241) (Ping timeout: 260 seconds)
2020-11-05 02:25:24 +0100darjeeling_(~darjeelin@115.215.43.51) (Ping timeout: 256 seconds)
2020-11-05 02:25:58 +0100crdrost(~crdrost@c-98-207-102-156.hsd1.ca.comcast.net) (Quit: Leaving)
2020-11-05 02:26:50 +0100aarvar(~foewfoiew@c.24.56.239.179.static.broadstripe.net)
2020-11-05 02:26:55 +0100aarvar(~foewfoiew@c.24.56.239.179.static.broadstripe.net) ()
2020-11-05 02:29:46 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-05 02:32:18 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2020-11-05 02:37:20 +0100christo(~chris@81.96.113.213)
2020-11-05 02:37:25 +0100Entertainment(~entertain@104.246.132.210)
2020-11-05 02:38:06 +0100Chi1thangoo(~Chi1thang@87.112.60.168) (Ping timeout: 244 seconds)
2020-11-05 02:39:50 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2020-11-05 02:41:34 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-05 02:45:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-05 02:50:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-05 02:56:33 +0100Entertainment(~entertain@104.246.132.210) (Quit: Leaving.)
2020-11-05 02:56:46 +0100jcowan(sid325434@gateway/web/irccloud.com/x-evadozowlzlhtjmy)
2020-11-05 02:57:45 +0100 <bollu> What are the precise semantics of bang-patterns? Consider |let foo' = let !x = error "ERR" in \y -> y|. Can GHC reduce this to |let foo' = \y -> y|
2020-11-05 02:58:00 +0100 <jcowan> Why are there so few instances of class Map? Or am I just not seeing them in Hoogle?
2020-11-05 02:58:52 +0100 <koz_> jcowan: Wait, _class_ Map?
2020-11-05 03:00:01 +0100 <jcowan> koz_: https://hackage.haskell.org/package/collections-api-1.0.0.0/docs/Data-Collections.html#g:4
2020-11-05 03:00:10 +0100 <koz_> Ah, OK. TIL.
2020-11-05 03:01:07 +0100ddellaco1(~dd@86.106.121.168)
2020-11-05 03:01:20 +0100 <jcowan> but apparently type Map is the only instance. You'd think a list of pairs would be an instance too.
2020-11-05 03:01:46 +0100ddellacosta(~dd@86.106.121.168) (Read error: Connection reset by peer)
2020-11-05 03:02:06 +0100 <jcowan> I guess it's because it doesn't meet the (informal) big-O constraints
2020-11-05 03:02:27 +0100 <koz_> jcowan: You can do something like 'newtype AssocList (k :: Type) (v :: Type) = AssocList [(k,v)]', then write an instance against that?
2020-11-05 03:03:30 +0100 <jcowan> hmm, no, there are no O(...) constraints
2020-11-05 03:04:14 +0100 <jcowan> But yes, that makes sense, I'm just surprised it's not already the case.
2020-11-05 03:04:50 +0100borne(~fritjof@200116b864d4e2005d0cb1433c5d4cbb.dip.versatel-1u1.de) (Ping timeout: 264 seconds)
2020-11-05 03:05:18 +0100Lycurgus(~niemand@98.4.97.110)
2020-11-05 03:08:01 +0100 <Axman6> I've never heard of that package, why do you believe it's something you should care about?
2020-11-05 03:08:05 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 260 seconds)
2020-11-05 03:08:12 +0100 <Axman6> is it used by anything?
2020-11-05 03:08:37 +0100 <jcowan> No idea. What I'm investigating is whether the whole idea of a map class actually makes sense or not.
2020-11-05 03:09:02 +0100machinedgod(~machinedg@142.169.78.247) (Ping timeout: 256 seconds)
2020-11-05 03:10:18 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 03:11:02 +0100machinedgod(~machinedg@207.253.244.210)
2020-11-05 03:13:58 +0100 <davean> lens kinda has a Map class, in pieces
2020-11-05 03:15:02 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-11-05 03:22:41 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de)
2020-11-05 03:22:48 +0100 <dolio> Pieces is probably better anyway. I'm not sure you want a huge class with all the things you can do with a map.
2020-11-05 03:26:08 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2020-11-05 03:30:19 +0100drbean(~drbean@TC210-63-209-23.static.apol.com.tw)
2020-11-05 03:33:09 +0100Lycurgus(~niemand@98.4.97.110) (Quit: Exeunt)
2020-11-05 03:35:52 +0100enva2712(~enva2712@cpe-75-86-42-2.wi.res.rr.com) (Quit: leaving)
2020-11-05 03:36:04 +0100machinedgod(~machinedg@207.253.244.210) (Ping timeout: 246 seconds)
2020-11-05 03:38:12 +0100machinedgod(~machinedg@142.169.78.199)
2020-11-05 03:39:24 +0100 <davean> dolio: I agree, I expect jcowan will find its not by chance that package isn't well known or maintained
2020-11-05 03:40:21 +0100 <davean> Decomposed heirarchies with sensible laws for piece piece and addition work very well and are more general.
2020-11-05 03:41:20 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:10ae:4d3f:5d98:36e2)
2020-11-05 03:43:19 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus) (Read error: Connection reset by peer)
2020-11-05 03:43:38 +0100toorevitimirp(~tooreviti@117.182.183.132)
2020-11-05 03:44:49 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 246 seconds)
2020-11-05 03:46:13 +0100machinedgod(~machinedg@142.169.78.199) (Ping timeout: 246 seconds)
2020-11-05 03:46:26 +0100 <c_wraith> What is the breakdown for Map, roughly? At + Foldable?
2020-11-05 03:48:05 +0100machinedgod(~machinedg@142.169.78.111)
2020-11-05 03:48:56 +0100 <c_wraith> well, I guess you have all of Traversable if you want it
2020-11-05 03:49:16 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2020-11-05 03:49:22 +0100conal(~conal@64.71.133.70)
2020-11-05 03:49:36 +0100 <c_wraith> That misses out on things like the union/intersection operators, but does lens have stuff for those?
2020-11-05 03:51:02 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-05 03:52:21 +0100 <c_wraith> I guess I could just read https://hackage.haskell.org/package/lens/docs/Data-Map-Lens.html
2020-11-05 03:52:51 +0100 <c_wraith> Nothing appears to directly address union/intersection stuff
2020-11-05 03:53:20 +0100xerox_(~xerox@unaffiliated/xerox)
2020-11-05 03:53:22 +0100 <ddellaco1> it's very strange how I'm just now trying to figure out how to use lens with Maps, and I come here and everyone is talking about it
2020-11-05 03:53:53 +0100Gurkenglas__(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
2020-11-05 03:54:06 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 258 seconds)
2020-11-05 03:54:20 +0100 <ddellaco1> in particular how to manipulate the keys. Didn't occur to me to look at Data.Map.Lens, thank you
2020-11-05 03:54:34 +0100xff0x(~fox@2001:1a81:53f2:500:7ba4:92a8:6e01:ae71) (Ping timeout: 244 seconds)
2020-11-05 03:56:40 +0100xff0x(~fox@2001:1a81:522f:7b00:29b2:8682:67ea:c01f)
2020-11-05 04:00:02 +0100Smaczny(~Smaczny@185.204.1.185) ()
2020-11-05 04:00:13 +0100 <jcowan> Map should be a Set (of assoociations)
2020-11-05 04:00:43 +0100son0p(~son0p@181.136.122.143) (Quit: Lost terminal)
2020-11-05 04:03:57 +0100dmwit(~dmwit@pool-108-28-166-212.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2020-11-05 04:04:23 +0100 <dolio> That sounds like something that would show up in Oleg's examples of violations of the Liskov principle.
2020-11-05 04:05:05 +0100argent0(~argent0@168.227.96.2)
2020-11-05 04:05:23 +0100argent0(~argent0@168.227.96.2) (Remote host closed the connection)
2020-11-05 04:06:33 +0100machinedgod(~machinedg@142.169.78.111) (Quit: leaving)
2020-11-05 04:07:19 +0100 <monochrom> Instead, Set is a special case of Map: Set X is Map X ()
2020-11-05 04:07:22 +0100lagothrixGuest68265
2020-11-05 04:07:30 +0100lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-11-05 04:08:08 +0100 <monochrom> That is, comparing Set operations with Map operations.
2020-11-05 04:09:09 +0100dmwit(~dmwit@pool-108-28-166-212.washdc.fios.verizon.net)
2020-11-05 04:10:37 +0100Guest68265(~lagothrix@unaffiliated/lagothrix) (Ping timeout: 260 seconds)
2020-11-05 04:13:48 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-11-05 04:17:01 +0100irc_user(uid423822@gateway/web/irccloud.com/x-nqqmqoyedjtdxopn)
2020-11-05 04:19:13 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-11-05 04:19:25 +0100theDon(~td@i5E86B1F0.versanet.de) (Ping timeout: 264 seconds)
2020-11-05 04:21:04 +0100theDon(~td@muedsl-82-207-239-021.citykom.de)
2020-11-05 04:25:31 +0100hackagetonatona 0.1.2.1 - meta application framework https://hackage.haskell.org/package/tonatona-0.1.2.1 (qnoyxu)
2020-11-05 04:27:00 +0100hackagetonalude 0.1.1.1 - A standard library for Tonatona framework. https://hackage.haskell.org/package/tonalude-0.1.1.1 (qnoyxu)
2020-11-05 04:27:04 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-05 04:28:00 +0100hackagetonatona-servant 0.1.0.4, tonatona-persistent-sqlite 0.1.0.2, tonatona-persistent-postgresql 0.1.0.2, tonatona-logger 0.2.0.2, tonaparser 0.1.0.1 (qnoyxu)
2020-11-05 04:28:33 +0100conal(~conal@64.71.133.70)
2020-11-05 04:32:10 +0100mi23523523(~Mi1029384@82.131.36.5.cable.starman.ee)
2020-11-05 04:33:28 +0100 <Axman6> ddellaco1: http://hackage.haskell.org/package/lens-4.19.2/docs/Control-Lens-At.html is probably what you want to use
2020-11-05 04:33:30 +0100mi23523523(~Mi1029384@82.131.36.5.cable.starman.ee) (Read error: Connection reset by peer)
2020-11-05 04:34:13 +0100 <justsomeguy> Out of (idle) curiosity, is there a language extension to add syntax support for first-class sets and maps, like python has? The closest thing I'm aware of is OverloadedLists, but being able to write something like {1:"this",2:"that"} is really nice.
2020-11-05 04:34:21 +0100mi23523523(~Mi1029384@82.131.36.5.cable.starman.ee)
2020-11-05 04:34:39 +0100 <Axman6> I thnk overloaded lists with tuples is as close as it gets
2020-11-05 04:35:06 +0100 <sshine> justsomeguy, you can make a quasi quoter? ;)
2020-11-05 04:35:11 +0100 <Axman6> % [(True,"Hello"),(False,"bye")] :: Map Bool String
2020-11-05 04:35:12 +0100 <yahb> Axman6: ; <interactive>:75:35: error:; Not in scope: type constructor or class `Map'; Perhaps you meant one of these: `M.Map' (imported from Data.Map), `Max' (imported from Data.Semigroup)
2020-11-05 04:35:19 +0100 <Axman6> % [(True,"Hello"),(False,"bye")] :: M.Map Bool String
2020-11-05 04:35:19 +0100 <yahb> Axman6: ; <interactive>:76:1: error:; * Couldn't match expected type `M.Map Bool String' with actual type `[(Bool, [Char])]'; * In the expression: [(True, "Hello"), (False, "bye")] :: M.Map Bool String; In an equation for `it': it = [(True, "Hello"), (False, "bye")] :: M.Map Bool String
2020-11-05 04:35:29 +0100 <justsomeguy> Well, it's still pretty good. I guess Haskell compensates by not needing so much syntax in other places. -- wait, quasiquoters can do that?
2020-11-05 04:35:38 +0100 <Axman6> % :set -XOverloadedLists
2020-11-05 04:35:39 +0100 <yahb> Axman6:
2020-11-05 04:35:41 +0100 <Axman6> % [(True,"Hello"),(False,"bye")] :: M.Map Bool String
2020-11-05 04:35:41 +0100 <yahb> Axman6: fromList [(False,"bye"),(True,"Hello")]
2020-11-05 04:36:20 +0100 <Axman6> justsomeguy: quasi quoters are basically just functions from String to Haskell
2020-11-05 04:36:45 +0100 <sshine> justsomeguy, I don't think you'd like that. you could make it so that you have [map|{a: 1, b: 2}], but I'd question the trade-off.
2020-11-05 04:36:58 +0100 <Axman6> so you could have [map|{foo: True, bar: 7}|] but it's pretty ugly IMO
2020-11-05 04:37:27 +0100 <Axman6> you could I guess just do [map|foo: True, bar: 7|]
2020-11-05 04:37:35 +0100 <ddellaco1> Axman6: thanks. I ended up just doing some fmap ugliness for the time being, going to revisit tomorrow
2020-11-05 04:37:37 +0100 <sshine> justsomeguy, there is some technical trade-off, but the big trade-off, I think, is you're not really coding Haskell. :-P
2020-11-05 04:38:21 +0100 <justsomeguy> Hmm, maybe this is something that I should be solving with an editor macro, instead.
2020-11-05 04:39:06 +0100 <justsomeguy> (Or not solving at all, since it's not a big deal :^p)
2020-11-05 04:39:11 +0100nbloomf_(~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb)
2020-11-05 04:39:18 +0100 <Axman6> % let a ==> b = (a,b)
2020-11-05 04:39:18 +0100 <yahb> Axman6:
2020-11-05 04:39:23 +0100 <dolio> It seems like OverloadedLists is completely adequate.
2020-11-05 04:39:37 +0100 <Axman6> % [True ==> "Hello", False ==> "bye"] :: M.Map Bool String
2020-11-05 04:39:38 +0100 <yahb> Axman6: fromList [(False,"bye"),(True,"Hello")]
2020-11-05 04:40:12 +0100 <sshine> justsomeguy, you could do a similar reasoning with regexes. Perl has $x =~ m/(foo)*/ syntax and in Haskell the nicest alternative (I think) is regex-applicative which is more like 'many (string "foo")' -- so takes up more space, but the style is combinator composition.
2020-11-05 04:40:47 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-11-05 04:40:48 +0100ColdRush(~coldrush@4e69b241.skybroadband.com) (Ping timeout: 272 seconds)
2020-11-05 04:40:50 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:10ae:4d3f:5d98:36e2) (Ping timeout: 264 seconds)
2020-11-05 04:41:07 +0100 <sshine> justsomeguy, wrt. Maps and syntax support, if you already accept the syntactic weight of composing combinators, is just 'fromList' and the many parentheses around tuples.
2020-11-05 04:42:16 +0100 <justsomeguy> Right, it's not bad at all.
2020-11-05 04:42:37 +0100 <sshine> justsomeguy, and if you think 'fromList' is too heavy, OverloadedLists can remove it. but you'd still want a syntactically consistent way to address the remaining values in a way that is similar to how you adress other things.
2020-11-05 04:42:46 +0100 <sshine> justsomeguy, it depends on the perspective.
2020-11-05 04:43:16 +0100 <sshine> justsomeguy, combinators aren't always the shortest. but the benefit of being able to compose things is so high.
2020-11-05 04:43:56 +0100theDon(~td@muedsl-82-207-239-021.citykom.de) (Ping timeout: 258 seconds)
2020-11-05 04:44:37 +0100Tario(~Tario@201.192.165.173)
2020-11-05 04:45:13 +0100st8less(~st8less@2603:a060:11fd:0:acb3:c1f9:8208:550f) (Quit: WeeChat 2.7.1)
2020-11-05 04:45:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-05 04:46:08 +0100 <texasmynsted> I am not really sure how to search for or even describe what I am looking for... Is there something I can use to "grep" a bunch of files for a token using a parser like megaparsec or something rather than regexp?
2020-11-05 04:46:14 +0100 <sshine> justsomeguy, e.g. in Perl if you want to combine two regexes, you need to be aware of not accidentally embedding user-input strings into your regex, since Perl regexes are a bit too powerful (e.g. allow general recursion and exponential compute holes, since they're not regular).. so m/$regex1$regex2/ is fine as long as $regex1 and $regex2 weren't dirty. if anything is dirty you want \Q$dirtybit\E. with
2020-11-05 04:46:20 +0100 <sshine> regex-applicative I'm not familiar with a way to make those accidents.
2020-11-05 04:46:44 +0100 <Axman6> texasmynsted: well, there is https://hackage.haskell.org/package/lens-regex-0.1.1/docs/Text-Regex-Lens.html...
2020-11-05 04:46:57 +0100GUEST48003(~GUEST4800@124.123.104.52)
2020-11-05 04:47:07 +0100 <texasmynsted> that sounds like it uses regexps
2020-11-05 04:47:12 +0100 <Axman6> it does
2020-11-05 04:47:39 +0100jud(~jud@unaffiliated/jud) (Read error: Connection reset by peer)
2020-11-05 04:47:39 +0100 <Axman6> I'm sure I've seen something which does a similar things
2020-11-05 04:47:49 +0100 <texasmynsted> I was looking for an alternative to regexps. (I do not think regexps are easy to read, maintain, or debug.)
2020-11-05 04:48:05 +0100 <sshine> texasmynsted, regex-applicative / Megaparsec? :)
2020-11-05 04:48:09 +0100 <Axman6> https://hackage.haskell.org/package/replace-attoparsec?
2020-11-05 04:48:18 +0100jud(~jud@unaffiliated/jud)
2020-11-05 04:48:23 +0100 <texasmynsted> I am looking for a token in the YAML header of markdown files.
2020-11-05 04:48:24 +0100 <sshine> Axman6, neat.
2020-11-05 04:48:27 +0100chise(3b29a236@59.41.162.54)
2020-11-05 04:48:55 +0100 <texasmynsted> oh intersting.
2020-11-05 04:48:56 +0100 <sshine> texasmynsted, like a tag or something?
2020-11-05 04:49:12 +0100 <texasmynsted> yes. like "isUnpublished=true"
2020-11-05 04:49:43 +0100jud(~jud@unaffiliated/jud) (Max SendQ exceeded)
2020-11-05 04:49:55 +0100 <texasmynsted> like I have a bunch of markdown files. Some I do not want published so I want them added to an exclude list for rsync
2020-11-05 04:50:01 +0100 <Axman6> Can't decide is this is cool or gross: streamEditT (char '{' *> manyTill anyChar (char '}')) (fmap T.pack . getEnv) "- {HOME} -"
2020-11-05 04:50:11 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2020-11-05 04:50:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-05 04:51:08 +0100jud(~jud@unaffiliated/jud)
2020-11-05 04:51:24 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-11-05 04:51:40 +0100 <sshine> > "isUnpublished=true" `isInfixOf` "I'm not sure what a token in the YAML header of a Markdown file looks like, but if it contains isUnpublished=true, maybe this qualifies?"
2020-11-05 04:51:42 +0100 <lambdabot> True
2020-11-05 04:52:41 +0100Guest74313(~benj@195.206.169.184)
2020-11-05 04:52:42 +0100 <texasmynsted> YAML header starts with --- and ends with ---
2020-11-05 04:52:47 +0100 <texasmynsted> At the top of the file
2020-11-05 04:53:03 +0100 <Axman6> this sounds like you could just use pandoc
2020-11-05 04:53:12 +0100 <Axman6> "just"
2020-11-05 04:53:22 +0100 <texasmynsted> maybe but I am trying to get a list of files.
2020-11-05 04:53:22 +0100 <sshine> "one does not just..."
2020-11-05 04:53:26 +0100 <Axman6> I mean you're describing a format pandoc knows about
2020-11-05 04:53:41 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-hgnmrpxqnetkvsrt) ()
2020-11-05 04:54:21 +0100 <texasmynsted> Pandoc seems well suited to filtering/altering/rendering markdown files, but I am not sure how to get it to just search for tokens and add or not a file name to a list
2020-11-05 04:54:50 +0100 <texasmynsted> I could convert each file to the AST then search the AST, then ?
2020-11-05 04:55:03 +0100texasmynstedhoogles `isInfixOf`
2020-11-05 04:56:21 +0100 <texasmynsted> oh. isInfixOf is usef.
2020-11-05 04:56:27 +0100 <texasmynsted> I mean useful
2020-11-05 04:57:12 +0100 <sshine> if you want to build a mostly sufficient Markdown header parser, but not pull out a big gun, ask yourself how little you can get away with. isInfixOf won't let you blog about what you're doing right now. :-P
2020-11-05 05:01:32 +0100GUEST48003(~GUEST4800@124.123.104.52) (Remote host closed the connection)
2020-11-05 05:01:51 +0100GUEST48896(~GUEST4889@124.123.104.52)
2020-11-05 05:04:05 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds)
2020-11-05 05:04:56 +0100shatriff_(~vitaliish@176.52.219.10)
2020-11-05 05:07:41 +0100shatriff(~vitaliish@176.52.219.10) (Ping timeout: 256 seconds)
2020-11-05 05:09:24 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-05 05:09:35 +0100 <texasmynsted> I think that finding the token is less the issue. More of the issue is searching all the files.
2020-11-05 05:10:30 +0100 <Axman6> if you can search one file, and you can get all the file names, then you just traverse
2020-11-05 05:11:41 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 05:11:45 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Ping timeout: 240 seconds)
2020-11-05 05:12:13 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-11-05 05:12:25 +0100k199(3e8b7dcd@62.139.125.205)
2020-11-05 05:13:28 +0100drbean(~drbean@TC210-63-209-23.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin1 - https://znc.in)
2020-11-05 05:13:42 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 256 seconds)
2020-11-05 05:14:05 +0100ddellaco1(~dd@86.106.121.168) (Ping timeout: 240 seconds)
2020-11-05 05:15:41 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-11-05 05:16:09 +0100 <sshine> texasmynsted, https://gist.github.com/sshine/4e8673ad48b3f6098e4dbe097a9dfe5f
2020-11-05 05:16:45 +0100mi23523523(~Mi1029384@82.131.36.5.cable.starman.ee) (Quit: Leaving)
2020-11-05 05:16:53 +0100 <texasmynsted> WOW! Thank you!
2020-11-05 05:17:08 +0100 <texasmynsted> Now I understand. :-)
2020-11-05 05:17:17 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2020-11-05 05:17:22 +0100 <justsomeguy> That is very nice and easy to read, even for a noob like me.
2020-11-05 05:17:52 +0100 <sshine> it started as a one-liner so I could paste it on IRC.
2020-11-05 05:18:10 +0100 <Axman6> yuno bytestring
2020-11-05 05:18:24 +0100star_watt(7c7b6834@124.123.104.52)
2020-11-05 05:18:44 +0100 <sshine> Axman6, good point, thanks.
2020-11-05 05:19:20 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-11-05 05:19:28 +0100 <pjb> perhaps I would use isPublished instead, to avoid double-negatives…
2020-11-05 05:19:34 +0100coot(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl)
2020-11-05 05:20:01 +0100k199(3e8b7dcd@62.139.125.205) (Remote host closed the connection)
2020-11-05 05:20:21 +0100 <Axman6> texasmynsted: just becareful that you don't write a blog post about this and forget to publish the file because you have the string "isUnpublished=true" in it :P
2020-11-05 05:20:37 +0100 <texasmynsted> LOL
2020-11-05 05:20:45 +0100 <koz_> isUnpublished=false is _definitely_ likely to lead to confusion.
2020-11-05 05:21:18 +0100 <texasmynsted> preventPublish: true
2020-11-05 05:21:30 +0100jud(~jud@unaffiliated/jud) (Ping timeout: 258 seconds)
2020-11-05 05:21:44 +0100jcowan(sid325434@gateway/web/irccloud.com/x-evadozowlzlhtjmy) ()
2020-11-05 05:21:49 +0100 <sshine> pjb, good idea :) except I don't know if "isUnpublished=true" is the same as "isPublished=false" :-D
2020-11-05 05:22:03 +0100 <Axman6> I worked at a place which had a script that could update itself, and its check to see if it had downloaded a complete file was to check if it had a specific string, which was placed at the end of the file
2020-11-05 05:22:28 +0100 <Axman6> the way it checked that was to just grep for... that string... inside the file that was doing the update
2020-11-05 05:22:45 +0100 <sshine> koz_, yeah, I'd definitely stick to assuming that things aren't published by default, and I have to put "isPublished=true"... it seems that publishedness is a property, whereas unpublishedness is more like the absence of a property.
2020-11-05 05:22:57 +0100 <Axman6> so you had ... grep COMPLETEFILE thefile... #COMPLETEFILE <EOF>
2020-11-05 05:23:12 +0100 <Axman6> so, if it downloaded enought o pass the grep line, it would pass the test
2020-11-05 05:23:24 +0100 <koz_> texasmynsted: notFitForHumanConsumption=true
2020-11-05 05:23:42 +0100 <Axman6> literally any other regex given to grep that matched would have made it ok
2020-11-05 05:25:43 +0100 <sshine> texasmynsted, if you ever start wondering "Hey, why do I put all my files into linked lists of single characters?", you can reload the page.
2020-11-05 05:25:44 +0100 <pjb> Axman6: its a classic; you can do it by not using the target string in the regexp, but a regexp that matches it, such as: grep -e '[C]OMPLETEFILE' "$0"
2020-11-05 05:25:49 +0100 <justsomeguy> Hmm... It's interesting how that is. I had to debug a script that had a ton of checks that something is not true (if ! [ condition ]; then .. ; fi), and even though I was expecting it the negation, I found it hard to read because I instinctively assumed the condition was checking for True -- had to do a double take every time.
2020-11-05 05:26:01 +0100GUEST48896(~GUEST4889@124.123.104.52) (Remote host closed the connection)
2020-11-05 05:26:03 +0100 <Axman6> pjb: yep, exactly
2020-11-05 05:26:23 +0100 <sshine> texasmynsted, (the only difference is "BS." and some import/overloading machinery)
2020-11-05 05:27:09 +0100 <sshine> pjb, [h][e][h][e].
2020-11-05 05:27:33 +0100 <pjb> or even '\h\e\h\e'
2020-11-05 05:27:34 +0100 <texasmynsted> lol
2020-11-05 05:27:55 +0100 <sshine> TCL has a pretty decent regex implementation.
2020-11-05 05:28:37 +0100 <sshine> it's powerful yet not unreasonable. and the library functions around it are actually useful. unfortunately, in TCL, everything is a string.
2020-11-05 05:28:40 +0100 <Axman6> is Haskell89's type system turing complete?
2020-11-05 05:28:49 +0100 <texasmynsted> :-)
2020-11-05 05:28:51 +0100 <c_wraith> No
2020-11-05 05:29:32 +0100star0558(~star0558@124.123.104.52)
2020-11-05 05:31:10 +0100 <dsal> I'm super happy to ~never use regex.
2020-11-05 05:31:51 +0100 <Axman6> nah they're great in text editors
2020-11-05 05:32:01 +0100 <Axman6> but should never be in code
2020-11-05 05:32:17 +0100 <dibblego> and text editors are not great
2020-11-05 05:32:38 +0100 <texasmynsted> I do not like regexp. I only use them when I must.
2020-11-05 05:32:42 +0100 <sshine> dsal, $you =~ m/never/ use regex?
2020-11-05 05:33:02 +0100 <texasmynsted> Thanks again sshine
2020-11-05 05:36:16 +0100 <dsal> Axman6: Oh, yeah, that's a good point. I do occasionally use them to find stuff with my editor or grep or whatever. Just not in programs.
2020-11-05 05:36:44 +0100 <Axman6> I've always wanted lenses over haskell courde to use in a text editor
2020-11-05 05:37:47 +0100 <sshine> dsal, I went to buy a drill hammer at the hardware store since my percussion drill wasn't cutting through. the salesman wanted to sell me one that shared a battery type with a very good electric screwdriver, because, you know, screwing in things using a percussion drill is... reckless. yet, that is what I do because I'd rather hold two oversized powertools when I am dancing on a ladder two oversized
2020-11-05 05:37:50 +0100 <dibblego> aka, an editor without the strings!
2020-11-05 05:37:53 +0100 <sshine> powertools plus an appropriately sized one.
2020-11-05 05:38:47 +0100 <dsal> A regex isn't an oversized powertool. It's the sawzall you use for everything because it's all you have.
2020-11-05 05:38:49 +0100 <sshine> s/(?<=ladder )/rather than /
2020-11-05 05:39:01 +0100 <dsal> My neighbor was trying to cut up a tree with his sawzall. Awful time he had.
2020-11-05 05:39:09 +0100jakob_(~textual@p200300f49f1622009d826d3ed3c60d57.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…)
2020-11-05 05:39:09 +0100Axman6wants to know what a drill hammer is
2020-11-05 05:39:28 +0100jakob_(~textual@p200300f49f1622009d826d3ed3c60d57.dip0.t-ipconnect.de)
2020-11-05 05:39:30 +0100 <sshine> Axman6, it's a small jackhammer for concrete walls and ceilings.
2020-11-05 05:39:44 +0100 <MarcelineVQ> hammer drill :>
2020-11-05 05:39:50 +0100 <sshine> Axman6, it punches and doesn't drill.
2020-11-05 05:40:16 +0100 <sshine> Axman6, a percussion drill does both, but it doesn't punch as hard.
2020-11-05 05:40:43 +0100 <sshine> so if you ever move into a solid concrete building and want to put up anything on your wall, you may need a drill hammer.
2020-11-05 05:41:59 +0100 <dsal> I like having the right tool for the job. I have a tiny chopsaw specifically for cutting brass casings into smaller brass casings. https://usercontent.irccloud-cdn.com/file/WU4zyLxR/minichop.jpg
2020-11-05 05:42:05 +0100 <dsal> When I need to parse stuff in Haskell, I pretty much just use megaparsec. Sometimes attoparsec. Rarely read. I used regexes once and ended up regretting it (but learning proper parsers).
2020-11-05 05:42:15 +0100 <sshine> percussion drills often let you choose "punch, punch and drill, drill only" and the "drill only" works perfectly as an overweight, trigger-happy electric screwdriver.
2020-11-05 05:42:16 +0100notnatebtw(~nate@125.161.131.218)
2020-11-05 05:42:35 +0100 <sshine> in this scenario, Megaparsec is the percussion drill.
2020-11-05 05:43:17 +0100 <sshine> dsal, I'd use a percussion drill for that. haha, j/k.
2020-11-05 05:43:58 +0100 <dsal> Heh, I used a dremel to do that once, free hand. It technically worked. But that was really dumb.
2020-11-05 05:44:26 +0100jakob_(~textual@p200300f49f1622009d826d3ed3c60d57.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-11-05 05:46:53 +0100star0558(~star0558@124.123.104.52) (Remote host closed the connection)
2020-11-05 05:47:12 +0100star1616(~star1616@124.123.104.52)
2020-11-05 05:47:49 +0100 <sshine> dsal, I used regex-applicative once to see how a very regex-like task would look like. and then I re-did it with Megaparsec, and it seemed nothing significant was gained. https://dev.to/piq9117/haskell-enforcing-naming-convention-with-parsec-1f2h#comments -- but regex-applicative is a nice library nonetheless.
2020-11-05 05:48:08 +0100 <MarcelineVQ> sshine: around here you'd call a percussion drill a hammer drill, you're describing a rotary hammer though yeah? humans aren't so hot at creating discerning names :O
2020-11-05 05:48:11 +0100 <sshine> s/gained/gained from using regex-applicative in the first place/
2020-11-05 05:48:14 +0100star1616(~star1616@124.123.104.52) (Remote host closed the connection)
2020-11-05 05:48:32 +0100Codaraxis(~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
2020-11-05 05:49:11 +0100coot(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-11-05 05:49:12 +0100watt739(~watt739@124.123.104.52)
2020-11-05 05:49:36 +0100 <sshine> MarcelineVQ, I'm using google translate. in my language "borehammer" = drill hammer = its main feature is that it punches, in spiute of "drill" being a part of its name. I guess "drill" refers to the long, thin shape of the thing that punches, rather than the action.
2020-11-05 05:49:45 +0100coot(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl)
2020-11-05 05:50:16 +0100stonebrige(~stonebrig@4e69b241.skybroadband.com)
2020-11-05 05:50:22 +0100 <dsal> sshine: That's kind of weird. It doesn't look like a regex language.
2020-11-05 05:50:55 +0100aarvar(~foewfoiew@c.24.56.239.179.static.broadstripe.net)
2020-11-05 05:51:19 +0100 <sshine> MarcelineVQ, whereas "slagboremaskine" = percussion drill = its drilling function is strong, and its punching function is weak, and combined you get through a lot of materials without wrecking them (e.g. bricks, but it's too crude for bathroom tiles and too weak for concrete).
2020-11-05 05:51:45 +0100puffnfresh(~puffnfres@180-150-38-83.b49626.bne.nbn.aussiebb.net) (Read error: Network is unreachable)
2020-11-05 05:52:47 +0100 <MarcelineVQ> so literal :> slag bore mchine
2020-11-05 05:52:51 +0100 <sshine> dsal, the meat of the task is pretty much exactly the same in regex-applicative and megaparsec.
2020-11-05 05:53:07 +0100 <sshine> MarcelineVQ, haha yes, this is a good name. punch drill machine.
2020-11-05 05:53:09 +0100 <dsal> Yeah, both seem like fine ways to do parsing.
2020-11-05 05:53:39 +0100 <sshine> dsal, yeah. and sometimes you realize, "shit, what I'm doing is not regular." and it'd be neat if all you had to do was break out of applicative style, but not switch library. :-P
2020-11-05 05:55:28 +0100puffnfresh(~puffnfres@180-150-38-83.b49626.bne.nbn.aussiebb.net)
2020-11-05 05:57:54 +0100alp(~alp@2a01:e0a:58b:4920:c9f2:c45e:5046:e2e6)
2020-11-05 06:00:33 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 06:00:52 +0100texasmynsted(~texasmyns@185.247.70.76) (Remote host closed the connection)
2020-11-05 06:01:40 +0100texasmynsted(~texasmyns@185.247.70.76)
2020-11-05 06:05:14 +0100christo(~chris@81.96.113.213)
2020-11-05 06:05:32 +0100 <sshine> dsal, I think that regex gets a bad rep for the classical syntax. regex-applicative unscrews that a bit (in spite of not really being that useful in a lot of cases). another example where I think something built on top of just regex (leveraging the limit) is Kleenex: https://github.com/diku-kmc/kleenexlang#use
2020-11-05 06:05:48 +0100texasmynsted(~texasmyns@185.247.70.76) (Ping timeout: 244 seconds)
2020-11-05 06:06:01 +0100 <sshine> that last sentence missed a superlative.
2020-11-05 06:10:15 +0100christo(~chris@81.96.113.213) (Ping timeout: 265 seconds)
2020-11-05 06:12:25 +0100notnatebtwhidedagger
2020-11-05 06:12:25 +0100solonarv(~solonarv@astrasbourg-653-1-263-62.w92-161.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2020-11-05 06:13:12 +0100hidedagger(~nate@125.161.131.218) (Quit: WeeChat 2.9)
2020-11-05 06:15:00 +0100hyiltiz(~quassel@unaffiliated/hyiltiz) (Remote host closed the connection)
2020-11-05 06:15:20 +0100hidedagger(~nate@125.161.131.218)
2020-11-05 06:16:03 +0100hidedagger(~nate@125.161.131.218) (Client Quit)
2020-11-05 06:16:48 +0100star_watt(7c7b6834@124.123.104.52) (Remote host closed the connection)
2020-11-05 06:18:25 +0100zoran119(~zoran119@124-169-22-52.dyn.iinet.net.au) (Quit: leaving)
2020-11-05 06:25:57 +0100xff0x(~fox@2001:1a81:522f:7b00:29b2:8682:67ea:c01f) (Ping timeout: 244 seconds)
2020-11-05 06:26:40 +0100irc_user(uid423822@gateway/web/irccloud.com/x-nqqmqoyedjtdxopn) (Quit: Connection closed for inactivity)
2020-11-05 06:26:52 +0100xff0x(~fox@2001:1a81:522f:7b00:d95:27ea:7e18:f05f)
2020-11-05 06:34:41 +0100DTZUZU(~DTZUZU@207.81.171.116)
2020-11-05 06:36:17 +0100acidjnk_new2(~acidjnk@p200300d0c718f665213d210801ac68e4.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-11-05 06:37:00 +0100watt739(~watt739@124.123.104.52) (Ping timeout: 256 seconds)
2020-11-05 06:37:10 +0100DTZUZU_(~DTZUZU@207.81.171.87) (Ping timeout: 260 seconds)
2020-11-05 06:37:25 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 240 seconds)
2020-11-05 06:38:25 +0100chise(3b29a236@59.41.162.54) (Remote host closed the connection)
2020-11-05 06:40:36 +0100day_(~Unknown@unaffiliated/day)
2020-11-05 06:44:13 +0100day(~Unknown@unaffiliated/day) (Ping timeout: 260 seconds)
2020-11-05 06:44:14 +0100day_day
2020-11-05 06:45:11 +0100Lycurgus(~niemand@98.4.97.110)
2020-11-05 06:46:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-05 06:48:52 +0100ten(~ten@1.136.105.204)
2020-11-05 06:49:38 +0100 <ten> /Help
2020-11-05 06:49:43 +0100ten(~ten@1.136.105.204) (Client Quit)
2020-11-05 06:50:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-11-05 06:55:39 +0100Lycurgus(~niemand@98.4.97.110) (Quit: Exeunt)
2020-11-05 06:56:07 +0100shatriff_(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-11-05 06:56:29 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-11-05 07:00:01 +0100Guest74313(~benj@195.206.169.184) ()
2020-11-05 07:01:06 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
2020-11-05 07:02:40 +0100L29Ah(~L29Ah@unaffiliated/l29ah) (Ping timeout: 272 seconds)
2020-11-05 07:04:15 +0100hidedagger(~nate@125.161.131.218)
2020-11-05 07:04:24 +0100hyiltiz(~quassel@2601:14d:4100:112c:cff4:7114:bc84:3722)
2020-11-05 07:04:24 +0100hyiltiz(~quassel@2601:14d:4100:112c:cff4:7114:bc84:3722) (Changing host)
2020-11-05 07:04:24 +0100hyiltiz(~quassel@unaffiliated/hyiltiz)
2020-11-05 07:04:39 +0100L29Ah(~L29Ah@unaffiliated/l29ah)
2020-11-05 07:06:02 +0100jedws(~jedws@101.184.150.81) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-05 07:09:56 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-05 07:10:47 +0100alp(~alp@2a01:e0a:58b:4920:c9f2:c45e:5046:e2e6) (Ping timeout: 272 seconds)
2020-11-05 07:14:07 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 246 seconds)
2020-11-05 07:14:33 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
2020-11-05 07:15:10 +0100hidedagger(~nate@125.161.131.218) (Quit: WeeChat 2.9)
2020-11-05 07:15:21 +0100mmohammadi9812(~mmohammad@2.178.132.235) (Ping timeout: 258 seconds)
2020-11-05 07:16:14 +0100hyiltiz_(~quassel@82.118.227.47)
2020-11-05 07:16:49 +0100hidedagger(~nate@125.161.131.218)
2020-11-05 07:17:55 +0100hyiltiz(~quassel@unaffiliated/hyiltiz) (Quit: hyiltiz)
2020-11-05 07:22:10 +0100howdoi(uid224@gateway/web/irccloud.com/x-vhoynudvnfkkavxn) (Quit: Connection closed for inactivity)
2020-11-05 07:25:43 +0100Jeanne-Kamikaze(~Jeanne-Ka@68.235.43.150) (Quit: Leaving)
2020-11-05 07:29:06 +0100yinfeng(~yinfeng@2001:250:5002:8100::3:bd7b)
2020-11-05 07:36:25 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 240 seconds)
2020-11-05 07:39:22 +0100jespada(~jespada@90.254.245.49)
2020-11-05 07:40:01 +0100hackageshakebook 0.13.1.0 - Shake-based technical documentation generator; HTML & PDF https://hackage.haskell.org/package/shakebook-0.13.1.0 (locallycompact)
2020-11-05 07:46:58 +0100bgamari_(~bgamari@72.65.102.83) (Ping timeout: 268 seconds)
2020-11-05 07:48:40 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 07:50:00 +0100hackagegopro-plus 0.4.1.3 - GoPro Plus Client API. https://hackage.haskell.org/package/gopro-plus-0.4.1.3 (dustin)
2020-11-05 07:50:54 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net) (Remote host closed the connection)
2020-11-05 07:52:45 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-11-05 07:53:49 +0100CodeAlways(uid272474@gateway/web/irccloud.com/x-ydthmisqrovakaks)
2020-11-05 07:57:30 +0100hackageshake-plus 0.3.3.1 - Re-export of Shake using well-typed paths and ReaderT. https://hackage.haskell.org/package/shake-plus-0.3.3.1 (locallycompact)
2020-11-05 08:08:01 +0100jess(jess@freenode/staff/jess) (Quit: Leaving)
2020-11-05 08:09:25 +0100elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2020-11-05 08:11:49 +0100mmohammadi9812(~mmohammad@5.113.30.246)
2020-11-05 08:15:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-05 08:17:14 +0100jedws(~jedws@101.184.150.81)
2020-11-05 08:18:18 +0100mmohammadi9812(~mmohammad@5.113.30.246) (Read error: Connection reset by peer)
2020-11-05 08:19:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-11-05 08:22:54 +0100lockshaw(~lockshaw@165.22.163.71) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
2020-11-05 08:23:17 +0100lockshaw(~lockshaw@165.22.163.71)
2020-11-05 08:25:29 +0100knupfer(~Thunderbi@200116b82c33ca00c94caacc2b768892.dip.versatel-1u1.de)
2020-11-05 08:25:45 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2020-11-05 08:28:31 +0100aarvar(~foewfoiew@c.24.56.239.179.static.broadstripe.net) ()
2020-11-05 08:34:05 +0100knupfer(~Thunderbi@200116b82c33ca00c94caacc2b768892.dip.versatel-1u1.de) (Ping timeout: 244 seconds)
2020-11-05 08:36:34 +0100coot(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds)
2020-11-05 08:36:55 +0100scasc(~szabi@213142096120.public.telering.at)
2020-11-05 08:38:12 +0100 <scasc> I was doing a quick search on both Wikipedia and haskell.org (including the wikis), but couldn't find a good tabulated overview of GHC versions with release dates (and ideally with corresponding "base" library version numbers).
2020-11-05 08:38:33 +0100plutoniix(~q@175.176.222.7) (Ping timeout: 260 seconds)
2020-11-05 08:38:53 +0100 <scasc> Do you know of a good overview of release dates? (I have an idea where I could compile it from, but I'd appreciate not having to do it myself :-)
2020-11-05 08:42:41 +0100 <yushyin> https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history
2020-11-05 08:42:56 +0100plutoniix(~q@175.176.222.7)
2020-11-05 08:44:05 +0100dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
2020-11-05 08:45:41 +0100Axma50981(~Axman6@pdpc/supporter/student/Axman6)
2020-11-05 08:45:47 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-05 08:47:53 +0100Axman6(~Axman6@pdpc/supporter/student/Axman6) (Ping timeout: 260 seconds)
2020-11-05 08:48:28 +0100plutoniix(~q@175.176.222.7) (Ping timeout: 260 seconds)
2020-11-05 08:50:13 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 260 seconds)
2020-11-05 08:57:01 +0100coot(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl)
2020-11-05 08:58:34 +0100MindlessDrone(~MindlessD@unaffiliated/mindlessdrone) (Ping timeout: 272 seconds)
2020-11-05 08:59:45 +0100plutoniix(~q@175.176.222.7)
2020-11-05 09:00:38 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2020-11-05 09:01:20 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-05 09:01:51 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-11-05 09:02:24 +0100PlasmaStrike(~mattplasm@45.83.89.28)
2020-11-05 09:04:23 +0100MindlessDrone(~MindlessD@unaffiliated/mindlessdrone)
2020-11-05 09:04:56 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
2020-11-05 09:05:10 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
2020-11-05 09:07:16 +0100 <dminuoso> To revisit the earlier discussion. Im not completely sold on the idea that regular expressions are bad. In a lot of situations they are much faster to write, than to either manually parse down String or use parser combinators. Especially for one-off tools that need to be quickly written, they are very handy.
2020-11-05 09:07:34 +0100 <dminuoso> They are probably *overused*, but I think they have their place in code.
2020-11-05 09:07:46 +0100Sanchayan(~Sanchayan@223.226.118.59)
2020-11-05 09:08:10 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 09:08:20 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2020-11-05 09:10:50 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-05 09:11:33 +0100knupfer(~Thunderbi@dynamic-046-114-148-101.46.114.pool.telefonica.de)
2020-11-05 09:11:43 +0100knupfer(~Thunderbi@dynamic-046-114-148-101.46.114.pool.telefonica.de) (Client Quit)
2020-11-05 09:11:52 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-05 09:12:03 +0100knupfer(~Thunderbi@dynamic-046-114-148-101.46.114.pool.telefonica.de)
2020-11-05 09:12:19 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-11-05 09:13:18 +0100christo(~chris@81.96.113.213)
2020-11-05 09:13:18 +0100knupfer(~Thunderbi@dynamic-046-114-148-101.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2020-11-05 09:13:44 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-11-05 09:14:09 +0100hololeap_(~hololeap@unaffiliated/hololeap)
2020-11-05 09:14:44 +0100danvet_(~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453)
2020-11-05 09:14:54 +0100alp(~alp@2a01:e0a:58b:4920:b1ae:7aff:716a:2fef)
2020-11-05 09:14:55 +0100danvet_(~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Remote host closed the connection)
2020-11-05 09:15:13 +0100kav(~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi) (Ping timeout: 246 seconds)
2020-11-05 09:15:51 +0100hololeap(~hololeap@unaffiliated/hololeap) (Ping timeout: 265 seconds)
2020-11-05 09:16:12 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-11-05 09:16:38 +0100 <scasc> yushyin: Thanks, I remembered having seen base versions tabulated somewhere.
2020-11-05 09:16:58 +0100 <scasc> That could be augmented with release dates for the GHC versions :-)
2020-11-05 09:17:01 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 264 seconds)
2020-11-05 09:17:29 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-11-05 09:18:24 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
2020-11-05 09:18:31 +0100yinfeng(~yinfeng@2001:250:5002:8100::3:bd7b) (Ping timeout: 244 seconds)
2020-11-05 09:19:39 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-05 09:20:34 +0100yinfeng(~yinfeng@122.96.106.57)
2020-11-05 09:20:45 +0100rotty(rotty@ghost.xx.vu)
2020-11-05 09:21:24 +0100nbloomf_(~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-05 09:22:02 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-11-05 09:22:02 +0100 <[exa]> dminuoso: they are great for user-specified grammar parts where you don't want a full compiler in your program
2020-11-05 09:22:05 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 09:22:54 +0100kav(~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi)
2020-11-05 09:23:59 +0100 <[exa]> dminuoso: like, I'd really love a library now with a more transparent interface than regex-base
2020-11-05 09:24:19 +0100 <dminuoso> [exa]: pcre-heavy has a good interface
2020-11-05 09:24:31 +0100hidedagger(~nate@125.161.131.218) (Quit: WeeChat 2.9)
2020-11-05 09:24:45 +0100 <[exa]> will have a look, thanks
2020-11-05 09:25:21 +0100 <[exa]> the point is that regex-base somehow seems to mainly support the mode of use that sounds wrong to me (eg writing a regex to your program to check a mail)
2020-11-05 09:26:25 +0100jess(jess@freenode/staff/jess)
2020-11-05 09:26:52 +0100 <[exa]> ok pcre-heavy and pcre-light are cool
2020-11-05 09:27:05 +0100 <[exa]> is there something similar without external deps? I'm now on regex-tdfa
2020-11-05 09:28:56 +0100mimi_vx(~mimi@tulipan.habr.nat.praha12.net)
2020-11-05 09:29:34 +0100 <dminuoso> [exa]: Mmm, regex-applicative perhaps
2020-11-05 09:29:41 +0100 <dminuoso> (Which is also a library Im quite fond of)
2020-11-05 09:30:01 +0100 <[exa]> ok sounds good
2020-11-05 09:30:05 +0100 <dminuoso> It's a cross between parser combinators and regular expressions, but it gets away with pure haskell instead of QQs
2020-11-05 09:30:15 +0100 <[exa]> looks good
2020-11-05 09:31:01 +0100fraktor(~walt@129.93.191.18)
2020-11-05 09:31:12 +0100 <[exa]> palpatine voice: goooooood
2020-11-05 09:31:16 +0100 <lortabac> my personal problem with common regex implementations is the stringy syntax
2020-11-05 09:31:22 +0100 <fraktor> I've got a question that's kind of a general algorithms question, but I'm planning on attempting to implement it in Haskell. Is here a good place to ask?
2020-11-05 09:31:32 +0100 <lortabac> I wasn't aware of regex-applicative, it looks good
2020-11-05 09:31:40 +0100 <[exa]> fraktor: quite possibly yes, you'll get a decent redirect if not :]
2020-11-05 09:31:48 +0100 <fraktor> Fair enough.
2020-11-05 09:31:53 +0100borne(~fritjof@200116b8643b36005d0cb1433c5d4cbb.dip.versatel-1u1.de)
2020-11-05 09:32:28 +0100 <[exa]> ok that sounds like it.. like, regex strings and QQs have imho no place in good code when you can write it right (and more extensibly) using standard haskell
2020-11-05 09:32:29 +0100kritzefitz(~kritzefit@fw-front.credativ.com)
2020-11-05 09:32:47 +0100 <fraktor> I've got a problem that is kind of like 1d bin packing, but different. Basically, I have several objects, and bins of several sizes. I can have as many of each kind of bin as I want, but I need to minimize the total amount of space left over in each bin.
2020-11-05 09:33:23 +0100hidedagger(~nate@125.161.131.218)
2020-11-05 09:34:35 +0100 <[exa]> fraktor: the objects have 1D size?
2020-11-05 09:34:43 +0100 <fraktor> For the purpose of this problem yes.
2020-11-05 09:35:31 +0100 <fraktor> Actually I'll just share the practical application of this: I need to cut several lengths of 2x4, and I can buy boards in pre-determined lengths. I want to minimize waste.
2020-11-05 09:35:33 +0100 <[exa]> so the input is say objectSizes=[1,2,3,4,10] and you have binSizes=[8,11] and try to minimize the amount of space in used bins that is unfilled, right?
2020-11-05 09:35:48 +0100 <fraktor> Exactly. But there may be multiple objects of the same size.
2020-11-05 09:35:49 +0100christo(~chris@81.96.113.213)
2020-11-05 09:36:06 +0100scasc(~szabi@213142096120.public.telering.at) (Quit: Leaving)
2020-11-05 09:36:23 +0100 <[exa]> this sounds like a knapsack but hopefully it's not that bad. :]
2020-11-05 09:36:43 +0100 <lortabac> fraktor: do you also want to minimize the number of bins you use? (by putting more than 1 object in a bin)
2020-11-05 09:38:26 +0100 <[exa]> imho not necessariy (unless shorter boards are proportionally more expensive than longer boards)
2020-11-05 09:38:33 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-05 09:38:47 +0100 <fraktor> All other things being equal, yeah, but I'd rather reduce waste than have fewer boards.
2020-11-05 09:39:02 +0100 <fraktor> And it's certainly not critical.
2020-11-05 09:39:10 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-05 09:39:54 +0100 <lortabac> if you can afford 1 object for each bin, I'd say you don't need any algorithm at all, you just choose the first bin your object fits in
2020-11-05 09:40:50 +0100dmiles(dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Read error: Connection reset by peer)
2020-11-05 09:40:54 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-05 09:40:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-05 09:41:33 +0100 <fraktor> What if I have objects [1, 2, 2], and I have bins [1, 3]? Then I would end up with [([1], 1), ([2], 3), ([2], 3)], even though [([1, 2], 3), ([2], 3)] is a more efficient packing.
2020-11-05 09:41:51 +0100 <fraktor> The first packing has 2 units of waste, while the second packing only has 1.
2020-11-05 09:42:31 +0100 <lortabac> ok I understand now
2020-11-05 09:42:48 +0100dmiles(dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
2020-11-05 09:42:57 +0100 <[exa]> lortabac: that would generate a lot of waste
2020-11-05 09:43:26 +0100 <[exa]> fraktor: how many objects/bins do you expect?
2020-11-05 09:43:30 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-05 09:43:44 +0100 <fraktor> Bins, let's say 4, and objects, I'd say about 20.
2020-11-05 09:43:59 +0100 <fraktor> But I'd like something that scales efficiently if at all possible.
2020-11-05 09:44:06 +0100britva(~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904)
2020-11-05 09:44:08 +0100Lord_of_Life(~Lord@46.217.217.162) (Changing host)
2020-11-05 09:44:08 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-11-05 09:44:17 +0100 <[exa]> well for now just enjoy the computers and go brute force :D
2020-11-05 09:44:47 +0100 <lortabac> :)
2020-11-05 09:45:21 +0100 <fraktor> That's still relatively large, as far as I can tell. Like, I would have to check every ordering of the objects, and then every possible grouping for that ordering, right?
2020-11-05 09:46:32 +0100watt976(~watt976@124.123.107.59)
2020-11-05 09:47:22 +0100 <[exa]> I'm starting to suspect there'd be a dynamic programming solution
2020-11-05 09:47:51 +0100 <lortabac> you can probably reframe the problem to be solvable with linear programming, by giving a sufficiently big (finite) number of bins
2020-11-05 09:48:34 +0100 <fraktor> I mean, the largest number of bins would be the number of objects, so I have a hard upper bound. But I'm not that familiar with linear programming.
2020-11-05 09:48:50 +0100 <[exa]> that's going to just transfer the guesswork to the linear solver :]
2020-11-05 09:48:53 +0100 <fraktor> And this definitely does seem like the kind of thing that would have a dynamic programming solution, but I'm not sure I could figure it out when I'm this tired lol.
2020-11-05 09:49:00 +0100temporary1233(~szabi@213142096120.public.telering.at)
2020-11-05 09:50:01 +0100 <[exa]> ok technically, lets give it a bit of determinism
2020-11-05 09:50:14 +0100britva(~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) (Quit: This computer has gone to sleep)
2020-11-05 09:50:34 +0100britva(~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904)
2020-11-05 09:51:12 +0100 <[exa]> 1] it doesn't matter in which order you choose the boards and cut out the parts you want, so you can work the algorithm as iterative nondeterministic "I cut out a first piece and might have either this board left, or that board left"
2020-11-05 09:51:50 +0100watt976(~watt976@124.123.107.59) (Remote host closed the connection)
2020-11-05 09:52:01 +0100 <fraktor> Are you saying that cutting [2, 1] out of a board is functionally equivalent to cutting out [1, 2]? I'd agree.
2020-11-05 09:52:19 +0100__monty__(~toonn@unaffiliated/toonn)
2020-11-05 09:52:24 +0100watt332(~watt332@124.123.107.59)
2020-11-05 09:52:31 +0100 <[exa]> then heuristic, 2] cut out the pieces that are most unwieldy first
2020-11-05 09:52:44 +0100 <[exa]> so that you don't have to generate a lots of waste towards the end of the search
2020-11-05 09:52:44 +0100PlasmaSt`(~mattplasm@45.83.89.28)
2020-11-05 09:52:55 +0100 <[exa]> 3] branch bound and hope
2020-11-05 09:54:06 +0100hidedagger(~nate@125.161.131.218) (Quit: WeeChat 2.9)
2020-11-05 09:54:28 +0100mmohammadi9812(~mmohammad@5.113.30.246)
2020-11-05 09:54:34 +0100PlasmaStrike(~mattplasm@45.83.89.28) (Ping timeout: 260 seconds)
2020-11-05 09:54:36 +0100mmohammadi9812(~mmohammad@5.113.30.246) (Client Quit)
2020-11-05 09:54:49 +0100Axma50981Axman6
2020-11-05 09:54:56 +0100dmiles(dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 272 seconds)
2020-11-05 09:55:04 +0100 <fraktor> I'm trying to think if there are any situations in which doing a grouping of 3 in one board and 1 in another is more wasteful than doing 2 and 2.
2020-11-05 09:55:10 +0100 <[exa]> anyway this reduces to subset sum, for items of total size W and subset of size S you give it boards of size S and (W-S) and it will either solve the subset or prove that it's easier by subdividing S into pieces
2020-11-05 09:55:37 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-11-05 09:55:47 +0100 <[exa]> (modulo corner cases)
2020-11-05 09:56:06 +0100 <tomsmeding> total waste = sum_{b in used boards} length(b) - sum_{o in objects} length(o)
2020-11-05 09:56:19 +0100 <tomsmeding> so minimal waste <=> minimal total length of boards chosen
2020-11-05 09:57:22 +0100 <fraktor> tomsmeding: I don't think so. At least not in all cases.
2020-11-05 09:57:44 +0100 <fraktor> Because I'm not saying "I have chosen these boards, fit these cuts into them." I'm trying to choose which boards to get in the first place.
2020-11-05 09:58:03 +0100 <tomsmeding> "minimal total length of boards chosen"
2020-11-05 09:58:32 +0100 <fraktor> Oh! I misread. I thought it was "minimal number of boards chosen." In that case, you're correct.
2020-11-05 09:58:53 +0100Amras(~Amras@unaffiliated/amras0000) (Ping timeout: 246 seconds)
2020-11-05 09:58:59 +0100 <tomsmeding> not sure if this observation helps in any way though :p
2020-11-05 09:59:23 +0100 <fraktor> It's either completely useless or the key to cracking the puzzle
2020-11-05 09:59:28 +0100 <fraktor> Not sure which
2020-11-05 09:59:58 +0100 <tomsmeding> it's fairly easy to formulate as an ILP problem
2020-11-05 10:00:02 +0100Sanchayan(~Sanchayan@223.226.118.59) (Quit: leaving)
2020-11-05 10:00:26 +0100ski. o O ( "Inductive Logic Programming" ? )
2020-11-05 10:00:33 +0100 <tomsmeding> integer linear programming :')
2020-11-05 10:00:37 +0100 <tomsmeding> yay acronyms
2020-11-05 10:00:41 +0100 <ski> ah
2020-11-05 10:00:56 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 10:00:57 +0100 <fraktor> Oh wow, that's hard though
2020-11-05 10:01:12 +0100 <tomsmeding> ILP problems are NP-complete in general so this proves nothing
2020-11-05 10:01:20 +0100 <ski> (why's it called "Linear Programming", btw ?)
2020-11-05 10:01:31 +0100 <tomsmeding> but ILP solvers are notoriously good at solving hard problems faster than expected
2020-11-05 10:01:43 +0100 <tomsmeding> ski: ILP = LP + branch-and-bound, where LP = linear programming
2020-11-05 10:02:10 +0100 <tomsmeding> the standard algorithm is solving the problem without the restriction that all variables need to be integral, and then doing branch-and-bound to find a valid ILP solution
2020-11-05 10:02:12 +0100 <fraktor> I think it's called LP because the underlying systems have linear relationships to each other?
2020-11-05 10:02:30 +0100 <tomsmeding> (that first step is just solving an LP problem)
2020-11-05 10:03:02 +0100christo(~chris@81.96.113.213)
2020-11-05 10:03:09 +0100 <tomsmeding> I'm struggling to understand [exa]'s reduction though; have you just proven that this problem is at least as hard as subset sum?
2020-11-05 10:03:21 +0100 <[exa]> ski: because it's so np-hard that you can encode programs into that :D
2020-11-05 10:03:44 +0100 <tomsmeding> oh _that_ was the question, yeah the name is atrocious
2020-11-05 10:04:13 +0100 <fraktor> tomsmeding: I've never used a linear programming library before, would you be willing to help me encode this into it?
2020-11-05 10:04:18 +0100 <tomsmeding> [exa]: because if you've proven that, expressing this as an ILP might be fairly optimal :p
2020-11-05 10:04:23 +0100 <tomsmeding> fraktor: sure
2020-11-05 10:04:25 +0100PlasmaSt`(~mattplasm@45.83.89.28) (Ping timeout: 264 seconds)
2020-11-05 10:04:27 +0100 <[exa]> tomsmeding: given some careful choice of board lengths I guess you can solve a good number of subset sum cases with that
2020-11-05 10:04:40 +0100 <tomsmeding> all, or a good number?
2020-11-05 10:04:50 +0100 <ski> fraktor : doesn't explain the "programming" part, though
2020-11-05 10:05:04 +0100 <ski> [exa] : isn't that just for the integer variety ?
2020-11-05 10:05:14 +0100 <[exa]> tomsmeding: what I wanted to point out, it's better to have a heuristic search written in 10 minutes than pulling in the ILP solver and hoping it's going to reinvent the heuristic
2020-11-05 10:05:21 +0100 <lortabac> ski: "programming" is not meant as computer programming, but more like "planning"
2020-11-05 10:05:44 +0100 <tomsmeding> except if you're sadistic and want an exactly optimal solution :p
2020-11-05 10:06:09 +0100 <fraktor> If nothing else I'll learn how to use an ILP solver.
2020-11-05 10:06:43 +0100 <tomsmeding> (I have to dig how it worked again too, give me a minute :p
2020-11-05 10:06:44 +0100 <tomsmeding> )
2020-11-05 10:07:36 +0100ski. o O ( "Why “dynamic programming”?" by Arcane Sentiment in 2010-04-23 <http://arcanesentiment.blogspot.com/2010/04/why-dynamic-programming.html> )
2020-11-05 10:07:38 +0100rprije(~rprije@194-193-168-77.tpgi.com.au) (Ping timeout: 260 seconds)
2020-11-05 10:07:46 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 10:07:52 +0100Franciman(~francesco@host-79-36-167-172.retail.telecomitalia.it)
2020-11-05 10:08:31 +0100rprije(~rprije@124.148.131.132)
2020-11-05 10:10:25 +0100 <tomsmeding> fraktor: so the idea of an LP problem (let's start with that) is the following
2020-11-05 10:10:37 +0100 <tomsmeding> you define a number of real-valued variables, x1,...,xn
2020-11-05 10:10:51 +0100 <tomsmeding> and 1. give an optimisation function, which is a linear combination of those variables
2020-11-05 10:11:09 +0100 <tomsmeding> and 2. a list of linear constraints, which are of the form (linear combination of the variables) <= (real constant)
2020-11-05 10:11:31 +0100 <tomsmeding> then the LP solver gives you an assignment of the variables such that the target function is minimised
2020-11-05 10:11:37 +0100 <tomsmeding> (s/optimisation function/target function/)
2020-11-05 10:11:53 +0100 <tomsmeding> ILP solvers can additionally handle the restriction that certain variables may only be integer-valued
2020-11-05 10:12:28 +0100 <fraktor> I'm really sorry, but something came up and I gotta go
2020-11-05 10:12:35 +0100 <tomsmeding> np :)
2020-11-05 10:12:40 +0100 <fraktor> I'll definitely look into this though, thank you
2020-11-05 10:12:41 +0100fraktor(~walt@129.93.191.18) (Quit: WeeChat 2.8)
2020-11-05 10:13:03 +0100tomsmedingmight still code this up for reason of procrastination
2020-11-05 10:13:09 +0100 <[exa]> sounds like fedex delivered the boards!
2020-11-05 10:13:22 +0100 <tomsmeding> :D
2020-11-05 10:14:12 +0100 <__monty__> s/np/np-hard/ FTFY
2020-11-05 10:14:30 +0100 <[exa]> anyway the sum problems are cool from the hardness perspective
2020-11-05 10:14:53 +0100 <[exa]> https://en.wikipedia.org/wiki/3SUM <- most illustrative one I know of
2020-11-05 10:15:01 +0100zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2020-11-05 10:15:49 +0100 <tomsmeding> ah the log bounds, O(n^2 / (log n / log log n)^(2/3)) lovely <3
2020-11-05 10:16:28 +0100zaquest(~notzaques@5.128.210.178)
2020-11-05 10:16:52 +0100 <ski> this is an instance of CP (Constraint Programming) (of which CLP, Constraint Logic Programming, is a more nicely integrated form)
2020-11-05 10:17:48 +0100christo(~chris@81.96.113.213)
2020-11-05 10:18:15 +0100xff0x(~fox@2001:1a81:522f:7b00:d95:27ea:7e18:f05f) (Ping timeout: 272 seconds)
2020-11-05 10:18:41 +0100DavidEichmann(~david@43.240.198.146.dyn.plus.net)
2020-11-05 10:19:02 +0100xff0x(~fox@2001:1a81:522f:7b00:1cd6:2f35:f89:eebf)
2020-11-05 10:19:04 +0100ggole(~ggole@2001:8003:8119:7200:3462:7213:ea5b:f472)
2020-11-05 10:22:06 +0100slewis(~slewis@185.204.1.185)
2020-11-05 10:22:57 +0100avdb(~avdb@ip-83-134-202-8.dsl.scarlet.be)
2020-11-05 10:24:15 +0100raichoo(~raichoo@213.240.178.58)
2020-11-05 10:25:24 +0100 <raichoo> Hi everyone, we have rebooted Advent of Haskell 2020 and are currently collecting potential blog articles. www.adventofhaskell.com
2020-11-05 10:25:57 +0100TMA(tma@twin.jikos.cz) (Read error: Connection reset by peer)
2020-11-05 10:26:05 +0100 <Axman6> hooray!
2020-11-05 10:26:27 +0100 <Axman6> also I feel like that's a nick I haven't aseen for a very long time...
2020-11-05 10:26:34 +0100britva(~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) (Quit: This computer has gone to sleep)
2020-11-05 10:27:10 +0100 <raichoo> I've been MIA from twitter for kind of a long time and I'm not posting that much in here :D
2020-11-05 10:27:20 +0100 <raichoo> But glad someone remembers me nevertheless ^^
2020-11-05 10:27:32 +0100dmiles(dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
2020-11-05 10:29:15 +0100 <Axman6> hmm, I could possibly make soething for this too
2020-11-05 10:29:26 +0100 <Axman6> something too. mauybe IRC + pub is a bad idea
2020-11-05 10:29:51 +0100thc202(~thc202@unaffiliated/thc202)
2020-11-05 10:29:52 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 10:30:07 +0100britva(~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904)
2020-11-05 10:31:30 +0100 <raichoo> Axman6: That would be cool :) Just drop me a mail, all the submissions to advent@antei.de go straight to me.
2020-11-05 10:31:58 +0100 <merijn> raichoo: Did you mail the Haskell Weekly News guy yet?
2020-11-05 10:32:12 +0100christo(~chris@81.96.113.213)
2020-11-05 10:33:36 +0100 <raichoo> merijn: Just blasted things out on social media. We just pushed the website online yesterday. Could you drop me the contact in a DM?
2020-11-05 10:34:03 +0100 <merijn> raichoo: Contact info is here: https://haskellweekly.news/
2020-11-05 10:34:25 +0100 <merijn> I think it usually goes out on friday, so if you're fast it could still be added :)
2020-11-05 10:34:54 +0100 <raichoo> Whoop whoop, thanks for the pointer, will do that right now :D
2020-11-05 10:35:21 +0100fendor(~fendor@178.115.130.128.wireless.dyn.drei.com)
2020-11-05 10:42:01 +0100hackagewai-extra 3.1.2 - Provides some basic WAI handlers and middleware. https://hackage.haskell.org/package/wai-extra-3.1.2 (MichaelSnoyman)
2020-11-05 10:42:44 +0100dmiles(dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 244 seconds)
2020-11-05 10:45:05 +0100mdunnio(~mdunnio@208.59.170.5)
2020-11-05 10:45:19 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr) (Quit: Konversation terminated!)
2020-11-05 10:45:37 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr)
2020-11-05 10:45:40 +0100theDon(~td@94.134.91.129)
2020-11-05 10:46:20 +0100Gurkenglas__(~Gurkengla@unaffiliated/gurkenglas)
2020-11-05 10:47:17 +0100bgamari(~bgamari@2001:470:e438::1)
2020-11-05 10:47:24 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-hpmiowuimqysffdt) (Quit: Connection closed for inactivity)
2020-11-05 10:48:29 +0100fendor(~fendor@178.115.130.128.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
2020-11-05 10:49:25 +0100mdunnio(~mdunnio@208.59.170.5) (Ping timeout: 240 seconds)
2020-11-05 10:50:10 +0100mdunnio(~mdunnio@208.59.170.5)
2020-11-05 10:50:27 +0100fendor(~fendor@178.165.130.110.wireless.dyn.drei.com)
2020-11-05 10:52:10 +0100mmohammadi9812(~mmohammad@188.210.113.223)
2020-11-05 10:53:46 +0100fendor_(~fendor@078132052150.public.t-mobile.at)
2020-11-05 10:54:25 +0100mdunnio(~mdunnio@208.59.170.5) (Ping timeout: 240 seconds)
2020-11-05 10:55:41 +0100kish(~oracle@unaffiliated/oracle) (Remote host closed the connection)
2020-11-05 10:57:21 +0100kish(~oracle@unaffiliated/oracle)
2020-11-05 10:59:08 +0100fendor__(~fendor@212095005240.public.telering.at)
2020-11-05 11:00:04 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-05 11:01:25 +0100fendor_(~fendor@078132052150.public.t-mobile.at) (Ping timeout: 240 seconds)
2020-11-05 11:03:02 +0100solonarv(~solonarv@astrasbourg-653-1-263-62.w92-161.abo.wanadoo.fr)
2020-11-05 11:03:20 +0100britva(~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) (Quit: This computer has gone to sleep)
2020-11-05 11:04:25 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 246 seconds)
2020-11-05 11:06:21 +0100dmiles(dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
2020-11-05 11:08:28 +0100darjeeling_(~darjeelin@115.215.43.51)
2020-11-05 11:11:23 +0100TMA(tma@twin.jikos.cz)
2020-11-05 11:13:56 +0100guest115(~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1))
2020-11-05 11:18:25 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-05 11:18:57 +0100acidjnk_new2(~acidjnk@p200300d0c718f6890d36626cfb994f1d.dip0.t-ipconnect.de)
2020-11-05 11:20:39 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de)
2020-11-05 11:22:03 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2020-11-05 11:23:51 +0100kritzefitz(~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
2020-11-05 11:31:58 +0100 <tomsmeding> @tell fraktor https://tomsmeding.com/ss/get/tomsmeding/V5dE2W
2020-11-05 11:31:58 +0100 <lambdabot> Consider it noted.
2020-11-05 11:34:15 +0100alp(~alp@2a01:e0a:58b:4920:b1ae:7aff:716a:2fef) (Ping timeout: 272 seconds)
2020-11-05 11:36:16 +0100alp(~alp@2a01:e0a:58b:4920:6070:c578:85d0:a73a)
2020-11-05 11:36:44 +0100 <[exa]> tomsmeding: all go to board 1?
2020-11-05 11:36:49 +0100 <[exa]> (oh okay thats board type 1)
2020-11-05 11:37:09 +0100 <tomsmeding> zero-based indices :p
2020-11-05 11:37:10 +0100 <tomsmeding> but yes
2020-11-05 11:37:53 +0100 <[exa]> what's the ILP library btw?
2020-11-05 11:38:05 +0100 <tomsmeding> I'm using an external process, https://sourceforge.net/projects/lpsolve/
2020-11-05 11:38:11 +0100 <tomsmeding> will put the code in a paste in a minute
2020-11-05 11:38:17 +0100 <[exa]> o good
2020-11-05 11:39:08 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 11:41:05 +0100christo(~chris@81.96.113.213)
2020-11-05 11:42:09 +0100temporary1233(~szabi@213142096120.public.telering.at) (Ping timeout: 258 seconds)
2020-11-05 11:45:11 +0100akegalj(~akegalj@93-142-95-221.adsl.net.t-com.hr)
2020-11-05 11:45:30 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 11:45:49 +0100watt332(~watt332@124.123.107.59) (Ping timeout: 264 seconds)
2020-11-05 11:48:08 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-05 11:48:44 +0100 <tomsmeding> @tell fraktor https://paste.tomsmeding.com/rT6TJbdr (also [exa])
2020-11-05 11:48:44 +0100 <lambdabot> Consider it noted.
2020-11-05 11:49:17 +0100 <tomsmeding> lol I realise now that the output for a constant linear combination is borked but it works
2020-11-05 11:49:27 +0100 <tomsmeding> "<= + 1"
2020-11-05 11:49:40 +0100 <tomsmeding> it works thus it's fine
2020-11-05 11:49:50 +0100christo(~chris@81.96.113.213)
2020-11-05 11:50:04 +0100tomsmedingwonders whether to amend the paste directly in the database
2020-11-05 11:50:49 +0100shatriff(~vitaliish@176.52.219.10)
2020-11-05 11:54:52 +0100meck(~meck@li1809-18.members.linode.com) (Quit: ZNC 1.8.2 - https://znc.in)
2020-11-05 11:56:07 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 11:56:34 +0100dmiles(dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 246 seconds)
2020-11-05 11:59:16 +0100dmiles(dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
2020-11-05 12:00:34 +0100Guest_54(0253f68a@bl22-246-138.dsl.telepac.pt)
2020-11-05 12:01:02 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-11-05 12:01:15 +0100meck(~meck@li1809-18.members.linode.com)
2020-11-05 12:01:30 +0100hackagecut-the-crap 2.3.1 - Cuts out uninteresting parts of videos by detecting silences. https://hackage.haskell.org/package/cut-the-crap-2.3.1 (Jappie)
2020-11-05 12:01:44 +0100Guest_54(0253f68a@bl22-246-138.dsl.telepac.pt) (Remote host closed the connection)
2020-11-05 12:02:25 +0100shailangsa(~shailangs@host86-186-133-58.range86-186.btcentralplus.com) (Ping timeout: 240 seconds)
2020-11-05 12:05:13 +0100raichoo(~raichoo@213.240.178.58) (Quit: Lost terminal)
2020-11-05 12:05:41 +0100pera(~pera@unaffiliated/pera)
2020-11-05 12:11:40 +0100SirSaul(559113cc@204-19-145-85.ftth.glasoperator.nl)
2020-11-05 12:12:37 +0100 <SirSaul> Hello people, can someone help me with a problem regarding indentation or something like that.
2020-11-05 12:13:05 +0100 <yushyin> sure, ask away
2020-11-05 12:13:37 +0100 <SirSaul> I'm quite new to functional programming and following a tutorial on Xwindow https://wiki.haskell.org/X_window_programming_in_Haskell
2020-11-05 12:13:59 +0100 <SirSaul> Things were fine at first, but the latter pieces of code didn't work, even when I copied them 1:1
2020-11-05 12:14:35 +0100 <SirSaul> main.hs:15:6: error: parse error on input ‘=’ Perhaps you need a 'let' in a 'do' block?
2020-11-05 12:14:47 +0100 <SirSaul> I assume it's something wrong with the way it's written
2020-11-05 12:15:28 +0100 <SirSaul> I have all the dependecies btw, the first pieces of code worked fine.
2020-11-05 12:15:41 +0100 <tomjaguarpaw> Perhaps paste your code on https://paste.tomsmeding.com/
2020-11-05 12:15:42 +0100 <yushyin> SirSaul: can you paste your code? https://paste.tomsmeding.com/
2020-11-05 12:16:05 +0100 <SirSaul> The code is in the tutorial link from the haskell website
2020-11-05 12:16:48 +0100 <tomjaguarpaw> Yes, but it's likely something in the indentation has gone wrong when you have posted that code into your editor
2020-11-05 12:17:02 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-11-05 12:17:03 +0100 <SirSaul> I see
2020-11-05 12:17:05 +0100 <SirSaul> I will check
2020-11-05 12:17:19 +0100tomsmedingexpects tabs
2020-11-05 12:17:21 +0100Tops2(~Tobias@dyndsl-095-033-088-103.ewe-ip-backbone.de)
2020-11-05 12:17:24 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-05 12:17:31 +0100 <SirSaul> https://paste.tomsmeding.com/csO4jTzn
2020-11-05 12:17:50 +0100christo(~chris@81.96.113.213)
2020-11-05 12:17:55 +0100 <yushyin> tomsmeding: ghc warns about tabs nowadays
2020-11-05 12:18:06 +0100fendor_(~fendor@77.119.128.54.wireless.dyn.drei.com)
2020-11-05 12:18:07 +0100 <tomsmeding> SirSaul: that "scr = defaultScreenOfDisplay dpy" line in 'main' needs to be indented ;)
2020-11-05 12:18:14 +0100 <tomsmeding> yushyin: also without -Wall?
2020-11-05 12:18:37 +0100 <SirSaul> Alright, yea I don't really know. I work in vim so pretty basic haha
2020-11-05 12:18:48 +0100 <SirSaul> the syntax is quite new for me.
2020-11-05 12:18:57 +0100 <SirSaul> feels like coding 1101 again haha
2020-11-05 12:19:05 +0100 <tomjaguarpaw> It seems that there are a lot of indentation errors, for example in mkUnmanagedWindow
2020-11-05 12:19:28 +0100 <SirSaul> Yea it's probably because I copied it 1:1 from the web after i tried to write it by hand
2020-11-05 12:19:54 +0100 <SirSaul> does it matter tabs or spaces? or is either good as long as it is consistent?
2020-11-05 12:20:01 +0100 <tomsmeding> still, the spaces should've copied along
2020-11-05 12:20:04 +0100 <tomsmeding> spaces only in haskell
2020-11-05 12:20:09 +0100 <SirSaul> alright
2020-11-05 12:20:25 +0100fendor(~fendor@178.165.130.110.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
2020-11-05 12:20:46 +0100 <tomjaguarpaw> Copying and pasting Haskell code is not easy. You have to make sure you copy the spaces exactly.
2020-11-05 12:21:18 +0100 <SirSaul> Yea, it's also hard to see properly as I'm not familiar yet.
2020-11-05 12:22:14 +0100 <tomjaguarpaw> Oh, those indentation errors do also appear on https://wiki.haskell.org/X_window_programming_in_Haskell
2020-11-05 12:22:20 +0100 <tomjaguarpaw> It may well be that the page is just wrong
2020-11-05 12:22:36 +0100 <tomsmeding> oh wow
2020-11-05 12:22:37 +0100 <tomsmeding> yes
2020-11-05 12:22:50 +0100 <tomjaguarpaw> It hasn't really been edited since 2010 so it could be well out of date and generally unhelpful
2020-11-05 12:22:52 +0100 <SirSaul> Yes, that why I came here
2020-11-05 12:22:59 +0100 <SirSaul> I assumed an error on the page
2020-11-05 12:23:07 +0100 <yushyin> tomsmeding: yes -Wtabs is on by default, even without -Wall
2020-11-05 12:23:13 +0100 <SirSaul> Actually was trying to someone who could maybe edit the wiki
2020-11-05 12:23:14 +0100 <tomsmeding> yushyin: 🎉
2020-11-05 12:23:42 +0100 <tomjaguarpaw> If your goal is to learn Haskell I would recommend against the wiki. It's massively out of date.
2020-11-05 12:23:42 +0100liff(liff@kapsi.fi) (Ping timeout: 260 seconds)
2020-11-05 12:23:50 +0100 <SirSaul> Yea I'm actually looking for some not to hard, not to easy apps to try and make
2020-11-05 12:23:51 +0100 <yushyin> but it's fine to use tabs in haskell, if you really really want to, it's just easy to get wrong :D
2020-11-05 12:23:55 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-11-05 12:23:59 +0100liff(liff@kapsi.fi)
2020-11-05 12:24:04 +0100 <SirSaul> most haskell things I find are like things add 10 2, or hello world..
2020-11-05 12:24:11 +0100 <SirSaul> but Im looking for something a bit more.
2020-11-05 12:24:22 +0100 <tomjaguarpaw> Hmm, I don't know of one personally. Maybe someone else can recommend something.
2020-11-05 12:24:58 +0100 <tomsmeding> how did that wiki even end up wrong? it's not even a formatting bug, there's really missing indentation in the page source
2020-11-05 12:24:59 +0100 <SirSaul> I need to up my knowledge and skills before I can truly do something, but just writting add and square functions ins just plain boring
2020-11-05 12:25:03 +0100 <SirSaul> I know how that works.
2020-11-05 12:25:15 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-11-05 12:25:19 +0100 <tomjaguarpaw> tomsmeding: The Wiki is just generally broken
2020-11-05 12:25:37 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-11-05 12:25:37 +0100fendor__(~fendor@212095005240.public.telering.at) (Read error: Connection reset by peer)
2020-11-05 12:25:43 +0100 <yushyin> trying to solve AOC is always a nice way to learn a new language
2020-11-05 12:25:54 +0100 <tomsmeding> or project euler, if that's your thing
2020-11-05 12:26:34 +0100 <SirSaul> Well, my general idea is trying to write actual OS stuff in haskell
2020-11-05 12:26:34 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 12:26:47 +0100 <SirSaul> I've got the knowledge for that, just not for haskell at the moment haha
2020-11-05 12:27:05 +0100 <SirSaul> so im a noob and somewhat a pro at the same time.
2020-11-05 12:27:06 +0100fendor__(~fendor@77.119.128.54.wireless.dyn.drei.com)
2020-11-05 12:27:17 +0100 <tomjaguarpaw> (I added a warning at the top of that page)
2020-11-05 12:28:03 +0100 <SirSaul> great for future coders :)
2020-11-05 12:28:17 +0100 <tomjaguarpaw> SirSaul: Did you make any progress with the code on that page at all?
2020-11-05 12:28:19 +0100 <int-e> https://wiki.haskell.org/index.php?title=X_window_programming_in_Haskell&oldid=14607 looks more correct; the next revision reformatted a lot of stuff incorrectly
2020-11-05 12:28:36 +0100 <SirSaul> Yea' I've got the window running from the first part
2020-11-05 12:28:53 +0100 <yushyin> I think Programming in Haskell by graham hutton is nice, if you already know about programming but not about haskell
2020-11-05 12:29:19 +0100 <tomjaguarpaw> Then maybe int-e's suggestion is good. You could use the code from that version. Or you could try to fix the indentation yourself - that will be a quick but frustrating way to learn about indentation in Haskell!
2020-11-05 12:29:24 +0100 <SirSaul> but the latter part after the unfinished window doesn't seem to work, and I'm not yet finding the correct indentation
2020-11-05 12:30:03 +0100 <SirSaul> I will take a look at that revision int-e
2020-11-05 12:30:40 +0100 <SirSaul> Thanks people for your quick response and help.
2020-11-05 12:31:18 +0100invaser(~Thunderbi@31.148.23.125)
2020-11-05 12:31:25 +0100christo(~chris@81.96.113.213)
2020-11-05 12:32:24 +0100invaser(~Thunderbi@31.148.23.125) (Client Quit)
2020-11-05 12:33:46 +0100 <tomjaguarpaw> Feel free to come back and ask for more help if you run into more problems
2020-11-05 12:33:57 +0100 <tomjaguarpaw> Hope you find something that works for you!
2020-11-05 12:34:59 +0100rprije(~rprije@124.148.131.132) (Ping timeout: 265 seconds)
2020-11-05 12:35:00 +0100hackageservant-openapi3 2.0.1.0 - Generate a Swagger/OpenAPI/OAS 3.0 specification for your servant API. https://hackage.haskell.org/package/servant-openapi3-2.0.1.0 (maksbotan)
2020-11-05 12:35:05 +0100invaser(~Thunderbi@31.148.23.125)
2020-11-05 12:35:46 +0100christo(~chris@81.96.113.213) (Ping timeout: 246 seconds)
2020-11-05 12:36:19 +0100spamlessj(~spamlessj@2a01:4f8:141:1329::2) (Ping timeout: 272 seconds)
2020-11-05 12:37:41 +0100spamlessj(~spamlessj@2a01:4f8:141:1329::2)
2020-11-05 12:38:04 +0100 <int-e> I guess I'll just transplant the old code samples before the indentation edit of doom
2020-11-05 12:39:25 +0100Gurkenglas__(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds)
2020-11-05 12:40:01 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2020-11-05 12:41:17 +0100LKoen(~LKoen@53.253.88.92.rev.sfr.net)
2020-11-05 12:41:22 +0100MarcelineVQ(~anja@198.254.202.72) (Ping timeout: 246 seconds)
2020-11-05 12:43:30 +0100SirSaul(559113cc@204-19-145-85.ftth.glasoperator.nl) (Remote host closed the connection)
2020-11-05 12:43:44 +0100alp(~alp@2a01:e0a:58b:4920:6070:c578:85d0:a73a) (Ping timeout: 246 seconds)
2020-11-05 12:43:46 +0100mdunnio_(~mdunnio@208.59.170.5)
2020-11-05 12:45:04 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-ghekqquifdegujeg)
2020-11-05 12:47:17 +0100alp(~alp@88.126.45.36)
2020-11-05 12:47:52 +0100 <int-e> Oh SirSaul left.
2020-11-05 12:48:38 +0100mdunnio_(~mdunnio@208.59.170.5) (Ping timeout: 264 seconds)
2020-11-05 12:49:09 +0100 <int-e> tomjaguarpaw: I dropped the allusion to numerous indentation errors, but kept the outdated warning (since I didn't test any of the code)
2020-11-05 12:49:16 +0100 <tomjaguarpaw> Great, thanks
2020-11-05 12:52:33 +0100christo(~chris@81.96.113.213)
2020-11-05 12:59:53 +0100plutoniix(~q@175.176.222.7) (Quit: Leaving)
2020-11-05 13:00:01 +0100slewis(~slewis@185.204.1.185) ()
2020-11-05 13:03:22 +0100 <tomsmeding> you can't pattern-match on a GADT without a type signature on the result, even if the result doesn't do anything with the existential types in the GADT?
2020-11-05 13:04:45 +0100 <tomsmeding> ( https://paste.tomsmeding.com/h5VYeItr )
2020-11-05 13:09:19 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 13:09:37 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 13:10:14 +0100 <dminuoso> % :set -XGADTs
2020-11-05 13:10:15 +0100 <yahb> dminuoso:
2020-11-05 13:10:26 +0100 <dminuoso> % data G t where G1 :: T Int
2020-11-05 13:10:26 +0100 <yahb> dminuoso: ; <interactive>:82:22: error: Not in scope: type constructor or class `T'
2020-11-05 13:10:31 +0100 <dminuoso> % data G t where G1 :: G Int
2020-11-05 13:10:32 +0100 <yahb> dminuoso:
2020-11-05 13:10:37 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2020-11-05 13:10:42 +0100 <dminuoso> % f g = case g of G1 -> True
2020-11-05 13:10:42 +0100 <yahb> dminuoso: ; <interactive>:84:23: error:; * Couldn't match expected type `p' with actual type `Bool'; `p' is untouchable inside the constraints: t ~ Int bound by a pattern with constructor: G1 :: G Int, in a case alternative at <interactive>:84:17-18; `p' is a rigid type variable bound by; the inferred type of f :: G t -> p; at <interactive>:84:1-26; Possible fix: add a type
2020-11-05 13:10:55 +0100kuribastard(~user@ptr-25vy0i8ngykh0l4o8xc.18120a2.ip6.access.telenet.be)
2020-11-05 13:11:11 +0100 <dminuoso> that seems strange
2020-11-05 13:11:43 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-11-05 13:13:40 +0100 <lortabac> strangely, it compiles if you omit the argument type (with PartialTypeSignatures), but it doesn't if you omit the result
2020-11-05 13:14:07 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-11-05 13:14:25 +0100 <lortabac> in other words the problem is not 'G t', but 'Bool'
2020-11-05 13:15:51 +0100 <ski> % let f g = (case g of G1 -> True) :: Bool
2020-11-05 13:15:51 +0100 <yahb> ski:
2020-11-05 13:16:47 +0100urodna(~urodna@unaffiliated/urodna)
2020-11-05 13:17:31 +0100hackageth-lego 0.2.3 - Template Haskell construction utilities https://hackage.haskell.org/package/th-lego-0.2.3 (NikitaVolkov)
2020-11-05 13:18:52 +0100mmohammadi9812(~mmohammad@188.210.113.223) (Ping timeout: 272 seconds)
2020-11-05 13:18:59 +0100fendor(~fendor@178.115.129.187.wireless.dyn.drei.com)
2020-11-05 13:18:59 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 256 seconds)
2020-11-05 13:20:36 +0100 <lortabac> TBH I find it remarkable that GHC can at least preserve *some* type inference when using rank-n types, type families, GADTs etc.
2020-11-05 13:20:37 +0100fendor_(~fendor@77.119.128.54.wireless.dyn.drei.com) (Ping timeout: 264 seconds)
2020-11-05 13:20:40 +0100fendor__(~fendor@77.119.128.54.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
2020-11-05 13:20:50 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2020-11-05 13:21:11 +0100dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Read error: Connection reset by peer)
2020-11-05 13:21:37 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2020-11-05 13:24:01 +0100hackageukrainian-phonetics-basic 0.1.8.0 - A library to work with the basic Ukrainian phonetics and syllable segmentation. https://hackage.haskell.org/package/ukrainian-phonetics-basic-0.1.8.0 (OleksandrZhabenko)
2020-11-05 13:24:25 +0100 <tomsmeding> yes the fact that the problem is the Bool surprised me too
2020-11-05 13:24:51 +0100 <tomsmeding> if it was the argument, I wouldn't have had trouble in my actual code because the 'g' argument would've had an inferred type from elsewhere
2020-11-05 13:26:35 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-05 13:26:53 +0100 <tomsmeding> (ah but in fact after I fixed something else the argument has an inferred type from elsewhere too, so I don't actually need a type signature. yay!)
2020-11-05 13:27:00 +0100 <tomsmeding> s/argument/result/
2020-11-05 13:27:09 +0100 <lortabac> 'f :: G Int -> _; f G1 = True' typechecks
2020-11-05 13:27:20 +0100 <tomsmeding> so it's the case?
2020-11-05 13:27:23 +0100 <lortabac> it looks like it needs at least one of the two
2020-11-05 13:27:48 +0100 <lortabac> yes I removed the case syntax here for brevity
2020-11-05 13:27:49 +0100dmiles(dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 264 seconds)
2020-11-05 13:28:14 +0100 <tomsmeding> oh it works because you put 'G Int'
2020-11-05 13:28:20 +0100carlomagno(~cararell@148.87.23.11) (Ping timeout: 258 seconds)
2020-11-05 13:28:21 +0100 <lortabac> yes
2020-11-05 13:29:07 +0100mmohammadi9812(~mmohammad@188.210.113.223)
2020-11-05 13:30:30 +0100hackagemorpheus-graphql-core 0.16.0 - Morpheus GraphQL Core https://hackage.haskell.org/package/morpheus-graphql-core-0.16.0 (nalchevanidze)
2020-11-05 13:31:31 +0100hackagemorpheus-graphql 0.16.0, morpheus-graphql-subscriptions 0.16.0, morpheus-graphql-client 0.16.0 (nalchevanidze)
2020-11-05 13:32:56 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 258 seconds)
2020-11-05 13:34:56 +0100Sanchayan(~Sanchayan@223.226.118.59)
2020-11-05 13:35:26 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
2020-11-05 13:36:01 +0100hackageyaml-unscrambler 0.1 - Flexible declarative YAML parsing toolkit https://hackage.haskell.org/package/yaml-unscrambler-0.1 (NikitaVolkov)
2020-11-05 13:36:28 +0100berberman(~berberman@unaffiliated/berberman)
2020-11-05 13:38:24 +0100Entertainment(~entertain@104.246.132.210)
2020-11-05 13:39:01 +0100hackageservant-swagger-ui 0.3.4.3.36.1 - Servant swagger ui https://hackage.haskell.org/package/servant-swagger-ui-0.3.4.3.36.1 (maksbotan)
2020-11-05 13:40:31 +0100hackagedomain-core 0.1 - Low-level API of "domain" https://hackage.haskell.org/package/domain-core-0.1 (NikitaVolkov)
2020-11-05 13:40:55 +0100asthasr(~asthasr@162.210.29.120)
2020-11-05 13:43:25 +0100bergsans(~bergsans@c80-217-8-29.bredband.comhem.se) (Remote host closed the connection)
2020-11-05 13:44:00 +0100hackageyaml-unscrambler 0.1.0.1 - Flexible declarative YAML parsing toolkit https://hackage.haskell.org/package/yaml-unscrambler-0.1.0.1 (NikitaVolkov)
2020-11-05 13:50:10 +0100knupfer(~Thunderbi@200116b82c33ca00181e13fffead1b1e.dip.versatel-1u1.de)
2020-11-05 13:50:11 +0100knupfer(~Thunderbi@200116b82c33ca00181e13fffead1b1e.dip.versatel-1u1.de) (Client Quit)
2020-11-05 13:50:24 +0100knupfer(~Thunderbi@i59F7FF32.versanet.de)
2020-11-05 13:50:29 +0100Eason0210(~user@101.85.10.81)
2020-11-05 13:55:51 +0100ZeroZiat(~ZeroZiat@192.30.89.67)
2020-11-05 13:57:08 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-05 14:05:59 +0100apoc(~apoc@bridge.mattzq.com) (Quit: WeeChat 2.8)
2020-11-05 14:06:00 +0100mdunnio(~mdunnio@208.59.170.5)
2020-11-05 14:12:02 +0100texasmynsted(~texasmyns@64.44.55.84)
2020-11-05 14:15:17 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-05 14:15:26 +0100mdunnio(~mdunnio@208.59.170.5) (Ping timeout: 256 seconds)
2020-11-05 14:15:56 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl)
2020-11-05 14:16:40 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu)
2020-11-05 14:18:07 +0100apoc(~apoc@49.12.13.193)
2020-11-05 14:22:04 +0100FreeBirdLjj(~freebirdl@101.228.42.108)
2020-11-05 14:23:13 +0100jakob_(~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de)
2020-11-05 14:25:38 +0100bgamari_(~bgamari@72.65.102.116)
2020-11-05 14:25:56 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
2020-11-05 14:26:17 +0100Alleria(~AllahuAkb@zrcout.mskcc.org)
2020-11-05 14:26:17 +0100bgamari(~bgamari@2001:470:e438::1) (Ping timeout: 246 seconds)
2020-11-05 14:26:40 +0100AlleriaGuest8524
2020-11-05 14:30:48 +0100Deide(~Deide@217.155.19.23)
2020-11-05 14:32:26 +0100ZeroZiat(~ZeroZiat@192.30.89.67) (Remote host closed the connection)
2020-11-05 14:33:31 +0100hackageukrainian-phonetics-basic 0.1.9.0 - A library to work with the basic Ukrainian phonetics and syllable segmentation. https://hackage.haskell.org/package/ukrainian-phonetics-basic-0.1.9.0 (OleksandrZhabenko)
2020-11-05 14:43:16 +0100obihann(~jhann@156.34.160.69)
2020-11-05 14:44:01 +0100yinfeng(~yinfeng@122.96.106.57) (Ping timeout: 264 seconds)
2020-11-05 14:44:52 +0100yinfeng(~yinfeng@58.212.52.57)
2020-11-05 14:46:47 +0100obihann(~jhann@156.34.160.69) (Client Quit)
2020-11-05 14:47:12 +0100obihann(~jhann@156.34.160.69)
2020-11-05 14:47:12 +0100obihann(~jhann@156.34.160.69) (Client Quit)
2020-11-05 14:47:27 +0100timCF(511495c6@198-149-20-81.sta.estpak.ee)
2020-11-05 14:47:39 +0100obihann(~jhann@156.34.160.69)
2020-11-05 14:47:50 +0100lucasb(uid333435@gateway/web/irccloud.com/x-sdppmllrnolsxyhi)
2020-11-05 14:49:52 +0100timCF(511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection)
2020-11-05 14:51:00 +0100hackagedomain 0.1 - Codegen helping you define domain models https://hackage.haskell.org/package/domain-0.1 (NikitaVolkov)
2020-11-05 14:53:37 +0100solonarv(~solonarv@astrasbourg-653-1-263-62.w92-161.abo.wanadoo.fr) (Ping timeout: 256 seconds)
2020-11-05 14:54:28 +0100Eason0210(~user@101.85.10.81) (Quit: ERC (IRC client for Emacs 28.0.50))
2020-11-05 15:02:32 +0100Schicko(nicotymatr@gateway/shell/matrix.org/x-tpbzfbweaijhyvxh)
2020-11-05 15:03:32 +0100jorj(~jorj@162.220.240.216) (Quit: .)
2020-11-05 15:03:51 +0100machinedgod(~machinedg@142.169.78.227)
2020-11-05 15:04:21 +0100MarcelineVQ(~anja@198.254.202.72)
2020-11-05 15:05:24 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-05 15:06:37 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb)
2020-11-05 15:07:31 +0100twopoint718(~cjw@fsf/member/twopoint718)
2020-11-05 15:07:51 +0100T0pH4t(~josh@c-73-53-48-224.hsd1.wa.comcast.net) (Quit: bye...)
2020-11-05 15:07:52 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-11-05 15:10:27 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f)
2020-11-05 15:10:52 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) (Client Quit)
2020-11-05 15:11:46 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-11-05 15:15:32 +0100ClaudiusMaximus(~claude@198.123.199.146.dyn.plus.net)
2020-11-05 15:15:40 +0100ClaudiusMaximus(~claude@198.123.199.146.dyn.plus.net) (Changing host)
2020-11-05 15:15:40 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2020-11-05 15:17:44 +0100Schicko(nicotymatr@gateway/shell/matrix.org/x-tpbzfbweaijhyvxh) ("User left")
2020-11-05 15:19:50 +0100alp(~alp@88.126.45.36) (Ping timeout: 264 seconds)
2020-11-05 15:20:30 +0100alp(~alp@88.126.45.36)
2020-11-05 15:22:53 +0100PacoV(~pcoves@16.194.31.93.rev.sfr.net)
2020-11-05 15:22:57 +0100 <PacoV> Hi there.
2020-11-05 15:24:34 +0100timCF(511495c6@198-149-20-81.sta.estpak.ee)
2020-11-05 15:24:49 +0100 <PacoV> I've written a static site generator with Hakyll that handles translations in templates thanks to a functionField.
2020-11-05 15:25:19 +0100 <PacoV> The logic is simple : it takes two strings (language and the string to translate).
2020-11-05 15:25:33 +0100 <PacoV> If a translation for the given language exists, it's returned.
2020-11-05 15:25:41 +0100 <PacoV> Else, it keepd the original string.
2020-11-05 15:26:10 +0100 <PacoV> My translations are in a map of maps (Map String (Map String Strin)).
2020-11-05 15:26:42 +0100 <PacoV> I now want to store my translations in a yaml file, not hardcoded in the haskell code.
2020-11-05 15:27:05 +0100 <PacoV> So, I'm looking for a way to parse that (Map String (Map String Strin)) from a yaml file.
2020-11-05 15:27:28 +0100 <timCF> Hello! Are there any good libraries for multithreading communication? I'm trying to use STM/MVar but really struggle with `BlockedIndefinitelyOnMVar` and `BlockedIndefinitelyOnSTM` handling. It results from how Haskell runtime is counting references. The biggest issue here is that runtime kills both child and parent threads with async exceptions
2020-11-05 15:27:28 +0100 <timCF> which are very annoying to handle
2020-11-05 15:27:51 +0100 <merijn> timCF: The RTS doesn't use reference counting
2020-11-05 15:28:02 +0100 <PacoV> I'm still a Haskell beginner and can't figure how to extract the content of the yaml file even using the yaml package.
2020-11-05 15:28:21 +0100 <merijn> timCF: If you get those exceptions then the only thread that can access the MVar is blocking on the MVar (and thus can't ever wake up)
2020-11-05 15:28:39 +0100 <merijn> timCF: So you have messed up your logic somewhere
2020-11-05 15:29:23 +0100 <PacoV> Maybe the simple form of my question could be : do you have any working example of reading a (Map )
2020-11-05 15:29:27 +0100 <merijn> timCF: The runtime doesn't kill "both child and parent", because Haskell threads don't have such a thing as parent threads
2020-11-05 15:29:36 +0100 <PacoV> Maybe the simple form of my question could be : do you have any working example of reading a (Map String String) from a Yaml file please?
2020-11-05 15:29:58 +0100 <merijn> timCF: However, if the main thread exits the program stops, even if there are other threads still running
2020-11-05 15:30:56 +0100 <merijn> timCF: You should probably tell us what you're doing and what you actually want, else we can only guess
2020-11-05 15:31:03 +0100 <timCF> merijn it's valid situation in some cases. For example some sort of API socket subscriptions which is running in separate thread and is supposed to put value into TChan, but got disconnected, subscription process terminating, parent process considers deadlocked
2020-11-05 15:31:08 +0100Cotillion(~Cotillion@217.146.82.202)
2020-11-05 15:31:24 +0100 <merijn> Well, yes
2020-11-05 15:31:31 +0100 <merijn> That's because it is deadlocked
2020-11-05 15:31:46 +0100 <merijn> Unless other threads also use the same TChan
2020-11-05 15:33:16 +0100 <timCF> merijn I'm using `link` function from `Async` everywhere, to link parent and child processes, so I kinda have this category
2020-11-05 15:33:34 +0100 <merijn> Well, if you don't want you parent to get killed...don't use link?
2020-11-05 15:33:45 +0100 <merijn> Like...that's what link is for...
2020-11-05 15:33:45 +0100timCF(511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection)
2020-11-05 15:34:00 +0100hackagegoldplate 0.1.2 - A lightweight golden test runner https://hackage.haskell.org/package/goldplate-0.1.2 (JasperVanDerJeugt)
2020-11-05 15:38:17 +0100timCF(511495c6@198-149-20-81.sta.estpak.ee)
2020-11-05 15:39:27 +0100ystael(~ystael@209.6.50.55)
2020-11-05 15:40:52 +0100 <PacoV> Basically need to parse something like http://ix.io/2D7k as a (Map String (Map String String)).
2020-11-05 15:41:08 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-05 15:41:25 +0100geekosaur(82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
2020-11-05 15:42:36 +0100Ariakenom(~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se)
2020-11-05 15:47:00 +0100mdunnio(~mdunnio@208.59.170.5)
2020-11-05 15:47:24 +0100jollygood2(~bc8165ab@217.29.117.252)
2020-11-05 15:47:31 +0100 <jollygood2> > splitOn [5] [1..10]
2020-11-05 15:47:33 +0100 <lambdabot> [[1,2,3,4],[6,7,8,9,10]]
2020-11-05 15:47:45 +0100 <jollygood2> is there something like this that will include separator in either list?
2020-11-05 15:49:02 +0100 <ski> separator ?
2020-11-05 15:49:16 +0100 <ski> hm
2020-11-05 15:49:18 +0100 <jollygood2> 5 in the example above
2020-11-05 15:50:04 +0100 <int-e> https://hackage.haskell.org/package/split-0.2.3.4/docs/Data-List-Split.html#v:onSublist
2020-11-05 15:50:54 +0100 <jollygood2> close but not quite what I had in mind. f 5 [1..10] should give me [1,2,3,4,5] [6,7,8,9,10]
2020-11-05 15:51:30 +0100timCF(511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection)
2020-11-05 15:51:47 +0100 <jollygood2> and f 3 [1,3,4,3,5] => [[1,3],[4,3],[5]]
2020-11-05 15:52:49 +0100coot_(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl)
2020-11-05 15:53:39 +0100 <ski> > unfoldr (\xs0 -> guard (not (null xs0)) >> pure (let (ys,xs1) = break ('c' ==) xs0; (zs,xs2) = span ('c' ==) xs1 in (ys ++ zs,xs2))) "abacabadabacabaeabacabadabacabaf"
2020-11-05 15:53:42 +0100 <lambdabot> ["abac","abadabac","abaeabac","abadabac","abaf"]
2020-11-05 15:54:12 +0100pmikkelsen1(~pmikkelse@vps1.pmikkelsen.com)
2020-11-05 15:54:13 +0100 <ski> > unfoldr (\xs0 -> guard (not (null xs0)) >> pure (let (ys,xs1) = break (3 ==) xs0; (zs,xs2) = span (3 ==) xs1 in (ys ++ zs,xs2))) [1,3,4,3,5]
2020-11-05 15:54:15 +0100 <lambdabot> [[1,3],[4,3],[5]]
2020-11-05 15:54:36 +0100coot(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds)
2020-11-05 15:54:37 +0100coot_coot
2020-11-05 15:56:29 +0100 <jollygood2> interesting
2020-11-05 15:56:48 +0100pmikkelsen1(~pmikkelse@vps1.pmikkelsen.com) (Remote host closed the connection)
2020-11-05 15:57:17 +0100 <ski> > let assoc = (fst &&& fst . snd) &&& snd . snd in unfoldr (\xs0 -> guard (not (null xs0)) >> (pure . first (uncurry (++)) . assoc) (span (3 ==) <$> break (3 ==) xs0)) [1,3,4,3,5]
2020-11-05 15:57:19 +0100 <lambdabot> [[1,3],[4,3],[5]]
2020-11-05 15:57:22 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Read error: Connection reset by peer)
2020-11-05 16:00:02 +0100Cotillion(~Cotillion@217.146.82.202) ()
2020-11-05 16:00:10 +0100kupi(uid212005@gateway/web/irccloud.com/x-fvjiylahrovnfgof)
2020-11-05 16:01:50 +0100alp(~alp@88.126.45.36) (Ping timeout: 260 seconds)
2020-11-05 16:01:52 +0100 <jollygood2> thanks for interesting solutions, but Data.List.Split can actually do this
2020-11-05 16:01:55 +0100 <jollygood2> > split (keepDelimsR $ whenElt (==3)) [1,3,4,3,5]
2020-11-05 16:01:58 +0100 <lambdabot> [[1,3],[4,3],[5]]
2020-11-05 16:02:20 +0100 <akegalj> Hey guys. I just run onto article that says effect tracking is useless https://degoes.net/articles/no-effect-tracking . I am not sure has this been discussed in haskell community but I am not sure I understand the point he is making. In a similar way I find it would be beneficial to track exceptions - that way we can at least be sure we are at least handling all exceptions (and compiler can ensure that).
2020-11-05 16:02:26 +0100 <akegalj> In short, what is your opinion about this and if this is already discussed somewhere from haskell community can you point me to it?
2020-11-05 16:04:12 +0100benjamingr__(uid23465@gateway/web/irccloud.com/x-ifxghrbxkdgdxjip)
2020-11-05 16:04:38 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Ping timeout: 260 seconds)
2020-11-05 16:06:23 +0100troydm(~troydm@unaffiliated/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2020-11-05 16:06:30 +0100hackagekubernetes-client-core 0.3.1.0 - Auto-generated kubernetes-client-core API Client https://hackage.haskell.org/package/kubernetes-client-core-0.3.1.0 (axeman)
2020-11-05 16:07:07 +0100troydm(~troydm@unaffiliated/troydm)
2020-11-05 16:07:30 +0100hackagekubernetes-client 0.3.1.0 - Client library for Kubernetes https://hackage.haskell.org/package/kubernetes-client-0.3.1.0 (axeman)
2020-11-05 16:10:53 +0100dmiles(dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
2020-11-05 16:11:48 +0100pmikkelsen(~pmikkelse@vps1.pmikkelsen.com)
2020-11-05 16:14:05 +0100pmikkelsen(~pmikkelse@vps1.pmikkelsen.com) (Read error: Connection reset by peer)
2020-11-05 16:16:24 +0100christo(~chris@81.96.113.213)
2020-11-05 16:16:33 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 16:16:54 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Read error: Connection reset by peer)
2020-11-05 16:20:20 +0100carlomagno(~cararell@148.87.23.5)
2020-11-05 16:21:34 +0100 <ski> akegalj : i would distinguish between "side-effects" and "effects". the poster correctly notes that e.g. `putStrLn :: String -> IO ()' doesn't have any side-effects, but i'd still claim that it has (`IO'-)effects. and that `IO' "tracks" effects (it's a very crude form a tracking, not fine-grained. also there's other types of effects, e.g. `Maybe',`[]',`Either e',`STM',`ST s',...)
2020-11-05 16:22:56 +0100 <hololeap_> is there any way to turn `IO [a]` into `LogicT IO a`?
2020-11-05 16:23:02 +0100hololeap_hololeap
2020-11-05 16:27:16 +0100 <hololeap> % import System.Directory
2020-11-05 16:27:16 +0100 <yahb> hololeap:
2020-11-05 16:27:23 +0100 <hololeap> % :t \f -> fmap (concat . transpose) . traverse listDirectory >=> mapM_ f
2020-11-05 16:27:23 +0100 <yahb> hololeap: (FilePath -> IO b) -> [FilePath] -> IO ()
2020-11-05 16:27:33 +0100 <ski> @type let oneOf = foldr ((<|>) . pure) empty in (oneOf =<<) . lift :: IO [a] -> LogicT IO a
2020-11-05 16:27:34 +0100 <lambdabot> IO [a] -> LogicT IO a
2020-11-05 16:29:26 +0100 <hololeap> i'm trying to do a breadth-first scan of a list of directories, and do some kind of IO action on each file, so a file structure like [a/a.txt
2020-11-05 16:30:27 +0100 <hololeap> ["a/a.txt","a/b.txt","b/a.txt","c/a.txt"] would be processed in the order ["a/a.txt","b/a.txt","c/a.txt","a/b.txt"]
2020-11-05 16:30:34 +0100knupfer(~Thunderbi@i59F7FF32.versanet.de) (Quit: knupfer)
2020-11-05 16:31:23 +0100 <hololeap> would LogicT be the way to go for this or should i just stick with lists, using transpose to get the order i'm looking for
2020-11-05 16:31:33 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
2020-11-05 16:31:57 +0100conal(~conal@64.71.133.70) (Ping timeout: 258 seconds)
2020-11-05 16:31:59 +0100 <hololeap> i'm still pretty unfamiliar with LogicT, so i might be reaching for it when it isn't necessary
2020-11-05 16:33:25 +0100Amras(~Amras@unaffiliated/amras0000)
2020-11-05 16:34:31 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-05 16:36:32 +0100 <ski> akegalj : i agree that part of the power of `IO' (and other monads and idioms) is having effects be first-class values
2020-11-05 16:37:17 +0100 <ski> @quote world's.best
2020-11-05 16:37:17 +0100 <lambdabot> _pizza_ says: i think Haskell is undoubtedly the world's best programming language for discovering the first few dozen numbers in the Fibonacci sequence over IRC
2020-11-05 16:37:45 +0100 <ski> @quote SPJ world's.best
2020-11-05 16:37:45 +0100 <lambdabot> SPJ says: Haskell is the world's best imperative language.
2020-11-05 16:38:00 +0100hackagedomain-optics 0.1 - Integration of domain with optics https://hackage.haskell.org/package/domain-optics-0.1 (NikitaVolkov)
2020-11-05 16:39:02 +0100 <ski> part of the point of that quip is the first-classness. but another part, i'd argue, is that, because there's no side-effects, we can employ equational reasoning everywhere, commuting, duplicating and discarding, which wouldn't be valid in the presence of side-effects
2020-11-05 16:39:59 +0100toorevitimirp(~tooreviti@117.182.183.132) (Remote host closed the connection)
2020-11-05 16:40:23 +0100mmohammadi9812(~mmohammad@188.210.113.223) (Ping timeout: 258 seconds)
2020-11-05 16:42:11 +0100 <ski> re their point about already knowing what side-effects a procedure performs, if one knows what it's intended to do, i'd disagree. you could easily use a library-function that depends on some mutable state being set up to an appropriate, or some thread/process/service being started, and people do add such things to implementations without noting it in the interface
2020-11-05 16:42:21 +0100Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net)
2020-11-05 16:42:56 +0100 <akegalj> ski: haha, I love quote thing :D Didn't know about that
2020-11-05 16:43:55 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-05 16:44:22 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-05 16:44:38 +0100 <ski> so a compiler-enforced checking of what effects an operation could possibly do could be useful then. and having a tool (like compiler ior IDE) infer effects would sometimes not be enough, since we'd want to check expectations (at some interface level, the effects are private, can't leak, say)
2020-11-05 16:45:15 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 16:45:40 +0100mimi_vx(~mimi@tulipan.habr.nat.praha12.net) (Ping timeout: 246 seconds)
2020-11-05 16:46:08 +0100 <ski> (still, `IO' is a very crude sort of tracking. all-or-nothing. no ability to dicern more specifically what kind of effects can occur. that can sometimes be a problem, yes)
2020-11-05 16:46:48 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-11-05 16:47:32 +0100 <ski> also, i'd take issue with their "Effect-Tracked Java™", that it doesn't provide the same (reasoning) convenience as with the Haskell situation .. unless one adds some syntactic salt not only annotating the interfaces of operations, but also requiring each call to a side-effectful operation to be annotated in a way to highlight this
2020-11-05 16:48:49 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2020-11-05 16:49:13 +0100 <ski> (Mercury is a language that has such a purity system, where impure (and semipure) calls must be annotated with syntactic salt `impure' and `semipure'. note that the purity system is primarily intended for FFI stuff, though. there's a separate `io' system, which is similar to the `World' that is uniquely passed around in Clean, and still also somewhat (albeit less) similar to `IO' in Haskell)
2020-11-05 16:50:06 +0100 <ski> the point is that, without some such syntactic salt, you'll have to look up the interface of called operations, to check whether they may have side-effects. rather than seeing it directly there, in the source
2020-11-05 16:50:52 +0100 <ski> (with IDE support, this could be less of an issue. but then there's a separate argument that perhaps it's a good thing to not have to rely on an IDE .. this can be discussed forward and back)
2020-11-05 16:51:55 +0100 <ski> with such syntactic salt, you'll be alerted when you're interchanging the order of two side-effecting operations, or duplicating/factoring one, or discarding one, that the effects expressed might not be the same
2020-11-05 16:52:09 +0100berberman(~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
2020-11-05 16:52:21 +0100mmohammadi9812(~mmohammad@188.210.99.150)
2020-11-05 16:52:39 +0100berberman(~berberman@unaffiliated/berberman)
2020-11-05 16:52:52 +0100 <ski> btw, note that Java does track exceptions (in a fine-grained manner). exceptions are another kind of side-effect
2020-11-05 16:53:41 +0100 <akegalj> how does java track exceptions?
2020-11-05 16:53:45 +0100 <ski> (it's also debatable whether the fine-grained tracking is good or not. note that the `IO' exceptions in Haskell are not tracked in fine-grained way)
2020-11-05 16:53:57 +0100 <ski> `throws' clause attached to method signatures
2020-11-05 16:53:58 +0100 <merijn> ski: Which was a massive mistake >.>
2020-11-05 16:54:05 +0100 <ski> merijn : which ?
2020-11-05 16:54:13 +0100 <merijn> unchecked exceptions in Haskell
2020-11-05 16:54:54 +0100veverak[[[]]]
2020-11-05 16:55:29 +0100wltjr1(~wltjr@84.39.116.180)
2020-11-05 16:55:32 +0100 <ski> in Haskell, the `<$>' in e.g. `reverse <$> getLine' is comparable to the aforementioned syntactic salt
2020-11-05 16:55:48 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-05 16:57:00 +0100 <ski> (here, one can argue, that it would be better to annotate just the specific effectful calls, rather than the path down to them in the AST. i have experimented a little with some ideas for a "effect reflection syntax" that would address this)
2020-11-05 16:57:18 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb)
2020-11-05 16:58:37 +0100 <akegalj> ski: you are right, I forgot that java tracks exceptions https://docs.oracle.com/javase/tutorial/essential/exceptions/declaring.html
2020-11-05 16:58:49 +0100kaychaks(sid236345@gateway/web/irccloud.com/x-tofmstsbickuunjr)
2020-11-05 16:59:28 +0100 <ski> akegalj : still, interesting, thought-provoking, blag
2020-11-05 17:00:04 +0100 <akegalj> ski: yes, thanks for your input. It was interesting read
2020-11-05 17:00:06 +0100GuillaumeChrel[m(guillaumec@gateway/shell/matrix.org/x-yyvevfplzzioqnuc) (Quit: Idle for 30+ days)
2020-11-05 17:00:06 +0100tttom[m](tttommatri@gateway/shell/matrix.org/x-odejmlhnpwjjtcrh) (Quit: Idle for 30+ days)
2020-11-05 17:00:06 +0100jiribenes1(jbjiribene@gateway/shell/matrix.org/x-bgfmaawtdxevtslk) (Quit: Idle for 30+ days)
2020-11-05 17:00:06 +0100ethercrow[m](ethercrowm@gateway/shell/matrix.org/x-fwdkmrqysffhdlhg) (Quit: Idle for 30+ days)
2020-11-05 17:00:06 +0100albestro[m](albestroma@gateway/shell/matrix.org/x-qdbcqirfearydihj) (Quit: Idle for 30+ days)
2020-11-05 17:00:44 +0100Rudd0(~Rudd0@185.189.115.103)
2020-11-05 17:01:32 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
2020-11-05 17:01:53 +0100 <ski> akegalj : anyway .. to repeat, the author doesn't appear to make the distinction between "effect" and "side-effect". it's this distinction (present in the implementation code, not just in interfaces) that enables one to tell that one can use powerful equational reasoning & refactoring in the former case, and less powerful such in the latter case
2020-11-05 17:04:08 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-11-05 17:04:10 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-05 17:04:13 +0100 <ski> if you have `do x <- foo; y <- bar; frob x y', in `ST s', say, and you happen to know that the state that `foo' interacts with is independent of the state that `bar' interacts with, then you can of course refactor this to `do y <- bar; x <- foo; frob x y'. but this independence is not tracked (no fine-grained state tracking)
2020-11-05 17:04:15 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 17:04:22 +0100twopoint718(~cjw@fsf/member/twopoint718) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-05 17:04:50 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-11-05 17:06:07 +0100 <ski> in some monads or idioms, you may know that their effects are discardable, so that if you don't use the result of an action, then the action may be omitted. or perhaps you know that all effects commute, or possibly that they're duplicable (presumably some caching is going on, then)
2020-11-05 17:07:21 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
2020-11-05 17:08:12 +0100 <ski> in Mercury, semipure predicate calls commutes with each other (and are also discardable and duplicable, iirc), but doesn't commute with impure ones. semipure ones may e.g. read some mutable state, but may not change it
2020-11-05 17:10:11 +0100 <akegalj> goes to look at Mercury...
2020-11-05 17:10:45 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
2020-11-05 17:11:25 +0100 <akegalj> ski: hm, thats interesting distinction between pure and semipure
2020-11-05 17:11:38 +0100 <ski> (<https://www.mercurylang.org/information/doc-latest/mercury_ref/Impurity.html> is the relevant manual section on that. also see " Using impurity to create declarative interfaces in Mercury" by Tyson Dowd,Peter Schachte,Fergus Henderson,Zoltan Somogyi in 2000-04 at <https://www.mercurylang.org/documentation/papers.html#purity>)
2020-11-05 17:12:02 +0100mimi_vx(~mimi@2a01:490:16:1026:9892:f269:767a:6ad7)
2020-11-05 17:13:55 +0100mimi1vx(~mimi@tulipan.habr.nat.praha12.net)
2020-11-05 17:14:01 +0100machinedgod(~machinedg@142.169.78.227) (Ping timeout: 246 seconds)
2020-11-05 17:15:13 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-05 17:15:30 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb)
2020-11-05 17:16:10 +0100 <akegalj> ski: that's enough info atm. I have to groak this info and think about it for a while to form some opinion. Thanks a lot for references and all input <3 . *akegalj* Goes for a walk to reflect
2020-11-05 17:16:12 +0100machinedgod(~machinedg@207.253.244.210)
2020-11-05 17:16:16 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-yyqyliwcbydyqmwb)
2020-11-05 17:16:53 +0100mimi_vx(~mimi@2a01:490:16:1026:9892:f269:767a:6ad7) (Ping timeout: 272 seconds)
2020-11-05 17:17:31 +0100hackagegeneric-data 0.9.2.0 - Deriving instances with GHC.Generics and related utilities https://hackage.haskell.org/package/generic-data-0.9.2.0 (lyxia)
2020-11-05 17:18:00 +0100 <hololeap> is there a way to merge two `ConduitT () o m ()` streams, so that they will yield `o`s in the same temporal order that they are produced in both streams?
2020-11-05 17:18:36 +0100 <hololeap> e.g. writing stdout and stderr to the same file, in the order that each meassage is produced
2020-11-05 17:18:47 +0100 <hololeap> s/message/line of text/
2020-11-05 17:18:48 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus) (Read error: Connection reset by peer)
2020-11-05 17:19:32 +0100u0_a298(~user@47.206.148.226)
2020-11-05 17:19:41 +0100 <merijn> hololeap: That...is not a sensical question :)
2020-11-05 17:19:55 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
2020-11-05 17:20:02 +0100 <merijn> hololeap: because conduit produces a sequential loop
2020-11-05 17:20:16 +0100 <merijn> hololeap: There is no "temporal order"
2020-11-05 17:20:32 +0100 <hololeap> ok, that's kind of what i was afraid of
2020-11-05 17:20:33 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-05 17:20:55 +0100 <merijn> hololeap: If you run the two conduits and dump them into a channel, then you can have another conduit reading from the channel
2020-11-05 17:21:41 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-05 17:21:52 +0100 <merijn> hololeap: What are the original streams?
2020-11-05 17:22:11 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-11-05 17:22:24 +0100enva2712(~enva2712@cpe-75-86-42-2.wi.res.rr.com)
2020-11-05 17:22:43 +0100twopoint718(~cjw@fsf/member/twopoint718)
2020-11-05 17:22:49 +0100 <hololeap> the stdout and stderr streams shown here: https://hackage.haskell.org/package/conduit-extra-1.3.5/docs/Data-Conduit-Process.html#v:sourcePro…
2020-11-05 17:22:58 +0100stef204(~stef204@unaffiliated/stef-204/x-384198)
2020-11-05 17:23:23 +0100 <merijn> Yeah, you'll have to handle those in separate threads
2020-11-05 17:24:18 +0100 <hololeap> (yeah my original question was messed up)
2020-11-05 17:24:31 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-05 17:24:35 +0100 <hololeap> but, that's a good idea merijn, and i should be able to make it work
2020-11-05 17:27:15 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
2020-11-05 17:27:38 +0100ahmr88(~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Client Quit)
2020-11-05 17:29:52 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 17:30:18 +0100u0_a298(~user@47.206.148.226)
2020-11-05 17:32:43 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 17:32:57 +0100u0_a298(~user@47.206.148.226)
2020-11-05 17:33:16 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 256 seconds)
2020-11-05 17:35:24 +0100enva2712(~enva2712@cpe-75-86-42-2.wi.res.rr.com) (Quit: leaving)
2020-11-05 17:37:45 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 17:38:04 +0100u0_a298(~user@47.206.148.226)
2020-11-05 17:38:25 +0100borne(~fritjof@200116b8643b36005d0cb1433c5d4cbb.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2020-11-05 17:39:08 +0100borne(~fritjof@200116b8643b3600e0b7c534f6e7b66f.dip.versatel-1u1.de)
2020-11-05 17:39:33 +0100Chi1thangoo(~Chi1thang@87.112.60.168)
2020-11-05 17:41:39 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 17:42:09 +0100u0_a298(~user@47.206.148.226)
2020-11-05 17:44:28 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
2020-11-05 17:44:29 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 17:45:02 +0100u0_a298(~user@47.206.148.226)
2020-11-05 17:47:10 +0100u0_a298(~user@47.206.148.226) (Remote host closed the connection)
2020-11-05 17:47:28 +0100u0_a298(~user@47.206.148.226)
2020-11-05 17:47:47 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-11-05 17:49:23 +0100Sanchayan(~Sanchayan@223.226.118.59) (Quit: leaving)
2020-11-05 17:50:21 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
2020-11-05 17:50:50 +0100wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-11-05 17:51:45 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-05 17:51:53 +0100jff(~Thunderbi@a109-49-149-2.cpe.netcabo.pt)
2020-11-05 17:51:56 +0100alp(~alp@88.126.45.36)
2020-11-05 17:54:05 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 17:54:34 +0100u0_a298(~user@47.206.148.226)
2020-11-05 17:56:40 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 17:57:17 +0100u0_a298(~user@47.206.148.226)
2020-11-05 17:59:26 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 17:59:58 +0100u0_a298(~user@47.206.148.226)
2020-11-05 18:02:05 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 18:02:32 +0100u0_a298(~user@47.206.148.226)
2020-11-05 18:03:00 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-05 18:04:40 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-11-05 18:05:05 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-11-05 18:05:17 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 18:06:02 +0100acidjnk_new2(~acidjnk@p200300d0c718f6890d36626cfb994f1d.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-11-05 18:06:15 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-11-05 18:07:00 +0100FreeBirdLjj(~freebirdl@101.228.42.108) (Remote host closed the connection)
2020-11-05 18:07:35 +0100FreeBirdLjj(~freebirdl@101.228.42.108)
2020-11-05 18:10:14 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-11-05 18:11:48 +0100FreeBirdLjj(~freebirdl@101.228.42.108) (Ping timeout: 256 seconds)
2020-11-05 18:12:23 +0100avdb(~avdb@ip-83-134-202-8.dsl.scarlet.be) (Read error: Connection reset by peer)
2020-11-05 18:12:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-11-05 18:12:49 +0100avdb(~avdb@ip-83-134-202-8.dsl.scarlet.be)
2020-11-05 18:14:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-05 18:15:00 +0100hackagehevm 0.42.0 - Ethereum virtual machine evaluator https://hackage.haskell.org/package/hevm-0.42.0 (MrChico)
2020-11-05 18:18:49 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-05 18:19:24 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:955d:b3db:6b4c:c2ab) (Ping timeout: 240 seconds)
2020-11-05 18:25:36 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:95b6:c7bf:d0d6:b6df)
2020-11-05 18:25:38 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2020-11-05 18:27:09 +0100Ariakenom(~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Remote host closed the connection)
2020-11-05 18:27:31 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 18:27:38 +0100Ariakenom(~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se)
2020-11-05 18:27:44 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 244 seconds)
2020-11-05 18:28:03 +0100CodeAlways(uid272474@gateway/web/irccloud.com/x-ydthmisqrovakaks) (Quit: Connection closed for inactivity)
2020-11-05 18:30:58 +0100evanjs(~evanjs@075-129-188-019.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in)
2020-11-05 18:32:11 +0100Gurkenglas__(~Gurkengla@unaffiliated/gurkenglas)
2020-11-05 18:33:10 +0100evanjs(~evanjs@075-129-188-019.res.spectrum.com)
2020-11-05 18:33:50 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
2020-11-05 18:36:01 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-05 18:38:28 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-11-05 18:38:58 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 18:40:08 +0100Ariakenom(~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Quit: Leaving)
2020-11-05 18:42:21 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 18:42:47 +0100u0_a298(~user@47.206.148.226)
2020-11-05 18:43:18 +0100alp(~alp@88.126.45.36) (Ping timeout: 260 seconds)
2020-11-05 18:43:19 +0100Ariakenom(~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se)
2020-11-05 18:43:50 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-11-05 18:45:10 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 260 seconds)
2020-11-05 18:45:22 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-05 18:46:46 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:7cc2:21a2:16c3:f6f6)
2020-11-05 18:48:48 +0100roconnor(~roconnor@host-192.252-162-14.dyn.295.ca) (Ping timeout: 258 seconds)
2020-11-05 18:48:59 +0100o1lo01ol1o(~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
2020-11-05 18:49:28 +0100nados(~dan@69-165-210-185.cable.teksavvy.com) (Ping timeout: 272 seconds)
2020-11-05 18:50:05 +0100Techcable(znc@irc.techcable.net) (Quit: ZNC - http://znc.in)
2020-11-05 18:50:54 +0100Techcable(znc@irc.techcable.net)
2020-11-05 18:53:42 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035)
2020-11-05 18:54:37 +0100roconnor(~roconnor@host-192.252-162-14.dyn.295.ca)
2020-11-05 18:56:49 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-05 18:57:49 +0100kuribastard(~user@ptr-25vy0i8ngykh0l4o8xc.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2020-11-05 19:00:01 +0100wltjr1(~wltjr@84.39.116.180) ()
2020-11-05 19:01:15 +0100conal(~conal@64.71.133.70)
2020-11-05 19:04:04 +0100howdoi(uid224@gateway/web/irccloud.com/x-pkptafzrpfqhbpar)
2020-11-05 19:07:20 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-11-05 19:10:06 +0100hidedagger(~nate@125.161.131.218)
2020-11-05 19:10:07 +0100shailangsa(~shailangs@host86-186-133-58.range86-186.btcentralplus.com)
2020-11-05 19:10:34 +0100solonarv(~solonarv@astrasbourg-653-1-263-62.w92-161.abo.wanadoo.fr)
2020-11-05 19:11:32 +0100knupfer(~Thunderbi@200116b82c33ca00a8fb0b764d84b823.dip.versatel-1u1.de)
2020-11-05 19:14:43 +0100christo(~chris@81.96.113.213)
2020-11-05 19:14:54 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2020-11-05 19:15:51 +0100DavidEichmann(~david@43.240.198.146.dyn.plus.net) (Remote host closed the connection)
2020-11-05 19:17:54 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 19:17:54 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2020-11-05 19:18:11 +0100u0_a298(~user@47.206.148.226)
2020-11-05 19:18:19 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 19:21:37 +0100conal(~conal@64.71.133.70)
2020-11-05 19:21:46 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2020-11-05 19:23:54 +0100u0_a298(~user@47.206.148.226) (Remote host closed the connection)
2020-11-05 19:24:15 +0100u0_a298(~user@47.206.148.226)
2020-11-05 19:26:01 +0100hackageprolude 0.0.0.6 - ITProTV's custom prelude https://hackage.haskell.org/package/prolude-0.0.0.6 (saramuse)
2020-11-05 19:26:01 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr)
2020-11-05 19:26:14 +0100machinedgod(~machinedg@207.253.244.210) (Ping timeout: 260 seconds)
2020-11-05 19:26:38 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-11-05 19:26:44 +0100alp(~alp@2a01:e0a:58b:4920:d896:803c:c09a:1a05)
2020-11-05 19:28:04 +0100machinedgod(~machinedg@142.169.78.93)
2020-11-05 19:31:57 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 19:34:35 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-05 19:37:31 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 19:38:05 +0100u0_a298(~user@47.206.148.226)
2020-11-05 19:39:23 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-11-05 19:41:12 +0100N3RGY(~N3RGY@65.141.87.122)
2020-11-05 19:41:41 +0100chaosmasttter(~chaosmast@p200300c4a7117c01e8fd3775638e9554.dip0.t-ipconnect.de)
2020-11-05 19:42:55 +0100 <tomjaguarpaw> Is there a Haskell hashing library where I can take the hash of two hashes and have it produce something sensible? hashable (Data.Hashable) has results that are ... interesting
2020-11-05 19:44:12 +0100 <opqdonut> usually one xors hashes together to combine them
2020-11-05 19:44:30 +0100 <opqdonut> googling turns up https://hackage.haskell.org/package/data-hash-0.2.0.1/docs/Data-Hash.html
2020-11-05 19:44:36 +0100 <opqdonut> with a combine :: Hash -> Hash -> Hash
2020-11-05 19:44:57 +0100 <opqdonut> I hope you don't need cryptographic hashing?
2020-11-05 19:45:58 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-05 19:47:01 +0100hackagebase16-bytestring 1.0.1.0 - RFC 4648-compliant Base16 encodings for ByteStrings https://hackage.haskell.org/package/base16-bytestring-1.0.1.0 (topos)
2020-11-05 19:47:19 +0100 <tomjaguarpaw> opqdonut: Indeed, no need for cryptographic
2020-11-05 19:47:48 +0100 <tomjaguarpaw> I was a little wary of that library since it hasn't been updated in 5 years. Maybe it's OK.
2020-11-05 19:48:00 +0100hackagepersistent 2.11.0.1 - Type-safe, multi-backend data serialization. https://hackage.haskell.org/package/persistent-2.11.0.1 (parsonsmatt)
2020-11-05 19:49:13 +0100akegalj(~akegalj@93-142-95-221.adsl.net.t-com.hr) (Quit: leaving)
2020-11-05 19:49:25 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 264 seconds)
2020-11-05 19:49:43 +0100 <tomjaguarpaw> Hmm, combining by rotate and xor doesn't sound very safe
2020-11-05 19:50:16 +0100 <tomjaguarpaw> I would like 1 `combine` 2 not to collide with 0, for example
2020-11-05 19:50:39 +0100 <tomjaguarpaw> But maybe it it's post-hashing it's Ok
2020-11-05 19:51:08 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-11-05 19:51:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-05 19:52:22 +0100 <sm[m]> maralorn: https://shakebuild.com/faq#why-is-there-a-shake-executable is related
2020-11-05 19:52:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-11-05 19:54:25 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds)
2020-11-05 19:54:55 +0100untwisted(~untwisted@84.39.116.180)
2020-11-05 19:57:12 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 19:59:45 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 20:00:01 +0100u0_a298(~user@47.206.148.226)
2020-11-05 20:00:17 +0100alp(~alp@2a01:e0a:58b:4920:d896:803c:c09a:1a05) (Ping timeout: 272 seconds)
2020-11-05 20:01:13 +0100 <maralorn> sm: Thank you. The reason was simply that I needed to call it Shakefile.hs with capital S.
2020-11-05 20:02:38 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-11-05 20:03:27 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
2020-11-05 20:03:29 +0100 <maralorn> I wish there were something like "shake watch"
2020-11-05 20:03:39 +0100berberman_(~berberman@unaffiliated/berberman)
2020-11-05 20:03:42 +0100 <maralorn> * I wish there was something like "shake watch"
2020-11-05 20:04:14 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-11-05 20:05:44 +0100conal(~conal@64.71.133.70)
2020-11-05 20:07:22 +0100christo(~chris@81.96.113.213)
2020-11-05 20:08:39 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal)
2020-11-05 20:11:27 +0100 <monochrom> "were" is OK. Actually more proper IMO :)
2020-11-05 20:12:44 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-11-05 20:13:09 +0100N3RGY(~N3RGY@65.141.87.122) ()
2020-11-05 20:14:56 +0100 <tomsmeding> yay subjunctive
2020-11-05 20:15:42 +0100 <tomsmeding> @quickcheck \i -> hash (i :: Int) == i
2020-11-05 20:15:42 +0100 <lambdabot> Unknown command, try @list
2020-11-05 20:15:49 +0100 <tomsmeding> @check \i -> hash (i :: Int) == i
2020-11-05 20:15:51 +0100 <lambdabot> error:
2020-11-05 20:15:51 +0100 <lambdabot> • Variable not in scope: hash :: Int -> Int • Perhaps you meant ‘has’ (impor...
2020-11-05 20:16:00 +0100 <tomsmeding> @check \i -> Data.Hashable.hash (i :: Int) == i
2020-11-05 20:16:02 +0100 <lambdabot> error:
2020-11-05 20:16:02 +0100 <lambdabot> Not in scope: ‘Data.Hashable.hash’ No module named ‘Data.Hashable’ is imported.
2020-11-05 20:16:27 +0100 <tomsmeding> okay fine, but tomjaguarpaw this succeeds locally, which explains kind of why combining that with an xor doesn't work :p
2020-11-05 20:16:56 +0100 <sm[m]> maralorn: I do ls FILES | entr SHAKECMD
2020-11-05 20:17:31 +0100 <maralorn> sm: I do, too.
2020-11-05 20:19:02 +0100 <sm[m]> you're right, it does seem like a feature that could be built in, I actually thought it was
2020-11-05 20:19:21 +0100nados(~dan@69-165-210-185.cable.teksavvy.com)
2020-11-05 20:20:46 +0100Tario(~Tario@198.252.153.28)
2020-11-05 20:21:11 +0100conal(~conal@64.71.133.70) (Ping timeout: 258 seconds)
2020-11-05 20:21:11 +0100 <tomjaguarpaw> opqdonut: FWIW Data.Hash also has the property that I am trying to avoid, specifically:
2020-11-05 20:21:14 +0100 <tomjaguarpaw> *Hash H> let h x y = (H.hash (x :: Int) `H.combine` (H.hash x `H.combine` H.hash (y :: Int)), H.hash y)
2020-11-05 20:21:17 +0100 <tomjaguarpaw> *Hash H> h 123 45657
2020-11-05 20:21:20 +0100 <tomjaguarpaw> (Hash {asWord64 = 16277888606689116690},Hash {asWord64 = 16277888606689116690})
2020-11-05 20:21:24 +0100 <tomjaguarpaw> x `combine` x `combine` y == y
2020-11-05 20:21:38 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-05 20:21:45 +0100 <tomjaguarpaw> I'm at a loss about how to avoid this. It seems to make compositional hashing of trees impossible.
2020-11-05 20:23:38 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 260 seconds)
2020-11-05 20:24:44 +0100jfredett_(~quassel@95.211.153.89) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2020-11-05 20:24:55 +0100conal(~conal@107.181.166.217)
2020-11-05 20:25:28 +0100jfredett(~quassel@95.211.153.89)
2020-11-05 20:25:42 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-11-05 20:25:54 +0100jespada(~jespada@90.254.245.49)
2020-11-05 20:26:18 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-11-05 20:26:43 +0100 <tomsmeding> @let wangHash = (\x -> x `xor` (x `rotateR` 16)) . (\x -> x * 2057) . (\x -> x `xor` (x `rotateR` 4)) . (\x -> x + (x `shiftL` 2)) . (\x -> x `xor` (x `rotateR` 12)) . (\x -> complement x + (x `shiftL` 15))
2020-11-05 20:26:44 +0100 <tomjaguarpaw> Python's hash has the property I desire. I'm not sure what the algorithm is though.
2020-11-05 20:26:44 +0100 <lambdabot> Defined.
2020-11-05 20:27:01 +0100 <tomsmeding> > wangHash 123 `xor` (wangHash 123 `xor` wangHash 45657)
2020-11-05 20:27:03 +0100 <lambdabot> 14571355508018
2020-11-05 20:27:19 +0100 <tomsmeding> http://www.reedbeta.com/blog/quick-and-easy-gpu-random-numbers-in-d3d11/
2020-11-05 20:27:19 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-11-05 20:27:25 +0100 <tomjaguarpaw> > wangHash 123 `xor` (wangHash 123 `xor` wangHash 123)
2020-11-05 20:27:27 +0100 <lambdabot> 38872050059
2020-11-05 20:27:32 +0100 <tomjaguarpaw> > wangHash 123
2020-11-05 20:27:34 +0100 <lambdabot> 38872050059
2020-11-05 20:27:37 +0100 <tomjaguarpaw> Still not idea
2020-11-05 20:27:39 +0100 <tomjaguarpaw> l
2020-11-05 20:27:39 +0100 <tomsmeding> o
2020-11-05 20:28:25 +0100 <tomsmeding> well
2020-11-05 20:28:28 +0100 <tomsmeding> that's kind of expected
2020-11-05 20:28:39 +0100 <tomsmeding> @check \i -> i `xor` i == 0
2020-11-05 20:28:39 +0100 <tomjaguarpaw> Yes, if xor is the combiner
2020-11-05 20:28:40 +0100 <lambdabot> +++ OK, passed 100 tests.
2020-11-05 20:28:50 +0100twopoint718(~cjw@fsf/member/twopoint718) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-05 20:29:22 +0100 <tomsmeding> so let combine x y = hash (x `xor` permute y)
2020-11-05 20:29:29 +0100 <tomsmeding> merkle trees?
2020-11-05 20:29:35 +0100arampa(5e454e4c@94.69.78.76)
2020-11-05 20:29:48 +0100 <tomjaguarpaw> Well, I am basically trying to implement a merkle tree.
2020-11-05 20:29:55 +0100 <tomjaguarpaw> The question is what hash algorithm I should use.
2020-11-05 20:30:03 +0100 <tomjaguarpaw> They seem to use one called "tiger hash"
2020-11-05 20:30:34 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 256 seconds)
2020-11-05 20:31:51 +0100 <tomsmeding> is this not basically asking how to construct a hash that takes arbitrary-length input from one that takes fixed-length input?
2020-11-05 20:32:39 +0100 <tomjaguarpaw> No, it's fixed length plus nesting
2020-11-05 20:32:53 +0100 <tomjaguarpaw> *arbitrary length plus arbitrary nesting
2020-11-05 20:33:10 +0100 <tomjaguarpaw> Well, the arbitrary length is a good start, but has other mitigations
2020-11-05 20:33:56 +0100 <tomsmeding> if you can hash two blocks of data into one block of data, you can trivially hash arbitrary-length data, right?
2020-11-05 20:34:17 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 20:34:32 +0100 <tomsmeding> from that perspective, being able to combine two hashes is ~equivalent to being able to handle arbitrary-length data
2020-11-05 20:35:00 +0100aarvar(~foewfoiew@c.24.56.239.179.static.broadstripe.net)
2020-11-05 20:35:03 +0100ransom_(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2020-11-05 20:35:06 +0100aarvar(~foewfoiew@c.24.56.239.179.static.broadstripe.net) ()
2020-11-05 20:35:06 +0100 <tomjaguarpaw> I don't think it's so simple in the presence of the property x `combine` x `combine` y == y
2020-11-05 20:35:25 +0100jfredett(~quassel@95.211.153.89) (Ping timeout: 265 seconds)
2020-11-05 20:35:27 +0100 <tomjaguarpaw> The Data.Hashable [a] instance also tracks the length of the list for this reason
2020-11-05 20:35:29 +0100 <tomsmeding> well you also wouldn't want [x, x, y] to hash to the same as [y]
2020-11-05 20:35:37 +0100 <tomsmeding> right
2020-11-05 20:35:37 +0100 <tomjaguarpaw> Correct
2020-11-05 20:35:48 +0100 <tomjaguarpaw> So Data.Hashable lacks some desirable property
2020-11-05 20:36:10 +0100 <int-e> well, (x `combine` x) `combine` y would be kind of okay
2020-11-05 20:36:24 +0100 <int-e> with that particular definition
2020-11-05 20:36:45 +0100ransom(c4264035@gateway/vpn/protonvpn/c4264035) (Ping timeout: 240 seconds)
2020-11-05 20:37:37 +0100int-ewonders how terrible combine x y = 3*x `xor` 5*y would be, for non-adverserial purposes of course.
2020-11-05 20:37:58 +0100 <tomsmeding> tomjaguarpaw: I see you say that Python's hash works for you; how do you define 'combine' there?
2020-11-05 20:38:27 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-11-05 20:39:05 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2020-11-05 20:39:06 +0100 <tomsmeding> I do believe that something of the form of 'combine x y = (x `rotateL` 15) `xor` (y `rotateR` 2)' is quite usual
2020-11-05 20:39:31 +0100 <arampa> hi, noob question regarding an assignment: I have a custom data type which represents intervals of Int numbers (e.g., (3,5)) and a function which takes a list and generates an interval based on the values of that list. I get the following error: <interactive>:431:1: error: • Ambiguous type variable ‘a0’ arising from a use of ‘print’
2020-11-05 20:39:31 +0100 <arampa> prevents the constraint ‘(Show a0)’ from being solved. Probable fix: use a type annotation to specify what ‘a0’ should be. These potential instances exist: instance (Show a, Show b) => Show (Either a b) -- Defined in ‘Data.Either’ instance Show Ordering -- Defined in ‘GHC.Show’ instance Show
2020-11-05 20:39:31 +0100ggole(~ggole@2001:8003:8119:7200:3462:7213:ea5b:f472) (Quit: Leaving)
2020-11-05 20:39:32 +0100 <arampa> Integer -- Defined in ‘GHC.Show’ ...plus 24 others ...plus 53 instances involving out-of-scope types (use -fprint-potential-instances to see them all) • In a stmt of an interactive GHCi command: print it
2020-11-05 20:39:48 +0100 <int-e> @where paste
2020-11-05 20:39:48 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com
2020-11-05 20:40:16 +0100 <tomsmeding> should that thing get a proper domain name
2020-11-05 20:40:27 +0100 <arampa> https://paste.tomsmeding.com/nmri084o
2020-11-05 20:40:57 +0100 <arampa> the interesting thing is that, if I use this function by itself, i.e., not as part of a typeclass, it seems to work fine
2020-11-05 20:41:00 +0100 <int-e> tomsmeding: what's improper about it :-P (I imagine it pings you quite a bit though)
2020-11-05 20:41:19 +0100 <tomsmeding> arampa: the function by itself looks fine; how are you using it to produce that error?
2020-11-05 20:41:45 +0100 <arampa> https://paste.tomsmeding.com/A37O6NQu
2020-11-05 20:41:48 +0100 <Uniaika> tomsmeding: 5€ if you manage to get it hosted by haskell.org :P
2020-11-05 20:41:58 +0100jakob_(~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…)
2020-11-05 20:42:02 +0100 <tomsmeding> Uniaika: life goals
2020-11-05 20:42:30 +0100 <tomsmeding> arampa: I assume that you give this definition in a particular instance of that class?
2020-11-05 20:42:33 +0100jakob_(~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de)
2020-11-05 20:42:35 +0100 <tomsmeding> which one? :)
2020-11-05 20:42:44 +0100jakob_(~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Client Quit)
2020-11-05 20:42:45 +0100 <int-e> arampa: that's not the complete code. please also include the error message (as a comment, for example). but as a guess, your custom datatype could use a "deriving Show".
2020-11-05 20:43:12 +0100jakob_(~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de)
2020-11-05 20:43:30 +0100jakob_(~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Client Quit)
2020-11-05 20:43:46 +0100 <arampa> https://paste.tomsmeding.com/YX1a14kM
2020-11-05 20:43:58 +0100 <arampa> this is how I'd use it on an empty list, for example
2020-11-05 20:44:02 +0100jakob_(~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de)
2020-11-05 20:44:05 +0100 <tomjaguarpaw> tomsmeding: In Python I would do combine(x, y) == hash((x, y))
2020-11-05 20:44:18 +0100jakob_(~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Client Quit)
2020-11-05 20:44:51 +0100 <arampa> my goal is to make my Interval type an instance of the Code typeclass. It is already an instance of Show (without using deriving)
2020-11-05 20:44:52 +0100jakob_(~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de)
2020-11-05 20:45:04 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 246 seconds)
2020-11-05 20:45:05 +0100jakob_(~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Client Quit)
2020-11-05 20:45:33 +0100 <int-e> arampa: you also need to specify what the result type should be; it's impossible for ghc to know which instance of `Code` it's supposed to use.
2020-11-05 20:45:54 +0100conal(~conal@107.181.166.217) (Quit: Computer has gone to sleep.)
2020-11-05 20:46:17 +0100 <int-e> encode [] :: <whatever your type name is>
2020-11-05 20:46:58 +0100 <arampa> encode [] :: Interval works fine
2020-11-05 20:47:22 +0100Franciman(~francesco@host-79-36-167-172.retail.telecomitalia.it) (Quit: Leaving)
2020-11-05 20:48:08 +0100 <arampa> but if I do this https://paste.tomsmeding.com/YCKBD5QM
2020-11-05 20:48:11 +0100 <int-e> This is a bit obscure, but the `a0` refers to the result type that ghc couldn't infer and is trying to print. The `print` is implicitly added by ghci when evaluating a plain expression
2020-11-05 20:48:53 +0100 <tomsmeding> tomjaguarpaw: here's how python does tuple hashes as far as I can see: https://github.com/python/cpython/blob/f522a57ec77921ee2e60bd4ccda3c8daa5a43e95/Objects/tupleobjec…
2020-11-05 20:48:56 +0100 <arampa> and I run it this way, https://paste.tomsmeding.com/b4qkf9SN this is what happens
2020-11-05 20:48:59 +0100 <int-e> your `encode` is a member of a type class; it could have plenty of different implementations.
2020-11-05 20:49:13 +0100 <int-e> so you have to specify the type at the point where `encode` is used.
2020-11-05 20:49:58 +0100Tario(~Tario@198.252.153.28) (Ping timeout: 246 seconds)
2020-11-05 20:50:10 +0100 <tomjaguarpaw> tomsmeding: Thanks, yes, I may copy that
2020-11-05 20:50:54 +0100 <arampa> so, encode [] :: Interval would be enough for my purposes? I do not use this function in any other functions
2020-11-05 20:51:19 +0100 <arampa> or do you mean that I should define Interval in the type signature?
2020-11-05 20:51:23 +0100 <arampa> sorry I get a bit confused
2020-11-05 20:52:09 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-11-05 20:52:17 +0100 <int-e> arampa: encode [] :: Interval is sufficient. Annotating that `Empty` value is actually pointless; ghc will infer the type from the constructor.
2020-11-05 20:54:10 +0100 <int-e> arampa: If you type `:t encode`, ghci will tell you that the type of `encode` is `Code a => [Int] -> a`. That doesn't mention Interval at all, which is why ghc(i) needs help to determine the result type.
2020-11-05 20:54:34 +0100 <arampa> okay I understand, thank you so much!
2020-11-05 20:55:10 +0100acidjnk_new2(~acidjnk@p200300d0c718f6890d36626cfb994f1d.dip0.t-ipconnect.de)
2020-11-05 20:55:18 +0100twopoint718(~cjw@fsf/member/twopoint718)
2020-11-05 20:56:08 +0100tswett(aee69d95@unaffiliated/tswett)
2020-11-05 20:56:22 +0100machinedgod(~machinedg@142.169.78.93) (Read error: Connection reset by peer)
2020-11-05 20:58:04 +0100alp(~alp@2a01:e0a:58b:4920:51b5:8281:3384:97c9)
2020-11-05 20:58:34 +0100machinedgod(~machinedg@207.253.244.210)
2020-11-05 20:59:01 +0100tswett(aee69d95@unaffiliated/tswett) (Remote host closed the connection)
2020-11-05 21:00:09 +0100 <fendor> finally, I found someone from university, doing the functional programming course
2020-11-05 21:00:18 +0100 <fendor> *from my
2020-11-05 21:00:42 +0100rprije(~rprije@124.148.131.132)
2020-11-05 21:01:01 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-11-05 21:01:56 +0100jollygood2(~bc8165ab@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2020-11-05 21:03:04 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-05 21:04:15 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2020-11-05 21:05:37 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 264 seconds)
2020-11-05 21:06:33 +0100jacksonier(~jacksonie@10.52.classcom.pl)
2020-11-05 21:06:43 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-05 21:07:25 +0100kish(~oracle@unaffiliated/oracle) (Ping timeout: 240 seconds)
2020-11-05 21:08:41 +0100jacksonier(~jacksonie@10.52.classcom.pl) (Quit: Leaving...)
2020-11-05 21:10:17 +0100hyiltiz_(~quassel@82.118.227.47) (Quit: hyiltiz_)
2020-11-05 21:11:23 +0100jacksonier(~jacksonie@10.52.classcom.pl)
2020-11-05 21:11:53 +0100hyiltiz(~quassel@unaffiliated/hyiltiz)
2020-11-05 21:13:22 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-11-05 21:14:46 +0100banner(~banner@116-255-17-160.ip4.superloop.com)
2020-11-05 21:15:49 +0100jacksonier(~jacksonie@10.52.classcom.pl) ()
2020-11-05 21:16:14 +0100invaser(~Thunderbi@31.148.23.125) (Ping timeout: 264 seconds)
2020-11-05 21:17:28 +0100JohnnyL(~john@unaffiliated/johnnyl)
2020-11-05 21:17:35 +0100 <JohnnyL> How stable is SDL for haskell?
2020-11-05 21:18:17 +0100banner(~banner@116-255-17-160.ip4.superloop.com) (Client Quit)
2020-11-05 21:18:18 +0100 <dminuoso> JohnnyL: There's sdl2 on hackage that has quite a few downloads.
2020-11-05 21:18:46 +0100 <dminuoso> It has a couple issues on github, but oh well - this is sdl after all.
2020-11-05 21:20:25 +0100 <JohnnyL> dminuoso: ok
2020-11-05 21:21:02 +0100theorbtwo(~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net)
2020-11-05 21:21:04 +0100 <JohnnyL> I assume that it all compiles into one big binary.
2020-11-05 21:23:18 +0100u0_a298(~user@47.206.148.226) (Remote host closed the connection)
2020-11-05 21:23:31 +0100 <dminuoso> What do you mean?
2020-11-05 21:23:33 +0100u0_a298(~user@47.206.148.226)
2020-11-05 21:24:08 +0100 <koz_> dminuoso: I think they are asking 'do I get static linking of my C deps'.
2020-11-05 21:24:25 +0100 <dminuoso> You can statically link anything you want.
2020-11-05 21:25:00 +0100banner(~banner@116-255-17-160.ip4.superloop.com)
2020-11-05 21:27:03 +0100alp(~alp@2a01:e0a:58b:4920:51b5:8281:3384:97c9) (Ping timeout: 272 seconds)
2020-11-05 21:27:03 +0100PacoV(~pcoves@16.194.31.93.rev.sfr.net) (Quit: leaving)
2020-11-05 21:27:03 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 21:27:29 +0100u0_a298(~user@47.206.148.226)
2020-11-05 21:27:39 +0100 <dminuoso> That is, if you want non-haskell to be statically linked, you can pass `-optl-static -optl-pthread` to ghc. Keep in mind that you very likely need musl or similar if you have any transitive dependency on NSS
2020-11-05 21:27:58 +0100 <dminuoso> (Since statically linking glibc is not officially supported, and likely leads to quirky bugs)
2020-11-05 21:27:58 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2020-11-05 21:28:34 +0100banner(~banner@116-255-17-160.ip4.superloop.com) (Remote host closed the connection)
2020-11-05 21:28:52 +0100 <dminuoso> (And you must provide these libraries as .a to GHC, which for some libraries like libpg can be a hassle)
2020-11-05 21:29:09 +0100invaser(~Thunderbi@31.148.23.125)
2020-11-05 21:29:50 +0100 <bqv> haskell itself is static by default, right?
2020-11-05 21:29:56 +0100mirrorbird(psutcliffe@gateway/vpn/mullvad/psutcliffe)
2020-11-05 21:30:43 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2020-11-05 21:31:32 +0100 <sm[m]> JohnnyL: sdl2 works great and doesn't change much, so I'd say pretty stable
2020-11-05 21:32:13 +0100banner(~banner@116-255-17-160.ip4.superloop.com)
2020-11-05 21:33:33 +0100banner(~banner@116-255-17-160.ip4.superloop.com) (Client Quit)
2020-11-05 21:35:17 +0100kamikaze_(~kamikaze@59.103.111.71)
2020-11-05 21:36:35 +0100 <JohnnyL> It's not sdl2 I'm worried about.
2020-11-05 21:37:14 +0100knupfer(~Thunderbi@200116b82c33ca00a8fb0b764d84b823.dip.versatel-1u1.de) (Ping timeout: 264 seconds)
2020-11-05 21:38:07 +0100arampa(5e454e4c@94.69.78.76) (Remote host closed the connection)
2020-11-05 21:38:08 +0100fendor(~fendor@178.115.129.187.wireless.dyn.drei.com) (Remote host closed the connection)
2020-11-05 21:38:23 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 244 seconds)
2020-11-05 21:39:19 +0100 <matthew-> am I right in thinking that when you're doing type inference for a throw-away var, e.g. _ every time you see _ you allocate a fresh type variable (for the purposes of unification)
2020-11-05 21:39:57 +0100 <bqv> in answer to myself: yes. yes it is
2020-11-05 21:41:08 +0100kamikaze_(~kamikaze@59.103.111.71) ("Leaving")
2020-11-05 21:42:42 +0100geekosaur(ac3a5323@172.58.83.35)
2020-11-05 21:43:32 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-05 21:44:18 +0100 <lyxia> matthew-: yes. you can treat _ like just an unused variable.
2020-11-05 21:44:57 +0100mirrorbird(psutcliffe@gateway/vpn/mullvad/psutcliffe) (Quit: Leaving)
2020-11-05 21:45:47 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
2020-11-05 21:46:01 +0100bennofs1(~benno@dslb-094-222-083-101.094.222.pools.vodafone-ip.de)
2020-11-05 21:46:15 +0100bennofs1(~benno@dslb-094-222-083-101.094.222.pools.vodafone-ip.de) (Client Quit)
2020-11-05 21:46:51 +0100knupfer(~Thunderbi@i59F7FF32.versanet.de)
2020-11-05 21:47:27 +0100coot(~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-11-05 21:47:54 +0100jakob_(~textual@p57b0eae0.dip0.t-ipconnect.de)
2020-11-05 21:49:57 +0100joaj(~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca)
2020-11-05 21:50:05 +0100 <matthew-> lyxia: thanks
2020-11-05 21:52:01 +0100Chai-T-Rex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Quit: Chai-T-Rex)
2020-11-05 21:52:36 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-ghekqquifdegujeg) (Quit: Connection closed for inactivity)
2020-11-05 21:52:42 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2020-11-05 21:54:45 +0100u0_a298(~user@47.206.148.226) (Remote host closed the connection)
2020-11-05 21:54:48 +0100elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
2020-11-05 21:55:01 +0100u0_a298(~user@47.206.148.226)
2020-11-05 21:55:30 +0100jakob_(~textual@p57b0eae0.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…)
2020-11-05 21:56:02 +0100 <dminuoso> lyxia: Interestingly, it turns out that this is not quite true.
2020-11-05 21:56:17 +0100 <merijn> JohnnyL: In the end GHC just calls your system linker, so anything you know how to do with C libraries/executables should translate pretty much 1-to-1 to Haskell :)
2020-11-05 21:56:28 +0100 <dminuoso> But that's probably a bug
2020-11-05 21:56:48 +0100 <dminuoso> I found an elaborate situation, where annotationg with `_` leads GHC To infer a different type than if not annotated at all.
2020-11-05 21:56:59 +0100 <merijn> JohnnyL: And by default all the Haskell stuff is already linked statically, so C libraries are all you really need to handle
2020-11-05 21:57:44 +0100avdb(~avdb@ip-83-134-202-8.dsl.scarlet.be) (Quit: avdb)
2020-11-05 21:58:05 +0100 <bqv> it's like i'm on mute...
2020-11-05 21:58:29 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-11-05 21:58:57 +0100 <merijn> bqv: That's because not everyone is completely reading the chat and some are just responding to things they see out of the corner of their eyes while playing videogames ;)
2020-11-05 21:59:18 +0100Gurkenglas__(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
2020-11-05 21:59:29 +0100kupi(uid212005@gateway/web/irccloud.com/x-fvjiylahrovnfgof) (Quit: Connection closed for inactivity)
2020-11-05 22:00:01 +0100hackageprotocol-buffers 2.4.17 - Parse Google Protocol Buffer specifications https://hackage.haskell.org/package/protocol-buffers-2.4.17 (TvH)
2020-11-05 22:00:02 +0100untwisted(~untwisted@84.39.116.180) ()
2020-11-05 22:01:00 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
2020-11-05 22:01:01 +0100hackageprotocol-buffers-descriptor 2.4.17, hprotoc 2.4.17 (TvH): https://qbin.io/chevy-ago-djgz
2020-11-05 22:01:48 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-05 22:03:35 +0100ransom_(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-05 22:03:36 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-05 22:04:20 +0100asthasr(~asthasr@162.210.29.120) (Quit: asthasr)
2020-11-05 22:04:25 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2020-11-05 22:05:29 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-05 22:05:34 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Client Quit)
2020-11-05 22:07:09 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-11-05 22:08:01 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-05 22:10:15 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr)
2020-11-05 22:10:16 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-11-05 22:10:42 +0100u0_a298(~user@47.206.148.226)
2020-11-05 22:10:59 +0100jakob_(~textual@p200300f49f162200708c4f4194f529b6.dip0.t-ipconnect.de)
2020-11-05 22:12:34 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-11-05 22:13:29 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-05 22:13:49 +0100catchme(uid355354@gateway/web/irccloud.com/x-wmqwbwgtbuzhjsjg)
2020-11-05 22:15:22 +0100alp(~alp@2a01:e0a:58b:4920:b090:7fae:5afc:83b5)
2020-11-05 22:19:00 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu)
2020-11-05 22:19:48 +0100jakob_(~textual@p200300f49f162200708c4f4194f529b6.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…)
2020-11-05 22:21:27 +0100jakob_(~textual@p200300f49f162200ac46a31c3038c656.dip0.t-ipconnect.de)
2020-11-05 22:21:46 +0100mathepauker(~mathepauk@s91904426.blix.com)
2020-11-05 22:24:45 +0100geekosaur(ac3a5323@172.58.83.35) (Remote host closed the connection)
2020-11-05 22:27:03 +0100jakob_(~textual@p200300f49f162200ac46a31c3038c656.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…)
2020-11-05 22:27:22 +0100invaser(~Thunderbi@31.148.23.125) (Ping timeout: 256 seconds)
2020-11-05 22:27:53 +0100jbox(~atlas@unaffiliated/jbox)
2020-11-05 22:27:55 +0100ransom(~c4264035@undergraduate-jvossen-9690.mines.edu) (Quit: Textual IRC Client: www.textualapp.com)
2020-11-05 22:34:01 +0100hackagecompdoc 0.2.0.0 - Parse a Pandoc to a composite value. https://hackage.haskell.org/package/compdoc-0.2.0.0 (locallycompact)
2020-11-05 22:34:12 +0100mdunnio(~mdunnio@208.59.170.5) (Remote host closed the connection)
2020-11-05 22:34:21 +0100chaosmasttter(~chaosmast@p200300c4a7117c01e8fd3775638e9554.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
2020-11-05 22:34:42 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Ping timeout: 244 seconds)
2020-11-05 22:34:47 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-11-05 22:35:03 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 260 seconds)
2020-11-05 22:35:31 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 2.9)
2020-11-05 22:37:25 +0100jakob_(~textual@p200300f49f162200657391ee70880d24.dip0.t-ipconnect.de)
2020-11-05 22:39:18 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
2020-11-05 22:43:55 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr)
2020-11-05 22:44:20 +0100mdunnio(~mdunnio@208.59.170.5)
2020-11-05 22:44:26 +0100thir(~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-11-05 22:45:14 +0100grepcake(~artyom@77.234.203.49)
2020-11-05 22:45:57 +0100christo(~chris@81.96.113.213)
2020-11-05 22:47:52 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-11-05 22:48:39 +0100 <grepcake> Hi! Suppose, I have constraints on an existential type parameter and this parameter is not otherwise used in the constructor. How do I bind that type parameter when pattern-matchin? https://gist.github.com/grepcake/141d8f06e4328f3582371f5906eab243
2020-11-05 22:49:23 +0100 <grepcake> One way would be to add a dummy parameter to the constructor (Proxy, I guess?), but there a way to do it without adding parameters?
2020-11-05 22:51:14 +0100 <merijn> Not any ways that I'd recommend
2020-11-05 22:53:02 +0100 <dminuoso> grepcake: There is an alternate option, but that's still in a language proposal
2020-11-05 22:53:28 +0100 <grepcake> dminuoso: out of curiosity, what is it?
2020-11-05 22:53:28 +0100 <dminuoso> (And Im not sure whether you could actually bind that one there)
2020-11-05 22:53:55 +0100 <grepcake> merijn: is doing things like this a bad practice in general?
2020-11-05 22:54:09 +0100 <grepcake> Should I pass Dict on the value level instead?
2020-11-05 22:54:41 +0100 <dminuoso> grepcake: https://github.com/ghc-proposals/ghc-proposals/blob/type-applications-in-patterns/proposals/type-a…
2020-11-05 22:54:50 +0100 <dminuoso> grepcake: Dict is the only other option that I can see, yes.
2020-11-05 22:55:55 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
2020-11-05 22:56:25 +0100 <solonarv> ah, I was thinking about typeapps in patterns but couldn't remember if they were already in the language
2020-11-05 22:56:36 +0100 <grepcake> dminuoso: thanks, pretty interesting. examples seem to imply that it would be possible to bind param in my case
2020-11-05 22:56:48 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2020-11-05 22:56:53 +0100conal(~conal@107.181.166.217)
2020-11-05 22:57:00 +0100[[[]]]vevercak
2020-11-05 22:57:03 +0100 <dminuoso> grepcake: right, Im just not 100% confident about interaction with GADTs and constriants
2020-11-05 22:57:10 +0100nut(~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2020-11-05 22:57:22 +0100 <dminuoso> (but the `constraints` library is definitely an option)
2020-11-05 22:57:51 +0100 <grepcake> Yep, appparently I'll stick with it
2020-11-05 22:57:56 +0100 <dminuoso> Also, since you seem to be meddling with constraints, you could be interested in this: https://hackage.haskell.org/package/constraints-extras-0.3.0.2/docs/Data-Constraint-Extras.html
2020-11-05 22:58:11 +0100 <dminuoso> (*GADTs)
2020-11-05 22:58:37 +0100 <dminuoso> Just something to be aware of, I dont know your code whether its useful to you.
2020-11-05 22:58:53 +0100conal(~conal@107.181.166.217) (Client Quit)
2020-11-05 22:59:24 +0100 <dminuoso> Cale described it best as Pi for constraints.
2020-11-05 23:00:31 +0100knupfer(~Thunderbi@i59F7FF32.versanet.de) (Ping timeout: 246 seconds)
2020-11-05 23:01:34 +0100u0_a298(~user@47.206.148.226) (Ping timeout: 246 seconds)
2020-11-05 23:01:34 +0100 <grepcake> dminuoso: I'll definitely look into it, thanks!
2020-11-05 23:02:19 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2020-11-05 23:04:20 +0100Rudd0(~Rudd0@185.189.115.98)
2020-11-05 23:05:23 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 260 seconds)
2020-11-05 23:07:25 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 240 seconds)
2020-11-05 23:07:52 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2020-11-05 23:09:52 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-11-05 23:10:38 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr)
2020-11-05 23:13:27 +0100jbox(~atlas@unaffiliated/jbox) (Ping timeout: 272 seconds)
2020-11-05 23:13:34 +0100grepcake(~artyom@77.234.203.49) (Quit: Konversation terminated!)
2020-11-05 23:17:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-11-05 23:19:35 +0100ensyde(~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
2020-11-05 23:21:07 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-11-05 23:21:22 +0100twopoint718(~cjw@fsf/member/twopoint718) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-11-05 23:21:26 +0100 <bqv> folks, a question
2020-11-05 23:22:33 +0100 <bqv> would it be possible, through type magic, to have a way of working out what function arity a type has, and then transforming the result of that function type?
2020-11-05 23:22:53 +0100dbmikus__(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2020-11-05 23:23:02 +0100 <bqv> i.e composing a function to that function regardless of arity
2020-11-05 23:23:06 +0100dbmikus_(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Read error: Connection reset by peer)
2020-11-05 23:24:08 +0100 <Ariakenom> well i can call id
2020-11-05 23:24:11 +0100 <Ariakenom> :t id
2020-11-05 23:24:13 +0100 <lambdabot> a -> a
2020-11-05 23:24:14 +0100 <Ariakenom> 3 times
2020-11-05 23:24:20 +0100 <Ariakenom> > id id id 1
2020-11-05 23:24:23 +0100 <lambdabot> 1
2020-11-05 23:24:38 +0100 <Ariakenom> not 3 times. I meant with 3 arguments
2020-11-05 23:24:57 +0100 <bqv> of course, but id is a special case
2020-11-05 23:25:10 +0100 <bqv> it's possible to detect arity through type magic, but it won't work with id-like types
2020-11-05 23:25:21 +0100 <bqv> so i wonder if the rest is possible with that qualification too
2020-11-05 23:25:28 +0100 <glguy> It's not particularly special, no. functions don't have arity in general
2020-11-05 23:25:46 +0100 <bqv> ok say the result is an IO type
2020-11-05 23:25:46 +0100 <glguy> they always take one argument
2020-11-05 23:25:52 +0100 <bqv> does that help?
2020-11-05 23:26:17 +0100 <bqv> can't type-recursion use that as an terminating case?
2020-11-05 23:26:25 +0100 <glguy> If you restrict yourself to types of a form like that then you can do it with a typeclass
2020-11-05 23:26:52 +0100 <glguy> class Thing a; instance Thing b => Thing (a -> b); instance Thing (IO a)
2020-11-05 23:28:08 +0100 <bqv> neato
2020-11-05 23:28:10 +0100 <bqv> yeah, ok
2020-11-05 23:29:17 +0100fendor(~fendor@178.115.129.187.wireless.dyn.drei.com)
2020-11-05 23:29:21 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-11-05 23:30:16 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr) (Quit: Konversation terminated!)
2020-11-05 23:30:31 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr)
2020-11-05 23:32:32 +0100 <merijn> glguy: Sure they do
2020-11-05 23:32:40 +0100 <merijn> glguy: Functions have arity 1 :p
2020-11-05 23:33:01 +0100twopoint718(~cjw@fsf/member/twopoint718)
2020-11-05 23:34:29 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-11-05 23:34:46 +0100Tario(~Tario@201.192.165.173)
2020-11-05 23:34:48 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net)
2020-11-05 23:36:36 +0100Ariakenom(~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Read error: Connection reset by peer)
2020-11-05 23:36:54 +0100 <JohnnyL> merijn: :)
2020-11-05 23:37:46 +0100todda7(~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 260 seconds)
2020-11-05 23:39:18 +0100dwt(~dwt@c-98-200-58-177.hsd1.tx.comcast.net)
2020-11-05 23:39:45 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-11-05 23:40:17 +0100Gurkenglas__(~Gurkengla@unaffiliated/gurkenglas)
2020-11-05 23:40:33 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-11-05 23:40:44 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Client Quit)
2020-11-05 23:45:06 +0100sagax(~sagax_nb@213.138.71.146) (Remote host closed the connection)
2020-11-05 23:47:23 +0100Foritus(~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net) (Quit: ლ(ಠ益ಠლ) .:. <Ashley> my porn is hidden in a folder called "BBC Micro Emulator")
2020-11-05 23:51:00 +0100Varis(~Tadas@unaffiliated/varis)
2020-11-05 23:51:48 +0100conal(~conal@107.181.166.217)
2020-11-05 23:53:35 +0100Foritus(~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net)
2020-11-05 23:56:05 +0100conal(~conal@107.181.166.217) (Ping timeout: 240 seconds)
2020-11-05 23:56:26 +0100shatriff(~vitaliish@176.52.219.10)
2020-11-05 23:57:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-11-05 23:58:12 +0100jbox(~atlas@unaffiliated/jbox)