Home liberachat/#haskell: Logs Calendar

Logs on 2021-06-21 (liberachat/#haskell)

00:01:10 lbseale joins (~lbseale@user/ep1ctetus)
00:01:27 × lbseale quits (~lbseale@user/ep1ctetus) (Client Quit)
00:12:38 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
00:18:14 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:7c55:3c65:74e1:3dc5) (Ping timeout: 265 seconds)
00:19:21 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
00:20:01 unyu joins (~pyon@user/pyon)
00:20:43 lbseale joins (~lbseale@user/ep1ctetus)
00:21:26 hmmmas joins (~chenqisu1@183.217.200.246)
00:23:33 × chomwitt quits (~Pitsikoko@2a02:587:dc0b:ff00:c813:70d9:31b2:b1b9) (Ping timeout: 265 seconds)
00:25:53 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
00:26:28 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
00:34:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:37:25 fef joins (~thedawn@user/thedawn)
00:39:44 × Ariakenom quits (~Ariakenom@2001:9b1:efb:fc00:28e5:866c:bfd1:85d2) (Read error: Connection reset by peer)
00:41:00 × hegstal quits (~hegstal@2a02:c7f:7604:8a00:3573:4e54:4d99:437f) (Remote host closed the connection)
00:43:05 × yaroot quits (~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat)
00:43:27 machinedgod joins (~machinedg@24.105.81.50)
00:43:49 yaroot joins (~yaroot@6.3.30.125.dy.iij4u.or.jp)
00:55:39 sheepduck joins (~sheepduck@user/sheepduck)
00:57:32 <dsal> "I can't quite figure out how to express my ACL stuff as a property test." *figured it out* *found bug in ACL code* *found bug in manual ACL test that allowed bug*
00:59:34 <monochrom> "It's bugs all the way down" >:)
01:03:13 × MQ-17J quits (~MQ-17J@8.6.144.186) (Ping timeout: 265 seconds)
01:03:14 jasonu joins (~user@166.70.242.157)
01:07:35 <cdsmith> I want the first thread to call initClassIfNeeded for a given class to run a setup action, and other threads that call with the same class block until that thread finishes initializing. My solution at https://github.com/cdsmith/HMock/blob/main/src/Test/HMock/Internal/MockT.hs#L98 uses two TVars and like 25 lines of code. Is there an easier way?
01:07:37 hammond2 joins (~abner@gateway02.insomnia247.nl)
01:08:30 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
01:10:03 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
01:10:54 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:12:01 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:12:28 jakalx parts (~jakalx@base.jakalx.net) ()
01:12:33 × saolof quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Quit: Leaving)
01:13:51 jakalx joins (~jakalx@base.jakalx.net)
01:18:50 GIANTWORLDKEEPER joins (~pjetcetal@2.95.227.207)
01:21:33 × mikail quits (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) (Ping timeout: 265 seconds)
01:25:54 <jasonu> Hi everyone, I'm a Haskell noob who is just about to finish up working through Graham Hutton's book "Programming in Haskell" 2nd Edition. I'm looking for a good second book to further my skills. I was thinking about "Book of "
01:27:03 <jasonu> Oops. I was thinking about "Book of Monads" or perhaps "Haskell in Depth". Any comments or suggestions from the community. I'm also open to project ideas.
01:30:20 mpt joins (~tom@2a02:908:1862:49e0::3)
01:35:31 × xff0x quits (~xff0x@2001:1a81:5381:2000:e1b5:6bc2:be6a:4590) (Ping timeout: 268 seconds)
01:37:19 xff0x joins (~xff0x@2001:1a81:53cb:7800:33aa:1278:7cdb:992c)
01:39:50 mnrmnaugh parts (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Leaving)
01:39:55 mnrmnaughmnrgle joins (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
01:39:55 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 265 seconds)
01:42:19 × mnrmnaughmnrgle quits (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Remote host closed the connection)
01:42:39 mnrmnaugh joins (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
01:42:51 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
01:44:46 vicfred joins (~vicfred@user/vicfred)
01:46:26 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
01:46:30 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
01:48:34 × hammond2 quits (~abner@gateway02.insomnia247.nl) (Changing host)
01:48:34 hammond2 joins (~abner@user/hammond2)
01:48:55 hammond2 is now known as hammond_
01:49:36 hammond_ is now known as proscan
01:50:18 proscan is now known as hammond_
01:50:56 AgentM joins (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
02:01:34 fef joins (~thedawn@user/thedawn)
02:01:36 × _73 quits (~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Remote host closed the connection)
02:01:51 _73 joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net)
02:02:43 <Axman6> jasonu: project recommendations is always hard, that mostly depends on what you're interested in
02:04:12 × teaSlurper quits (~chris@81.96.113.213) (Remote host closed the connection)
02:05:54 × trent1 quits (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 240 seconds)
02:08:01 <_73> Type1 = `ContT PS.ProgramState (ExceptT Error (State PS.ProgramState)) Value`. `Type2 = ExceptT Error (State PS.ProgramState) Value`. I am having trouble understanding what I have gained by adding the extra ContT monad to my transformer stack. I was able to rewrite all of my code to use Type1, simply by doing `f = ContT $ \k -> do ... next <- k $ ValueConstructer a; pure next`. It is not clear to me though what advantage I gain from
02:08:01 <_73> using Type1 versus Type2. I have only done this because a book I am reading using continuations and I want to try to map my project closer to this book.
02:09:06 teaSlurper joins (~chris@81.96.113.213)
02:13:45 × teaSlurper quits (~chris@81.96.113.213) (Ping timeout: 265 seconds)
02:13:56 <Axman6> Why did you make the change in the first place?
02:14:31 <jasonu> Axman6: I'm interested in using Haskell for webdev.
02:15:28 lavaman joins (~lavaman@98.38.249.169)
02:15:45 <_73> Axman6: Experimental mostly
02:16:06 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 244 seconds)
02:18:03 vicfred_ joins (~vicfred@fixed-187-191-48-110.totalplay.net)
02:20:15 × vicfred_ quits (~vicfred@fixed-187-191-48-110.totalplay.net) (Client Quit)
02:21:02 × vicfred quits (~vicfred@user/vicfred) (Ping timeout: 265 seconds)
02:23:14 <Axman6> jasonu: writing web servers in haskell is pretty fun, I personally really like using Servant as it lets me move a lot of the definition of the interface into types, which brings a lot of advantages (thinkg like automatic swagger docs, JS api generation etc.)
02:29:33 <Axman6> things*
02:32:11 <jasonu> Axman6: I've looked into Servant and it seems quite powerful, but I think I'm not at that level I have a weak grasp of Monads. I still need to learn about State, Monad Transformers and half a dozen other things.
02:34:03 × mpt quits (~tom@2a02:908:1862:49e0::3) (Ping timeout: 265 seconds)
02:36:33 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:36:33 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (zinc.libera.chat (Nickname regained by services)))
02:36:33 finn_elija is now known as FinnElija
02:37:49 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
02:44:33 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
02:46:47 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3-dev)
02:47:08 × slack1256 quits (~slack1256@181.203.98.105) (Ping timeout: 265 seconds)
02:48:26 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Read error: Connection reset by peer)
02:50:07 <Cajun> janonu: i read that book too! its very good; i moved onto Parallel and Concurrent Programming in Haskell and i recommend it
02:50:17 <Cajun> jasonu * typo
02:51:28 <Cajun> but you cant really approach it without firmly understanding the language, so make sure you understand the second part of Programming in Haskell as thats crucial
02:52:16 <Cajun> sadly the textbook lacks as many examples as Hutton's, but its still a great introduction to parallelization
02:53:59 <jasonu> Thanks Cajun. I do plan to read that one as well...sometime.
02:54:03 <_73> jasonu: I wrote a website in haskell as a intermediate haskell noob. I did not understand monads or transformers. That project helped me a lot to learn these concepts though. I used Yesod because it comes with a book.
02:54:51 v01d4lph4 joins (~v01d4lph4@user/v01d4lph4)
02:56:45 trent1 joins (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
02:57:17 × td_ quits (~td@94.134.91.60) (Ping timeout: 265 seconds)
02:57:54 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
02:58:07 × Jonno_FTW quits (~come@api.carswap.me) (Changing host)
02:58:07 Jonno_FTW joins (~come@user/jonno-ftw/x-0835346)
02:59:05 td_ joins (~td@94.134.91.150)
03:01:10 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
03:02:54 <sm[m]> jasonu: time to work on some projects!
03:04:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:05:57 × altern quits (~altern@altern.corbina.com.ua) (Ping timeout: 265 seconds)
03:06:03 <jasonu> _73: I kinda want something to help fill in gaps in my knowledge while doing project work. The Yesod book looks like it could lead to a good project rather quickly.
03:07:19 <jasonu> sm[m]: Yeah, writing code is the only way to learn, and at some point you just have to dive in.
03:08:13 lavaman joins (~lavaman@98.38.249.169)
03:08:24 yd502 joins (~yd502@180.168.212.6)
03:13:58 × fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
03:18:09 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:22:17 <sm[m]> Yesod is great. I've got a foss yesod app if you'd like to try and contribute to an existing code base
03:22:17 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
03:22:46 Feuermagier joins (~Feuermagi@user/feuermagier)
03:23:48 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
03:24:42 ukari joins (~ukari@user/ukari)
03:24:59 <sm[m]> yesod apps aren't the easiest place to start, but tweaking a working app can be rewarding
03:26:00 wanagnuj joins (~wanagnuj@101.95.97.158)
03:26:01 × wanagnuj quits (~wanagnuj@101.95.97.158) (Client Quit)
03:26:40 MQ-17J joins (~MQ-17J@8.6.144.186)
03:27:16 wanagnuj joins (~wanagnuj@101.95.97.158)
03:27:18 × v01d4lph4 quits (~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
03:28:10 × wanagnuj quits (~wanagnuj@101.95.97.158) (Client Quit)
03:28:43 wanagnuj joins (~wanagnuj@101.95.97.158)
03:29:08 × wanagnuj quits (~wanagnuj@101.95.97.158) (Client Quit)
03:30:41 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 258 seconds)
03:34:56 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
03:35:36 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
03:36:49 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds)
03:36:50 Lord_of_Life_ is now known as Lord_of_Life
03:39:26 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
03:39:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
03:47:02 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
03:47:12 × alx741 quits (~alx741@181.196.68.152) (Quit: alx741)
03:47:54 econo joins (uid147250@user/econo)
03:59:49 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
04:00:02 Sgeo_ joins (~Sgeo@ool-18b9875e.dyn.optonline.net)
04:00:02 jasonu` joins (~user@166.70.242.157)
04:00:12 phma_ joins (phma@2001:5b0:210d:d028:dead:9920:575e:b71e)
04:00:23 wroathe_ joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
04:00:28 yd502_ joins (~yd502@180.168.212.6)
04:00:51 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
04:00:55 tzh_ joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
04:01:30 eggplant_ joins (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
04:02:05 bontaq` joins (~user@ool-18e47f8d.dyn.optonline.net)
04:02:28 ikex1 joins (ash@user/ikex)
04:02:33 fiddlerwoaroof_ joins (~fiddlerwo@user/fiddlerwoaroof)
04:02:36 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
04:02:49 Feuermagier_ joins (~Feuermagi@2a02:2488:4211:3400:5def:8486:9e4:b49a)
04:02:54 nurupo_ joins (~nurupo.ga@user/nurupo)
04:03:05 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 244 seconds)
04:03:08 tomsmeding_ joins (~tomsmedin@2a03:b0c0:0:1010::767:3001)
04:03:08 econo_ joins (uid147250@user/econo)
04:03:19 hnOsmium0001_ joins (uid453710@id-453710.stonehaven.irccloud.com)
04:03:26 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
04:03:58 howdy` joins (~user@2001:8003:2432:d501:1ea:381d:5464:1a19)
04:04:28 × moet quits (~moet@172.58.27.142) (Ping timeout: 265 seconds)
04:04:29 Ferdiran1 joins (~somebody@2001:4c78:2012:5000::2)
04:04:44 np joins (~nerdypepp@user/nerdypepper)
04:04:47 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
04:04:47 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (copper.libera.chat (Nickname regained by services)))
04:04:47 finn_elija is now known as FinnElija
04:04:57 ezzieygu1wuf joins (~Unknown@user/ezzieyguywuf)
04:05:03 trent2 joins (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
04:05:05 euandreh_ joins (~euandreh@2804:14c:33:9fe5:ee71:32ea:12e0:378c)
04:05:12 jonatan_ joins (~nate@h77-53-70-163.cust.a3fiber.se)
04:05:18 td__ joins (~td@94.134.91.150)
04:05:29 amirouche` joins (~amirouche@user/amirouche)
04:05:31 xff0x_ joins (~xff0x@2001:1a81:53cb:7800:33aa:1278:7cdb:992c)
04:06:05 moet joins (~moet@172.58.27.142)
04:06:11 derelict_ joins (~derelict@user/derelict)
04:07:07 RemiYuko joins (~licht@user/akechishiro)
04:07:32 teaSlurper joins (~chris@81.96.113.213)
04:09:34 jackhill_ joins (~jackhill@kalessin.dragonsnail.net)
04:09:36 × econo quits (uid147250@user/econo) (*.net *.split)
04:09:36 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (*.net *.split)
04:09:36 × Feuermagier quits (~Feuermagi@user/feuermagier) (*.net *.split)
04:09:36 × yd502 quits (~yd502@180.168.212.6) (*.net *.split)
04:09:36 × td_ quits (~td@94.134.91.150) (*.net *.split)
04:09:36 × trent1 quits (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (*.net *.split)
04:09:36 × xff0x quits (~xff0x@2001:1a81:53cb:7800:33aa:1278:7cdb:992c) (*.net *.split)
04:09:36 × jakalx quits (~jakalx@base.jakalx.net) (*.net *.split)
04:09:36 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (*.net *.split)
04:09:36 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (*.net *.split)
04:09:36 × jasonu quits (~user@166.70.242.157) (*.net *.split)
04:09:36 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (*.net *.split)
04:09:36 × nerdypepper quits (~nerdypepp@user/nerdypepper) (*.net *.split)
04:09:36 × ikex quits (ash@user/ikex) (*.net *.split)
04:09:36 × tomsmeding quits (~tomsmedin@tomsmeding.com) (*.net *.split)
04:09:36 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (*.net *.split)
04:09:36 × jackhill quits (~jackhill@kalessin.dragonsnail.net) (*.net *.split)
04:09:36 × aveltras[m] quits (~aveltrasm@2001:470:69fc:105::3ef9) (*.net *.split)
04:09:36 × Sgeo quits (~Sgeo@user/sgeo) (*.net *.split)
04:09:36 × nurupo quits (~nurupo.ga@user/nurupo) (*.net *.split)
04:09:36 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (*.net *.split)
04:09:36 × bontaq quits (~user@ool-18e47f8d.dyn.optonline.net) (*.net *.split)
04:09:36 × phma quits (phma@2001:5b0:210d:d028:dead:9920:575e:b71e) (*.net *.split)
04:09:36 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (*.net *.split)
04:09:36 × euandreh quits (~euandreh@2804:14c:33:9fe5:c617:f0e4:6f11:e3af) (*.net *.split)
04:09:36 × howdy quits (~user@2001:8003:2432:d501:71e9:d3d3:3664:52d2) (*.net *.split)
04:09:36 × img quits (~img@user/img) (*.net *.split)
04:09:36 × derelict quits (~derelict@user/derelict) (*.net *.split)
04:09:36 × rawles quits (~o@sputnik.rawles.net) (*.net *.split)
04:09:36 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (*.net *.split)
04:09:36 × jonatan quits (~nate@h77-53-70-163.cust.a3fiber.se) (*.net *.split)
04:09:36 × amirouche quits (~amirouche@user/amirouche) (*.net *.split)
04:09:36 × AkechiShiro quits (~licht@user/akechishiro) (*.net *.split)
04:09:36 × Ferdirand quits (~somebody@2001:4c78:2012:5000::2) (*.net *.split)
04:09:36 × fiddlerwoaroof quits (~fiddlerwo@user/fiddlerwoaroof) (*.net *.split)
04:09:36 econo_ is now known as econo
04:09:37 nurupo_ is now known as nurupo
04:09:37 ikex1 is now known as ikex
04:09:41 hnOsmium0001_ is now known as hnOsmium0001
04:09:45 × wroathe_ quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
04:09:59 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
04:10:52 phma_ is now known as phma
04:11:52 × sheepduck quits (~sheepduck@user/sheepduck) (Quit: Leaving)
04:12:03 sheepduck joins (~sheepduck@user/sheepduck)
04:12:12 × teaSlurper quits (~chris@81.96.113.213) (Ping timeout: 265 seconds)
04:16:36 × hmmmas quits (~chenqisu1@183.217.200.246) (Quit: Leaving.)
04:16:43 img joins (~img@user/img)
04:17:08 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
04:18:36 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
04:19:27 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 265 seconds)
04:20:01 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
04:20:08 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
04:23:09 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
04:25:29 vonfry joins (~user@240e:688:3:1010:5942:1e2c:6233:6863)
04:32:40 × Scotty_Trees quits (~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) (Quit: Leaving)
04:33:32 <jackdk> I stumbled across the following type while trying to write a trace function for an evaluator for a language I'm working on `data Trace m a = Done a | Step a (m (Trace m a))`. It looks like `Free m a` with an additional value - does it have a canonical name?
04:34:26 wei2912 joins (~wei2912@112.199.250.21)
04:37:23 <dibblego> Ap Either (Cofree f)
04:39:12 × sheepduck quits (~sheepduck@user/sheepduck) (Quit: Leaving)
04:46:47 <jackdk> Ap?
04:47:05 <jackdk> the only Ap I know is in Data.Monoid and has the wrong kind
04:47:13 <dibblego> newtype Ap f g a = Ap (f a (g a))
04:47:39 × jasonu` quits (~user@166.70.242.157) (Remote host closed the connection)
04:47:51 jasonu` joins (~user@166.70.242.157)
04:48:57 <dibblego> I don't know what it is; almost NonEmptyList
04:49:16 × AgentM quits (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Ping timeout: 258 seconds)
04:51:41 aveltras[m] joins (~aveltrasm@2001:470:69fc:105::3ef9)
04:52:45 × jasonu` quits (~user@166.70.242.157) (Ping timeout: 268 seconds)
04:54:44 × yd502_ quits (~yd502@180.168.212.6) (Ping timeout: 265 seconds)
05:00:08 × ChanServ quits (ChanServ@services.libera.chat) (shutting down)
05:00:11 × cheater quits (~Username@user/cheater) (Remote host closed the connection)
05:01:17 × bilegeek quits (~bilegeek@2600:1008:b017:63a6:c26d:d119:faaa:a6d7) (Quit: Leaving)
05:05:04 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
05:08:45 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
05:11:54 × finsternis quits (~X@23.226.237.192) (Remote host closed the connection)
05:14:42 × azeem quits (~azeem@dynamic-adsl-94-34-49-60.clienti.tiscali.it) (Remote host closed the connection)
05:14:44 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
05:14:45 × fabfianda quits (~fabfianda@net-109-116-251-109.cust.vodafonedsl.it) (Remote host closed the connection)
05:14:55 ChanServ joins (ChanServ@services.libera.chat)
05:14:55 osmium.libera.chat sets mode +o ChanServ
05:15:40 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
05:16:01 azeem joins (~azeem@dynamic-adsl-94-34-49-60.clienti.tiscali.it)
05:16:23 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
05:17:06 × vonfry quits (~user@240e:688:3:1010:5942:1e2c:6233:6863) (Quit: ERC (IRC client for Emacs 27.2))
05:17:47 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
05:20:17 <Axman6> have there been any proposals for a monadic case syntax? something like case! (something foo bar :: m BaZ) of Baz x -> ...; Quux y -> ...; which would be equivalent to something foo bar >>= \case ...
05:21:17 <shachaf> I'd probably rather see the (<- x) syntax.
05:21:28 jneira joins (~jneira@212.8.115.226)
05:21:44 <Axman6> what would that look like?
05:21:48 <nshepperd> would it really be an improvement over >>= \case?
05:21:53 <shachaf> https://github.com/ghc-proposals/ghc-proposals/pull/64
05:23:49 <Axman6> hmm, that's cute, though the question about ordering of evaluation is a good one, I'd hate to have to write flip foo (<- y) (<- x) z to get y to run before x just because foo was definied in the "wrong" order
05:24:03 <Axman6> but, I would probably use it a lot if it were available
05:24:10 <shachaf> Then don't, just do it the same way you do in C.
05:24:17 <nshepperd> i would only use it when ordering doesn't matter
05:24:34 <shachaf> You write f(g(), h()), but if you care about the order, you write "int x = g(); int y = h(); f(x, y);"
05:24:47 yd502_ joins (~yd502@180.168.212.6)
05:25:30 <nshepperd> to enforce this, ghc should desugar the bindings into different possible orderings on different days of the week
05:25:51 × yd502_ quits (~yd502@180.168.212.6) (Client Quit)
05:26:18 <shachaf> Anyway, it solves your case issue.
05:28:08 <nshepperd> https://github.com/ghc-proposals/ghc-proposals/pull/64#issuecomment-318910111 yikes
05:28:11 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
05:29:13 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
05:29:35 jneira joins (~jneira@212.8.115.226)
05:33:31 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:35:01 geekosaur joins (~geekosaur@xmonad/geekosaur)
05:35:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:55:07 teaSlurper joins (~chris@81.96.113.213)
05:55:46 zeenk joins (~zeenk@82.76.113.130)
05:56:02 × Morrow_ quits (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 252 seconds)
06:02:06 × bontaq` quits (~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 258 seconds)
06:03:47 <Rembane> tomsmeding_: I can totally see why those parts feel odd to you. It just struck me! There's another paper where they reason about generating highly recursive types in a more structured way: https://octopi.chalmers.se/2018/11/11/dragen/
06:03:48 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer)
06:04:07 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
06:04:17 × MQ-17J quits (~MQ-17J@8.6.144.186) (Ping timeout: 268 seconds)
06:04:36 MQ-17J joins (~MQ-17J@8.9.230.29)
06:05:40 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
06:06:54 × tput quits (~tim@S0106a84e3fe54613.ed.shawcable.net) (Ping timeout: 264 seconds)
06:07:24 lavaman joins (~lavaman@98.38.249.169)
06:08:28 michalz joins (~michalz@185.246.204.40)
06:09:23 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
06:10:42 × Feuermagier_ quits (~Feuermagi@2a02:2488:4211:3400:5def:8486:9e4:b49a) (Quit: Leaving)
06:14:25 Meh joins (~Meh@202.14.120.214)
06:14:33 qbt joins (~edun@user/edun)
06:14:48 Meh is now known as Guest3331
06:14:50 × Guest3331 quits (~Meh@202.14.120.214) (Client Quit)
06:14:56 awth13 joins (~user@user/awth13)
06:16:08 Meh joins (~Meh@202.14.120.214)
06:16:32 Meh is now known as Guest5827
06:16:55 × teaSlurper quits (~chris@81.96.113.213) (Remote host closed the connection)
06:17:21 × Guest5827 quits (~Meh@202.14.120.214) (Client Quit)
06:17:23 v01d4lph4 joins (~v01d4lph4@user/v01d4lph4)
06:19:05 × MQ-17J quits (~MQ-17J@8.9.230.29) (Ping timeout: 268 seconds)
06:20:50 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
06:21:17 jneira joins (~jneira@212.8.115.226)
06:21:45 teaSlurper joins (~chris@81.96.113.213)
06:22:25 × v01d4lph4 quits (~v01d4lph4@user/v01d4lph4) (Ping timeout: 258 seconds)
06:22:43 Guest9 joins (~Guest9@43.250.158.40)
06:23:29 × unyu quits (~pyon@user/pyon) (Quit: WeeChat 3.2)
06:25:42 × teaSlurper quits (~chris@81.96.113.213) (Read error: Connection reset by peer)
06:26:00 teaSlurper joins (~chris@81.96.113.213)
06:31:00 leeb_ joins (~leeb@KD111239158072.au-net.ne.jp)
06:33:55 × leeb quits (~leeb@KD111239153103.au-net.ne.jp) (Ping timeout: 258 seconds)
06:34:52 unyu joins (~pyon@user/pyon)
06:35:50 × trent2 quits (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 268 seconds)
06:35:59 × unyu quits (~pyon@user/pyon) (Client Quit)
06:38:56 deshalb joins (~deshalb@user/deshalb)
06:40:00 trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net)
06:40:49 niko is now known as o
06:43:21 lortabac joins (~lortabac@2a01:e0a:541:b8f0:9f46:523f:c74b:90e0)
06:43:30 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds)
06:45:16 MQ-17J joins (~MQ-17J@8.9.230.29)
06:48:18 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
06:52:36 chele joins (~chele@user/chele)
06:54:13 Morrow_ joins (~MorrowM_@147.161.13.127)
07:01:27 moet_ joins (~moet@172.58.19.92)
07:04:18 chomwitt joins (~Pitsikoko@2a02:587:dc0b:ff00:c813:70d9:31b2:b1b9)
07:04:35 × moet quits (~moet@172.58.27.142) (Ping timeout: 258 seconds)
07:06:52 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
07:08:22 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
07:08:39 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
07:11:42 Morrow joins (~MorrowM_@147.161.13.127)
07:12:06 <Unhammer> hm, why isn't takeEnd part of Data.Sequence
07:12:07 × MQ-17J quits (~MQ-17J@8.9.230.29) (Ping timeout: 268 seconds)
07:14:35 × Morrow_ quits (~MorrowM_@147.161.13.127) (Ping timeout: 268 seconds)
07:14:56 moet joins (~moet@172.58.38.233)
07:15:28 <Unhammer> guess it'd be something like Seq.foldrWithIndex (\_ e (!c,a)->if c<n then (c+1, e:<|a) else (c,a))
07:16:23 <maerwald[m]> That looks like a proposal similarly brittle and confusing like ApplicativeDo
07:16:28 × moet_ quits (~moet@172.58.19.92) (Ping timeout: 258 seconds)
07:20:48 <nshepperd> Unhammer: takeEnd? why not just use Seq.drop (Seq.length xs - n)
07:23:03 <nshepperd> The length is cached so that should be about as fast as it can get
07:23:56 <nshepperd> it is odd that the module doesn't have takeEnd and dropEnd for convenience though
07:26:04 tomsmeding_ is now known as tomsmeding
07:27:35 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:28:24 <tomsmeding> Rembane: thanks for the reference! will read later :)
07:28:39 <tomsmeding> Sweden is active in this area it seems
07:31:51 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 268 seconds)
07:33:04 geekosaur joins (~geekosaur@xmonad/geekosaur)
07:34:30 nschoe joins (~quassel@178.251.84.79)
07:35:07 Boomerang joins (~Boomerang@xd520f68c.cust.hiper.dk)
07:35:34 pera joins (~pera@154.red-79-155-45.dynamicip.rima-tde.net)
07:35:58 pera is now known as Guest8323
07:37:24 × teaSlurper quits (~chris@81.96.113.213) (Remote host closed the connection)
07:37:24 hmmmas joins (~chenqisu1@183.217.200.246)
07:38:32 gnoo joins (~gnoo@user/gnoo)
07:39:49 <Unhammer> nshepperd, I assuming Seq.drop would "start from the beginning", but now I see the docs say O(log(min(i,n−i))) which I guess means it does the smart thing and picks the end it's closest to :)
07:39:54 <Unhammer> *I was assuming
07:40:30 <nshepperd> it uses a clever thing similar to binary search
07:40:41 <Unhammer> Thanks (though I still think it'd be nice to have takeEnd/dropEnd there for convenience)
07:41:09 <nshepperd> hence the logarithmic time
07:41:43 × deshalb quits (~deshalb@user/deshalb) (Ping timeout: 268 seconds)
07:41:45 <int-e> it's kind of intrinsic to the measured finger trees
07:46:25 cfricke joins (~cfricke@user/cfricke)
07:46:42 ubert joins (~Thunderbi@p200300ecdf259dd4ad9b8920565e1743.dip0.t-ipconnect.de)
07:48:40 × beka quits (~beka@104.193.170-244.PUBLIC.monkeybrains.net) (Ping timeout: 258 seconds)
07:49:07 × Morrow quits (~MorrowM_@147.161.13.127) (Ping timeout: 268 seconds)
07:50:19 <Unhammer> nah I could easily write a bad drop function that goes slowly from the start
07:50:47 gehmehgeh joins (~user@user/gehmehgeh)
07:51:01 <Unhammer> I've got lots of experience with taking performant data structures and making them go slowly
07:51:27 × berberman quits (~berberman@user/berberman) (Ping timeout: 244 seconds)
07:52:11 berberman joins (~berberman@user/berberman)
07:52:31 × tzh_ quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
07:52:49 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
07:53:49 × hmmmas quits (~chenqisu1@183.217.200.246) (Quit: Leaving.)
07:57:53 × fm quits (~fm@user/fm) (Quit: fm)
08:00:54 × octeep quits (~octeep@n219077212239.netvigator.com) (Ping timeout: 264 seconds)
08:01:16 × acid quits (~acid@user/acid) (Ping timeout: 244 seconds)
08:02:20 acid joins (~acid@user/acid)
08:03:40 × Guest8323 quits (~pera@154.red-79-155-45.dynamicip.rima-tde.net) (Quit: leaving)
08:03:54 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
08:03:56 octeep joins (~octeep@42-2-220-152.static.netvigator.com)
08:04:30 jneira joins (~jneira@212.8.115.226)
08:06:16 kayprish joins (~kayprish@46.240.143.86)
08:06:22 elf_fortrez joins (~elf_fortr@adsl-64-237-239-58.prtc.net)
08:06:40 hendursa1 joins (~weechat@user/hendursaga)
08:08:04 × Guest9 quits (~Guest9@43.250.158.40) (Ping timeout: 265 seconds)
08:08:52 × jneira quits (~jneira@212.8.115.226) (Client Quit)
08:09:10 jneira joins (~jneira@212.8.115.226)
08:09:20 <int-e> Unhammer: but if you do the natural thing, which is to look at the current node in the fingertree and its parts (each of which has a known length), and skip over all the parts that are shorter than your target length... you'll almost automatically end up with that complexity.
08:09:30 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:09:57 × lemmih quits (~lemmih@2406:3003:2072:44:925e:d7ab:50d2:4457) (Remote host closed the connection)
08:10:15 lemmih joins (~lemmih@2406:3003:2072:44:9bcd:6adc:313d:18f9)
08:10:24 <int-e> And that was my point: you get that complexity even if you don't try to look at the finger tree from the "shorter" end.
08:13:30 hegstal joins (~hegstal@2a02:c7f:7604:8a00:7fb:5bd8:2599:2fdb)
08:17:32 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:17:32 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:17:44 jumper149 joins (~jumper149@80.240.31.34)
08:18:23 × Sgeo_ quits (~Sgeo@ool-18b9875e.dyn.optonline.net) (Read error: Connection reset by peer)
08:18:49 maroloccio joins (~marolocci@186.210.216.126)
08:19:13 × hegstal quits (~hegstal@2a02:c7f:7604:8a00:7fb:5bd8:2599:2fdb) (Remote host closed the connection)
08:19:56 hegstal joins (~hegstal@2a02:c7f:7604:8a00:2a76:42b9:78db:d162)
08:20:24 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
08:22:38 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
08:23:00 jneira joins (~jneira@212.8.115.226)
08:24:08 fendor joins (~fendor@178.115.131.43.wireless.dyn.drei.com)
08:25:02 × jneira quits (~jneira@212.8.115.226) (Client Quit)
08:25:05 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds)
08:25:18 jneira joins (~jneira@212.8.115.226)
08:26:51 maroloccio1 joins (~marolocci@189.15.9.54)
08:29:22 × maroloccio quits (~marolocci@186.210.216.126) (Ping timeout: 246 seconds)
08:31:04 × eggplant_ quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Remote host closed the connection)
08:31:48 <merijn> Unhammer: Don't we all? ;)
08:31:59 Scotty_Trees joins (~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net)
08:33:48 kuribas joins (~user@ptr-25vy0i7yslxo8ej7h6j.18120a2.ip6.access.telenet.be)
08:35:29 <siraben> finger trees <3
08:36:10 <siraben> are there structures that can be used to replace mutable graphs in imperative languages? problems involving mutable graphs are usually quite difficult in Haskell
08:37:22 <merijn> The answer is always arrays :p
08:37:25 × qrpnxz quits (abc4f95c31@user/qrpnxz) (Quit: Gateway shutdown)
08:37:41 qrpnxz joins (~qrpnxz@user/qrpnxz)
08:37:47 <merijn> If there is one lesson I have taken away from HPC it's that arrays are the universal HPC data structure :p
08:37:54 <tomsmeding> re:finger trees: just want to post this very nice explanation of them for those who haven't seen it yet https://www.cs.tufts.edu/~nr/cs257/archive/koen-claessen/finger-trees.pdf
08:38:14 <merijn> And if you're not using arrays...well, better figure out a way to start :p
08:38:45 <EvanR> "everything is arrays", this is where conal comes to knock some sense into us
08:39:34 <merijn> EvanR: Naah, that's APL talking
08:39:48 <merijn> HPC isn't "everything is arrays", but "everything *should be* arrays" :p
08:39:49 involans joins (~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net)
08:40:49 <EvanR> is this because architecture is built to cache, prefetch, stream, and SIMD operate on arrays
08:41:22 <merijn> Like that one time I had a perfectly optimal, single pass O(n log n) algorithm and I made it 7x faster, by adding a double pass on top of it and replacing heaps with a single massive array :p
08:41:26 <merijn> EvanR: Pretty much
08:41:51 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
08:42:19 jneira joins (~jneira@212.8.115.226)
08:42:28 <merijn> EvanR: O(n) where you are basically linearly going over a massive array will almost always beat some fancy optimal data structure where you have dynamic allocations, pointer chasing, etc.
08:42:37 <int-e> merijn: it's embarrasing how often the stupidest approach is the fastest because CPUs coevolve with stupid algorithms (if you want to be cynical about it ;-) )
08:42:51 <siraben> merijn: Data.Array is enough or should I use Data.Vector?
08:42:57 <siraben> Hm, always arrays? aaaa
08:43:11 <merijn> siraben: tbh, either are a massive improvement overy lists
08:43:17 <int-e> siraben: yes, arrays, especially if you get sequential access to them
08:43:24 <merijn> siraben: Personally I prefer Vector for 1D
08:43:32 <int-e> or the arrays are small enough to (mostly) fit into the cache
08:43:38 <merijn> siraben: Array is more flexible (as it allows custom indexing schemes)
08:43:45 <shachaf> int-e: Do you think CPUs could do much better?
08:43:48 <siraben> Yeah I already avoid lists whenever doing random access, but arrays are awkward enough that sometimes I just resort to Map (Int,Int) a
08:43:58 <merijn> siraben: tbh, Map is surprisingly performant
08:44:01 <siraben> multidimensional arrays, that is
08:44:18 <merijn> siraben: Like, I've had Map with millions of elements doing lookups in tight loops and it performs pretty well
08:44:53 <siraben> I see
08:44:57 <merijn> Of course, there's also the matter of "does performance matter here?"
08:45:19 × kayprish quits (~kayprish@46.240.143.86) (Read error: Connection reset by peer)
08:45:22 <merijn> Like, if your code is doing disk/network IO there's basically no point in optimising compute to be faster than the time you're waiting for IO anyway
08:45:44 <merijn> (well, there's some if the machine is shared or whatever, but you get what I mean)
08:46:03 <EvanR> it's like drive faster so we can get to the red light sooner
08:46:22 <merijn> EvanR: Now I'm imagining "green waves" for compute xD
08:46:39 <int-e> shachaf: I don't know. Maybe RAM is not the right abstraction for advanced algorithms :P
08:47:00 × jneira quits (~jneira@212.8.115.226) (Client Quit)
08:47:01 <kuribas> merijn: wouldn't it be better to combine arrays with other structures (like trees or lists)?
08:47:19 × moet quits (~moet@172.58.38.233) (Ping timeout: 258 seconds)
08:47:20 jneira joins (~jneira@212.8.115.226)
08:47:21 <merijn> kuribas: In what scenario?
08:47:22 <siraben> merijn: yeah, this is in solving algorithmic type problems
08:47:22 <EvanR> array mapped trie
08:47:24 <kuribas> merijn: for example, chunked lists for time series.
08:47:28 <siraben> e.g. AOC, Codeforces, etc.
08:47:31 <siraben> Google Code Jam
08:47:56 <siraben> I have a conservative template for these types of problems
08:47:57 <siraben> https://github.com/siraben/haoc-2020/blob/master/template.hs
08:48:15 <merijn> kuribas: Why would a chunked list be better than just an array?
08:48:20 <siraben> but in particular I should avoid other libraries whenever possible, even Data.Vector isn't always on the autograder
08:48:34 <siraben> merijn: cache reasons?
08:48:37 <kuribas> merijn: less copying
08:48:47 <merijn> kuribas: That only applies if you mutate
08:48:59 <kuribas> merijn: also if you need to store them
08:49:02 <kuribas> and retrieve
08:49:02 <siraben> IIRC, the kind of linked lists one learns in undergrad CS is woefully slow compared to unrolled link lists
08:49:16 <siraben> s/link/linked/
08:49:25 <merijn> siraben: Right, but Haskell lists are the dreadful type ;)
08:49:38 <siraben> yeah
08:49:40 <kuribas> siraben: for code contests it's rarely the language or implementation that matters, usually just the algorithmic complexity.
08:49:41 <siraben> but lists aren't always so bad, IME
08:50:01 <siraben> if you do a single pass and use folds correctly, they can be quite performant
08:50:11 <siraben> kuribas: yeah
08:50:12 <EvanR> because they get compiled away entirely? xD
08:50:18 <int-e> Haskell's lists are so convenient though... I usually start out with lists and then replace them by some kind of array (Data.Vector is an array in that view) if performance becomes an issue.
08:50:19 <siraben> it is annoying to do these problems when I wish I could "just" mutate a structure
08:50:24 <EvanR> no list is definitely fast
08:50:28 <siraben> that I know I'm handling in a linear way, so in-place should be fine
08:50:29 <maerwald[m]> If you're lucky that fusion triggers you mean
08:50:37 <siraben> maerwald: yeah
08:50:44 <siraben> IntSet and IntMap are really fast, IME
08:50:50 dka_ joins (~code-is-a@ns3059207.ip-193-70-33.eu)
08:50:54 <kuribas> siraben: leverage lazyness?
08:51:02 <siraben> probably I've use IntMap much more than laziness
08:51:07 <kuribas> siraben: I find most of these problems have nice elegant lazy solution
08:51:12 <siraben> s/use/used/ s/laziness/arrays/
08:51:15 <int-e> And of course there's all those cases where you use lists intermittently and rely on fusion for them to mostly disappear.
08:51:34 <siraben> kuribas: lol https://github.com/siraben/haoc-2020/blob/master/day3.hs
08:51:38 <merijn> siraben: Well, it depends on how you define "bad" :)
08:51:47 <siraben> `part2 i = let (a, b, c, d, e, _) = foldl' f (0, 0, 0, 0, 0, 1) (tail i) in a * b * c * d * e` "oops"
08:51:52 <merijn> siraben: Like I said, not everything actually needs "high performance"
08:52:11 <merijn> And there's no point investing effort into optimising something that doesn't need optimisation
08:52:21 <siraben> merijn: yeah of course, I'm also interested in how to get the fastest possible especially for toy problems
08:52:29 <siraben> in practice it may not matter when I/O, network is far slower
08:52:31 × dka_ quits (~code-is-a@ns3059207.ip-193-70-33.eu) (Remote host closed the connection)
08:52:48 <siraben> reducing branches actually does wonders
08:52:55 dka joins (~code-is-a@ns3059207.ip-193-70-33.eu)
08:52:59 <merijn> siraben: So of course lists are convenient when the performance of something isn't immediately crucial. Especially since GHC has quite some effort on optimising list transformations
08:53:40 × hegstal quits (~hegstal@2a02:c7f:7604:8a00:2a76:42b9:78db:d162) (Remote host closed the connection)
08:53:54 <EvanR> any time casual performance concerns come up, I remind everyone the internet is based on PHP and ruby on rails
08:54:01 jespada joins (~jespada@90.254.247.46)
08:54:07 <kuribas> and Python!
08:54:08 <siraben> merijn: ok, here's a good example, how can I avoid V.cons here?
08:54:08 <siraben> https://github.com/siraben/morans/blob/bb1e65b26d83188ea81b6509e7d340d8af94ee48/morans.hs#L55
08:54:25 <siraben> it needs to be performant since this is a neural net in haskell
08:54:37 <siraben> I got the running time down from 45 s to around 22s
08:54:44 <siraben> just by translating the code to vectors
08:54:49 <int-e> siraben: kiss: https://paste.debian.net/1201880/
08:54:50 <siraben> but V.cons is linear in the size of the vector >.<
08:55:11 <merijn> siraben: You're just constructing a new result vector from some input, right?
08:55:12 <Taneb> siraben: can you turn it into a scan rather than a fold?
08:55:35 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:55:39 <EvanR> instead of consing, you could use an endo builder
08:55:47 <Taneb> Ending with a vector of tuples which is easy to make into a tuple of vectors
08:55:49 <siraben> hm, it would be awesome if hlint had support for laws that require some precondition to be true, such as the foldl/scanl law
08:56:00 <kuribas> merijn: why would a chunked list be slower than one bug chunk (for large enough chunks).
08:56:01 <merijn> siraben: There are in-place construction functions for vector
08:56:14 <EvanR> instead of copying into new vectors each time, you build a thing you can iterate through later
08:56:48 Ariakenom joins (~Ariakenom@2001:9b1:efb:fc00:315a:5813:efa5:bde0)
08:56:49 <merijn> siraben: I'd say you want something like generate instead: https://hackage.haskell.org/package/vector-0.12.3.0/docs/Data-Vector-Fusion-Stream-Monadic.html#v:generate
08:57:32 <siraben> int-e: yes, that's similar to my initial solution, I managed to get down from 39 μs to 26 μs by using bytestring and some strictness
08:57:46 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
08:58:06 jneira joins (~jneira@212.8.115.226)
08:58:24 <merijn> siraben: So instead of folding, running basically an indexed loop on the original vector, something like: https://github.com/merijn/Belewitte/blob/master/benchmark-analysis/src/StepAggregate.hs#L112-L116
08:58:42 <siraben> ah, interesting, I could try that
08:58:46 <siraben> ooh, VS.unsafeIndex
08:59:03 <merijn> siraben: unsafeIndex skips bounds checking
08:59:15 <merijn> So great way to segfault your code if you don't know what you're doing ;)
08:59:30 <siraben> yeah, how much difference does it make?
08:59:39 <merijn> Very little
08:59:40 <EvanR> all you need is a proof you're in bounds
08:59:49 <siraben> this would be the type of stuff that refinement types (or full blown dep types) could help with
08:59:54 <merijn> but I'm using this in a tight loop where I do millions (maybe billions) of lookups :p
08:59:55 <siraben> EvanR: right
09:00:12 <merijn> So a billion times very little helps ;)
09:00:14 <EvanR> a real proof can be difficult to actually get and maintain
09:00:22 <siraben> I think the GOL type problems in AOC were more performance sensitive as well
09:00:29 <int-e> siraben: I tend not to optimize anything that runs in under a second when using runghc :)
09:00:44 <merijn> siraben: Anyway, the key point here is that generate basically allocates an empty vector and fills in every element with "Int -> a" (where the Int is the index)
09:01:06 <siraben> int-e: fair enough, as kuribas said, algorithmic efficiency can matter more even in CP problems
09:01:08 <merijn> siraben: So you can construct your result array "in place" if you can reformulate your fold into a function from index to a value
09:01:10 <siraben> merijn: yeah
09:01:21 <merijn> That will save all the cons copying
09:01:26 <siraben> the recursion pattern is a bit weird here
09:01:32 <siraben> in my function `revaz`
09:01:53 <siraben> because it calls the function zLayer defined as `zLayer as (bs, wvs) = V.zipWith (+) bs $ V.sum . V.zipWith (*) as <$> wvs`
09:02:01 <siraben> so in that sense, it's already quadratic
09:02:58 mc47 joins (~mc47@xmonad/TheMC47)
09:03:14 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
09:03:38 mc47 joins (~mc47@xmonad/TheMC47)
09:05:05 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
09:06:53 ocramz joins (~user@c80-216-51-213.bredband.tele2.se)
09:07:01 <ocramz> hullo!
09:07:31 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
09:07:47 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
09:08:56 yoctocell joins (~user@h87-96-130-155.cust.a3fiber.se)
09:08:59 <ocramz> ghc-lib versus ghc-as-a-library : can I write a GHC plugin by importing only ghc-lib ? or, yes it does typecheck and the interface is the same as ghc library, but would it work when used by code that compiles against the ghc library ?
09:09:45 × yoctocell quits (~user@h87-96-130-155.cust.a3fiber.se) (Remote host closed the connection)
09:09:56 × azeem quits (~azeem@dynamic-adsl-94-34-49-60.clienti.tiscali.it) (Ping timeout: 258 seconds)
09:09:59 × chomwitt quits (~Pitsikoko@2a02:587:dc0b:ff00:c813:70d9:31b2:b1b9) (Ping timeout: 244 seconds)
09:10:10 yoctocell joins (~user@h87-96-130-155.cust.a3fiber.se)
09:10:43 azeem joins (~azeem@176.200.214.195)
09:11:10 <kuribas> merijn: I also remember some article where they implemented search using a hybrid tree and linear search on arrays.
09:11:37 <kuribas> merijn: that was on CPU though. GPU's are another beast.
09:12:21 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
09:12:32 hmmmas joins (~chenqisu1@183.217.200.246)
09:14:04 × hexo quits (~hexo@user/hexo) (Quit: Leaving)
09:14:07 × xsperry quits (~as@user/xsperry) (Ping timeout: 244 seconds)
09:15:13 × maroloccio1 quits (~marolocci@189.15.9.54) (Ping timeout: 246 seconds)
09:16:22 <kuribas> RE poor error handling in haskell, my PR to cassava for providing a decent error message (which should have been there), has been just sitting there for several weeks now.
09:17:14 <kuribas> This kind of sloppiness in core libraries just goes against all ideas of haskell being more rigorous.
09:17:56 <kuribas> It's like just an obsession for type level programming, GADTs etc, but then ignoring low hanging fruit.
09:18:10 <ocramz> cassava has been in a sorry state for a while now. I guess CSV is seen as low priority by the intelligentsia
09:18:43 <ocramz> (whereas the rest of the world lives inside excel tables and csv dumps)
09:18:49 <kuribas> ocramz: :-( We use CSV for everthing...
09:18:57 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
09:18:59 <ocramz> I know, anybody doing data work uses csv
09:20:25 <merijn> If only there was some way to just take the existing work and improve it directly yourself... ;)
09:20:42 <ocramz> btw kuribas, I've had a good experience with csv-conduit ( https://hackage.haskell.org/package/csv-conduit ) for parsing , and serializing by hand with bytestring/text builders
09:20:53 <merijn> Then you could just pay programmers to make it to your liking, imagine that!
09:21:42 <ocramz> merijn, it's not about open source entitlement. we all do our share of OSS. but if a maintainer is not responsive and doesn't allow external help, then it's a problem
09:21:56 <kuribas> this
09:23:05 <kuribas> I am not even blaming the maintainer, he may be very busy or something, just saying it's a problem that reflects badly on the language.
09:23:24 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
09:23:40 jneira joins (~jneira@212.8.115.226)
09:23:46 <merijn> Right, but if the maintainer is too busy you ask if you can be co-maintainer and if not you fork?
09:24:43 chronon joins (~chronon@user/chronon)
09:25:23 <ocramz> that would work if Hackage had a hierarchical name space, which is part of the social contract of our particular corner of open source
09:25:36 <kuribas> merijn: forking is possible, but not very convenient, and certainly doesn't reflect well on haskell.
09:25:56 <ocramz> e.g. kuribas.cassava is actively maintained, use that
09:25:59 kenran joins (~kenran@b2b-37-24-119-190.unitymedia.biz)
09:26:14 <merijn> Sure it's not convenient, but what else do you propose?
09:27:09 × chexum quits (~chexum@gateway/tor-sasl/chexum) (Remote host closed the connection)
09:27:09 × gnoo quits (~gnoo@user/gnoo) (Remote host closed the connection)
09:27:09 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
09:27:09 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
09:27:09 × HotblackDesiato quits (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection)
09:27:09 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
09:27:09 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
09:27:09 × hendursa1 quits (~weechat@user/hendursaga) (Remote host closed the connection)
09:27:13 <kuribas> I can ask to be co-maintainer...
09:28:27 <merijn> Like, these discussions are always about how lack of maintenance reflects on the library/community and how things "should" be professional, but in the end there's literally just 1 solution and that is "pay people enough to prioritise their open source work"
09:29:02 <ocramz> OR allow co-maintainers, as kuribas proposed one line above
09:29:21 <merijn> ocramz: I proposed that even earlier, but in effect that is still the same solution
09:29:33 <merijn> since, presumably, you are getting paid by your job to do that maintenance
09:29:57 <ocramz> many write OSS in their spare time
09:30:07 <kuribas> merijn: reviewing PRs shouldn't be that much work...
09:30:14 __monty__ joins (~toonn@user/toonn)
09:30:19 ChaiTRex joins (~ChaiTRex@user/chaitrex)
09:30:25 <merijn> ocramz: If you do, then you should realise why people might not have the time to prioritise
09:30:26 <Taneb> ocramz: if it's their spare time, they have no obligation on how to spend that time
09:30:31 HotblackDesiato joins (~HotblackD@gateway/tor-sasl/hotblackdesiato)
09:30:33 <merijn> kuribas: Who cares if it's much work or not
09:30:35 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
09:30:45 × hmmmas quits (~chenqisu1@183.217.200.246) (Quit: Leaving.)
09:31:00 gehmehgeh joins (~user@user/gehmehgeh)
09:31:05 <kuribas> we should care for core libraries.
09:31:07 <ocramz> I feel we're talking past each other here
09:31:33 <merijn> Some of my stuff still doesn't support GHC 9.0, because after 1.5 year of stuck at home in lockdown I can't find the energy to work on it in my spare time
09:31:35 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
09:32:02 <kuribas> couldn't that be something for haskell consultancy companies? They get paid to sell haskell, so it is in their interest to have decent libraries.
09:32:19 <ocramz> since the Hackage namespace is write-only, and flat, IMO once you upload a new package it shoudl become part of the commons, and it should be easy by design to let new maintainers in, both in the repo and as hackage uploaders
09:32:35 chexum joins (~chexum@gateway/tor-sasl/chexum)
09:32:44 <ocramz> without complex bargaining, or ego battles
09:32:46 <merijn> ocramz: That seems like a good way to get people to not upload code at all
09:32:49 hendursa1 joins (~weechat@user/hendursaga)
09:32:55 gnoo joins (~gnoo@user/gnoo)
09:33:20 <merijn> ocramz: I mean, you don't have to bargain, it's open source, you can simply fork it with a different name and use/advertise that?
09:33:25 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
09:33:51 <kuribas> ocramz: wasn't their some drama a while ago about exactly that? Someone doing changes against the authors wishes.
09:34:01 <ocramz> because by forking we have two similar things, one of which is left to bitrot
09:34:19 <ocramz> kuribas : yeah
09:34:22 <kuribas> I thought there was already a process for abandoned projects.
09:34:22 <Taneb> kristjansson: cassava/Cassava?
09:34:48 <Taneb> kuribas* sorry
09:34:48 <ocramz> yeah
09:35:10 <kuribas> but I am not even talking about obscore/abandoned projects, I am talking about libraries considered core, like Cassava, Aeson, ...
09:35:21 <ocramz> this duplication is technically feasible but frankly sucks, because it shows that it was not possible to reach a civil agreement
09:35:21 <merijn> I mean, I wouldn't consider either of those core
09:35:36 <kuribas> merijn: what do you use for JSON then?
09:35:44 <merijn> kuribas: I don't use JSON
09:35:49 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Ping timeout: 244 seconds)
09:35:53 <kuribas> merijn: good for you :)
09:35:59 <ocramz> kuribas: aeson, same thing
09:36:15 <merijn> Here's the key problem in "these core libraries", I doubt you'll find much agreement community wide on what is "core"
09:36:43 <merijn> Anything GHC depends on, sure. containers and vector also. I think people will already start disagreeing on unordered-containers
09:36:56 <kuribas> merijn: Cassava is the standard for CSV, Aeson for JSON, or am I wrong?
09:37:07 <merijn> kuribas: Define "standard"
09:37:10 <ocramz> merijn : a simple graph centrality argument willl show why cassava can be considered as "core" : https://packdeps.haskellers.com/reverse/cassava
09:37:18 <kuribas> merijn: as in, what everyone uses?
09:37:28 × elf_fortrez quits (~elf_fortr@adsl-64-237-239-58.prtc.net) (Quit: Client closed)
09:37:38 <Taneb> kuribas: that's community-accepted rather than standard. <blink> was supported by all commonly used browsers many years ago
09:37:53 <merijn> ocramz: I mean, that's 96 packages, most of which I never even heard off...
09:38:02 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
09:38:14 <Taneb> And, like, there are alternatives for both cassava and aeson, that do get used
09:38:15 <ocramz> "I haven't heard of a thing" is not a good argument why a thing is not important
09:38:37 <merijn> ocramz: I mean, vector has 1900 reverse dependencies
09:38:54 <merijn> 5300 for containers
09:39:06 <merijn> Those are orders of magnitude "more core" than cassava
09:39:16 <ocramz> all of these should be core, so what
09:39:18 <Taneb> ocramz: so, why should someone lose control of something they've created because it gets popular? That's what I understand of what you're proposing
09:39:39 elf_fortrez joins (~elf_fortr@adsl-64-237-239-58.prtc.net)
09:39:40 <merijn> Taneb: Well, he proposed they should lose control because they made it public on Hackage
09:39:47 <merijn> Taneb: That's slightly different
09:39:53 <merijn> But I still don't think it's a great idea
09:40:30 <ocramz> the (current?) architecture of cabal/hackage forces this particular state of things
09:40:38 <merijn> ocramz: I'm not saying it's not important. I'm saying it's not important enough to take away from owners
09:40:54 <merijn> How so?
09:40:58 <ocramz> whereas forking is ..?
09:41:01 <kuribas> merijn: cassava :: 565 DLs, csv :: 181 Dls (last upload 2010) csv-conduit :: 119 DLs
09:41:19 <kuribas> https://hackage.haskell.org/packages/search?terms=csv
09:41:31 <merijn> ocramz: Making a new thing with a different name and distinct new person in charge
09:41:58 <Taneb> kuribas: groups, 823 downloads in the past 30 days. I don't think anyone's suggested that groups should be standard
09:42:07 <merijn> Taneb: Lots of bot downloads
09:42:15 <merijn> kuribas: Those are number per version, btw
09:42:48 dhil joins (~dhil@195.213.192.47)
09:42:58 maroloccio joins (~marolocci@189.15.9.54)
09:43:24 <Taneb> And I think a lot of people get their packages from stackage or nixpkgs or similar not-Hackage sources these days and that won't count for those download stats
09:43:35 teaSlurper joins (~chris@81.96.113.213)
09:44:11 <kuribas> Just showing that Cassava is by far the most popular CSV parser, and Aeson for JSON...
09:44:19 <kuribas> prove me wrong...
09:44:24 <merijn> Right, but I wasn't arguing popularity
09:44:33 <Taneb> I don't think anyone was arguing that they weren't
09:45:21 <merijn> I wasn't arguing "those aren't core, because they're not the most popular" I was arguing "they aren't core, because their usage isn't nearly universal enough"
09:45:45 <ocramz> idk feels like we've hit ideological brick walls here. You upload a BSD package to the commons, plant a flag, and then impede its evolution
09:45:59 <tomsmeding> kuribas: just as a data point on people disagreeing about the definition of "core": anything that cannot be compiled in 2 GB of RAM is something that I personally would never want as "core" :p
09:45:59 <ocramz> this, to me, is backwards
09:46:00 × Cajun quits (~Cajun@ip98-163-211-112.no.no.cox.net) (Quit: Client closed)
09:46:22 <tomsmeding> (hint, aeson)
09:46:39 <tomsmeding> vector barely passes iirc
09:47:05 <ocramz> tomsmeding: that's a pretty arbitrary bar but ok
09:47:11 <merijn> ocramz: Well, Hackage is open source and welcomes more contributions if you have better ideas
09:47:33 <merijn> ocramz: Who gets to decide when/who gets to steal a package, though?
09:47:39 <ocramz> "steal"
09:47:41 <Taneb> ocramz: the flag you plant is just a name
09:47:55 <kuribas> I am fine with using something else that Aeson or Cassava, but there isn't much, is there?
09:48:08 <tomsmeding> ocramz: true :)
09:48:11 <ocramz> you literally placed in the middle of the town square, with your name written on a post it
09:48:30 <Taneb> It's a pretty large town square
09:48:36 <merijn> ocramz: I have package foo, person X wants to basically completely change the direction of my package
09:48:44 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
09:48:48 <merijn> ocramz: At which point is this progress vs ruining?
09:48:51 <merijn> Who is the arbiter?
09:49:15 jneira joins (~jneira@212.8.115.226)
09:49:19 <ocramz> case by case basis. If you let it bitrot for two years and it doesn't build with the latest compilers then it's not ruining it's evolving
09:49:29 <ocramz> oh, Hackage-wide CI would be nice too
09:49:35 <ocramz> getting there though
09:49:36 <kuribas> maybe we should have a "core" CSV and JSON parser, which is handled by a committee, like the standard libraries?
09:49:41 × allbery_b quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
09:49:48 <merijn> ocramz: Who decides the case-by-case basis?
09:50:17 <merijn> kuribas: That's a great way to slow down development, not speed up
09:50:18 <Taneb> kuribas: that doesn't feel like a solution to the underlying problem
09:50:28 <merijn> kuribas: Now that CLC has to agree to any API changes...
09:51:06 × elf_fortrez quits (~elf_fortr@adsl-64-237-239-58.prtc.net) (Quit: Client closed)
09:51:06 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
09:51:40 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
09:52:10 <ocramz> merijn: idk the next candidate maintainer?
09:52:18 <kuribas> python comes with csv and json out of the box.
09:52:26 <ocramz> the alternatives here are 1. bitrot 2. doing something about it
09:52:53 <ocramz> anyway kuribas : use csv-conduit and text , and be merry
09:52:57 <merijn> What if people do not agree whether a library is bitrotting?
09:52:58 <Taneb> kuribas: I'm not convinced that Python is the best language for Haskell to imitate
09:53:29 <ocramz> merijn : I don't understand what's your angle besides fabricating objections
09:53:38 <merijn> kuribas: And as soon as something moves into python's core libraries it stops changing and >60% of the core libraries are now deprecated/recommended against by now
09:53:53 geekosaur joins (~geekosaur@xmonad/geekosaur)
09:54:15 <merijn> ocramz: My angle is: People are gonna people and people *are* gonna try to take over stufff and you can't just handwave this stuff without having a solid and well-defined process for how to handle edge cases
09:54:29 <merijn> ocramz: Your suggestion currently is just "we should let people take over packages"
09:54:42 <ocramz> kuribas : come chat on the datahaskell gitter if you want to do something for Hs data stuff http://gitter.im/dataHaskell/Lobby
09:54:59 <merijn> ocramz: My counter-argument is: there is absolutely no sensible/feasible process for doing that and I don't think one can exist
09:55:12 <ocramz> I think one should exist instead
09:55:13 <merijn> ocramz: You are free to convince me by proposing a process that seems fair and feasible
09:55:22 <Taneb> For what it's worth, there _is_ a process for taking over a package on Hackage: https://wiki.haskell.org/Taking_over_a_package
09:55:54 <ocramz> aka "howling into the void"
09:55:57 <merijn> Taneb: Right, but ocramz wants a process that lets you take over packages even if maintainers are not absent, just no merging what people want
09:56:09 <merijn> That's a massive can of worms
09:56:31 <merijn> And you better have a solid and fair process. And I don't think one (can) exist
09:57:05 <merijn> So the only way to convince me that "taking over packages" is a good idea is by proposing a process that might work.
09:57:29 <merijn> Until such a process is defined I am opposed to the whole idea
09:57:47 brandonh joins (~brandonh@151.68.85.160)
09:58:37 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
09:58:57 <ocramz> I think instead it's about taking this very tenuous notion of OSS "ownership", in the specific incarnation on the Hackage namespace, to its logical conclusion
10:00:08 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
10:00:23 <merijn> ocramz: Ownership and personal pride are the only thing keeping non-commercial OSS alive
10:02:11 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
10:02:17 <ocramz> what about building on the shoulders of giants? using, hopefully, working dependencies? not reinventing the wheel every 6 months? those are also things we all take for granted
10:02:41 <ocramz> yet, take work besides pride and ownership in your little pretty garden
10:03:07 <merijn> ocramz: Building on the shoulder of giants is great. If those giants are starving and burned out
10:03:14 ukari joins (~ukari@user/ukari)
10:04:22 × chele quits (~chele@user/chele) (Ping timeout: 258 seconds)
10:05:55 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
10:08:31 cheater joins (~Username@user/cheater)
10:09:36 chele joins (~chele@user/chele)
10:10:08 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Ping timeout: 250 seconds)
10:12:09 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
10:12:45 ukari joins (~ukari@user/ukari)
10:13:42 <kuribas> merijn: for me OSS is more about solving something that hasn't been solved yet (satisfactory), and making it public so it can help other people.
10:14:15 <__monty__> That's the fun part of FOSS, not the sustainable part though.
10:14:28 <merijn> kuribas: And you don't take any pride in your solutions?
10:14:31 <__monty__> All your newfangled gadgets need to be maintained to remain useful.
10:14:39 <kuribas> merijn: I do :)
10:14:51 <merijn> kuribas: Right, so that's part of the reason people like sharing their stuff
10:14:56 <kuribas> __monty__: indeed. Maintaining is boring
10:15:05 <merijn> kuribas: And if you take that away from them, why even share your stuff?
10:15:37 <kuribas> merijn: how is taking over a project taking away the pride?
10:15:49 <Taneb> kuribas: ...how isn't it?
10:16:02 <merijn> kuribas: If you're still working on it and someone takes it over, that wouldn't affect you?
10:16:15 <merijn> (against your will)
10:16:20 <Taneb> I'd certainly be upset if someone said that I was doing something I'd created wrong and they were going to take over and do it their way
10:16:30 <merijn> We already have a policy for taking over abandonned packages
10:16:32 <kuribas> merijn: If I am working on it, yes. If I don't have time for it, no.
10:17:08 <merijn> kuribas: And how long before it qualifies as "I don't have time"?
10:17:23 <merijn> kuribas: Like, you don't have time for 6 months before you plan to continue on a project
10:17:26 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
10:17:31 <merijn> Should someone be able to take it away?
10:18:19 <kuribas> merijn: in that case, they could fork the project, work on it, and after 6 months I'll incorporate changes I like.
10:18:22 × ocramz quits (~user@c80-216-51-213.bredband.tele2.se) (Ping timeout: 250 seconds)
10:18:38 <kuribas> But if the project is used by many people, maybe even better if someone else just takes it over.
10:18:47 <kuribas> for those months
10:18:54 <merijn> kuribas: And who decides that?
10:20:13 <merijn> If many people/companies rely on a project, well, that sounds like there's a lot of people who could be paying to prioritise that project!
10:21:32 <merijn> "Oh, but it's open source, we shouldn't have to pay! We just want to casually burn out maintainers and get the most of our tragedy of the commons!"
10:21:48 <kuribas> In my projects where I gave other people ownership or co-maintainership, I have not yet been disappointed.
10:22:02 <Taneb> But you chose to give other people ownership or co-maintainership
10:22:06 <Taneb> And you chose who
10:22:14 <merijn> kuribas: That's fine, but then it's *you* in control and deciding if/who gets maintainership
10:22:24 <merijn> kuribas: That's is fundamentally different from having it imposed on you
10:22:49 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
10:22:50 <kuribas> merijn: yeah, having it imposed isn't nice.
10:23:21 <merijn> The older I get, the more my opinion on 100% of open source maintainership converges on "fuck you, pay me"
10:24:01 <merijn> Or, I guess "free software" but "free as in puppies"
10:24:06 <kuribas> merijn: that's fair. If I am in a company using haskell, they would have a budget for this stuff.
10:24:14 <merijn> i.e. "You'll have to pay to get it fixed"
10:24:33 <merijn> I don't know who I got that quote from, but I love it more and more :)
10:24:50 tauli[m] joins (~tauliacme@2001:470:69fc:105::755)
10:25:09 <kuribas> merijn: if I get passed the "haskell is an academic language which is not for practical use, as it doesn't even have libraries for common usecases."
10:26:22 <kuribas> merijn: the only thing a company cares about is that the net benefit is positive.
10:27:02 <merijn> Sure
10:27:15 <merijn> But also, I don't care what companies think about stuff I do
10:27:31 ocramz joins (~user@c80-216-51-213.bredband.tele2.se)
10:27:49 <merijn> And neither should anyone else who isn't actively being paid to care
10:27:54 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
10:28:40 <merijn> anyway, lunch
10:29:49 × ham quits (~ham4@user/ham) (Read error: Connection reset by peer)
10:32:58 × sa quits (sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 244 seconds)
10:33:06 ham joins (~ham4@user/ham)
10:33:07 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Client Quit)
10:34:06 sa joins (sid1055@id-1055.tinside.irccloud.com)
10:34:15 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
10:34:20 × teaSlurper quits (~chris@81.96.113.213) (Remote host closed the connection)
10:34:24 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
10:37:25 × nschoe quits (~quassel@178.251.84.79) (Ping timeout: 265 seconds)
10:39:26 × Hafydd quits (~Hafydd@user/hafydd) (Quit: WeeChat 3.0)
10:39:27 teaSlurper joins (~chris@81.96.113.213)
10:40:31 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
10:40:34 <ocramz> kuribas: completely agree with your pov. besides, having a mechanism for adding active maintainers (who are either interested in evolving a library or have the means to ask others do so) is precisely a way for everybody to _avoid_ burnout
10:41:03 × jakesyl quits (sid56879@id-56879.stonehaven.irccloud.com) (Ping timeout: 272 seconds)
10:41:18 <kuribas> to be clear, I am not advocating forcing projects away from the creators :)
10:41:38 <ocramz> I said adding, in fact
10:41:59 <ocramz> or letting new patches be incorporated, or whatever. Moving the project forward
10:42:50 <ocramz> the "package takeover" process, involving multiple rounds of email, copy-pasted conversations in the mailing lists, months wasted, is one of the most comically inefficient ways of doing this
10:43:30 × teaSlurper quits (~chris@81.96.113.213) (Ping timeout: 250 seconds)
10:43:50 jakesyl joins (sid56879@id-56879.stonehaven.irccloud.com)
10:44:23 <kuribas> ocramz: I would only do this for projects with widespread use.
10:44:33 <ocramz> sure
10:44:58 <ocramz> a voting process! like, if more than N people ask for this, click
10:45:22 <ocramz> surely we don't need sMaRt CoNtRaCtS to pull this shit off
10:45:57 × ubert quits (~Thunderbi@p200300ecdf259dd4ad9b8920565e1743.dip0.t-ipconnect.de) (Remote host closed the connection)
10:49:19 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
10:52:05 × zeenk quits (~zeenk@82.76.113.130) (Quit: Konversation terminated!)
10:53:20 <Taneb> What's the justification for the "is strictly more specific than" bit of resolving overlapping instances?
10:54:38 <__monty__> Because that gives a unique match? Whereas the = in >= wouldn't?
10:55:10 <hpc> ^
10:55:18 teaSlurper joins (~chris@81.96.113.213)
10:55:23 <hpc> when you aren't able to resolve the match in some unambiguous way, you get incoherent instances
10:55:41 <hpc> although not quite "unique", but "unambiguous"
10:56:12 <hpc> the specificity requirement gives ghc a way to consistently pick the same instance in similar situationns
10:59:33 <Taneb> Why is it relevant when all-but-one of the candidate instances is marked as overlappable?
11:00:43 mpt joins (~tom@2a02:908:1862:49e0::3)
11:04:43 ocramz parts (~user@c80-216-51-213.bredband.tele2.se) (ERC (IRC client for Emacs 27.2))
11:05:57 jneira joins (~jneira@212.8.115.226)
11:06:03 brandonh_ joins (~brandonh@151.68.85.160)
11:06:58 × brandonh quits (~brandonh@151.68.85.160) (Ping timeout: 252 seconds)
11:07:11 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
11:07:21 × zot quits (sid449795@id-449795.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
11:07:33 × brandonh_ quits (~brandonh@151.68.85.160) (Client Quit)
11:07:41 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
11:08:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:09:56 × azeem quits (~azeem@176.200.214.195) (Ping timeout: 250 seconds)
11:11:42 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Ping timeout: 264 seconds)
11:13:40 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
11:13:45 azeem joins (~azeem@176.201.29.233)
11:14:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:14:34 × mpt quits (~tom@2a02:908:1862:49e0::3) (Ping timeout: 268 seconds)
11:15:39 polux4 joins (~polux@51.15.169.172)
11:16:31 × polux quits (~polux@51.15.169.172) (Ping timeout: 272 seconds)
11:16:31 polux4 is now known as polux
11:16:43 × samebchase quits (~samebchas@51.15.68.182) (Ping timeout: 272 seconds)
11:16:49 samebchase joins (~samebchas@51.15.68.182)
11:16:50 deshalb joins (~deshalb@user/deshalb)
11:16:56 × MasseR quits (~MasseR@51.15.143.128) (Ping timeout: 268 seconds)
11:17:02 × alp quits (~alp@user/alp) (Ping timeout: 268 seconds)
11:17:09 × haveo quits (~haveo@sl35.iuwt.fr) (Ping timeout: 272 seconds)
11:17:16 haveo joins (~haveo@sl35.iuwt.fr)
11:17:36 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 252 seconds)
11:17:55 MasseR joins (~MasseR@51.15.143.128)
11:18:10 × Ariakenom quits (~Ariakenom@2001:9b1:efb:fc00:315a:5813:efa5:bde0) (Ping timeout: 250 seconds)
11:18:51 stevenxl joins (~stevenlei@174.128.182.199)
11:19:45 Hafydd joins (~Hafydd@user/hafydd)
11:20:11 <merijn> It's funny that people think "package take-over process is comically inefficient" is a bug as opposed to "intended by design"
11:20:40 <merijn> It's almost as if it's something we want to discourage...
11:21:23 <Las[m]> I have a Haskell program that segfaults somewhere, and I'm trying to get a stack trace for that. I'm compiling with -g and -O1, but inspecting the dump with gdb and running `bt` just gives me garbage. How can I debug this?
11:21:55 <Las[m]> The Haskell program uses raw pointers all over the place unfortunately
11:22:20 <merijn> RIP
11:22:31 × srk quits (~sorki@user/srk) (Remote host closed the connection)
11:22:49 srk joins (~sorki@user/srk)
11:22:52 <merijn> -g just gives you c symbols for the RTS
11:22:57 <merijn> not the compiled Haskell
11:23:16 <merijn> GHC has (experimentalish) support for DWARF, but I don't think -g enables that atm?
11:23:34 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
11:25:39 <Las[m]> FWIW I get some mangled symbol name, can I somehow use that?
11:25:57 <Las[m]> I used the -ddump thing to get some dumps but I can't find the symbol name there
11:26:27 <merijn> Las[m]: https://www.haskell.org/ghc/blog/20200403-dwarf-1.html
11:26:30 <Las[m]> > Emit debug information in object code. Currently only DWARF debug information is supported on x86-64 and i386. Currently debug levels 0 through 3 are accepted, with 0 disabling debug information production and higher numbers producing richer output. If ⟨n⟩ is omitted, level 2 is assumed.
11:26:32 <lambdabot> <hint>:1:24: error: parse error on input ‘in’
11:26:41 <Las[m]> it's not supported on my platform...
11:26:45 <merijn> ah
11:26:47 <Las[m]> (aarch64-linux)
11:27:05 <merijn> Then you might be, as we experts say, "fucked" >.>
11:27:12 <Las[m]> can I use the mangled symbol name then somehow to at least find out where it happened?
11:27:38 <merijn> No clue, tbh
11:28:03 <merijn> tbh, at this point binary searching your code by throwing Debug.Trace prints everywhere might be the fastest/most accurate to figure out what fails and where
11:28:10 <tomsmeding> what _is_ the mangled symbol name?
11:28:24 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
11:28:52 <Las[m]> I need to generate the coredump again for that since it was purged after a reboot
11:29:34 <tomsmeding> just curious, no need to expend effort :)
11:30:37 × is7s quits (~is7s@2a01:4b00:895f:3d00:ddd:ae00:86d4:d79c) (Quit: Client closed)
11:30:41 × maroloccio quits (~marolocci@189.15.9.54) (Quit: Client closed)
11:30:46 alp joins (~alp@163.172.83.213)
11:31:01 <Las[m]> it says `c2Xrz_info$def`
11:31:32 <tomsmeding> right, I have no idea :p
11:31:37 <merijn> Sounds like an info pointer
11:31:59 <Las[m]> what does that mean?
11:32:16 <merijn> Las[m]: info pointers are internal meta information for GHC about datatypes
11:32:25 <Las[m]> ah
11:32:27 <merijn> and closures
11:32:49 <merijn> Like "is this thunk already evaluated?" "how big is the result?" etc.
11:33:02 <merijn> "where is the code for this?"
11:33:38 <Las[m]> I think I'll have to go the Debug.Trace route like you said...
11:33:44 mpt joins (~tom@2a02:908:1862:49e0::3)
11:36:30 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
11:38:47 × haveo quits (~haveo@sl35.iuwt.fr) (Quit: leaving)
11:42:13 haveo joins (~haveo@sl35.iuwt.fr)
11:46:49 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
11:47:30 × azeem quits (~azeem@176.201.29.233) (Ping timeout: 265 seconds)
11:53:33 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
11:53:46 azeem joins (~azeem@176.201.29.233)
11:56:26 brandonh joins (~brandonh@151.68.5.207)
12:01:44 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
12:01:56 × mpt quits (~tom@2a02:908:1862:49e0::3) (Ping timeout: 250 seconds)
12:03:56 <maerwald[m]> Is there a tool to vendor 3rd party deps (not on hackage) into the library component so I can upload it on hackage?
12:04:27 <merijn> maerwald[m]: Eh "copy and paste the source into your repo"? :p
12:04:34 <merijn> maerwald[m]: iow, no
12:04:51 <maerwald[m]> Yeah, that, adjust modules in cabsl file
12:04:56 <maerwald[m]> And all the jazz
12:05:16 <maerwald[m]> Seems this can be automated
12:05:34 <merijn> Sure, just a Small Matter of Programming (TM) :)
12:06:25 <maerwald[m]> OCD lock-in... 3 months later... "done... so back to what I was working on... what was I working on?"
12:06:34 machinedgod joins (~machinedg@24.105.81.50)
12:07:03 <merijn> maerwald[m]: That never happens to me >.>
12:08:10 <merijn> maerwald[m]: Can't convince the 3rd party to make a Hackage release?
12:08:22 <maerwald[m]> No
12:09:14 <maerwald[m]> My tar patches haven't been merged since 1.5 years and the other library smells like NMU needed too
12:09:22 <maerwald[m]> No time for that nonsense
12:09:38 <merijn> Doesn't vanessa actively maintain a tar library?
12:10:01 <merijn> At least, she's the only person I see shitposting about tar being terrible more than you :p
12:10:12 <maerwald[m]> Yes, I'm using that
12:10:21 <maerwald[m]> But it doesn't build everywhere
12:10:27 <maerwald[m]> Thanks to c2hs
12:10:46 <merijn> She's not including your patches?
12:11:10 <maerwald[m]> No no
12:11:16 <maerwald[m]> She's maintaining libarchive
12:11:34 <maerwald[m]> That works well for platforms where c2hs is not broken
12:12:18 <merijn> I'd argue that c2hs is broken everywhere xD
12:12:32 <merijn> It just happens to work sometimes :p
12:13:21 <maerwald[m]> For the others I need tar, which I had initially forked to bytestring based filepaths, but when supporting windows, this would require implementing AFPP first or some light wrapper. So I'm back to using a patched branch of upstream haskell tar, which is more or less unmaintained.
12:14:50 <maerwald[m]> So I don't care to fix any on that, just want to be able to make a hackage release.
12:16:05 <maerwald[m]> So need a tool that vendors all deps into the codebas and call it a day, haha
12:16:11 <maerwald[m]> Don't care
12:16:47 <maerwald[m]> Not much different from using PVP bounds
12:18:03 Morrow joins (~Morrow@37.142.145.18)
12:18:57 Ariakenom joins (~Ariakenom@2001:9b1:efb:fc00:8de:a8d1:83fb:c4a6)
12:19:01 <merijn> maerwald[m]: So, how about just copying the source tree into a separate subdir, copying the library entry from the original cabal file and making it an internal library in your package?
12:19:13 <merijn> Still *some* manual work, but not a lot
12:19:23 lbseale joins (~lbseale@user/ep1ctetus)
12:19:33 <maerwald[m]> For tar yes... the other is a transitive dep
12:19:42 <adamse> how about uploading your fork to hackage under a new name?
12:20:00 <maerwald[m]> That's gonna be fun
12:20:14 <merijn> I'm sure Hecate has tons of recommendations on yak herding and shaving implements :p
12:20:39 derelict_ is now known as derelict
12:20:39 <maerwald[m]> Hackage should have had fork support
12:21:13 <merijn> maerwald[m]: Fortunately, hackage is open source! So now you have yet another yak! :D
12:21:16 <maerwald[m]> You can have 'username/pkg' and still have an unqualified 'pkg'
12:21:24 pbrisbin joins (~patrick@pool-72-92-38-164.phlapa.fios.verizon.net)
12:21:53 dajoer joins (~david@softbank126065252160.bbtec.net)
12:21:56 <maerwald[m]> Unqualified pkg's would go through trustees, potentially or so
12:22:18 × Morrow quits (~Morrow@37.142.145.18) (Ping timeout: 250 seconds)
12:22:27 × dajoer quits (~david@softbank126065252160.bbtec.net) (Changing host)
12:22:27 dajoer joins (~david@user/gvx)
12:22:38 <merijn> maerwald[m]: There was an idea to make a "PVP opt-in" layer on top of "raw hackage", but not sure if that's going anywhere now that hvr is busy
12:22:52 <maerwald[m]> Right, let me write a proposal first... but no, I value my mental health more
12:23:05 Morrow joins (~Morrow@31.154.96.164)
12:24:21 lavaman joins (~lavaman@98.38.249.169)
12:28:48 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
12:29:07 fendor_ joins (~fendor@77.119.129.45.wireless.dyn.drei.com)
12:32:13 <Hecate> maerwald[m] I will forcefully kidnap you and put you in a train for a thermal station if you take on another project :<
12:32:30 <maerwald[m]> xD
12:33:07 <maerwald[m]> I have 8 healthy fingers left
12:33:29 <maerwald[m]> Should get me through at least 2 more projects
12:34:02 <int-e> but fingers are not a renewable resource?
12:34:05 int-e is scared
12:34:46 <maerwald[m]> Oh, I thought they regrow after a couple of years
12:35:04 <int-e> they. don't.
12:35:14 <maerwald[m]> Shouldn't have cut them off I guess... hrmm
12:36:30 <hrnz> o.o
12:36:33 psydroid is now known as psydroid[m]
12:37:46 × GIANTWORLDKEEPER quits (~pjetcetal@2.95.227.207) (Read error: Connection reset by peer)
12:38:01 lavaman joins (~lavaman@98.38.249.169)
12:38:05 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
12:39:00 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
12:39:22 cheater joins (~Username@user/cheater)
12:41:14 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
12:42:27 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
12:43:26 ukari joins (~ukari@user/ukari)
12:44:41 <maerwald[m]> https://github.com/biegunka/terminal-size/pulls
12:44:43 <maerwald[m]> Looks abandoned
12:45:13 <merijn> lemme check what I'm using
12:45:27 gehmehgeh joins (~user@user/gehmehgeh)
12:46:08 <maerwald[m]> This is a transitive dep though
12:46:19 <merijn> Ah, I use terminal-size
12:46:41 <maerwald[m]> It has a pretty humongous bug on darwin
12:47:01 <merijn> It does?
12:47:06 <merijn> I haven't noticed anything so far?
12:47:24 <maerwald[m]> `ccall` is impossible to get right on darwin
12:47:35 <maerwald[m]> https://github.com/biegunka/terminal-size/pull/16
12:47:48 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
12:48:49 <maerwald[m]> It causes segfaults, occuring in random places, randomly changing
12:49:16 <maerwald[m]> Who knows how many more of those hidden bugs darwin users face
12:49:33 <merijn> Which macs is it segfaulting on?
12:50:00 <merijn> I've been using it since 2016 and I haven't had any segfaults (that weren't my own fault) so far
12:50:15 <maerwald[m]> The verdict was you have to compare the generated code to be sure, but even then it's a moving target. An OSX update might break your FFI code
12:50:28 <maerwald[m]> Aarch64 darwin
12:51:30 × cheater quits (~Username@user/cheater) (Ping timeout: 258 seconds)
12:51:55 cheater joins (~Username@user/cheater)
12:52:28 <stevenxl> Does anyone here do any Haskell tutoring - paid, not free. Essentially, I have a Haskell program that is giving me a type error, and I want to walk through how we got to that type error. I'm thinking this won't take more than 1 hr, but maybe 2. Again, happy to pay for someone's time to understand what is going on at a deeper level.
12:54:46 <merijn> stevenxl: The Haskell reddit and haskell-cafe mailing list will probably give you comments for free ;)
12:55:59 <maerwald[m]> Also, should indicate whether this is type level errors or normal haskell
12:56:06 × Morrow quits (~Morrow@31.154.96.164) (Ping timeout: 250 seconds)
12:56:06 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds)
12:56:58 <maerwald[m]> 1-2 hours sounds like this might be a 1500 lines type error after diving too deep into type families
12:57:32 × brandonh quits (~brandonh@151.68.5.207) (Quit: brandonh)
12:58:25 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
12:58:58 jolly joins (~jolly@208.180.97.158)
12:59:13 MQ-17J joins (~MQ-17J@8.21.10.15)
13:00:59 alx741 joins (~alx741@181.196.68.152)
13:01:06 maroloccio joins (~marolocci@189.15.9.54)
13:01:22 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
13:02:10 psydroid[m] is now known as psydroid
13:02:25 × fendor_ quits (~fendor@77.119.129.45.wireless.dyn.drei.com) (Ping timeout: 265 seconds)
13:02:36 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
13:02:43 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
13:02:52 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
13:05:21 warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
13:06:02 finsternis joins (~X@23.226.237.192)
13:08:03 lbseale_ joins (~lbseale@user/ep1ctetus)
13:08:49 lavaman joins (~lavaman@98.38.249.169)
13:09:12 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
13:09:23 nschoe joins (~quassel@178.251.84.79)
13:11:14 <stevenxl> maerwald[m]: It is very plain-vanilla Haskell. The top-level value is of type `Spec` from HSpec, and there are like 2 or 3 non-library functions, mostly dealing with a Reader for DB actions.
13:11:47 <stevenxl> merijn: Thanks. I'll give that a shot, but still interested in a more hands-on approach.
13:11:49 × lbseale quits (~lbseale@user/ep1ctetus) (Ping timeout: 258 seconds)
13:11:52 <merijn> oh
13:12:07 <merijn> HSpec has super cryptic type errors due to its over-reliance on typeclasses
13:12:08 <dminuoso> stevenxl: If you're willing to send me a box of candy, we can do it tonight!
13:12:11 <stevenxl> I guess there is a type-family involved in terms of `HSpec`. I think `Arg` is an associated type family.
13:12:14 <dminuoso> That's all I ask. :p
13:12:16 <merijn> Which is one of the reasons I dislike hspec
13:13:06 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
13:13:15 <stevenxl> dminuoso: I'm down! M
13:13:26 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Ping timeout: 250 seconds)
13:13:39 <dminuoso> Perfect, I'll be around 10pm CEST
13:13:57 <stevenxl> :+1
13:15:03 wei2912 joins (~wei2912@112.199.250.21)
13:15:05 <merijn> dminuoso: I'm gonna make you debug my shite and sent you salmiak licorice as "reward" :p
13:15:59 <Boomerang> Salmiak licorice is great! Not sure why the quotes are necessary ^^
13:16:06 <dminuoso> Yes, indeed!
13:16:59 <maerwald[m]> Promotion of drugs :p
13:17:34 <merijn> Boomerang: I agree, most of the world does not
13:18:04 <merijn> There's this invisible border running through the middle of Europe above which licorice is considered amazing and below which it's considered human torture ;)
13:18:08 <dminuoso> stevenxl: Oh I just realized, Ill probably be around 8pm already for an hour. If that works with you, we can start a bit earlier.
13:18:45 <dminuoso> merijn: Personally I think mixing licorice with salmiak is an offense.
13:19:02 <stevenxl> dminuoso: :-). I'll set my alarm for 8PM CEST.
13:19:05 <merijn> Starting somewhere around belgium running through the middle of Germany and then heading more north while approaching the baltics
13:19:40 <merijn> I'm not sure if licorice is big in the Baltics
13:19:58 <Boomerang> It is! :D
13:20:33 <merijn> Insert "Esti can into Nordics" joke :p
13:21:06 <Boomerang> Well the baltic states I don't know. But nordic countries/scandinavia definitely
13:21:34 <merijn> Yeah, that I know
13:23:24 × cheater quits (~Username@user/cheater) (Ping timeout: 250 seconds)
13:23:57 cheater joins (~Username@user/cheater)
13:25:31 × kenran quits (~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version)
13:26:55 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
13:31:12 × azeem quits (~azeem@176.201.29.233) (Ping timeout: 250 seconds)
13:31:29 AgentM joins (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
13:32:18 × curiousgay quits (~quassel@178.217.208.8) (Read error: Connection reset by peer)
13:33:00 chomwitt joins (~Pitsikoko@athedsl-351576.home.otenet.gr)
13:33:09 curiousgay joins (~quassel@178.217.208.8)
13:34:21 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
13:35:06 × cheater quits (~Username@user/cheater) (Ping timeout: 250 seconds)
13:35:28 cheater joins (~Username@user/cheater)
13:35:53 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
13:37:23 azeem joins (~azeem@176.201.29.233)
13:37:45 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
13:38:40 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
13:38:43 brandonh joins (~brandonh@151.34.95.83)
13:40:13 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
13:40:44 × curiousgay quits (~quassel@178.217.208.8) (Read error: Connection reset by peer)
13:43:04 lavaman joins (~lavaman@98.38.249.169)
13:47:51 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
13:51:34 × cheater quits (~Username@user/cheater) (Ping timeout: 250 seconds)
13:52:05 cheater joins (~Username@user/cheater)
13:55:33 × trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
13:56:04 trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net)
13:56:46 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:56:46 × azeem quits (~azeem@176.201.29.233) (Ping timeout: 250 seconds)
13:57:11 shimin joins (~liushimin@2001:250:5806:3dad:c501:9418:6d95:abfa)
13:57:19 azeem joins (~azeem@176.201.29.233)
13:57:49 xkuru joins (~xkuru@user/xkuru)
13:58:09 shimin parts (~liushimin@2001:250:5806:3dad:c501:9418:6d95:abfa) ()
13:59:40 shimin joins (~liushimin@2001:250:5806:3dad:c501:9418:6d95:abfa)
14:00:08 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
14:00:55 fendor_ joins (~fendor@77.119.129.45.wireless.dyn.drei.com)
14:00:58 × trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 268 seconds)
14:02:42 is7s joins (~is7s@2a01:4b00:895f:3d00:3d61:e4ff:2003:3c7)
14:03:32 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
14:05:39 × justBull quits (~justache@user/justache) (Remote host closed the connection)
14:06:36 justBull joins (~justache@user/justache)
14:08:12 argento joins (~argent0@168-227-97-34.ptr.westnet.com.ar)
14:08:47 <kuribas> Why does MaybeT has: (Functor m, Monad m) => Applicative (MaybeT m)
14:08:55 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
14:08:57 <kuribas> instaed of Applicative m => Applicative (MaybeT m) ?
14:09:45 <kuribas> seems perfectly doable with applicative.
14:09:58 <kuribas> unless you want short-circuiting?
14:10:02 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
14:10:33 <kuribas> (guess I answered my own question)
14:10:41 <Taneb> kuribas: I think the short circuting is a pretty big part of why you'd use it
14:10:42 <nshepperd> it has to short circuit to match the monad instance
14:10:55 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
14:11:07 <nshepperd> and also because that's what it's for i guess lol
14:11:08 <kuribas> Taneb: yeah
14:11:50 fendor__ joins (~fendor@91.141.3.62.wireless.dyn.drei.com)
14:12:02 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
14:12:24 <_73> what do you guys mean by short-circuiting?
14:12:30 shimin parts (~liushimin@2001:250:5806:3dad:c501:9418:6d95:abfa) ()
14:12:50 <_73> Just the behavior of the Maybe monad?
14:12:56 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
14:13:37 <kuribas> _73: "Foo <$> eff1 <*> eff2" => eff2 is not executed if eff1 returns Nothing.
14:14:04 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
14:14:06 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds)
14:14:26 × fendor quits (~fendor@178.115.131.43.wireless.dyn.drei.com) (Ping timeout: 265 seconds)
14:14:54 <_73> ok I understand
14:14:56 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
14:15:22 fluffyballoon joins (~fluffybal@199.204.58.62)
14:15:33 <lortabac> I have an IO action and a mutable variable update that must be executed atomically. What is the best way to do it?
14:15:49 × chexum quits (~chexum@gateway/tor-sasl/chexum) (Ping timeout: 244 seconds)
14:16:00 <lortabac> I saw that some people use an IORef and unsafeInterleaveIO in this case
14:16:04 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
14:16:23 <lortabac> or maybe I should use an MVar
14:16:57 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
14:17:20 anon1 joins (~anon@94.140.141.53)
14:17:33 <kuribas> lortabac: you mean update the variable if the IO action didn't throw?
14:18:01 <lortabac> no, I mean that the variable should not be modified during the IO action
14:18:04 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
14:18:19 <kuribas> lortabac: atomicModifyIORef then?
14:18:35 <Hecate> lortabac: did you check the "Applicability" section here: https://hackage.haskell.org/package/base-4.15.0.0/docs/Control-Concurrent-MVar.html ?
14:18:55 jackhill_ is now known as jackhill
14:18:57 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
14:19:04 <lortabac> atomicModifyIORef only works with a pure function, doesn't it? it requires unsafeInterleaveIO AFAIK
14:20:05 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
14:20:25 <kuribas> lortabac: I am not sure unsafeInterleaveIO will do what you want.
14:20:53 <kuribas> better use an MVar then
14:20:58 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
14:21:49 <kuribas> because it doesn't say atomicModifyIORef locks the variable while evaluating the function.
14:21:49 <lortabac> kuribas: unsafeInterleaveIO defers the IO action until the result is used in the function passed to atomicModifyIORef
14:22:05 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
14:22:33 <lortabac> anyway, the idea is not mine, I just saw this trick a couple of times
14:22:42 <kuribas> lortabac: sounds like a very bad idea.
14:22:45 <kuribas> just use an MVar
14:23:22 <lortabac> you are right, I'll use an MVar
14:24:05 <lortabac> even if it turns out that the trick works reliably, it's still hard to understand for other people who read the code
14:24:36 <kuribas> lortabac: even if it works reliably now, the docs don't say it would work in the future.
14:25:05 <lortabac> yes I agree
14:25:50 kayprish joins (~kayprish@46.240.143.86)
14:26:17 <lortabac> Hecate: thanks I've just read that section, it seems that MVar are good for my use case
14:30:08 × Boomerang quits (~Boomerang@xd520f68c.cust.hiper.dk) (Quit: Leaving)
14:31:31 <anon1> hey, how do i extend https://wiki.haskell.org/Roll_your_own_IRC_bot so it can connect over TLS?
14:35:09 <exarkun> anon1: it's not exactly based on that wiki page but https://git.sr.ht/~jcalderone/DevBot/tree/main/item/src/Net.hs#L339
14:36:11 × fendor_ quits (~fendor@77.119.129.45.wireless.dyn.drei.com) (Ping timeout: 265 seconds)
14:36:34 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
14:36:40 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 265 seconds)
14:37:44 Morrow joins (~MorrowM_@147.161.9.198)
14:39:05 shimin joins (~liushimin@2001:250:5806:3dad:c501:9418:6d95:abfa)
14:39:29 <anon1> exarkun: thanks a lot
14:40:21 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:43:04 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
14:43:49 Sgeo joins (~Sgeo@user/sgeo)
14:44:29 <teaSlurper> is polymorphism in haskell heavily about pattern matching?
14:44:37 moet joins (~moet@172.58.75.87)
14:45:11 <c_wraith> they're not especially related
14:45:37 <dminuoso> Mmm. Ad-hoc polymorphism is type-level pattern matching.
14:46:09 <dminuoso> Perhaps we can think of typeclasses as setting up a type level `case-of`, and instances providing match clauses?
14:47:14 GIANTWORLDKEEPER joins (~pjetcetal@2.95.227.207)
14:47:28 <teaSlurper> ok, i'll keep reading. am start to get to that now in the "school of music" haskell book
14:47:30 × jamestmartin quits (james@jtmar.me) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
14:47:40 <teaSlurper> polymorphism concepts
14:48:01 × ystael quits (~ystael@user/ystael) (Read error: Connection reset by peer)
14:48:56 <dminuoso> teaSlurper: At the core, a polymorphic value is one whose type mentions a type variable. The user/caller/consumer must choose a type for every such type variable (satisfying the constraints, if any)
14:49:00 <dminuoso> % :t id
14:49:00 <yahb> dminuoso: a -> a
14:49:20 ystael joins (~ystael@user/ystael)
14:49:26 <dminuoso> The user of `id` has somehow decide/choose the types. This choice is usually done implicitly by the argument you provide it (or by a type signature)
14:49:37 <c_wraith> I suppose there's some amount of type-level pattern-matching even in parametric polymorphism. Unification in general is a form of pattern matching. But it's not matching against data constructors, which is usually what is meant by pattern-matching in Haskell
14:49:48 <dminuoso> c_wraith: better, its matching against type constructors!
14:49:50 <dminuoso> :-)
14:51:59 bitmapper joins (uid464869@id-464869.tooting.irccloud.com)
14:52:06 × moet quits (~moet@172.58.75.87) (Ping timeout: 252 seconds)
14:53:15 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
14:53:48 × fluffyballoon quits (~fluffybal@199.204.58.62) (Quit: Client closed)
14:54:03 fendor_ joins (~fendor@77.119.129.45.wireless.dyn.drei.com)
14:55:11 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
14:57:33 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
14:58:54 <teaSlurper> thx
14:58:55 <anon1> quit
14:58:56 <teaSlurper> both
14:58:56 × anon1 quits (~anon@94.140.141.53) (Quit: WeeChat 3.2)
14:59:15 turlando joins (~turlando@user/turlando)
14:59:19 slowButPresent joins (~slowButPr@user/slowbutpresent)
14:59:26 × argento quits (~argent0@168-227-97-34.ptr.westnet.com.ar) (Ping timeout: 252 seconds)
15:00:28 motherfsck joins (~motherfsc@user/motherfsck)
15:04:47 mpt joins (~tom@2a02:908:1862:49e0::3)
15:08:25 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
15:09:50 curiousgay joins (~curiousgg@178.217.208.8)
15:10:03 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
15:12:03 × fendor_ quits (~fendor@77.119.129.45.wireless.dyn.drei.com) (Remote host closed the connection)
15:14:42 shimin parts (~liushimin@2001:250:5806:3dad:c501:9418:6d95:abfa) ()
15:16:29 argento joins (~argent0@168-227-97-34.ptr.westnet.com.ar)
15:17:52 tremon joins (~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl)
15:21:34 × kayprish quits (~kayprish@46.240.143.86) (Quit: leaving)
15:21:42 × chomwitt quits (~Pitsikoko@athedsl-351576.home.otenet.gr) (Ping timeout: 250 seconds)
15:21:50 kayprish joins (~kayprish@46.240.143.86)
15:23:00 favonia joins (~favonia@user/favonia)
15:23:09 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
15:28:12 × dajoer quits (~david@user/gvx) (Quit: leaving)
15:28:43 chomwitt joins (~Pitsikoko@2a02:587:dc0b:ff00:c813:70d9:31b2:b1b9)
15:29:26 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:9f46:523f:c74b:90e0) (Quit: WeeChat 2.8)
15:29:28 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:30:06 × kayprish quits (~kayprish@46.240.143.86) (Quit: leaving)
15:30:15 kayprish joins (~kayprish@46.240.143.86)
15:30:59 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
15:34:02 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Remote host closed the connection)
15:34:54 × mpt quits (~tom@2a02:908:1862:49e0::3) (Ping timeout: 244 seconds)
15:35:35 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
15:36:21 fef joins (~thedawn@user/thedawn)
15:36:52 moet joins (~moet@172.58.75.87)
15:37:11 jamestmartin joins (james@jtmar.me)
15:37:20 × GIANTWORLDKEEPER quits (~pjetcetal@2.95.227.207) (Remote host closed the connection)
15:37:54 Deide joins (~Deide@wire.desu.ga)
15:37:54 × Deide quits (~Deide@wire.desu.ga) (Changing host)
15:37:54 Deide joins (~Deide@user/deide)
15:38:24 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:39:21 × kayprish quits (~kayprish@46.240.143.86) (Quit: leaving)
15:39:31 kayprish joins (~kayprish@46.240.143.86)
15:39:57 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
15:40:43 lavaman joins (~lavaman@98.38.249.169)
15:41:48 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
15:42:51 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:43:17 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Remote host closed the connection)
15:44:24 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
15:44:58 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
15:45:16 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
15:46:03 elf_fortrez joins (~elf_fortr@adsl-64-237-239-58.prtc.net)
15:48:40 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.1)
15:48:54 nate1 joins (~nate@216.176.47.241)
15:49:19 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
15:50:06 × kayprish quits (~kayprish@46.240.143.86) (Remote host closed the connection)
15:53:42 × Morrow quits (~MorrowM_@147.161.9.198) (Read error: Connection reset by peer)
15:53:55 kayprish joins (~kayprish@46.240.143.86)
15:54:04 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
15:55:51 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:56:39 Morrow joins (~MorrowM_@147.161.9.198)
15:56:41 dunj3 joins (~dunj3@2001:16b8:309f:ea00:9791:603:5183:d379)
15:57:17 × kayprish quits (~kayprish@46.240.143.86) (Client Quit)
15:57:32 MorrowM joins (~MorrowM_@147.161.13.169)
15:57:34 kayprish joins (~kayprish@46.240.143.86)
15:58:45 ubert joins (~Thunderbi@p200300ecdf259dd400f35283690bc8bb.dip0.t-ipconnect.de)
15:59:06 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Remote host closed the connection)
16:01:15 × Morrow quits (~MorrowM_@147.161.9.198) (Ping timeout: 265 seconds)
16:01:15 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
16:01:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:03:37 bontaq` joins (~user@ool-18e47f8d.dyn.optonline.net)
16:04:29 × nschoe quits (~quassel@178.251.84.79) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
16:06:32 × MQ-17J quits (~MQ-17J@8.21.10.15) (Ping timeout: 252 seconds)
16:06:47 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Read error: Connection reset by peer)
16:06:54 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
16:07:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:07:43 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
16:08:28 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
16:08:55 × kayprish quits (~kayprish@46.240.143.86) (Quit: Lost terminal)
16:10:54 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
16:11:21 hendursaga joins (~weechat@user/hendursaga)
16:11:42 × favonia quits (~favonia@user/favonia) (Ping timeout: 264 seconds)
16:12:18 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
16:12:46 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
16:13:15 favonia joins (~favonia@user/favonia)
16:13:20 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 265 seconds)
16:13:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:14:28 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
16:15:21 mikail joins (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf)
16:16:25 lavaman joins (~lavaman@98.38.249.169)
16:17:21 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
16:19:00 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
16:19:11 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
16:19:22 × elf_fortrez quits (~elf_fortr@adsl-64-237-239-58.prtc.net) (Quit: Client closed)
16:19:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:20:06 × nate1 quits (~nate@216.176.47.241) (Ping timeout: 265 seconds)
16:20:18 × favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds)
16:21:53 tput joins (~tim@s0106a84e3fe54613.ed.shawcable.net)
16:22:52 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:23:03 favonia joins (~favonia@user/favonia)
16:28:40 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
16:30:10 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
16:30:12 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
16:30:13 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
16:34:06 × azeem quits (~azeem@176.201.29.233) (Read error: Connection reset by peer)
16:35:03 mrusme is now known as mrus
16:35:10 azeem joins (~azeem@dynamic-adsl-94-34-49-60.clienti.tiscali.it)
16:37:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:38:34 × ubert quits (~Thunderbi@p200300ecdf259dd400f35283690bc8bb.dip0.t-ipconnect.de) (Quit: ubert)
16:39:27 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 268 seconds)
16:40:29 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Remote host closed the connection)
16:43:18 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
16:43:38 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:43:53 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
16:44:57 × qbt quits (~edun@user/edun) (Ping timeout: 258 seconds)
16:44:59 × gnoo quits (~gnoo@user/gnoo) (Remote host closed the connection)
16:45:25 gnoo joins (~gnoo@user/gnoo)
16:45:28 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
16:45:55 fendor__ is now known as fendor
16:46:49 shapr joins (~user@144.163.30.223)
16:48:05 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
16:48:42 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
16:49:25 × xff0x_ quits (~xff0x@2001:1a81:53cb:7800:33aa:1278:7cdb:992c) (Ping timeout: 268 seconds)
16:49:37 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:49:39 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
16:49:40 econo joins (uid147250@user/econo)
16:49:56 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
16:50:04 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Ping timeout: 265 seconds)
16:50:14 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
16:52:22 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
16:52:24 GIANTWORLDKEEPER joins (~pjetcetal@2.95.227.207)
16:53:57 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
16:54:17 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
16:54:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
16:55:32 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:55:52 × MorrowM quits (~MorrowM_@147.161.13.169) (Ping timeout: 265 seconds)
16:56:52 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
16:57:40 × kuribas quits (~user@ptr-25vy0i7yslxo8ej7h6j.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
16:58:24 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
16:58:28 xff0x joins (~xff0x@2001:1a81:53cb:7800:fb34:5f25:12c9:2a25)
16:59:07 gnoo parts (~gnoo@user/gnoo) (Bye!)
16:59:43 MoC joins (~moc@user/moc)
17:00:24 × brandonh quits (~brandonh@151.34.95.83) (Read error: Connection reset by peer)
17:00:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
17:01:15 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:01:24 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:02:39 Morrow joins (~MorrowM_@147.161.13.169)
17:02:57 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:02:58 × azeem quits (~azeem@dynamic-adsl-94-34-49-60.clienti.tiscali.it) (Ping timeout: 258 seconds)
17:03:15 azeem joins (~azeem@176.201.29.233)
17:06:02 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:06:18 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
17:07:15 brandonh joins (~brandonh@151.34.22.105)
17:07:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:07:34 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:07:45 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.1)
17:07:57 × argento quits (~argent0@168-227-97-34.ptr.westnet.com.ar) (Ping timeout: 258 seconds)
17:09:46 × chomwitt quits (~Pitsikoko@2a02:587:dc0b:ff00:c813:70d9:31b2:b1b9) (Ping timeout: 268 seconds)
17:10:40 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:12:13 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:12:18 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
17:12:33 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
17:12:35 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
17:12:54 × mikail quits (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) (Ping timeout: 264 seconds)
17:13:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:14:33 × xkuru quits (~xkuru@user/xkuru) (Quit: Unvirtualizing)
17:14:50 xkuru joins (~xkuru@user/xkuru)
17:15:12 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:16:43 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:17:28 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
17:17:33 lbseale__ joins (~lbseale@user/ep1ctetus)
17:17:39 elf_fortrez joins (~elf_fortr@adsl-64-237-239-58.prtc.net)
17:18:22 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:18:35 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
17:18:55 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
17:19:00 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:19:17 × xkuru quits (~xkuru@user/xkuru) (Client Quit)
17:19:35 xkuru joins (~xkuru@user/xkuru)
17:19:46 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:20:52 × lbseale_ quits (~lbseale@user/ep1ctetus) (Ping timeout: 250 seconds)
17:21:19 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:22:27 × jonatan_ quits (~nate@h77-53-70-163.cust.a3fiber.se) (Ping timeout: 265 seconds)
17:22:34 lbseale__ is now known as lbseale
17:24:11 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:25:43 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:26:19 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
17:28:30 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:29:35 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
17:30:05 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:32:20 ph88 joins (~ph88@2a02:8109:9e00:7e5c:7c55:3c65:74e1:3dc5)
17:32:53 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:33:00 <dminuoso> c_wraith: What kind of pattern matching are you thinking of in parametric polymorphism?
17:33:18 <dminuoso> Or did you mean unification? The sentence structure is not clear.
17:33:26 × Morrow quits (~MorrowM_@147.161.13.169) (Ping timeout: 252 seconds)
17:33:44 <c_wraith> in that sentence I meant that unification is a kind of pattern matching, in a very broad sense.
17:34:00 <c_wraith> but that's very different from runtime pattern matching of values.
17:34:01 <ski> _73 : "maybe if I had to account for the possibility of error it would be easier to do this then instead start using the EitherT State transformer?" -- maybe. ("Is this a sensical reason?" -- yes) "Cps is reminding me a lot of monads…" -- there are clear similarities
17:34:26 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:36:02 <ski> _73 : it sounds like maybe you'd want to experiment with `ContT o' or `Codensity', or maybe a handwritten CPS monad, over `EitherT Error (State ProgramState) Value'
17:36:05 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:37:23 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:38:57 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:41:12 chomwitt joins (~Pitsikoko@athedsl-351576.home.otenet.gr)
17:41:40 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:43:13 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:46:18 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:47:08 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
17:47:51 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:48:28 <ski> _73 : one of the main reasons for using CPS / `Cont o'/`ContT o'/`Codensity', apart from wanting to do more exotic control behaviour, is for efficiency reasons. you'll sometimes hear "removal of interpretative overhead / avoiding step-by-step percolating errors upward / avoiding left-association", in connection with `(>>=)'. perhaps the `Either' (or maybe the `(,)') could cause some overhead, that could be
17:48:34 <ski> avoided in this way. but i'd say before doing anything like this, you should have some suspicion that this might be a problem; and then, you should really attempt to measure some
17:49:44 × maroloccio quits (~marolocci@189.15.9.54) (Quit: Client closed)
17:50:39 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:51:45 fef joins (~thedawn@user/thedawn)
17:51:50 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
17:52:12 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:52:19 × xff0x quits (~xff0x@2001:1a81:53cb:7800:fb34:5f25:12c9:2a25) (Ping timeout: 268 seconds)
17:52:36 unyu joins (~pyon@user/pyon)
17:53:40 xff0x joins (~xff0x@2001:1a81:53f8:8c00:17bc:3aea:ca8:b929)
17:53:55 × elf_fortrez quits (~elf_fortr@adsl-64-237-239-58.prtc.net) (Ping timeout: 246 seconds)
17:54:53 haltux joins (~haltux@a89-154-181-47.cpe.netcabo.pt)
17:55:02 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
17:55:11 <_73> ski: what is meant by the `o` in `Cont o`?
17:56:36 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
17:59:35 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
18:01:07 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
18:04:14 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Remote host closed the connection)
18:05:39 × azeem quits (~azeem@176.201.29.233) (Read error: Connection reset by peer)
18:05:48 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
18:05:59 mikail joins (~mikail@90.152.14.81)
18:06:48 × yoctocell quits (~user@h87-96-130-155.cust.a3fiber.se) (Quit: ERC (IRC client for Emacs 28.0.50))
18:06:55 azeem joins (~azeem@dynamic-adsl-84-220-246-6.clienti.tiscali.it)
18:08:04 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
18:08:05 yoctocell joins (~user@h87-96-130-155.cust.a3fiber.se)
18:08:55 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
18:09:05 jonatan joins (~nate@h77-53-70-163.cust.a3fiber.se)
18:10:28 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
18:11:16 Izem joins (~Izem@bras-base-london1483w-grc-42-65-95-172-41.dsl.bell.ca)
18:11:30 <Izem> do haskellers ever have the need for macros?
18:12:14 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
18:13:08 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
18:14:40 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
18:15:11 <monochrom> Yes. This is why Template Haskell exists.
18:15:12 × mc47 quits (~mc47@xmonad/TheMC47) (Quit: Leaving)
18:16:37 <davean> though Template Haskell is more than macros in a way, and its not wanted for much in Haskell
18:17:30 <Izem> ok, cool
18:17:45 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
18:19:21 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
18:22:15 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
18:23:34 x_kuru joins (~xkuru@user/xkuru)
18:23:48 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
18:24:03 juhp_ joins (~juhp@128.106.188.66)
18:24:59 <ski> _73 : the "final answer type"
18:26:14 × xkuru quits (~xkuru@user/xkuru) (Ping timeout: 252 seconds)
18:26:46 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
18:27:13 × juhp quits (~juhp@128.106.188.66) (Ping timeout: 265 seconds)
18:27:13 juhp_ is now known as juhp
18:28:21 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
18:29:03 _73` joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net)
18:29:49 ddellacosta joins (~ddellacos@ool-44c73afc.dyn.optonline.net)
18:30:45 × _73 quits (~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Ping timeout: 258 seconds)
18:31:02 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
18:32:35 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
18:35:21 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
18:35:58 MoC joins (~moc@user/moc)
18:36:30 × ddellacosta quits (~ddellacos@ool-44c73afc.dyn.optonline.net) (Ping timeout: 258 seconds)
18:36:53 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
18:37:21 justsomeguy joins (~justsomeg@user/justsomeguy)
18:38:22 peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
18:39:06 <_73`> ski: ok I see. I did initially try this but I wasn't able to get my `Either Error Value` functions lifted in. Do I need to rethink the Either functions as well? Before with the `ExceptT Error (State PS.ProgramState) ()` I was able to just use liftEither to get them lifted in, but now I cant come up with a way to get these functions to work with the Cont Monad. Is this ever going to work?: http://dpaste.com/C2ZEWRKHN
18:39:27 v01d4lph4 joins (~v01d4lph4@user/v01d4lph4)
18:39:40 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
18:39:47 <_73`> This problem lead me to do: `ContT PS.ProgramState (ExceptT Error (State PS.ProgramState)) Value`, but I think this may defeat the purpose.
18:40:11 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:40:40 ddellacosta joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
18:41:14 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
18:41:36 ddellaco_ joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
18:41:43 Topsi joins (~Tobias@dyndsl-091-249-082-141.ewe-ip-backbone.de)
18:42:07 BSTMatAoUYek joins (~BSTMatAoU@37.73.15.135)
18:42:07 <BSTMatAoUYek> 9o baCk to fReen0De OR N0rtH kOr3A nuke5 Y0u
18:42:07 × BSTMatAoUYek quits (~BSTMatAoU@37.73.15.135) (Client Quit)
18:42:48 × ddellacosta quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Read error: Connection reset by peer)
18:42:56 × Izem quits (~Izem@bras-base-london1483w-grc-42-65-95-172-41.dsl.bell.ca) (Quit: Izem)
18:43:05 <sshine> I thought it was south korea.
18:43:10 × ystael quits (~ystael@user/ystael) (Ping timeout: 265 seconds)
18:43:10 ddellacosta joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
18:43:13 Izem joins (~Izem@bras-base-london1483w-grc-42-65-95-172-41.dsl.bell.ca)
18:43:47 × v01d4lph4 quits (~v01d4lph4@user/v01d4lph4) (Ping timeout: 258 seconds)
18:44:04 × betelgeuse7 quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
18:45:22 × ddellacosta quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Read error: Connection reset by peer)
18:45:30 lTcLPewPJLOs joins (~lTcLPewPJ@37.73.15.135)
18:45:30 <lTcLPewPJLOs> jo1n fr3Enode sIDE, we hAv3 CookieS&fRe3 bnc
18:45:31 × lTcLPewPJLOs quits (~lTcLPewPJ@37.73.15.135) (Client Quit)
18:45:37 betelgeuse7 joins (~john2gb@94-225-47-8.access.telenet.be)
18:46:17 × ddellaco_ quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Read error: Connection reset by peer)
18:47:00 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
18:48:44 Guest9 joins (~Guest9@43.250.158.43)
18:54:53 betelgeuse7 is now known as betelgeuse
18:55:31 × brandonh quits (~brandonh@151.34.22.105) (Quit: brandonh)
18:58:29 amirouche` is now known as amirouche
18:58:42 <tomsmeding> well at least they're mindful enough to approach the issue from both sides: scare us away from here and lure us to the other side
18:59:17 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
18:59:59 <monochrom> Except when you go to the other side you also see them suggesting you to come back here.
19:00:15 <tomsmeding> probably not the same "them" though
19:00:27 <tomsmeding> this at least was even the very same IP address :p
19:00:50 <tomsmeding> also the nicks were equally long and the messages were also (!) equally long
19:00:52 × peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Quit: Must not waste too much time here...)
19:01:49 <monochrom> Same "them" is already the best scenerio. The worse scenerio is different "them" therefore akin to two government departments telling you "go to the other department, this is their problem".
19:02:55 <monochrom> But good eyes catching the lengths :)
19:04:23 tzar_bomba joins (~tzar_bomb@78-56-41-78.static.zebra.lt)
19:05:13 ystael joins (~ystael@user/ystael)
19:05:50 <tomsmeding> my client hiding joins/leaves of idle nicks does make it easier to spot :)
19:06:01 × yoctocell quits (~user@h87-96-130-155.cust.a3fiber.se) (Quit: ERC (IRC client for Emacs 28.0.50))
19:07:17 <_73`> ski: I now understand why my example was not going to work.
19:07:52 peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
19:08:12 ddellacosta joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
19:08:35 ski would think it's more likely to be the same "them" (or similarly motivated people), at least for the "/!\ ..."-style spam, that's been visible on multiple networks, lately
19:08:42 × favonia quits (~favonia@user/favonia) (Ping timeout: 264 seconds)
19:08:55 × Scotty_Trees quits (~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) (Quit: Leaving)
19:09:06 <ski> (i've seen that on five networks, and i haven't really bothered to look around more for it)
19:09:19 rawles joins (~o@sputnik.rawles.net)
19:09:29 favonia joins (~favonia@user/favonia)
19:09:55 × rawles quits (~o@sputnik.rawles.net) (Changing host)
19:09:55 rawles joins (~o@user/rawles)
19:11:07 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Remote host closed the connection)
19:11:12 Scotty_Trees joins (~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net)
19:11:36 zeenk joins (~zeenk@2a02:2f04:a00e:6e00:d401:4c92:fecc:16f9)
19:12:26 cyclosa joins (~cyclosa@2603-6011-4a41-8ada-0000-0000-0000-0eaa.res6.spectrum.com)
19:12:32 <ski> @unmtl ContT o (ExceptT e (StateT s m)) a
19:12:32 <lambdabot> (a -> s -> m (Either e o, s)) -> s -> m (Either e o, s)
19:12:36 <ski> @unmtl ExceptT e (ContT o (StateT s m)) a
19:12:36 <lambdabot> (Either e a -> s -> m (o, s)) -> s -> m (o, s)
19:12:38 <ski> @unmtl ExceptT e (StateT s (ContT o m)) a
19:12:39 <lambdabot> s -> (Either e a -> s -> m o) -> m o
19:14:27 <ski> _73` : the last one looks more promising, i'd think. although, perhaps (or perhaps not) it would be worth it to manually replace `(Either e a -> s -> m o) ->' by `(e -> s -> m o) -> (a -> s -> m o) ->' (having separate "normal exit" and "exceptional exit" paths) ..
19:15:11 MoC joins (~moc@user/moc)
19:15:38 amirouche come to (free) deno side
19:15:40 <amirouche> quit
19:15:42 <amirouche> oops!
19:17:38 <_73`> I am going to have to consider this for some time. First I will see how far I can get with the last example. Thanks.
19:19:52 × Guest9 quits (~Guest9@43.250.158.43) (Quit: Ping timeout (120 seconds))
19:20:02 Morrow joins (~MorrowM_@147.161.9.243)
19:20:08 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
19:20:08 Erutuon joins (~Erutuon@user/erutuon)
19:20:22 Guest9 joins (~Guest9@43.250.158.43)
19:20:28 × dhil quits (~dhil@195.213.192.47) (Ping timeout: 250 seconds)
19:20:35 × derelict quits (~derelict@user/derelict) (Ping timeout: 258 seconds)
19:21:14 × haltux quits (~haltux@a89-154-181-47.cpe.netcabo.pt) (Ping timeout: 252 seconds)
19:27:46 janiczek joins (~janiczek@89-24-215-117.customers.tmcz.cz)
19:32:36 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
19:32:58 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 252 seconds)
19:33:19 geekosaur joins (~geekosaur@xmonad/geekosaur)
19:33:38 dhil joins (~dhil@80.208.56.181)
19:35:12 × shapr quits (~user@144.163.30.223) (Ping timeout: 268 seconds)
19:37:18 × jackhill quits (~jackhill@kalessin.dragonsnail.net) (Read error: Connection reset by peer)
19:38:34 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
19:38:57 ChaiTRex joins (~ChaiTRex@user/chaitrex)
19:41:00 jackhill joins (~jackhill@kalessin.dragonsnail.net)
19:42:18 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
19:43:02 × favonia quits (~favonia@user/favonia) (Ping timeout: 252 seconds)
19:43:26 favonia joins (~favonia@user/favonia)
19:44:11 shapr joins (~user@144.163.30.223)
19:44:47 pavonia joins (~user@user/siracusa)
19:46:21 learner-monad joins (~ehanneken@user/learner-monad)
19:46:59 × favonia quits (~favonia@user/favonia) (Client Quit)
19:47:28 moet_ joins (~moet@172.58.19.20)
19:47:41 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.0.1)
19:48:17 kayprish joins (~kayprish@46.240.143.86)
19:48:36 × dmang quits (~dmang@user/dmang) (Remote host closed the connection)
19:49:51 dmang joins (~dmang@047-032-148-170.res.spectrum.com)
19:50:50 × moet quits (~moet@172.58.75.87) (Ping timeout: 265 seconds)
19:52:31 dtman34 joins (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
19:52:48 Codaraxis__ joins (~Codaraxis@193.32.126.158)
19:52:52 × Codaraxis__ quits (~Codaraxis@193.32.126.158) (Remote host closed the connection)
19:53:25 Codaraxis joins (~Codaraxis@193.32.126.158)
19:54:42 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
19:57:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:58:22 sheepduck joins (~sheepduck@user/sheepduck)
19:58:29 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
19:59:22 Guest8 joins (~Guest8@71.sub-174-248-28.myvzw.com)
20:00:10 × Guest8 quits (~Guest8@71.sub-174-248-28.myvzw.com) (Client Quit)
20:04:35 killsushi joins (~killsushi@user/killsushi)
20:05:14 × juhp quits (~juhp@128.106.188.66) (Ping timeout: 252 seconds)
20:05:30 × AgentM quits (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
20:06:44 juhp joins (~juhp@128.106.188.66)
20:08:48 IvanDru[m] joins (~dendrumat@2001:470:69fc:105::2f9b)
20:08:52 delYsid joins (~user@user/delYsid)
20:09:41 × ddellacosta quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 265 seconds)
20:11:02 ddellacosta joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
20:11:58 ddellaco_ joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
20:12:00 × kayprish quits (~kayprish@46.240.143.86) (Quit: leaving)
20:12:14 kayprish joins (~kayprish@46.240.143.86)
20:12:30 jumper149 joins (~jumper149@80.240.31.34)
20:12:31 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
20:13:09 <jumper149> Hi, is it possible to give a constraint, that a specific type of a non-injective type family exists?
20:14:08 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:14:08 × azeem quits (~azeem@dynamic-adsl-84-220-246-6.clienti.tiscali.it) (Read error: Connection reset by peer)
20:14:31 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
20:14:53 azeem joins (~azeem@dynamic-adsl-84-220-246-6.clienti.tiscali.it)
20:15:54 × ddellacosta quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 268 seconds)
20:16:15 × sheepduck quits (~sheepduck@user/sheepduck) (Quit: Leaving)
20:16:42 sheepduck joins (~sheepduck@user/sheepduck)
20:17:50 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Remote host closed the connection)
20:18:14 × kayprish quits (~kayprish@46.240.143.86) (Quit: leaving)
20:18:23 kayprish joins (~kayprish@46.240.143.86)
20:19:35 × kayprish quits (~kayprish@46.240.143.86) (Client Quit)
20:19:45 kayprish joins (~kayprish@46.240.143.86)
20:19:46 ddellacosta joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
20:22:24 × kayprish quits (~kayprish@46.240.143.86) (Client Quit)
20:22:35 kayprish joins (~kayprish@46.240.143.86)
20:22:41 × dhil quits (~dhil@80.208.56.181) (Ping timeout: 268 seconds)
20:23:12 × ddellaco_ quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 252 seconds)
20:24:15 × ddellacosta quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Read error: Connection reset by peer)
20:24:21 ddellaco_ joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
20:24:41 × shapr quits (~user@144.163.30.223) (Read error: Connection reset by peer)
20:25:33 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:26:34 × kayprish quits (~kayprish@46.240.143.86) (Client Quit)
20:26:45 kayprish joins (~kayprish@46.240.143.86)
20:27:05 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
20:27:10 × Izem quits (~Izem@bras-base-london1483w-grc-42-65-95-172-41.dsl.bell.ca) (Quit: Izem)
20:27:12 shapr joins (~user@144.163.30.223)
20:29:52 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:29:52 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
20:31:26 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
20:31:27 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
20:31:44 × esclear[i] quits (~esclear@phobos.esclear.de) (Quit: WeeChat 2.1)
20:32:05 <delYsid> heh, I am getting a shady investment AD on youtube tweag channel.
20:34:07 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:34:13 derelict joins (~derelict@user/derelict)
20:34:55 × Morrow quits (~MorrowM_@147.161.9.243) (Read error: Connection reset by peer)
20:35:40 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
20:36:03 dhil joins (~dhil@195.213.192.47)
20:36:21 Morrow joins (~MorrowM_@147.161.9.243)
20:36:56 × kayprish quits (~kayprish@46.240.143.86) (Read error: Connection reset by peer)
20:38:31 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:38:36 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
20:38:48 korayal joins (~Koray_Al@213.14.171.115)
20:39:10 × peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 265 seconds)
20:39:17 argento joins (~argent0@168-227-97-34.ptr.westnet.com.ar)
20:40:04 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
20:43:06 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:44:39 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
20:44:39 kayprish joins (~kayprish@46.240.143.86)
20:45:34 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
20:47:22 × deshalb quits (~deshalb@user/deshalb) (Quit: leaving)
20:47:25 Erutuon joins (~Erutuon@user/erutuon)
20:47:26 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:48:59 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
20:49:17 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:49:47 × kayprish quits (~kayprish@46.240.143.86) (Quit: leaving)
20:49:59 kayprish joins (~kayprish@46.240.143.86)
20:51:44 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:52:58 ddellacosta joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
20:53:17 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
20:54:02 <Topsi> Is there a decision on the Monad of no return proposal? Is return going to be removed from the Monad class in the future?
20:56:07 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:56:34 × ddellaco_ quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 252 seconds)
20:57:41 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:00:17 × ystael quits (~ystael@user/ystael) (Read error: Connection reset by peer)
21:00:40 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:00:41 bilegeek joins (~bilegeek@2600:1008:b017:63a6:c26d:d119:faaa:a6d7)
21:02:13 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:04:51 × chomwitt quits (~Pitsikoko@athedsl-351576.home.otenet.gr) (Ping timeout: 258 seconds)
21:05:00 × mikail quits (~mikail@90.152.14.81) (Ping timeout: 252 seconds)
21:05:04 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:05:11 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Quit: Leaving.)
21:06:38 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:06:47 × zgrep quits (~zgrep@user/zgrep) (Quit: It's a quitter's world.)
21:07:56 × shapr quits (~user@144.163.30.223) (Ping timeout: 252 seconds)
21:08:18 zgrep joins (~zgrep@user/zgrep)
21:09:32 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:11:07 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:11:09 mikail joins (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf)
21:12:12 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.1)
21:14:05 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:15:21 × korayal quits (~Koray_Al@213.14.171.115) (Quit: WeeChat 3.3-dev)
21:15:34 korayal joins (~Koray_Al@213.14.171.115)
21:15:39 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:16:11 mikail_ joins (~mikail@90.212.77.3)
21:16:25 × mikail quits (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) (Ping timeout: 244 seconds)
21:16:40 lavaman joins (~lavaman@98.38.249.169)
21:17:19 hammock joins (~Hammock@2600:1700:19a1:3330::625)
21:17:42 <dminuoso> jumper149: What do you mean by "specific type of a non-injective type family exists"?
21:18:36 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:19:09 haltux joins (~haltux@a89-154-181-47.cpe.netcabo.pt)
21:19:50 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:7c55:3c65:74e1:3dc5) (Ping timeout: 252 seconds)
21:20:11 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:21:13 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
21:21:41 ph88 joins (~ph88@2a02:8109:9e00:7e5c:7c55:3c65:74e1:3dc5)
21:22:59 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:23:15 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds)
21:24:32 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:25:11 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
21:25:11 hololeap joins (hololeap@user/hololeap)
21:26:19 MQ-17J joins (~MQ-17J@8.21.10.15)
21:26:27 × michalz quits (~michalz@185.246.204.40) (Remote host closed the connection)
21:28:15 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:29:51 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:30:58 ystael joins (~ystael@user/ystael)
21:32:27 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
21:35:49 _73` parts (~user@pool-96-252-123-136.bstnma.fios.verizon.net) (ERC (IRC client for Emacs 27.2))
21:36:05 jakalx joins (~jakalx@base.jakalx.net)
21:36:16 beka joins (~beka@104.193.170-244.public.monkeybrains.net)
21:38:08 × MQ-17J quits (~MQ-17J@8.21.10.15) (Ping timeout: 265 seconds)
21:39:44 chexum joins (~chexum@gateway/tor-sasl/chexum)
21:41:11 <jumper149> dminuoso: `StM m a` from MonadBaseControl is supposedly a non-injective type-family. At least GHC tells me that.
21:42:05 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
21:42:23 <jumper149> I am pretty sure what I want is a function like `StM m () -> b (StM m ())`.
21:43:37 <jumper149> I guess GHC cannot know what type `StM m ()` actually is unless it was clear it's an injective type family.
21:44:08 × ddellacosta quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Remote host closed the connection)
21:44:24 ddellacosta joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
21:44:40 <dminuoso> Is m quantified here? Or does m stand for some specific unknown type?
21:45:14 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:46:05 <jumper149> forall m. MonadBaseControl b m => StM m () -> b (StM m ())
21:46:38 <jumper149> wait
21:49:39 <jumper149> yeah thats basically it
21:49:47 gehmehgeh joins (~user@user/gehmehgeh)
21:50:55 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
21:52:21 <jumper149> I should say that the actual value never gets inspected.
21:52:38 MorrowM joins (~MorrowM_@147.161.8.246)
21:52:41 <jumper149> I got it to the point of: `StM m Any -> b (StM m Any)`
21:54:42 <jumper149> and with `unsafeCoerce <$> runInBase $ pure undefined` I got it working.
21:55:04 × Morrow quits (~MorrowM_@147.161.9.243) (Ping timeout: 258 seconds)
21:55:08 <jumper149> I guess it's impossible to understand what I'm trying to say though x)
21:55:12 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
21:55:54 × xff0x quits (~xff0x@2001:1a81:53f8:8c00:17bc:3aea:ca8:b929) (Ping timeout: 240 seconds)
21:56:02 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:56:51 xff0x joins (~xff0x@2001:1a81:53f8:8c00:146b:f6fc:d9b4:bcad)
21:57:03 × beka quits (~beka@104.193.170-244.public.monkeybrains.net) (Remote host closed the connection)
21:57:19 beka joins (~beka@104.193.170-244.PUBLIC.monkeybrains.net)
21:57:36 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:58:02 × ddellacosta quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Remote host closed the connection)
21:58:31 ddellacosta joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
21:59:52 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:00:20 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:01:52 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:03:07 × ddellacosta quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 258 seconds)
22:04:40 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:06:15 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:06:58 × MorrowM quits (~MorrowM_@147.161.8.246) (Ping timeout: 252 seconds)
22:07:43 × beka quits (~beka@104.193.170-244.PUBLIC.monkeybrains.net) (Ping timeout: 258 seconds)
22:08:06 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
22:08:36 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:08:53 × warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
22:08:57 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:10:31 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:11:14 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
22:13:18 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:14:52 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:15:39 <johnw> jumper149: you could use type application to specify m, apparently it can't be determined from use?
22:17:59 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Remote host closed the connection)
22:18:35 ddellacosta joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
22:19:31 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:20:16 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Remote host closed the connection)
22:22:26 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:23:59 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:26:57 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:27:58 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:28:24 × mikail_ quits (~mikail@90.212.77.3) (Ping timeout: 265 seconds)
22:28:31 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:29:22 × unyu quits (~pyon@user/pyon) (Ping timeout: 265 seconds)
22:31:19 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:31:32 × tomsmeding quits (~tomsmedin@2a03:b0c0:0:1010::767:3001) (Quit: ZNC 1.8.2 - https://znc.in)
22:31:39 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:31:51 tomsmeding joins (~tomsmedin@2a03:b0c0:0:1010::767:3001)
22:32:17 unyu joins (~pyon@user/pyon)
22:32:54 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:34:11 × Codaraxis quits (~Codaraxis@193.32.126.158) (Changing host)
22:34:11 Codaraxis joins (~Codaraxis@user/codaraxis)
22:34:23 raehik1 joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
22:34:35 × Guest9 quits (~Guest9@43.250.158.43) (Quit: Connection closed)
22:35:40 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:35:41 Cajun joins (~Cajun@ip98-163-211-112.no.no.cox.net)
22:35:41 ddellaco_ joins (~ddellacos@86.106.121.100)
22:37:07 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
22:37:15 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:37:32 <Cajun> so im now using cabal to build and im trying to use `hip` for image processing and no matter what i cant get it to build (why do these tools have to be a pain). heres the output: https://paste.tomsmeding.com/zbgeWosa
22:38:29 <davean> ok, so its told you the problem, whats the question?
22:38:53 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a)
22:38:58 × ddellacosta quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Ping timeout: 268 seconds)
22:39:29 <Cajun> i have absolutely no idea how to make this build. is it constraints? is it just not possible? it doesnt seem like i can do anything to get it to use the package and build
22:39:58 <davean> So you might want to update your package set, but what you have doesn't work together
22:40:09 <davean> it looks like something that might work together has been released
22:40:09 <Cajun> its literally `base` and `hip`
22:40:12 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:40:31 <davean> yes, your required version of base, and diagrams-postscript's required versions of base don't overlap
22:41:10 <davean> try cabal update though
22:41:33 <Cajun> just did `cabal update` and that didnt help it
22:41:45 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:42:16 <davean> https://hackage.haskell.org/package/diagrams-postscript-1.5/revisions/ theres a revision that should have opened it up for you
22:42:36 <davean> 2021-06-21T19:57:32Z so it was very recent
22:42:56 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
22:43:08 <Cajun> so how would i go about using that for `hip`?
22:43:47 <davean> I mean what state is your package index at? You're trying to use version 1.5 - read the output it tells you - but clearly you don't have that revision
22:44:02 <davean> so the update didn't get sometihng only an hour or two old - caching perhaps?
22:44:07 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
22:44:30 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:44:58 <davean> when you did cabal update, it'd have shown you the index state it got up to
22:45:40 <Cajun> here is what `cabal update` spat out when i ran it a few minutes ago https://paste.tomsmeding.com/uHgqBqU4
22:45:52 × pbrisbin quits (~patrick@pool-72-92-38-164.phlapa.fios.verizon.net) (Ping timeout: 250 seconds)
22:46:03 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:46:23 <davean> 2021-06-19T09:28:37Z - notice 09:28:37Z not 2021-06-21T19:57:32Z
22:46:27 <davean> so there is some caching happening there
22:46:46 <davean> Hum, so the question is whats caching it
22:46:58 <davean> because thats not what I see being served
22:47:05 ukari joins (~ukari@user/ukari)
22:47:11 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
22:47:12 <Cajun> well isnt that the old package list? considering its saying how to revert the update
22:47:34 <davean> It should say something like "Updated package list of hackage.haskell.org to the index-state 2021-06-21T21:21:54Z"
22:47:53 geekosaur joins (~geekosaur@xmonad/geekosaur)
22:47:58 <Cajun> i just ran it again and yes it said that
22:48:03 <davean> perhaps your cabal is to old to say that, but its unclear what you ended up with
22:48:14 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.1)
22:48:32 <Cajun> running it again told me to download that specific version to revert the update so that is the index-state i have
22:48:36 <Cajun> yet it still does not build
22:48:52 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:49:29 <Cajun> i have cabal 3.2.0.0 if that matters
22:50:27 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:50:34 <davean> I just upgrade my cabal to the latest all the time, so I have no idea about 3.2 but I was pretty sure it output the current version also
22:50:53 <Cajun> just updated to 3.4.0.0 and yes it still does not build
22:51:08 <davean> did it update to more current though?
22:51:16 <davean> This is about what it has available
22:51:19 <Cajun> `index-state 2021-06-21T21:21:54Z`
22:51:27 <davean> ok, and it still doesn't build after that?
22:51:30 <Cajun> no
22:51:31 <davean> did the output change?
22:51:41 × zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving)
22:53:15 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:53:26 zaquest joins (~notzaques@5.128.210.178)
22:53:27 <Cajun> not much at all except its now `diagrams-core` instead of `diagrams-postscript`
22:53:34 <davean> Thats a huge change though
22:53:59 <davean> though uh
22:54:22 <davean> its got to be telling you more than just that - diagrams-core 1.5 would build
22:54:30 <Cajun> well heres the current output https://paste.tomsmeding.com/aup814H3
22:54:44 <monochrom> Nice, today I modified the idea of "Queue a = {front :: [a], back :: [a]}" to {front :: [a], back :: [a] -> [a]}, i.e., use a difflist for the back.
22:54:48 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:54:55 <davean> Chart-diagrams =>
22:54:57 <davean> diagrams-core>=1.3 && <1.5
22:55:10 <davean> see that Cajun?
22:55:16 <monochrom> I use this in BFS over an infinite tree. It seems like I only suffer GC pauses.
22:55:31 <Cajun> i do but i have no idea what that means and how thats helpful lol
22:56:12 <davean> Hum, do you not understand what => means? or the >=1.3 && <1.5?
22:56:41 <shachaf> monochrom: What do you get from using a difference list for the back?
22:57:06 <monochrom> Eliminating reversing the back list.
22:57:08 <Cajun> => means X implies constraint but cannot match it and `>=1.3 && <1.5` means it must be within version 1.3.* and less than version 1.5.0
22:57:43 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:57:52 <shachaf> Hmm, but you still need to do effectively linear work, don't you?
22:57:53 <davean> Yes, so thats all thee is to understand there, because you can't use anything older than diagrams-core-1.5.0, as it says it tried to but wasn't allowed to
22:58:04 <davean> shachaf: look at when the work happens
22:58:24 <davean> though, its really just the other method in disguise I tihnk?
22:58:51 <shachaf> So a typical state of this might be something like, Queue { front = [1,2,3], back = ((4:) . (5:) . (6:) }, right?
22:58:59 <shachaf> Oops.
22:59:00 × dunj3 quits (~dunj3@2001:16b8:309f:ea00:9791:603:5183:d379) (Remote host closed the connection)
22:59:06 <shachaf> Queue { front = [1,2,3], back = ((4:) . (5:)) . (6:) }
22:59:14 <Cajun> davean: so i have to wait for the package to be updated or something?
22:59:18 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
22:59:38 <davean> Cajun: or fix it yourself. or use an older hip, or an older GHC, or ...
22:59:39 <shachaf> So in order to get to the 4, you need to go through all the (.)s, which will be left-associated if you've been appending. Right?
23:00:19 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
23:00:22 × ddellaco_ quits (~ddellacos@86.106.121.100) (Remote host closed the connection)
23:00:42 <monochrom> This is where I still don't understand why "( ... (((x1 :) . (x2 :)) . (x3 :)) . (x4 :) ...) []" is still much faster than (...(([x1]++[x2])++[x3])++[x4] ...) but empiricallly it is proven over and over again.
23:00:50 <davean> Cajun: so 'base's version is bound to GHC
23:00:52 ddellacosta joins (~ddellacos@86.106.121.100)
23:00:57 <davean> Cajun: GHC version that is
23:01:06 <davean> Cajun: so if you want an older base, move back a major GHC version
23:01:11 <davean> or upgrade the package to work with newer GHC
23:01:16 <shachaf> monochrom: That one is different.
23:01:23 <Cajun> i used to use 8.8.4, should i try using that?
23:02:04 <davean> Cajun: Yes, that would use base 4.13
23:02:05 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:02:12 <shachaf> Pretend it's a strict language. To compute ([x1]++[x2])++[x3], you go [x1,x1]++[x3], [x1,x2,x3]
23:02:13 <davean> which you'll notice is in range for the constraints specified
23:02:18 × chexum quits (~chexum@gateway/tor-sasl/chexum) (Ping timeout: 244 seconds)
23:02:27 <shachaf> Uh, [x1,x2]++[x3]
23:02:37 <shachaf> In the second step, (++) has to traverse the entire list just to append [x3]
23:02:49 <davean> Cajun: Basicly all you have to do is look at what it tells you and do it
23:03:00 <sclv> Cajun: you could also just try passing the --allow-newer flag, cross your fingers, and pray to your diety of choice
23:03:08 <davean> Cajun: it tells you two things don't fit together, change one of them to match the other
23:03:12 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
23:03:27 <sclv> it looks like a bump to Chart-diagrams to allow it to work with diagrams-core 1.5 could work, but that might fail
23:03:29 <shachaf> And then if you need to go to [x1,x2,x3]++[x4], this (++) also needs to traverse the entire list on the left.
23:03:38 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
23:03:50 <sclv> using the allow newer flag says "ignore the constraints, and try to build anyway, and then maybe there will be errors, who knows"
23:04:03 <monochrom> OK, I meant: "head (( ... (((x1 :) . (x2 :)) . (x3 :)) . (x4 :) ...) [])" is still much faster than "head (...(([x1]++[x2])++[x3])++[x4] ...)" empirically.
23:04:10 <davean> if you do what sclv says, if it breaks you may not notice, and you get to keep all the pieces
23:04:11 × tzar_bomba quits (~tzar_bomb@78-56-41-78.static.zebra.lt) (Quit: Client closed)
23:04:25 <davean> monochrom: right, its lazy
23:04:40 <shachaf> Yes, it works the same way in a lazy language.
23:04:41 <davean> monochrom: so the first doesn't have to walk the list repeatedly?
23:04:48 <Cajun> davean: thanks! im guessing adjusting the leftmost part of => is easier to do than trying to change the rightmost part?
23:04:49 <sclv> often i'll also locally pull in the offending package, and try to fix it by hand, and if it works, then I can A) depend on the local version and B) submit a PR request back upstream
23:04:50 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds)
23:04:58 <davean> Cajun: depends entirely
23:05:37 × ddellacosta quits (~ddellacos@86.106.121.100) (Ping timeout: 265 seconds)
23:05:54 <sclv> if you're in a cabal project already, then if you `cabal unpack SOMEPACKAGE` it'll unpack it into that directory, and if you get it building, and have a cabal.project set up, cabal will use the local source version over the one from hackage
23:06:19 × jiribenes quits (~jiribenes@rosa.jiribenes.com) (Remote host closed the connection)
23:06:30 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:06:49 <shachaf> With difference lists -- let a = (:) -- you have something like ((a 1 . a 2) . a 3). You need to do linear work once to turn that into [1,2,3], but that's it.
23:08:04 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
23:08:11 <davean> Cajun: personally my first approach is always "change whichever side moves to newer versions" because thats the longer term approach, but if I have an easier time changing the other side, I might be expedient
23:09:01 <shachaf> This isn't a very clear answer, hmm.
23:09:02 <davean> sclv: I would say I'd be suspicious of allow-newere here since he rest of that ecosystem seems to be bumped.
23:09:20 <davean> shachaf: I tihnk linear verses quadratic work is pretty clear?
23:09:33 <davean> shachaf: but I mean also, lazinessed helps with one and not the other
23:09:47 <shachaf> Yes, but the question was why.
23:09:58 <shachaf> I don't think laziness is that relevant here. You have exactly the same thing in a strict language.
23:10:08 <davean> Why is it linear verses quadratic?
23:10:18 <sclv> davean: i'm not suspicius because the offending package is Chart-diagrams which isn't part of the diagrams ecosystem, its part of the "bridge" to that ecosystem from the Chart ecosystem :-)
23:10:19 <davean> I mean ... you showed that directly
23:10:30 <shachaf> I just don't think my explanation was very good.
23:10:52 <davean> shachaf: you have MORE here than in a strict language though, because to take head you don't even have to do the entire linear walk, just O(1)
23:10:54 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:11:04 <shachaf> No, you have to do the whole linear thing.
23:11:19 <shachaf> Because your compositions are left associated, ((a 1 . a 2) . a 3) . a 4
23:11:34 <shachaf> So you need to go through the whole thing to get to the 1.
23:12:26 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
23:14:22 × zeenk quits (~zeenk@2a02:2f04:a00e:6e00:d401:4c92:fecc:16f9) (Quit: Konversation terminated!)
23:14:22 <davean> shachaf: With that construction, but you can setup one that doesn't
23:14:51 <davean> Depending on how much you're optimizing the specific case
23:15:04 <shachaf> I mean, we were talking about difference lists. Of course you can set up other data structures.
23:15:23 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:15:29 <davean> Oh i think of difference lists as the specific signature, not an alg
23:15:44 <davean> maybe that doesn't match the actual usage of the term
23:15:57 <shachaf> Oh, maybe you mean any function of the form (l ++)
23:16:14 <shachaf> But the point of using difference lists here is "constant time append".
23:16:24 <davean> [a] -> [a] is what I've seen defined as difference lists
23:16:29 <shachaf> Which you do get! But you don't get constant-time head.
23:16:47 <shachaf> I don't think people would call reverse a difference list.
23:16:55 <shachaf> Just functions of the form (l ++) for some l.
23:16:56 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
23:17:01 <davean> mmm
23:17:19 <davean> Thats fair I suppose. Different than what I saw specificly defined, but I'd buy that I was being too general
23:17:47 × killsushi quits (~killsushi@user/killsushi) (Read error: Connection reset by peer)
23:18:04 <shachaf> The term comes from Prolog, right? Where you would leave the end of the list as a thing you can unify with.
23:18:14 killsushi joins (~killsushi@user/killsushi)
23:18:19 <davean> I had no clue that was a thing
23:18:30 <davean> I've never heard of it in regards to prolog
23:18:41 <shachaf> I think that's where the term comes from, at least.
23:19:05 <shachaf> The point is, a list is a thing that looks like (1 : 2 : 3 : []). A difference list is like a list, but parameterized on nil, so it's of the form (\nil -> 1 : 2 : 3 : nil)
23:19:31 <shachaf> So the nil is like a hole that you can fill in later, making list A end at the beginning of list B.
23:19:55 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:20:31 <shachaf> (\nil -> 1 : 2 : 3 : nil) [4,5,6] ---> [1,2,3,4,5,6], without ever having to actually traverse a [1,2,3] list.
23:21:09 <davean> Right but notice with THAT
23:21:17 <davean> > head $ (\nil -> 1 : 2 : 3 : nil) undefined
23:21:19 <lambdabot> 1
23:21:29 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
23:21:31 <davean> er
23:21:36 <davean> that was a dumb thing to say
23:21:46 × moet_ quits (~moet@172.58.19.20) (Ping timeout: 252 seconds)
23:22:44 <shachaf> Yes, right, once you have something of that form, you can take the head in constant time.
23:23:05 <shachaf> You can always flatten it: flatten dlist = (dlist [] ++)
23:23:14 <shachaf> But that's also a (worst-case) linear-time operation.
23:24:16 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:25:48 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
23:28:18 thyriaen joins (~thyriaen@45.178.73.238)
23:28:30 lavaman joins (~lavaman@98.38.249.169)
23:29:08 <thyriaen> Hello, i just started out with haskell and wrote my first function - something really strange is happening - i assume it has something to do with being lazy but i do not understand - can someone help me out ?
23:29:51 <thyriaen> https://hastebin.com/uduwetocof.apache this is the code i loaded into ghci
23:30:32 <thyriaen> Thank you very much - i have found my error ;)
23:32:29 <geekosaur> rubber duck debugging at its finest :)
23:32:33 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3-dev)
23:33:52 × janiczek quits (~janiczek@89-24-215-117.customers.tmcz.cz) (Ping timeout: 252 seconds)
23:34:37 <monochrom> I and my TA once discussed giving out rubber ducks to students.
23:37:06 <monochrom> We then also considered the idea of these rubber ducks containing some computer power to decide whether "your question is difficult enough to escalated to the course forum".
23:37:49 <monochrom> My TA then correct pointed out that if the algorithm is simply "const no" it's at least 99% accurate. >:)
23:38:34 × dhil quits (~dhil@195.213.192.47) (Ping timeout: 258 seconds)
23:39:11 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
23:39:58 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:945c:cf17:8af9:9d4a) (Quit: Leaving...)
23:41:57 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
23:43:50 xsperry joins (~as@user/xsperry)
23:43:52 × xsperry quits (~as@user/xsperry) (Excess Flood)
23:44:03 geekosaur joins (~geekosaur@xmonad/geekosaur)
23:44:23 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
23:44:23 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
23:44:41 xsperry joins (~as@user/xsperry)
23:45:54 × haltux quits (~haltux@a89-154-181-47.cpe.netcabo.pt) (Quit: Leaving)
23:50:18 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 240 seconds)
23:50:50 renzhi joins (~xp@modemcable070.17-177-173.mc.videotron.ca)
23:53:02 × involans quits (~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net) (Ping timeout: 250 seconds)
23:55:18 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:55:32 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 268 seconds)
23:56:52 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
23:57:05 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
23:58:41 × kayprish quits (~kayprish@46.240.143.86) (Remote host closed the connection)
23:59:41 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)

All times are in UTC on 2021-06-21.