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.