Home freenode/#haskell: Logs Calendar

Logs on 2021-02-16 (freenode/#haskell)

00:01:39 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 246 seconds)
00:04:03 × Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Remote host closed the connection)
00:04:31 <Axman6> fresheyeball: what're you converting?
00:04:37 × jedws quits (~jedws@101.184.202.248) (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:04:46 × viluon quits (uid453725@gateway/web/irccloud.com/x-bizhpjepnxgymjot) (Quit: Connection closed for inactivity)
00:06:59 <monochrom> church encoding conversion is like catamorphisms.
00:08:02 <monochrom> For example Haskell's [a]. catamorphism is foldr :: (a -> b -> b) -> b -> [a] -> b
00:08:22 <monochrom> reorder parameters to put [a] first: [a] -> (a -> b -> b) -> b -> b
00:08:52 <monochrom> Think of it as converting [a] to (a -> b -> b) -> b -> b
00:09:20 <monochrom> (a -> b -> b) -> b -> b is the type of church encoding for [a]. Actually technically forall b. (a -> b -> b) -> b -> b
00:09:53 xsperry joins (~as@unaffiliated/xsperry)
00:10:02 <monochrom> And the term level story:
00:10:42 <monochrom> If you have [1,2], foldr op z [1,2] = op 1 (op 2 z).
00:11:02 <monochrom> Reorder parameters like before, you're looking at \op z -> op 1 (op 2 z)
00:11:11 <monochrom> That's your church encoding at the term level.
00:11:25 × usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving)
00:12:44 × heatsink quits (~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4) (Remote host closed the connection)
00:13:16 Phredd_ joins (~Android@99-2-102-243.lightspeed.tukrga.sbcglobal.net)
00:14:40 comerijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:15:10 shatriff_ joins (~vitaliish@176-52-216-242.irishtelecom.com)
00:17:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
00:17:36 × shatriff quits (~vitaliish@176-52-216-242.irishtelecom.com) (Ping timeout: 240 seconds)
00:20:22 × Phredd_ quits (~Android@99-2-102-243.lightspeed.tukrga.sbcglobal.net) (Ping timeout: 272 seconds)
00:22:24 × boristheblade quits (~boristheb@37-219-251-173.nat.bb.dnainternet.fi) (Quit: leaving)
00:24:05 × comerijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
00:24:08 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
00:24:53 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
00:32:23 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
00:35:47 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
00:40:30 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
00:41:33 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
00:46:45 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
00:47:36 j is now known as jess
00:48:01 × tsaka__ quits (~torstein@2a02:587:1b14:d00:5ec3:abec:812c:b3e2) (Ping timeout: 265 seconds)
00:48:07 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
00:48:14 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
00:48:31 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
00:50:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:51:23 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
00:51:33 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
00:52:40 heatsink joins (~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4)
00:55:45 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
00:55:45 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
00:56:31 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
00:57:47 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
00:59:23 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
00:59:24 jamm_ joins (~jamm@unaffiliated/jamm)
01:03:26 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 240 seconds)
01:03:33 × __minoru__shirae quits (~shiraeesh@109.166.59.64) (Ping timeout: 264 seconds)
01:04:58 × s00pcan quits (~chris@107.181.165.217) (Ping timeout: 256 seconds)
01:06:22 × tremon quits (~aschuring@217-63-61-89.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
01:06:59 s00pcan joins (~chris@075-133-056-178.res.spectrum.com)
01:09:08 <koz_> What's the recommended prettyprinting library these days?
01:09:19 rajivr joins (uid269651@gateway/web/irccloud.com/x-evhkraeqlbjwoock)
01:10:32 × Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 265 seconds)
01:11:24 loller_ joins (uid358106@gateway/web/irccloud.com/x-qmbhmfxxhivxxyig)
01:13:23 cig_in_m_ joins (~textual@182.64.96.152)
01:14:05 gratadewey1 joins (~gratadewe@tmo-122-91.customers.d1-online.com)
01:18:57 <fresheyeball> koz_: https://hackage.haskell.org/package/pretty-simple
01:19:00 alx741 joins (~alx741@186.178.108.16)
01:20:34 × cig_in_m_ quits (~textual@182.64.96.152) (Read error: Connection reset by peer)
01:24:42 × Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1)
01:27:45 DataComputist joins (~lumeng@50.43.26.251)
01:28:44 kum0 joins (~kumo@139.180.144.166)
01:28:49 × elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Read error: Connection reset by peer)
01:28:58 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
01:30:25 elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
01:31:48 boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
01:34:36 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
01:35:35 <edwardk> i'm sad that we don't have any way to nicely do case on linear types or have linear pattern synonyms yet. a thing i was thinking about doing is going to be excruciating with the current story
01:35:40 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 265 seconds)
01:35:57 edwardk is greedy
01:37:20 <edwardk> koz_: depends on what you want to print. prettyprinter is the one i tend to go for now
01:37:32 <edwardk> pretty-simple sits on top of it and prints things you can Show.
01:38:37 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
01:38:39 <monochrom> Haha "pretty-simple" is a great name.
01:38:42 <koz_> edwardk: prettyprinter is more what I sought, thanks.
01:43:53 × conal quits (~conal@64.71.133.70) (Ping timeout: 265 seconds)
01:44:23 <edwardk> and now the asshat who hacked my twitter account is posting. yay
01:45:12 <MarcelineVQ> on a long enough timeline you get hacked or you get banned, there's no other ending
01:46:41 conal joins (~conal@198.8.81.86)
01:47:25 × zebrag quits (~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
01:47:47 zebrag joins (~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
01:48:13 <edwardk> i'm absolutely appalled that 13 years of activity can just be wiped out by someone end-running the email confirmation check some weird way
01:50:18 <MarcelineVQ> it's pretty shitty for sure
01:53:28 × deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 272 seconds)
01:53:50 × Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007)
01:54:50 × hiroaki quits (~hiroaki@ip4d166d67.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
01:55:25 slack1256 joins (~slack1256@45.4.2.52)
01:55:45 × elliott__ quits (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
01:55:46 mirrorbird joins (~psutcliff@2a00:801:44d:603d:d116:d5a1:4a2f:a08f)
01:58:12 bo__ joins (~bo@178.150.122.153)
01:58:20 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
01:58:36 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-ptedpsphubsivqqo) (Quit: Connection closed for inactivity)
02:01:45 × bo_ quits (~bo@178.150.122.153) (Ping timeout: 264 seconds)
02:01:53 <dibblego> has twitter done anything yet?
02:02:46 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
02:07:38 × gratadewey1 quits (~gratadewe@tmo-122-91.customers.d1-online.com) (Quit: Leaving)
02:08:25 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
02:10:30 hiroaki joins (~hiroaki@ip4d166d67.dynamic.kabel-deutschland.de)
02:15:07 × wagle quits (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
02:15:39 wagle joins (~wagle@quassel.wagle.io)
02:16:25 tabaqui joins (~tabaqui@2604:a880:800:c1::21b:3001)
02:16:26 Jd007 joins (~Jd007@162.156.11.151)
02:16:45 × monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER)
02:16:50 × xff0x quits (~xff0x@2001:1a81:5334:9d00:2801:cb7:6081:3245) (Ping timeout: 264 seconds)
02:17:04 <edwardk> nothing
02:17:30 <edwardk> they locked the account a couple of times, you know, each time it deleted 4 years of my history, but now they are just actively posting as me.
02:18:23 xff0x joins (~xff0x@2001:1a81:5376:4800:96:3fa7:76da:f069)
02:18:45 × puke quits (~vroom@217.138.252.197) (Quit: puke)
02:18:58 monochrom joins (trebla@216.138.220.146)
02:19:53 rdivyanshu joins (uid322626@gateway/web/irccloud.com/x-qoybsfkiibxzvmar)
02:23:05 × conal quits (~conal@198.8.81.86) (Quit: Computer has gone to sleep.)
02:23:42 average joins (uid473595@gateway/web/irccloud.com/x-xnupshzcizbfldxu)
02:24:35 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
02:27:02 × bitmapper quits (uid464869@gateway/web/irccloud.com/x-gappxernotuudgxa) (Quit: Connection closed for inactivity)
02:27:02 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
02:27:08 Tario joins (~Tario@201.192.165.173)
02:28:39 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 246 seconds)
02:30:01 × Aquazi quits (uid312403@gateway/web/irccloud.com/x-hwiundvvsjogiwru) (Quit: Connection closed for inactivity)
02:31:37 conal joins (~conal@198.8.81.86)
02:32:21 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds)
02:33:31 Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362)
02:35:25 elliott__ joins (~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
02:35:53 × hiroaki quits (~hiroaki@ip4d166d67.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
02:41:49 × hololeap quits (~hololeap@unaffiliated/hololeap) (Ping timeout: 256 seconds)
02:42:01 <Axman6> edwardk: well, currently you have no tweets or replies at all on the account, which I guess is better than impersonating you :\
02:42:35 <boxscape> also no followers or follows
02:42:50 hololeap joins (~hololeap@unaffiliated/hololeap)
02:43:26 <Axman6> yeah zero followers is odd, I was definitely following the account (and when I searched for it the search field said I was following)
02:46:43 × slack1256 quits (~slack1256@45.4.2.52) (Ping timeout: 265 seconds)
02:47:03 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:47:26 × zebrag quits (~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
02:47:47 zebrag joins (~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
02:53:44 <boxscape> this explains the lack of followers https://twitter.com/kmett/status/1361507312582549508
02:54:11 <boxscape> best of luck edward, hope twitter does something
02:56:11 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
02:56:18 hal9001`` joins (~user@zz2017405567D30FFCD9.userreverse.dion.ne.jp)
02:57:07 × hal9001` quits (~user@zz2017405567D30FFCD9.userreverse.dion.ne.jp) (Ping timeout: 256 seconds)
02:59:02 deviantfero joins (~deviantfe@190.150.27.58)
03:01:52 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
03:05:37 × deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 256 seconds)
03:06:40 × boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Ping timeout (120 seconds))
03:08:21 × drdo quits (~drdo@overlord0.drdo.eu) (Ping timeout: 264 seconds)
03:09:52 boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
03:10:09 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
03:13:11 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
03:15:18 drdo joins (~drdo@overlord0.drdo.eu)
03:17:17 vicfred joins (~vicfred@unaffiliated/vicfred)
03:20:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
03:22:06 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
03:24:19 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
03:27:56 FinnElija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
03:27:56 finn_elija is now known as Guest13280
03:27:56 FinnElija is now known as finn_elija
03:28:07 <MarcelineVQ> wonder if it could make sense for prettyprint to have a uml backend
03:28:13 tromp_ joins (~tromp@dhcp-077-249-230-040.chello.nl)
03:28:36 Saukk joins (~Saukk@83-148-239-3.dynamic.lounea.fi)
03:29:56 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
03:30:47 × boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed)
03:31:06 boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
03:31:33 × conal quits (~conal@198.8.81.86) (Quit: Computer has gone to sleep.)
03:31:41 × Guest13280 quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds)
03:32:52 × tromp_ quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds)
03:33:35 conal joins (~conal@198.8.81.86)
03:33:53 <Axman6> edwardk: has anything happened with you twitter account? It just followed me back and seems to be following a bunch of people I would expect you to have been following
03:34:08 × conal quits (~conal@198.8.81.86) (Client Quit)
03:34:31 <Axman6> ... yes! congrats (just saw the tweet)
03:35:46 <boxscape> Axman6 unfortunately he still doesn't have his old account back, it's a new account under the same name (in case you didn't see this tweet: https://twitter.com/kmett/status/1361507312582549508 )
03:36:25 <Axman6> Hopefully Twitter will be able to restore it :\
03:37:06 × lemmih quits (~lemmih@2406:3003:2072:44:d219:4fa6:3f89:cc6b) (Remote host closed the connection)
03:37:39 lemmih joins (~lemmih@2406:3003:2072:44:863c:2213:5a0d:4443)
03:38:26 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 265 seconds)
03:38:36 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Ping timeout: 240 seconds)
03:40:54 plutoniix joins (~q@184.82.194.239)
03:41:32 × Natch quits (~Natch@c-b471e255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection)
03:42:46 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
03:43:33 × theDon quits (~td@muedsl-82-207-238-067.citykom.de) (Ping timeout: 246 seconds)
03:45:42 theDon joins (~td@94.134.91.14)
03:47:26 × zebrag quits (~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
03:47:48 zebrag joins (~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr)
03:47:49 <swarmcollective> edwardk, You might want to screen capture the reply from @vzlish and send it with your story to the internet fraud unit at fbi.gov.
03:48:42 × thongpv87 quits (~thongpv87@103.6.151.121) (Remote host closed the connection)
03:50:40 <Axman6> not sure if it helps, but reporting it as an account that appears to have been hacked can't turn
03:50:58 Natch joins (~natch@c-b471e255.014-297-73746f25.bbcust.telenor.se)
03:53:09 × fresheyeball quits (~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) (Ping timeout: 272 seconds)
03:54:26 fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net)
03:57:29 × mirrorbird quits (~psutcliff@2a00:801:44d:603d:d116:d5a1:4a2f:a08f) (Ping timeout: 272 seconds)
03:59:00 frozenErebus joins (~frozenEre@94.128.219.166)
04:01:22 × SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
04:02:10 SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net)
04:02:11 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
04:02:21 giogiogio joins (5e89ad7c@94.137.173.124)
04:02:35 × pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!)
04:02:37 jpds joins (~jpds@gateway/tor-sasl/jpds)
04:02:40 × Noldorin quits (~noldorin@unaffiliated/noldorin) (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
04:03:19 × mmmattyx quits (uid17782@gateway/web/irccloud.com/x-urgxqrzuotzhrnhk) (Quit: Connection closed for inactivity)
04:04:33 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
04:10:47 × kjak quits (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
04:11:55 ubert1 joins (~Thunderbi@p200300ecdf25d974e6b318fffe838f33.dip0.t-ipconnect.de)
04:12:16 mirrorbird joins (~psutcliff@2a00:801:44d:603d:d116:d5a1:4a2f:a08f)
04:12:42 × ubert quits (~Thunderbi@p200300ecdf25d90be6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
04:12:42 ubert1 is now known as ubert
04:13:31 × frozenErebus quits (~frozenEre@94.128.219.166) (Quit: leaving)
04:13:51 frozenErebus joins (~frozenEre@94.128.219.166)
04:15:07 greymalkin joins (~greymalki@199.180.249.79)
04:15:45 Rudd0 joins (~Rudd0@185.189.115.103)
04:15:47 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
04:17:21 × raym quits (~ray@45.64.220.98) (Ping timeout: 264 seconds)
04:18:06 × finn_elija quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Remote host closed the connection)
04:18:26 finn_elija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
04:19:32 × frozenErebus quits (~frozenEre@94.128.219.166) (Quit: leaving)
04:19:48 frozenErebus joins (~frozenEre@94.128.219.166)
04:22:18 × frozenErebus quits (~frozenEre@94.128.219.166) (Client Quit)
04:22:32 frozenErebus joins (~frozenEre@94.128.219.166)
04:22:44 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
04:23:47 raym joins (~ray@45.64.220.98)
04:26:57 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 264 seconds)
04:27:33 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds)
04:28:56 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
04:32:23 <edwardk> swarmcollective: i filed an fbi ic3 complaint
04:32:53 <edwardk> i was hesitant as it might tie the hands of folks at twitter to fix things, but meh
04:33:36 <edwardk> now that i have the name back, i'm mostly just upset at having a me-shaped hole in 12 years worth of conversations and the fact that they still have all my followers.
04:35:12 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
04:35:43 <Axman6> If only there were more Haskellers at Twitter so we could make them understand how important this is
04:35:46 <Axman6> :P
04:36:37 <swarmcollective> "If only there were more Haskellers" period. :D
04:36:37 × liyang quits (~liyang@cpc80675-stap13-2-0-cust362.12-2.cable.virginm.net) (Ping timeout: 260 seconds)
04:40:20 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
04:41:57 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 256 seconds)
04:45:05 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
04:46:48 frozenErebus joins (~frozenEre@94.128.219.166)
04:47:05 × raym quits (~ray@45.64.220.98) (Ping timeout: 240 seconds)
04:48:25 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
04:49:53 jedws joins (~jedws@101.184.202.248)
04:51:45 × boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Ping timeout: 240 seconds)
04:53:46 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
04:58:40 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
05:00:18 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
05:00:29 × deja quits (~deja@213162080090.public.t-mobile.at) (Quit: requested)
05:02:29 × carlomagno quits (~cararell@148.87.23.11) (Remote host closed the connection)
05:02:52 toorevitimirp joins (~tooreviti@117.182.183.159)
05:04:09 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 264 seconds)
05:04:18 carlomagno joins (~cararell@148.87.23.11)
05:04:40 × sz0 quits (uid110435@gateway/web/irccloud.com/x-jawittjnojcejvfc) (Quit: Connection closed for inactivity)
05:05:22 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
05:12:30 dingyi342 joins (~user@112.22.51.183)
05:15:06 dingyi34247 joins (2ff22b83@47.242.43.131)
05:15:13 × hexfive quits (~hexfive@50.35.83.177) (Quit: i must go. my people need me.)
05:15:43 dingyi342 parts (~user@112.22.51.183) ("ERC (IRC client for Emacs 28.0.50)")
05:16:37 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
05:17:28 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
05:17:33 <giogiogio> Cale: hi
05:17:40 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:17:41 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 3.0)
05:18:05 × dingyi34247 quits (2ff22b83@47.242.43.131) (Quit: Connection closed)
05:21:33 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds)
05:22:07 dingyi34286 joins (2ff22b83@47.242.43.131)
05:22:45 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
05:25:02 × dingyi34286 quits (2ff22b83@47.242.43.131) (Client Quit)
05:25:47 × zebrag quits (~inkbottle@aaubervilliers-654-1-119-56.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
05:34:30 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
05:39:34 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
05:43:50 × borne quits (~fritjof@200116b864008e00d8bba186ea6b909e.dip.versatel-1u1.de) (Ping timeout: 264 seconds)
05:45:16 borne joins (~fritjof@200116b8644444005766abc29133c8ad.dip.versatel-1u1.de)
05:46:47 <Axman6> So quiet in here today! How am I supposed to distract myself while waiting for builds?
05:48:13 frozenErebus joins (~frozenEre@94.128.219.166)
05:48:24 sz0 joins (uid110435@gateway/web/irccloud.com/x-weszrhezblvvfxue)
05:48:34 × BitcoinMarkets quits (~BitcoinMa@217.146.82.202) (Remote host closed the connection)
05:51:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
05:51:59 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
05:52:17 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
05:56:32 × carlomagno quits (~cararell@148.87.23.11) (Remote host closed the connection)
05:56:37 <koala_man> Axman6: I'm also waiting for a slow build -__-
05:57:09 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
05:57:21 <koala_man> should have added some kind of -v so I knew how long it might take
05:57:22 carlomagno joins (~cararell@148.87.23.11)
05:58:09 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
05:58:29 <Axman6> ^C <up> <space> -v <enter> :P
05:58:53 × Saukk quits (~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
06:00:20 <koala_man> pretty sure it would start over. It's cabal install cabal-install under an arm emulator
06:00:35 <Axman6> :(
06:01:09 m0rphism1 joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
06:01:18 <koala_man> I spend the last several days trying to cross-compile to raspberry pi, but never managed to build an executable that didn't immediately segfault
06:01:32 <Axman6> oh no :(
06:01:35 <koala_man> so now I'm just running Raspbian in an emulator
06:02:37 forgottenone joins (~forgotten@176.42.30.133)
06:07:08 carlomagno1 joins (~cararell@148.87.23.11)
06:07:08 × carlomagno quits (~cararell@148.87.23.11) (Remote host closed the connection)
06:09:43 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
06:15:07 × giogiogio quits (5e89ad7c@94.137.173.124) (Quit: Connection closed)
06:17:54 <fresheyeball> https://gitlab.com/fresheyeball/Shpadoinkle/-/blob/master/core/Shpadoinkle/Core.hs#L347
06:17:59 <fresheyeball> I have this lense with the data based encoding
06:18:05 <fresheyeball> https://gitlab.com/fresheyeball/Shpadoinkle/-/blob/church/core/Shpadoinkle/Core.hs#L334
06:18:08 dcoutts_ joins (~dcoutts@unaffiliated/dcoutts)
06:18:10 <fresheyeball> Here it is with a church encoding
06:18:12 raoul90 joins (~raoulhida@nomnomnomnom.co.uk)
06:18:14 <fresheyeball> I cannnnot get this to compile
06:18:24 bitmagie joins (~Thunderbi@200116b806f75600895a42be0411ce68.dip.versatel-1u1.de)
06:18:39 × shailangsa quits (~shailangs@host86-185-98-28.range86-185.btcentralplus.com) (Read error: Connection reset by peer)
06:18:52 dorkside1 joins (~tdbgamer@208.190.197.222)
06:18:54 × dorkside quits (~tdbgamer@208.190.197.222) (Read error: Connection reset by peer)
06:18:55 dorkside1 is now known as dorkside
06:19:04 × rdivyanshu quits (uid322626@gateway/web/irccloud.com/x-qoybsfkiibxzvmar) (Quit: Connection closed for inactivity)
06:19:26 bgamari_ joins (~bgamari@72.65.101.131)
06:20:06 × Someguy123 quits (~someguy@unaffiliated/compgenius999) (Ping timeout: 272 seconds)
06:20:28 <Axman6> what's the error message?
06:20:44 × bgamari quits (~bgamari@72.65.101.131) (Ping timeout: 272 seconds)
06:20:44 × raoul9 quits (~raoulhida@nomnomnomnom.co.uk) (Ping timeout: 272 seconds)
06:20:50 × dcoutts quits (~dcoutts@unaffiliated/dcoutts) (Ping timeout: 265 seconds)
06:20:57 <Axman6> This looks bonkers... I can't tell if it's good bonkers or not though :P
06:21:24 × TommyC quits (~TommyC@unaffiliated/sepulchralbloom) (Ping timeout: 246 seconds)
06:21:37 Someguy123 joins (~someguy@unaffiliated/compgenius999)
06:21:50 × kam1 quits (~kam1@83.123.64.17) (Remote host closed the connection)
06:22:07 kam1 joins (~kam1@83.123.64.17)
06:22:09 <Axman6> I'm a little surprised to see (Text -> [(Text, Prop m a)] -> [Html m a] -> r) and not (Text -> [(Text, Prop m a)] -> [r] -> r) but I don't really know what effect that has.
06:22:41 TommyC joins (~TommyC@unaffiliated/sepulchralbloom)
06:22:45 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
06:22:47 <fresheyeball> Axman6: [r] might be better
06:22:56 <fresheyeball> but I don't see how to get that compile with other things
06:23:06 <fresheyeball> edwardk had suggested `[r]` earilier
06:23:11 <Axman6> me either
06:23:45 <Axman6> my usual rule when church encoding (and possibly _the rule?) is all instances of the type itself should be replaced with the result type
06:24:37 <fresheyeball> Axman6: I just pushed
06:24:44 <fresheyeball> changing it results in this error:
06:24:49 × bitmagie quits (~Thunderbi@200116b806f75600895a42be0411ce68.dip.versatel-1u1.de) (Quit: bitmagie)
06:24:56 <fresheyeball> Couldn't match type ‘r’ with ‘Html m a’
06:25:03 × borne quits (~fritjof@200116b8644444005766abc29133c8ad.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
06:25:07 <fresheyeball> from the inner call to mapPropsRecursive
06:25:13 <fresheyeball> in mapPropsRecursive
06:26:48 <fresheyeball> if I make it [Html m a] instead of [r]
06:26:52 <fresheyeball> then it compiles
06:27:13 <Axman6> ok
06:27:25 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
06:29:12 <Axman6> so what error do you get from the church encoded version?
06:29:32 <fresheyeball> Axman6: Couldn't match type ‘r’ with ‘Html m a’
06:29:36 <fresheyeball> oop
06:29:38 <fresheyeball> https://gitlab.com/fresheyeball/Shpadoinkle/-/blob/church/core/Shpadoinkle/Core.hs#L334
06:29:42 <fresheyeball> from which attempt?
06:29:55 <Axman6> before changing it to [r]
06:30:21 <fresheyeball> when it's [r] mapPropsRecrusive does not compile
06:30:35 <fresheyeball> when it's [Html m a] mapPropsRecrusive DOES compile
06:30:47 <fresheyeball> so I am leaving it as [Html m a]
06:30:55 <Axman6> ok, and what error do you get for props, your original question
06:30:59 <fresheyeball> but the `props :: Applicative f => ...`
06:31:08 <fresheyeball> I have not gotten to compile with the church encoding ever so far
06:31:11 <Axman6> it looks ok to me but if there's an error it would help in figuring it out
06:31:30 <Axman6> what error do you get for props inj (Html h') = Html $ \n p t -> h' (\t' ps cs -> (\ps' -> n t' ps' cs) <$> inj ps) p t
06:31:53 <fresheyeball> ok so the first one
06:32:17 <fresheyeball> • Couldn't match type ‘f’ with ‘Html m’
06:32:19 <fresheyeball> ‘f’ is a rigid type variable bound by
06:32:21 <fresheyeball> the type signature for:
06:32:23 <fresheyeball> props :: forall (f :: * -> *) (m :: * -> *) a.
06:32:25 <fresheyeball> Applicative f =>
06:32:27 <fresheyeball> ([(Text, Prop m a)] -> f [(Text, Prop m a)])
06:32:29 <fresheyeball> -> Html m a -> f (Html m a)
06:32:34 <fresheyeball> Expected type: f (Html m a)
06:32:36 <fresheyeball> Actual type: Html m (Html m a)
06:32:58 <freeman42x[m]> Edward Kmett - https://www.linkedin.com/in/ekmett/ - discussion on Clubhouse - https://www.joinclubhouse.com/ - about Haskell programming and the projects he is working on: https://bit.ly/3b8Qzcj
06:33:17 liyang joins (~liyang@cpc80675-stap13-2-0-cust362.12-2.cable.virginm.net)
06:35:21 <Axman6> fresheyeball: ok, so I don't know what the problem is, but I wonder if changing the type to this might help in some hole driven development: Applicative f => ([(Text, Prop m a)] -> f [(Text, Prop m b)]) -> Html m b -> f (Html m b)
06:36:13 <Axman6> uh, first Html should be Html m b
06:36:33 <fresheyeball> I don't see the difference
06:36:37 <Axman6> there's definitely some fmaps/aps missing in that definiion
06:36:55 <Axman6> (a -> f b) -> H a -> f (H b)
06:37:00 <Axman6> instead of all a's
06:37:03 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
06:38:03 <Axman6> props inj (Html h') = Html $ \n p t -> h' <$> (\t' ps cs -> (\ps' -> n t' ps' cs) <$> inj ps) <*> (pure . p) <*> (pure . t) looks closer to what you need
06:38:12 <Axman6> what error do you get with that?
06:38:23 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:39:01 <Axman6> of course that can't work because it's applying Html directly to the result, so you need an extra fmap there too
06:39:02 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
06:39:30 <Axman6> you're going to make me download this and play it, I feel thoroughly nerdsniped
06:39:46 <fresheyeball> http://ix.io/2PAC
06:39:58 <fresheyeball> that is with both your suggesting impl and type
06:40:36 shailangsa joins (~shailangs@host86-185-98-28.range86-185.btcentralplus.com)
06:40:51 bitmagie joins (~Thunderbi@200116b806f75600895a42be0411ce68.dip.versatel-1u1.de)
06:42:40 <fresheyeball> I am starting to think it's just not possible to make a lens into a church encoded type
06:42:41 <Axman6> hwo do I build this?
06:42:51 <fresheyeball> run `nix-shell`
06:43:00 <fresheyeball> then run `ghcid --command "cabal repl core"`
06:43:02 <fresheyeball> that should do it
06:43:47 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
06:43:55 <Axman6> error: a 'x86_64-linux' is required to build '/nix/store/961n15a0m4i796vy0zs3h3k4vajbnr56-source.drv', but I am a 'x86_64-darwin'
06:44:02 <Axman6> sorry, can't help :\
06:44:17 <fresheyeball> hmm
06:44:22 <Axman6> why are there no .cabal files :\
06:44:32 <fresheyeball> hpack
06:44:36 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
06:44:43 <Axman6> ew
06:44:52 × bitmagie quits (~Thunderbi@200116b806f75600895a42be0411ce68.dip.versatel-1u1.de) (Client Quit)
06:44:52 <Axman6> can this be built without nix?
06:45:03 <fresheyeball> I never tried
06:45:15 <fresheyeball> I am also a bit confused, I have people using this on mac
06:45:37 <fresheyeball> can I get more of that error
06:45:42 <fresheyeball> I do care that this can be built on mac
06:46:19 <fresheyeball> I don't see anything that should fail on mac
06:46:20 <fresheyeball> hmm
06:46:25 <fresheyeball> I have a mac builder
06:46:34 <Axman6> https://gist.github.com/axman6-da/1d618adf036ffd77090fa9badd16c618
06:47:13 × mirrorbird quits (~psutcliff@2a00:801:44d:603d:d116:d5a1:4a2f:a08f) (Ping timeout: 272 seconds)
06:47:23 <fresheyeball> I am trying on mac also
06:47:31 <fresheyeball> I have one specifically to support nix
06:48:21 <fresheyeball> weird
06:48:23 <Axman6> I have a feeling you will need something somewhere that looks like... (\a b c -> Html $ \n p t -> ...) <$> <something> <*> pure p <*> pure t
06:49:09 <Axman6> plumbing the functor through everything is a bit difficult, but I think it's doable
06:49:24 raym joins (~ray@45.64.220.98)
06:49:57 <fresheyeball> well this is interesting
06:50:05 <fresheyeball> my CI for testing that the shell works on mac is clearly wrong
06:50:10 <fresheyeball> the error is very reproable
06:50:20 <Axman6> excellent :)
06:50:38 × Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007)
06:55:07 × kiltzman quits (~k1ltzman@195.189.99.96) (Ping timeout: 256 seconds)
06:55:49 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
06:59:39 × m0rphism1 quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 256 seconds)
07:00:16 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
07:01:45 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 264 seconds)
07:01:48 kiltzman joins (~k1ltzman@5.206.224.243)
07:02:23 LeafGecko joins (~LeafGecko@gateway/tor-sasl/leafgecko)
07:02:28 micah57 joins (84a1f0cb@132.161.240.203)
07:03:38 <LeafGecko> hi guys, when I try to import a module (namely Data.Text.Conversions) in my hs file, ghc reminded me that "text-conversion" module is not exposed
07:03:46 <LeafGecko> however, when I do `ghc-pkg list`
07:04:00 <LeafGecko> the text-conversion is shown in normal color, not blue
07:04:07 <fresheyeball> Axman6: I figured it out
07:04:11 <LeafGecko> which I think shall mean it's already exposed according to wiki?
07:04:26 <fresheyeball> nix-shell --argstr system x86_64-darwin
07:05:21 <fresheyeball> you just need to pass it explicitly
07:05:25 <fresheyeball> then everything will work
07:05:34 <micah57> Hi all, I'm trying to set up haskell with vscode and had a lot of difficulties, I can't seem to get the language server to work no matter how I install it
07:05:34 idhugo joins (~idhugo@80-62-117-86-mobile.dk.customer.tdc.net)
07:06:22 <LeafGecko> fresheyeball: yeah, that shall definitely work, just wondering why I can't permanently expose that package
07:06:27 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
07:06:31 turion joins (~turion@2a02:810d:8abf:c4a8:ec49:8e35:b593:1422)
07:07:03 abishek joins (5ac24a8f@90.194.74.143)
07:07:14 <fresheyeball> LeafGecko: I was responding to Axman6
07:07:24 <LeafGecko> whoops :)
07:07:29 <fresheyeball> no worries
07:07:56 × abishek quits (5ac24a8f@90.194.74.143) (Client Quit)
07:08:30 <micah57> anyone know how I can just start from scratch in setting up haskell with vscode on arch linux? I think I messed something up while installing
07:09:37 <LeafGecko> micah57: you can try Leksah on nix, I once tried, it just works
07:09:52 <LeafGecko> follow archwiki manual of installing nix
07:10:08 <LeafGecko> it takes MANY time to install though
07:10:14 × idhugo quits (~idhugo@80-62-117-86-mobile.dk.customer.tdc.net) (Remote host closed the connection)
07:10:40 idhugo joins (~idhugo@80-62-117-86-mobile.dk.customer.tdc.net)
07:10:57 <micah57> I could try that
07:11:18 frozenErebus joins (~frozenEre@94.128.219.166)
07:11:55 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:13:12 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
07:15:45 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 240 seconds)
07:18:14 <micah57> Okay I fixed the vscode extension
07:18:21 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
07:18:30 <micah57> I needed to get an older version of ghc that worked with the hls
07:19:15 <micah57> the ghcup tui is what saved me, thank god for that
07:21:14 × entel quits (uid256215@botters/entel) (Quit: Connection closed for inactivity)
07:21:45 × micah57 quits (84a1f0cb@132.161.240.203) (Quit: Connection closed)
07:22:22 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
07:22:30 saitamaplus joins (uid272474@gateway/web/irccloud.com/x-pufhyrnsdboiuaos)
07:23:18 <swarmcollective> micah57, if you don't mind segmenting your system resources, you can use a docker container for all the Haskell tooling by setting up a .devcontainer with vscode.
07:23:24 <sshine> swarmcollective, he's gone
07:23:41 <swarmcollective> sshine, yep, I missed that.
07:23:48 <swarmcollective> Thanks.
07:24:20 <sshine> I was going to say something about cradle.yaml and ghcide not being friendly with my test-only dependencies.
07:25:08 <sshine> swarmcollective, do you have an example of a Haskell .devcontainer?
07:25:37 <swarmcollective> https://github.com/calledtoconstruct/haskell-hls-devcontainer
07:26:19 <swarmcollective> You can change the base image if you need to control the version of GHC + HLS.
07:27:25 <sshine> I've run OCaml in a .devcontainer, that was very neat. I tried to set up a .devcontainer for PHP once. for some reason it didn't strike me to try and make it work for Haskell.
07:28:27 <swarmcollective> Recently, I needed to expose a port for hitting the apps web service. The `appPort` property in the devcontainer.json worked great for that.
07:29:24 <sshine> I'm in charge of moving from BitBucket to GitHub at work, and one of the things I'm also looking to do is make it possible to run the dev environment in a VSCode .devcontainer :)
07:30:02 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
07:30:23 mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl)
07:30:23 × mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
07:30:23 mouseghost joins (~draco@wikipedia/desperek)
07:30:29 <swarmcollective> sshine, automate all the things! :)
07:30:58 <fresheyeball> Axman6: I figured it out!
07:33:54 <sshine> swarmcollective :-D
07:35:16 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
07:36:20 Varis joins (~Tadas@unaffiliated/varis)
07:38:11 kuribas joins (~user@ptr-25vy0i8nkz1t5x5ue56.18120a2.ip6.access.telenet.be)
07:40:59 × noexcept_ quits (~noexcept@2a03:b0c0:3:d0::33:9001) (Read error: Connection reset by peer)
07:41:00 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
07:41:52 noexcept joins (~noexcept@2a03:b0c0:3:d0::33:9001)
07:44:22 giogiogio joins (5e89ad7c@94.137.173.124)
07:46:14 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
07:48:17 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:50:45 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
07:52:10 <giogiogio> Cale: hi
07:52:46 × heatsink quits (~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4) (Remote host closed the connection)
07:55:00 cfricke joins (~cfricke@unaffiliated/cfricke)
07:57:28 entel joins (uid256215@botters/entel)
07:58:53 <kuribas> is there no framework where you can build javascript ui's without writing any javascript?
07:59:10 <kuribas> preferably all server side?
07:59:45 frozenErebus joins (~frozenEre@94.128.219.166)
07:59:56 <[exa]> just checking if this combination makes sense: javascript ui without javascript, server-side?
08:00:06 <[exa]> how would that work?
08:00:38 <kuribas> I mean, there could be javascript, but nothing I would need to write :)
08:00:39 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
08:00:50 <kuribas> or at least a minimal amount.
08:00:57 mananamenos joins (~mananamen@84.122.202.215.dyn.user.ono.com)
08:01:26 <kuribas> for example, the JS is nothing more than a widget server...
08:01:36 <[exa]> so like, you specify how the pages look on the server and it automagicks out a js app?
08:01:39 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
08:02:34 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
08:02:43 <[exa]> still unsure how that would fit into "all server side"
08:02:58 <kuribas> yeah
08:03:17 <[exa]> would miso fit that?
08:03:20 <kuribas> the logic is on the server side
08:03:24 <[exa]> (haskell-miso.org)
08:03:59 <[exa]> it's "isomorphic" so you can probably do all logic serverside
08:04:03 <kuribas> is that ghcjs?
08:04:20 <kuribas> that sounds like, "the logic is client side".
08:04:56 paniash joins (~ashish@103.160.128.17)
08:05:01 <paniash> hello everyone!
08:05:12 <giogiogio> hi
08:05:19 <fresheyeball> https://shpadoinkle.org/docs/index.html
08:05:22 <fresheyeball> shameless plug
08:05:41 <fresheyeball> an option to consider as an alternative with Miso or Reflex
08:06:07 <fresheyeball> [exa] kuribas ^
08:06:34 <paniash> giogiogio: hello!
08:06:40 <paniash> how are you?
08:07:12 <giogiogio> fine, thx
08:07:16 <giogiogio> you?
08:07:39 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
08:07:54 <paniash> i'm coming from a C++ and python background. i'm a physics student and was wondering if haskell has some niceties that i could use
08:08:01 <paniash> giogiogio: i'm fine! thanks :-)
08:09:11 <kuribas> fresheyeball: is that ghcjs?
08:13:54 × LeafGecko quits (~LeafGecko@gateway/tor-sasl/leafgecko) (Remote host closed the connection)
08:14:36 × amiri quits (~amiri@cpe-76-91-154-9.socal.res.rr.com) (Ping timeout: 240 seconds)
08:15:29 LeafGecko joins (~LeafGecko@gateway/tor-sasl/leafgecko)
08:18:30 <siraben> paniash: there's expressive libraries for expressing various dynamical systems in Haskell
08:18:31 <siraben> e.g. https://blog.jle.im/entry/hamiltonian-dynamics-in-haskell.html
08:18:58 <siraben> more introductory paper on expressing physics concepts in Haskell: https://arxiv.org/pdf/1412.4880.pdf
08:20:28 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
08:21:24 × loller_ quits (uid358106@gateway/web/irccloud.com/x-qmbhmfxxhivxxyig) (Quit: Connection closed for inactivity)
08:21:43 amiri joins (~amiri@cpe-76-91-154-9.socal.res.rr.com)
08:22:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
08:22:08 × LeafGecko quits (~LeafGecko@gateway/tor-sasl/leafgecko) (Ping timeout: 268 seconds)
08:22:23 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 256 seconds)
08:22:58 frozenErebus joins (~frozenEre@94.128.219.166)
08:25:30 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
08:25:45 fiddlerwoaroof_ joins (~fiddlerwo@unaffiliated/fiddlerwoaroof)
08:26:00 tronifier joins (~tronifier@103.105.97.83)
08:27:49 dragestil_ joins (~quassel@fsf/member/dragestil)
08:27:56 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
08:30:34 × fiddlerwoaroof quits (~fiddlerwo@unaffiliated/fiddlerwoaroof) (Ping timeout: 258 seconds)
08:30:34 × dragestil quits (~quassel@fsf/member/dragestil) (Ping timeout: 258 seconds)
08:33:45 krkini joins (~kini@unaffiliated/kini)
08:34:37 × kini quits (~kini@unaffiliated/kini) (Ping timeout: 260 seconds)
08:36:22 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
08:38:47 borne joins (~fritjof@200116b864444400d8bba186ea6b909e.dip.versatel-1u1.de)
08:39:13 LeafGecko joins (~LeafGecko@gateway/tor-sasl/leafgecko)
08:41:29 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
08:42:24 <kuribas> oh, threepenny-gui looks nice!
08:45:29 cur8or joins (~cur8or@72canterbury.cybersmart.co.za)
08:46:16 × krkini quits (~kini@unaffiliated/kini) (Quit: bye)
08:47:38 <kuribas> hmm, it only works over localhost...
08:51:52 <absence> in languages like c, it's possible to read binary data directly into a struct, or cast a pointer to a memory mapped file to a pointer to a struct, etc. if you don't worry too much about portability. what are haskell's options in this regard? there seems to be something called Foreign.Storable, is that related? can it go to/from ByteString, ForeignPtr, or something?
08:51:59 <giogiogio> Hi al, is here someone knowledgeable in type theory?
08:52:02 kini joins (~kini@unaffiliated/kini)
08:52:15 hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
08:52:20 <kuribas> absence: you probably want to use binary
08:52:33 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
08:52:45 <kuribas> absence: https://hackage.haskell.org/package/binary
08:53:10 heatsink joins (~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4)
08:53:45 <kuribas> absence: you cannot "cast" some binary blob to a haskell data structure.
08:54:01 kritzefitz joins (~kritzefit@p548c9398.dip0.t-ipconnect.de)
08:54:27 <kuribas> absence: although you could put a binary blob in foreignptr, then create accessor functions in C.
08:54:33 <absence> kuribas: thanks, i know about parsing, i'm asking about lower level things
08:54:49 × hekkaidekapus} quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
08:54:54 <kuribas> absence: anyway, haskell is not C.
08:55:15 <absence> kuribas: there seems to be things like vector-mmap, which can memory map a file to a Storable a => Vector a
08:55:22 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
08:55:36 <kuribas> absence: the question is why do you need that?
08:56:06 <absence> kuribas: no, that's not the question :)
08:56:20 <kuribas> it's my question
08:56:34 <kuribas> if you want a meaningfull answer
08:57:48 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
08:58:22 × heatsink quits (~heatsink@2600:1700:bef1:5e10:91f6:aac5:ae3f:98b4) (Ping timeout: 268 seconds)
08:58:24 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
08:58:40 <kuribas> giogiogio: a lot of people I would say :)
08:59:19 <giogiogio> including you?
08:59:29 <kuribas> I know a bit
08:59:40 <giogiogio> not deeply?
09:00:07 <kuribas> giogiogio: just ask? If I don't know it, someone else will?
09:00:20 <giogiogio> are you student?
09:00:24 <kuribas> nope
09:00:44 <giogiogio> what is your occupation?
09:01:55 <kuribas> I am a self taught developer
09:02:54 <giogiogio> aha
09:04:00 <kuribas> I have a degree in music :)
09:04:41 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 265 seconds)
09:06:05 × kritzefitz quits (~kritzefit@p548c9398.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
09:06:23 <giogiogio> PhD in music ?
09:06:24 kritzefitz joins (~kritzefit@2003:5b:203b:200::10:49)
09:06:27 <giogiogio> that is cool
09:09:24 × cur8or quits (~cur8or@72canterbury.cybersmart.co.za) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:09:33 dhouthoo joins (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
09:09:45 <maralorn> giogiogio: Not every degree is a phd. Also not everyone in this channel has a phd. The rumours that you can‘t write Haskell without a PhD are false.
09:10:02 <maralorn> (And if they were true they would probably not apply to a PhD in music.)
09:10:43 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
09:12:03 <tdammers> "Music degree" is usually a Bachelor's or Master's
09:12:31 <tdammers> you'd go for a PhD in musicology or music history, but not usually music
09:12:49 <tdammers> in fact, I'm not even sure a PhD in music is a thing, considering how music is not a science
09:12:55 Yumasi joins (~guillaume@2a01:e34:ec55:290:8ce4:80ae:1100:a164)
09:13:09 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
09:13:45 <giogiogio> professor of music should have PhD
09:13:46 <giogiogio> no?
09:14:14 <kuribas> yeah, masters degree
09:14:30 <giogiogio> only msc?
09:14:36 <giogiogio> life is easy for them...
09:14:37 <giogiogio> :)
09:15:11 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
09:15:14 <kuribas> only I couldn't get a job, so I am programming now...
09:15:16 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
09:15:29 <tdammers> conservatory professors, I believe, are usually just accomplished performers/composers and teachers who get appointed; some of my profs never even attended conservatory themselves
09:15:47 × turion quits (~turion@2a02:810d:8abf:c4a8:ec49:8e35:b593:1422) (Quit: Leaving.)
09:16:00 <kuribas> in our conservatory professors where musicians with a career.
09:16:14 <kuribas> Which also meant that I had only one lesson in two/three weeks.
09:16:14 <Rembane> I thought they were professors who never go stale
09:17:31 <giogiogio> huge jump being musician and to work as developer
09:18:24 × Yumasi quits (~guillaume@2a01:e34:ec55:290:8ce4:80ae:1100:a164) (Ping timeout: 240 seconds)
09:18:24 <kuribas> I felt it was a downward step from doing pet projects with high standards to sloppy corporate code.
09:18:38 <kuribas> it's better in my current company
09:18:57 Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it)
09:19:16 Yumasi joins (~guillaume@2a01:e34:ec55:290:5d9:5349:b535:211b)
09:21:06 <kuribas> I guess the hard thing is accepting that corporate code is mostly crap...
09:21:29 bitmagie joins (~Thunderbi@200116b806f75600895a42be0411ce68.dip.versatel-1u1.de)
09:22:14 <tdammers> giogiogio: not that unusual, actually. I've done the same. Got a degree in jazz trombone, badly made a living as a working musician for a couple years, then made a career switch to coding, which I had been doing as a hobby for almost two decades by then
09:22:54 <tdammers> it wasn't even a jump, really, I just switched from doing one of the things I love professionally to doing another thing I love professionally
09:22:57 × bitmagie quits (~Thunderbi@200116b806f75600895a42be0411ce68.dip.versatel-1u1.de) (Client Quit)
09:23:27 <tdammers> if I could choose, I would switch between passions at will and get paid for all of them, but I have yet to find a model that makes that possible
09:23:31 × LeafGecko quits (~LeafGecko@gateway/tor-sasl/leafgecko) (Quit: sunt lacrimae rerum.)
09:23:37 × kritzefitz quits (~kritzefit@2003:5b:203b:200::10:49) (Ping timeout: 260 seconds)
09:23:54 <kuribas> tdammers: yeah, same for me.
09:24:02 × giogiogio quits (5e89ad7c@94.137.173.124) (Quit: Connection closed)
09:24:31 <kuribas> my current situation, coding with smart people, is so much better than having to teach to children which aren't motivated.
09:24:58 <tdammers> piano is particularly bad that way
09:25:13 <tdammers> lots of children who are forced to take lessons
09:26:00 <Franciman> you should get into teaching pipe organ
09:26:16 <Franciman> or ondes martenot
09:27:03 <tdammers> I did trumpet and trombone, kids who go for those tend to be motivated
09:27:39 <tdammers> pushy parents rarely latch onto those instruments, they usually go for piano or violin, or maybe flute or cello
09:27:39 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
09:27:52 <kuribas> and when they have a bit of talent, the teachers let them play way to difficult pieces, which they play badly...
09:27:53 <Franciman> or for orchestra directors
09:28:07 <tdammers> (ironically, my kids play violin and cello)
09:28:18 <Franciman> my parents told me I was not good enough for doing director
09:28:21 <Franciman> I had to start lower
09:28:35 <tdammers> Franciman: well, most people who conduct start as performers
09:28:44 <Franciman> now I spend my time criticizing jazz covers of great masterpieces of monteverdi
09:29:21 <kuribas> Franciman: being a musician isn't lower ;-)
09:29:31 <Franciman> lower being simpler
09:29:34 <Franciman> pardon my english
09:29:47 <kuribas> is it really?
09:29:51 <Franciman> having to play one instrument is simpler, I guess, than taking care of a lot of things
09:29:52 <Franciman> to get started
09:30:01 <Franciman> you start with a melody
09:30:09 <tdammers> kuribas: if all you aspire to is playing second or third chair in a symphony orchestra, then it is simpler
09:30:13 <Franciman> also you don't buy orchestras
09:30:26 <Franciman> they buy you
09:30:44 <tdammers> fun fact: under Dutch law, conductors are not artists
09:30:50 <kuribas> tdammers: in a good orchestra, the second or third chair will be a good musician as well.
09:31:06 chele joins (~chele@ip5b40237d.dynamic.kabel-deutschland.de)
09:31:07 <tdammers> kuribas: yes, but the job requires craftsmanship more than artistry
09:31:38 <tdammers> don't get me wrong, these people do an amazing job at the "craft" aspect, each and every single one of them is a much more proficient instrumentalist than I can ever hope to be
09:31:39 <kuribas> I don't believe that's true for a top orchestra
09:32:09 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
09:32:20 <tdammers> and there is a certain degree of artistry involved as well, but they don't enjoy a great amount of artistic freedom
09:32:50 <kuribas> no, you need to follow the conductor :)
09:32:55 <tdammers> exactly
09:32:56 <Franciman> i think it is false that orchestra director is "harder"
09:33:03 <Franciman> but you can be a director in many ways
09:33:07 <Franciman> from taking time
09:33:07 <kuribas> that's why I didn't like playing in orchestras so much
09:33:08 <Franciman> aka metronome
09:33:08 <tdammers> indeed, it's not harder, it's different
09:33:22 <Franciman> to having real insights into 20 parts sheets
09:33:32 <Franciman> like playing piano can be playing notes
09:33:34 <Franciman> or playing music
09:33:50 <tdammers> though keep in mind that a conductor is usually also kind of a manager, or at least a leader; leadership requires authority, and authority must be earned, through competence
09:34:00 <Franciman> true
09:34:39 cur8or joins (~cur8or@2c0f:fbe1:3:17:8881:d84e:cf83:ef2e)
09:34:49 <tdammers> there's this story about Hindemith, who had written a horn part, and the horn player said, during the rehearsal, "This part you wrote is impossible to play on a French horn"; Hindemith asked the player to hand him the horn, and demonstrated how to play it
09:35:02 <Uniaika> haha
09:35:09 <Franciman> lulz
09:35:25 tsaka__ joins (~torstein@athedsl-258913.home.otenet.gr)
09:35:42 <kuribas> tdammers: wasn't he a viola player?
09:35:46 <Rembane> :D
09:35:48 LKoen joins (~LKoen@96.252.88.92.rev.sfr.net)
09:35:52 <tdammers> kuribas: yes, but he knew his way around many instruments
09:36:36 <tdammers> there's a story that goes the other way around: an inexperienced composer was going to work with a fancy orchestra, and to assert dominance, he added a mistake in the second trumpet part, planning to stop the rehearsal at that point and ask the trumpet player about it, to show that he would hear every mistake
09:36:37 frozenErebus joins (~frozenEre@94.128.219.166)
09:36:51 kritzefitz joins (~kritzefit@p548c9398.dip0.t-ipconnect.de)
09:37:08 × rajivr quits (uid269651@gateway/web/irccloud.com/x-evhkraeqlbjwoock) (Quit: Connection closed for inactivity)
09:37:33 <tdammers> so the rehearsal begins, and they get to that note, and as planned, the composer stops the orchestra and says to the trumpet player: "bar 22, second note, should be a C sharp, not a C", to which the trumpet player responds: "yes, I had spotted that and corrected it, not sure what you heard there, but I did play C"
09:37:47 <tdammers> s/C/C sharp/
09:38:22 <LKoen> good story despite the typo
09:38:24 <Franciman> LOL
09:38:34 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-xzxwzcbrnrsklakp) (Quit: Connection closed for inactivity)
09:40:27 × perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0)
09:43:13 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
09:44:09 <kuribas> tdammers: pretty lame he didn't hear the mistake in his own piece...
09:45:02 funkatron joins (~funkatron@217.146.82.202)
09:45:19 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
09:45:25 __monty__ joins (~toonn@unaffiliated/toonn)
09:46:16 perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
09:46:35 <Franciman> being a composer for orchestras is true lame, as you continuously compare yourself to _top notch director_
09:46:37 <Franciman> and everybody does
09:46:57 <Franciman> oh you can't recognize what this chord sequence is?
09:46:59 <Franciman> well berstein could
09:47:23 giogiogio joins (5e89ad7c@94.137.173.124)
09:49:24 tronifier_ joins (~tronifier@103.105.97.83)
09:49:24 × tronifier quits (~tronifier@103.105.97.83) (Read error: Connection reset by peer)
09:50:21 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
09:54:15 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
09:55:14 dcoutts joins (~duncan@85.186.125.91.dyn.plus.net)
09:55:39 <absence> if i "peek" the Ptr i get from System.IO.MMap, will the data get duplicated in memory, or is the resulting Storable value backed directly by the mmapped data?
09:56:15 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
09:56:53 <merijn> absence: Unspecified :p But mostly Storable copies from a pointer to a Haskell heap representation
09:57:34 <merijn> absence: Basically, depending on you backend (say, LLVM) I could see some form of peephole optimisation or whatever copying things.
09:57:44 <merijn> But in principle it's copied
09:57:56 × aforemny quits (~aforemny@static.248.158.34.188.clients.your-server.de) (Quit: ZNC 1.8.2 - https://znc.in)
09:58:26 <absence> merijn: i guess that makes sense. a normal value can't get special treatment due to gc and all that?
09:58:35 <paniash> siraben: hi! thanks a lot! sorry but i was afk for sometime
09:58:48 <siraben> paniash: np
09:58:50 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Ping timeout: 264 seconds)
09:58:56 × jedws quits (~jedws@101.184.202.248) (Quit: Textual IRC Client: www.textualapp.com)
09:59:12 <merijn> absence: Define "normal" value?
09:59:46 <absence> merijn: a record rather than a (Foreign)Ptr or some special representation
10:00:29 × paniash quits (~ashish@103.160.128.17) (Quit: WeeChat 3.0)
10:00:38 × Yumasi quits (~guillaume@2a01:e34:ec55:290:5d9:5349:b535:211b) (Ping timeout: 264 seconds)
10:00:51 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
10:01:02 <absence> merijn: the only way to make sure to avoid the copy would be to deal directly with the pointer all the time i guess?
10:01:15 <merijn> Yes
10:01:19 fendor joins (~fendor@77.119.130.50.wireless.dyn.drei.com)
10:01:27 <merijn> absence: Are you sure the copy is a problem, though?
10:02:10 <absence> merijn: that probably depends on the situation. for now i'm just learning how it works :)
10:02:32 <kuribas> "making a copy" could mean moving to a CPU register
10:02:46 <merijn> kuribas: Unlikely for a record :p
10:06:22 p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
10:06:36 Yumasi joins (~guillaume@2a01:e34:ec55:290:8ccd:918d:b179:8c33)
10:07:05 Tops2 joins (~Tobias@dyndsl-091-249-083-069.ewe-ip-backbone.de)
10:08:58 × kritzefitz quits (~kritzefit@p548c9398.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
10:09:18 kritzefitz joins (~kritzefit@2003:5b:203b:200::10:49)
10:09:51 aforemny joins (~aforemny@static.248.158.34.188.clients.your-server.de)
10:11:38 × aforemny quits (~aforemny@static.248.158.34.188.clients.your-server.de) (Client Quit)
10:11:53 × dixie quits (~dixie@real.wilbury.sk) (Ping timeout: 246 seconds)
10:12:05 × tronifier_ quits (~tronifier@103.105.97.83) (Ping timeout: 240 seconds)
10:12:13 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
10:12:55 aforemny joins (~aforemny@static.248.158.34.188.clients.your-server.de)
10:13:43 × Unhammer quits (~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection)
10:14:29 Unhammer joins (~Unhammer@gateway/tor-sasl/unhammer)
10:18:48 dixie joins (~dixie@real.wilbury.sk)
10:21:16 × Kaiepi quits (~Kaiepi@47.54.252.148) (Ping timeout: 240 seconds)
10:22:13 thc202 joins (~thc202@unaffiliated/thc202)
10:24:15 Kaiepi joins (~Kaiepi@47.54.252.148)
10:24:59 × Yumasi quits (~guillaume@2a01:e34:ec55:290:8ccd:918d:b179:8c33) (Remote host closed the connection)
10:25:28 Yumasi joins (~guillaume@2a01:e34:ec55:290:d07b:9318:70ec:519d)
10:28:41 son0p joins (~son0p@181.58.39.182)
10:28:50 <giogiogio> Cale
10:31:14 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
10:35:02 × _bin quits (~bin@75-54-107-59.lightspeed.hstntx.sbcglobal.net) (Ping timeout: 256 seconds)
10:35:56 × Yumasi quits (~guillaume@2a01:e34:ec55:290:d07b:9318:70ec:519d) (Ping timeout: 240 seconds)
10:38:46 Yumasi joins (~guillaume@2a01:e34:ec55:290:b755:2921:1d91:b7a)
10:42:50 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
10:43:51 jamm_ joins (~jamm@unaffiliated/jamm)
10:45:17 × Yumasi quits (~guillaume@2a01:e34:ec55:290:b755:2921:1d91:b7a) (Ping timeout: 260 seconds)
10:46:08 Yumasi joins (~guillaume@2a01:e34:ec55:290:16d6:9200:c8da:5f9f)
10:46:28 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
10:47:59 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
10:48:01 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
10:48:25 × hal9001`` quits (~user@zz2017405567D30FFCD9.userreverse.dion.ne.jp) (Ping timeout: 240 seconds)
10:48:47 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
10:52:40 mirrorbird joins (~psutcliff@2a00:801:44d:603d:d116:d5a1:4a2f:a08f)
10:52:52 × Yumasi quits (~guillaume@2a01:e34:ec55:290:16d6:9200:c8da:5f9f) (Ping timeout: 260 seconds)
10:53:34 Yumasi joins (~guillaume@2a01:e34:ec55:290:1733:7a7d:bad3:50ed)
10:54:16 usr25 joins (~usr25@unaffiliated/usr25)
10:54:59 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
10:55:26 <tdammers> kuribas: the point is he *said* he had heard a mistake, because he had planned for there to be one, but the trumpeter had actually noticed the missing sharp and proactively added it, so there was no mistake to be heard
10:56:14 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
10:56:52 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:57:45 × son0p quits (~son0p@181.58.39.182) (Ping timeout: 240 seconds)
10:58:42 × Yumasi quits (~guillaume@2a01:e34:ec55:290:1733:7a7d:bad3:50ed) (Ping timeout: 260 seconds)
10:59:16 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
10:59:52 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Ping timeout: 260 seconds)
10:59:56 Yumasi joins (~guillaume@2a01:e34:ec55:290:3492:81f5:b31:615e)
11:00:02 son0p joins (~son0p@181.58.39.182)
11:01:24 × cur8or quits (~cur8or@2c0f:fbe1:3:17:8881:d84e:cf83:ef2e) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:02:14 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
11:02:21 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
11:02:32 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:02:42 jpds joins (~jpds@gateway/tor-sasl/jpds)
11:03:56 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
11:06:18 kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
11:07:07 × kum0 quits (~kumo@139.180.144.166) (Quit: WeeChat 2.9)
11:07:24 × Yumasi quits (~guillaume@2a01:e34:ec55:290:3492:81f5:b31:615e) (Ping timeout: 240 seconds)
11:07:45 cur8or joins (~cur8or@2c0f:fbe1:3:17:7c10:23d:bc70:328c)
11:07:50 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
11:08:15 Yumasi joins (~guillaume@2a01:e34:ec55:290:f704:1292:fe66:8485)
11:08:38 × cantstanya quits (~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 268 seconds)
11:08:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:08:45 × lep-delete quits (~lep@94.31.81.183) (Read error: Connection reset by peer)
11:09:23 lep-delete joins (~lep@94.31.81.183)
11:12:11 cantstanya joins (~chatting@gateway/tor-sasl/cantstanya)
11:16:48 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
11:16:48 jamm_ joins (~jamm@unaffiliated/jamm)
11:17:29 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
11:17:58 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
11:18:26 × xff0x quits (~xff0x@2001:1a81:5376:4800:96:3fa7:76da:f069) (Ping timeout: 240 seconds)
11:19:14 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
11:19:35 xff0x joins (~xff0x@2001:1a81:5376:4800:c2c8:2482:792f:c3ad)
11:20:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:21:26 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 268 seconds)
11:21:27 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
11:25:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
11:26:18 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:27:41 × thunderrd quits (~thunderrd@183.182.112.64) (Ping timeout: 272 seconds)
11:29:45 puke joins (~vroom@217.138.252.197)
11:31:45 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
11:31:57 lawr3nce joins (~lawr3nce@gateway/tor-sasl/lawr3nce)
11:32:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:33:28 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
11:33:28 × srk quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
11:33:28 × hexo quits (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
11:33:42 srk joins (~sorki@gateway/tor-sasl/sorki)
11:33:46 hexo joins (~hexo@gateway/tor-sasl/hexo)
11:36:05 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
11:36:25 × darjeeling_ quits (~darjeelin@39.185.119.195) (Ping timeout: 240 seconds)
11:38:30 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
11:38:47 tronifier joins (~tronifier@103.105.97.83)
11:40:03 thunderrd joins (~thunderrd@183.182.113.172)
11:42:15 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
11:43:43 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 272 seconds)
11:43:44 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:46:24 dhil joins (~dhil@80.208.56.181)
11:46:53 × danza quits (~francesco@151.74.111.178) (Ping timeout: 272 seconds)
11:48:10 × tronifier quits (~tronifier@103.105.97.83) (Ping timeout: 272 seconds)
11:48:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
11:49:30 jamm_ joins (~jamm@unaffiliated/jamm)
11:49:38 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:51:01 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
11:54:02 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
11:55:39 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
11:55:46 Tario joins (~Tario@201.192.165.173)
11:55:56 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
11:57:49 × kini quits (~kini@unaffiliated/kini) (Remote host closed the connection)
11:59:06 kini joins (~kini@unaffiliated/kini)
11:59:46 × kmein quits (~weechat@static.173.83.99.88.clients.your-server.de) (Quit: ciao kakao)
12:00:06 kmein joins (~weechat@static.173.83.99.88.clients.your-server.de)
12:00:06 tronifier joins (~tronifier@103.105.97.83)
12:00:38 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Ping timeout: 264 seconds)
12:01:29 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8)
12:01:35 <maerwald> tdammers: yeah, your expectations mess with your perception
12:01:39 × plutoniix quits (~q@184.82.194.239) (Quit: Leaving)
12:02:42 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
12:03:19 sh9 joins (~sh9@softbank060116136158.bbtec.net)
12:07:02 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
12:12:10 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8)
12:12:13 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
12:12:58 <wz1000> merijn: you might be interested in this: https://github.com/haskell/haskell-language-server/pull/1382
12:13:26 × cur8or quits (~cur8or@2c0f:fbe1:3:17:7c10:23d:bc70:328c) (Ping timeout: 240 seconds)
12:14:15 cur8or joins (~cur8or@2c0f:fbe1:3:17:7c10:23d:bc70:328c)
12:15:25 <merijn> wz1000: \o/
12:15:34 <merijn> wz1000: I will take it for a test-drive Soon-ish
12:16:03 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
12:16:19 <wz1000> merijn: does that describe your code? TH+UnboxedTuples?
12:17:07 <merijn> wz1000: It's mostly/only Template Haskell generated by persistent
12:17:21 × tronifier quits (~tronifier@103.105.97.83) (Ping timeout: 264 seconds)
12:17:26 <wz1000> no UnboxedSums/Tuples?
12:17:35 <wz1000> Then this PR shouldn't really affect it
12:18:27 <merijn> wz1000: I think the issue with my code is that it relies on both FFI symbols and TH
12:18:40 <wz1000> does it work in ghci?
12:18:44 <merijn> wz1000: And without object code loading ghci chokes on it
12:18:52 <merijn> wz1000: It works IFF I load object code
12:18:58 <wz1000> ok, so ghci needs -fobject-code?
12:19:40 <wz1000> merijn: do you have any idea how we would detect such a scenario so that we can set -fobject-code?
12:19:43 <merijn> wz1000: It works with -fobject-code, it's been a few GHC versions since I tested if it worked without -fobject-code
12:20:54 <wz1000> merijn: ok, the PR might help you a bit, you may just have to change one line in it, this_type to always return ObjectLinkable
12:21:14 <merijn> wz1000: I'm diving back into this code base in ~1 week. I'll try that branch and latest release and play around with how it can be detected then
12:21:25 <wz1000> cool
12:21:46 <merijn> wz1000: Yeah, I think I've been using your patch since last time: https://gist.github.com/merijn/0f272bf0424658791080e9e3d1abdbd2
12:22:08 <wz1000> yeah, now it should be down to one line instead of 2
12:22:10 <wz1000> does it work?
12:22:29 iam joins (511495c8@200-149-20-81.sta.estpak.ee)
12:22:47 <merijn> wz1000: Mostly, it sometimes gets confused when I switch components, but I'm using an admittedly rather old ghcide currently
12:23:02 <merijn> So we'll see what happens with latest version
12:23:48 rajivr joins (uid269651@gateway/web/irccloud.com/x-ykaotdmdonbhsuvt)
12:24:10 <merijn> wz1000: oh, speaking of "when you should set -fobject-code", you need it for modules with -XCApiFFI too if that isn't done already
12:24:30 <merijn> I'm about 95% sure ghci cannot load -XCApiFFI modules without it
12:24:31 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
12:24:43 <wz1000> merijn: do you really? What if there is no TH and you have -fno-code?
12:25:32 <merijn> Hold on, should be trivial to construct a test case :)
12:25:54 <wz1000> i.e does -XCApiFFI mean that - 1) the module has to be compiled using object code, or just 2) If the module has to be compiled, it has to be compiled using object code
12:26:42 <merijn> wz1000: I'm not really sure, but let me hack together some trivial example to test what works in ghci currently
12:28:15 <iam> Hello guys! How I can debug "thread blocked indefinitely in an STM transaction" async exception? In my code I'm using STM Broadcast TChans to send and receive messages between processes. I thought this error is appearing in cases where readTChan is applied, but all references to broadcast TChan were already garbage collected. In my case I'm
12:28:16 <iam> definitely keeping reference in other thread. What else can cause this issue?
12:29:09 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
12:29:58 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
12:32:37 __minoru__shirae joins (~shiraeesh@109.166.58.243)
12:33:28 <merijn> wz1000: I'm not really sure of what details ghcide needs, but naively "cabal repl" or "ghci" without -fobject-code causes it to error out
12:33:53 <wz1000> merijn: what about -fno-code?
12:36:22 <merijn> wz1000: ok, seems to work with no-code?
12:36:27 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
12:36:43 <wz1000> merijn: can you share your files? do they use TH?
12:36:57 Noldorin joins (~noldorin@unaffiliated/noldorin)
12:36:58 <merijn> wz1000: The test case I wrote just now is here: https://github.com/merijn/ghcide-capiffi-test
12:37:14 <merijn> Which is just like a handful of lines
12:37:49 <merijn> In my case I don't have CApiFFI in the same modules as TemplateHaskell
12:38:31 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 256 seconds)
12:38:38 <wz1000> but do you have any TemplateHaskell which depends on a CApiFFI?
12:38:46 <merijn> wz1000: I think I send the other repo before, but that code is here https://github.com/merijn/belewitte that's...not particularly minimal to try :p
12:39:46 <merijn> wz1000: My TH modules import on CApiFFI, but the TH code itself does not
12:39:49 <tomsmeding> iam: if using that channel is the only thing you're doing with STM, then yes that should be the only way to get that error
12:40:15 <wz1000> merijn: unfortunately, GHC cannot distinguish between those cases
12:40:42 <merijn> iam: That error happens when "all threads with references are blocked on the same STM variables", yeah
12:41:46 <merijn> wz1000: In the past I just deleted the CApiFFI stuff and hardcoded it for ghcide, and then TH code still failed on other symbols at that time. Anyway, I will take a deeper dive into the current state and exact errors in a week or so
12:41:58 × DataComputist quits (~lumeng@50.43.26.251) (Ping timeout: 256 seconds)
12:42:07 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
12:43:34 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
12:44:42 <NieDzejkob> so, the plugins package lets me compile haskell modules at run time. What would be the best way of making a set of variables available as constants in the compiled code?
12:45:46 DataComputist joins (~lumeng@50.43.26.251)
12:47:03 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
12:47:04 rmk236 joins (~lcampos@2a02:908:3616:b100:26ac:558e:ac:c88f)
12:49:48 anuur joins (~anuur@129.205.124.168)
12:50:00 <anuur> Hello
12:51:06 × mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew)
12:51:34 <tomsmeding> o/
12:51:43 <anuur> Anyone here
12:51:57 <tomsmeding> more than a thousand accounts :)
12:52:27 <tdammers> maerwald: yes, but he was also trying to be an ass, and it backfired, which is kind of nice
12:52:42 <anuur> Am I welcome here
12:53:15 <tomsmeding> anuur: everyone with an interest in haskell is welcome here
12:53:25 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
12:53:56 <anuur> Thanks tomsmeding
12:54:33 × __minoru__shirae quits (~shiraeesh@109.166.58.243) (Ping timeout: 264 seconds)
12:55:11 <iam> merijn tomsmeding thanks) I did solved it, indeed I forgot to cancel linked process with readTChan procedure, and it blew up main thread
12:55:31 iyefrat joins (~itai@87.70.9.10)
12:55:44 <tomsmeding> iam: nice :)
12:55:58 zebrag joins (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr)
12:56:15 × Wamanuz quits (~wamanuz@78-70-34-81-no84.tbcn.telia.com) (Remote host closed the connection)
12:56:31 <iam> Haskell is smart with this deadlock detection, maybe sometimes too smart
12:56:39 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
12:56:56 × centril quits (~centril@213-66-146-92-no250.tbcn.telia.com) (Ping timeout: 240 seconds)
12:57:02 <iyefrat> how exactly do i use unliftIO?
12:57:19 <iyefrat> I have some monadic action `m a` that i want to perform in a function of type `IO a`
12:57:42 <iyefrat> unliftIO seems to be the thing to do that but it seems to require an extra parameter i don't understand
12:58:11 Boomerang joins (~Boomerang@2a05:f6c7:2179:0:e843:d0fd:9f46:d71a)
12:58:31 <iam> iyefrat not sure you need `unliftIO` there. It depends what is `m`
12:58:41 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
12:58:53 Tops21 joins (~Tobias@dyndsl-091-249-083-069.ewe-ip-backbone.de)
12:59:15 <iyefrat> iam: currenlty `m` is `ReaderT env IO`
12:59:23 Tops22 joins (~Tobias@dyndsl-091-249-083-069.ewe-ip-backbone.de)
12:59:26 <iam> Usually libraries which are operating in some abstract monad, also provide function like `runM :: m a -> IO a`
12:59:37 <iam> Just example, how it might look
12:59:39 <iyefrat> oh so should i just do `runReader` or something
12:59:42 <Clint> in this case, runReaderT
12:59:42 <iyefrat> i'll check
12:59:58 <iyefrat> gotcha
13:00:01 Wamanuz joins (~wamanuz@78-70-34-81-no84.tbcn.telia.com)
13:00:13 <iyefrat> wait so what is `unliftIO` used for generally?
13:00:20 <iyefrat> what does the extra parameter mean?
13:01:10 urodna joins (~urodna@unaffiliated/urodna)
13:01:14 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Ping timeout: 264 seconds)
13:02:22 × Tops2 quits (~Tobias@dyndsl-091-249-083-069.ewe-ip-backbone.de) (Ping timeout: 256 seconds)
13:02:29 <merijn> iam: It only happens in cases where code is 100% guaranteed deadlocked, though
13:02:32 __minoru__shirae joins (~shiraeesh@109.166.58.243)
13:02:34 <iam> iyefrat unliftIO is meant for cases where you need to compose `IO` and `m` expressions somehow. Use case is pretty similar to `liftIO` but a bit more powerful: https://github.com/fpco/unliftio#unlifting-in-2-minutes
13:02:37 centril joins (~centril@213-66-146-92-no250.tbcn.telia.com)
13:02:39 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
13:03:31 funkatronixxx joins (~funkatron@a83-161-198-206.adsl.xs4all.nl)
13:03:33 × Tops21 quits (~Tobias@dyndsl-091-249-083-069.ewe-ip-backbone.de) (Ping timeout: 264 seconds)
13:03:33 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
13:03:39 × funkatronixxx quits (~funkatron@a83-161-198-206.adsl.xs4all.nl) (Client Quit)
13:04:17 <anuur> If I may ask what is the topic of discussion
13:05:26 <iyefrat> iam: yes i read this readme but i think that i misunderstood it, it seels like the general idea is still to end up in `m` but you need unlifting due to contravaraince
13:07:23 × anuur quits (~anuur@129.205.124.168) (Read error: Connection reset by peer)
13:07:24 boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
13:08:31 <iam> merijn I'm not sure it's 100% correct. I think I've got couple of times false positive deadlock STM exceptions in cases liike `res <- atomically $ stmX <|> stmY`. Even if only `stmX` is deadlocked, all expression is blown up, in spite of `stmY` still can read value from TChan and resolve `res`
13:08:52 <maerwald> tdammers: hard to recover from such a situation xD
13:10:07 geekosaur joins (82650c7a@130.101.12.122)
13:10:53 <merijn> iam: The way deadlock detection for MVars and TVars works is that when threads block on them, they add themselves to a queue waiting to be notified. The deadlock detection triggers when no running thread has a reference to said variable (i.e. they're all in the queue waiting for the (M/T)Var to chance
13:11:23 <merijn> iam: In that case they *are* deadlocked, because the only threads who *could* update it are blocking on it, so never will
13:11:24 × cur8or quits (~cur8or@2c0f:fbe1:3:17:7c10:23d:bc70:328c) (Ping timeout: 240 seconds)
13:12:13 <merijn> iam: But it's impossible to say what's going on in your code without seeing it
13:13:06 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
13:13:28 <iam> merijn I think got it, and I believe TChan deadlocks in STM are working similar way - just counting references. But in my example it's not just one read from one TChan, there are multiple reads composed with <|>
13:13:53 <merijn> There is no reference counting anywhere in GHC
13:15:13 <iam> merijn I've provided minimal example, but I have real code as well. Not sure I understood the situation correctly, but here it is: https://github.com/coingaming/lnd-client/blob/56a96d4104ee043ff7ba02441839358e697eb470/src/LndClient/Watcher.hs#L148-L156
13:15:18 cur8or joins (~cur8or@2c0f:fbe1:3:17:7c10:23d:bc70:328c)
13:15:50 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
13:16:58 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
13:17:45 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
13:18:37 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
13:18:46 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
13:19:32 <merijn> iam: How sure are you that the writers aren't blocked unable to write? :p
13:21:30 <iam> merijn I'm using broadcast TChans to minimize messing everything up risk - one thread can only write, other can only read. In general, it does not gives 100% guarantee for sure.
13:22:53 <merijn> That doesn't really address the issue I asked, though. If your "writers" are, in fact, crashing and/or blocked indefinitely, preventing them from writing, your threads *are* in fact deadlocked
13:23:18 <merijn> So if you are not 100% sure they *aren't* blocked, how can you conclude GHC's deadlock detection is giving false positives?
13:25:10 <iam> merijn in this example I've provided ubove **some** writers are terminated, in this example expression called "lnd" is considered deadlocked because async task which is the only thread who can write terminated
13:25:58 <iam> merijn but I think by design it should be ok, because 2 other alternatives are **not** blocked.
13:27:03 anuur joins (~anuur@129.205.124.168)
13:27:09 <iam> merijn and expression called "task" returns immediately after writer to "lnd" terminates - that's why sometimes it's working, and sometimes not
13:27:13 <anuur> Hello
13:27:52 <merijn> iam: I think you are misinterpreting what's happening, tbh
13:28:09 <merijn> iam: I'm pretty sure the deadlock exception isn't coming from your STM at all
13:28:18 <merijn> iam: Because exceptions in STM trigger a retry
13:28:20 <iam> merijn result depends on which alternative expression has been resolved first by runtime - deadlock on "lnd" or result on "task". I might be wrong of courtse
13:28:33 <merijn> iam: You are calling "link" in your code
13:29:03 <merijn> iam: I'm pretty sure the *child* threads are deadlocking, and link causes the deadlock exception of the child to be thrown to the parent that spawned it
13:29:40 pagnol joins (~user@n112120223083.netvigator.com)
13:30:32 × funkatron quits (~funkatron@217.146.82.202) (Remote host closed the connection)
13:30:53 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
13:31:19 × kam1 quits (~kam1@83.123.64.17) (Remote host closed the connection)
13:33:06 × lambda quits (~xiretza@mail.xiretza.xyz) (Remote host closed the connection)
13:33:25 × anuur quits (~anuur@129.205.124.168) (Ping timeout: 265 seconds)
13:33:50 Demonlordvai joins (~u0_a233@157.45.132.38)
13:34:00 <Demonlordvai> hi
13:35:05 <Demonlordvai> anyone here to chat?
13:35:49 <pagnol> yes
13:35:53 <pagnol> howdy
13:35:57 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
13:36:14 frozenErebus joins (~frozenEre@94.128.219.166)
13:36:28 × usr25 quits (~usr25@unaffiliated/usr25) (Ping timeout: 272 seconds)
13:36:30 × Demonlordvai quits (~u0_a233@157.45.132.38) (Quit: Lost terminal)
13:36:55 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
13:38:06 × zebrag quits (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
13:38:13 <iam> merijn true, I'm linking all the child processes. But in general, if there is STM expression like `res <- atomically $ stmReaderX <|> stmReaderY` - this thread should not be killed with deadlock in case where only `stmReaderX` is readlocked?
13:38:26 zebrag joins (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr)
13:38:48 nckx is now known as jorts
13:39:00 <merijn> iam: How do you know the thread that is only blocked on stmReaderX is the thread that triggers the deadlock exception?
13:39:35 <merijn> iam: How do you know it isn't one of the child threads, with the exception from the child being forwarded to the thread you are talking about?
13:39:54 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
13:41:26 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 264 seconds)
13:42:08 <iam> merijn in this particular case, there are no guarantees, I just assume it from my code. But let's consider abstract situation where `stmReaderX` is deadlocked, and `stmReaderY` is not - will `stmReaderX <|> stmReaderY` explode?
13:43:25 <merijn> I don't know the details of how STM deadlock detection works, consult the documentation/paper/book
13:43:44 <iam> merijn ok, thansk!@
13:43:51 <iam> * thanks
13:44:08 <merijn> I will say that debugging concurrency issues based on "I assume" is a very cursed process :)
13:44:52 × iyefrat quits (~itai@87.70.9.10) (Quit: #haskell)
13:45:09 Ailrk joins (~Ailrk@99.199.143.168)
13:45:10 <iam> Async exceptions are cursed themselves) We need a language without them)
13:46:38 <swarmcollective> Bidirectional communication between threads is tricky. "I see some semaphores in your future."
13:46:48 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
13:47:26 <tomsmeding> iam: first assume that the STM deadlock detection does not have false positives and assume it's your code :)
13:47:51 <tomsmeding> while things have bugs, the first approximation is that this particular piece of code does not :p
13:47:52 × cur8or quits (~cur8or@2c0f:fbe1:3:17:7c10:23d:bc70:328c) (Ping timeout: 260 seconds)
13:48:40 pavonia joins (~user@unaffiliated/siracusa)
13:50:21 × toorevitimirp quits (~tooreviti@117.182.183.159) (Remote host closed the connection)
13:50:52 <dminuoso> Mmm, would you consider using `Either IPv4 IPv6` not for the exception effect, but just as a plain anonymous sum type appropriate?
13:51:14 × son0p quits (~son0p@181.58.39.182) (Quit: leaving)
13:51:20 <merijn> dminuoso: tbh, "custom types for all the things" is increasingly my own approach :p
13:51:38 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
13:51:42 <dminuoso> merijn: tell me about it.. :)
13:52:28 <merijn> dminuoso: Like, do you ever plan to use any of the existing either stuff in libs with that?
13:53:32 cur8or joins (~cur8or@72canterbury.cybersmart.co.za)
13:54:04 frozenErebus joins (~frozenEre@94.128.219.166)
13:54:17 <dminuoso> No.
13:54:35 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
13:54:36 <dminuoso> But I guess, Ill just carry on here creating custom data types.
13:54:50 <merijn> Well, then how is Either more convenient then "data IP = IPv4 IPv4 | IPv6 IPv6"? :p
13:54:50 × mirrorbird quits (~psutcliff@2a00:801:44d:603d:d116:d5a1:4a2f:a08f) (Ping timeout: 246 seconds)
13:55:52 <dminuoso> Onto creating my 119th data type then.
13:56:10 son0p joins (~son0p@181.58.39.182)
13:56:20 <dminuoso> I mean, I get what you're saying
13:57:11 × rmk236 quits (~lcampos@2a02:908:3616:b100:26ac:558e:ac:c88f) (Quit: Leaving.)
13:57:18 <dminuoso> It's just that with IPv4 and IPv6 in the mix, this multiplicates really quick
13:57:21 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
13:57:53 <dminuoso> Especially because it's incredibly hard to abstract over both sensibly
13:57:57 nshepperd22 joins (~nshepperd@li364-218.members.linode.com)
13:58:04 × Aleksejs quits (~Aleksejs@haskell.lv) (Ping timeout: 265 seconds)
13:58:38 × alx741 quits (~alx741@186.178.108.16) (Quit: alx741)
13:59:05 × nshepperd2 quits (~nshepperd@li364-218.members.linode.com) (Ping timeout: 240 seconds)
13:59:05 nshepperd22 is now known as nshepperd2
13:59:12 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
13:59:32 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 260 seconds)
14:00:42 lestrrat joins (~lestrrat@139.28.218.148)
14:00:51 bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com)
14:01:28 <swarmcollective> I'm currently using Either SomeState SomeState to keep track of whether the state was modified by one or more strategies. I suppose `type StateModified = Original SomeState | Modified SomeState` would be more clear.
14:01:51 <dminuoso> swarmcollective: That needs to use `data`, not `type`
14:02:12 Aleksejs joins (~Aleksejs@haskell.lv)
14:02:27 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Ping timeout: 260 seconds)
14:02:56 <boxscape> alternatively you could do `data StateModified = MkStateModified IsModified SomeState` where `data IsModified = Original | Modified` - it's actually unclear to me which of those would be better
14:04:06 × cur8or quits (~cur8or@72canterbury.cybersmart.co.za) (Ping timeout: 246 seconds)
14:05:00 jamm_ joins (~jamm@unaffiliated/jamm)
14:05:42 × geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
14:06:40 × Ailrk quits (~Ailrk@99.199.143.168) (Quit: WeeChat 3.0)
14:07:05 Ailrk joins (~Ailrk@99.199.143.168)
14:07:37 jollygood2 joins (~bc8134e3@217.29.117.252)
14:09:36 <dminuoso> boxscape: The first is probably safer to use, since it doesn't decouple the knowledge of modification from the actual state.
14:09:54 <dminuoso> That is, if you pattern match on your `StateModified`, then you're free to just ignore whether or not it was modified.
14:09:58 <boxscape> hm yeah that makes sense
14:10:32 <dminuoso> otoh, what you could do is use `Tagged` with a lifted IsModified
14:10:57 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
14:11:07 × carlomagno1 quits (~cararell@148.87.23.11) (Ping timeout: 265 seconds)
14:11:10 <dminuoso> Then you could track in the type system where a modified state is produced/expected.
14:11:56 × Nikotiini quits (~ubuntu@ec2-52-213-118-142.eu-west-1.compute.amazonaws.com) (Ping timeout: 240 seconds)
14:12:39 × Ailrk quits (~Ailrk@99.199.143.168) (Quit: WeeChat 3.0)
14:13:03 mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl)
14:13:03 × mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
14:13:03 mouseghost joins (~draco@wikipedia/desperek)
14:13:38 × lawr3nce quits (~lawr3nce@gateway/tor-sasl/lawr3nce) (Ping timeout: 268 seconds)
14:14:30 Nikotiini joins (~ubuntu@ec2-52-213-118-142.eu-west-1.compute.amazonaws.com)
14:15:36 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
14:16:03 rj joins (~x@gateway/tor-sasl/rj)
14:16:26 st8less joins (~st8less@2600:380:5554:d3db:3b08:38c8:3393:6702)
14:16:54 deviantfero joins (~deviantfe@190.150.27.58)
14:19:32 geekosaur joins (82650c7a@130.101.12.122)
14:21:17 Ailrk joins (~Ailrk@99.199.143.168)
14:21:33 × puffnfresh quits (~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) (Ping timeout: 264 seconds)
14:22:45 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
14:23:33 × raym quits (~ray@45.64.220.98) (Quit: leaving)
14:24:16 × mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 240 seconds)
14:26:14 × dsrt^ quits (dsrt@ip98-184-89-2.mc.at.cox.net) ()
14:26:18 m0rphism1 joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
14:27:10 <iam> How you would call function `Maybe a -> IO a`? I want to use it some cases where I'm working with persistent/yesod databases I'm sure that function `Database.Persist.get` will return `Just a` value (for example for tables where rows are never removed)
14:27:11 pera joins (~pera@unaffiliated/pera)
14:27:45 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
14:28:12 <iam> Is `liftMaybe` good enough name for that? Or there is more conventional name?
14:28:31 × pagnol quits (~user@n112120223083.netvigator.com) (Ping timeout: 265 seconds)
14:28:40 <swarmcollective> Are you using fromJust?
14:29:32 <iam> swarmcollective looks like what I need, thanks!@
14:29:40 Sheilong joins (uid293653@gateway/web/irccloud.com/x-wsxjljkamhkjndqg)
14:31:28 jorts is now known as nckx
14:33:25 × elliott__ quits (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
14:36:02 × ulidtko|kk quits (~ulidtko@194.54.80.38) (Ping timeout: 264 seconds)
14:36:51 mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh)
14:37:36 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
14:38:10 × Ailrk quits (~Ailrk@99.199.143.168) (Quit: WeeChat 3.0)
14:39:44 <dminuoso> iam: note is the usual name
14:40:00 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
14:40:30 <dminuoso> (as in "note the error")
14:41:09 <dminuoso> I usually write it as `note :: Text -> Maybe a -> M a`, where `note` then constructs some sort of error in my monad M (perhaps an exception or something else)
14:41:17 <dminuoso> Based on my supplied error string
14:41:25 puffnfresh joins (~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net)
14:41:28 <dminuoso> Or sometimes with arguments flipped, so I can write:
14:41:46 <dminuoso> `do n <- mv `note` "missing thing"; ...`
14:42:43 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
14:43:57 <iam> thanks dminuoso ) I did it previously with name `liftMaybe "this should never happen" =<< getSomething` but error message is not relevant in most cases, because I'm using it only in cases where it really should never be Nothing
14:44:57 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
14:47:57 <swarmcollective> Would be nice if the access to these tables were wrapped in a type that exposes this function. However, I know nearly zero about Haskell db access (for now).
14:48:25 Ailrk joins (~Ailrk@99.199.143.168)
14:49:33 frozenErebus joins (~frozenEre@94.128.219.166)
14:51:26 <iam> swarmcollective it was more general question than db access) But about databases - I'm quite happy with Persistent/Esqueleto libraries. Especially Esqueleto because of typed SQL. But I'm using it only with Postgres, not sure about other databases
14:55:05 × Ailrk quits (~Ailrk@99.199.143.168) (Quit: WeeChat 3.0)
14:55:09 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
14:55:11 darjeeling_ joins (~darjeelin@122.245.120.7)
14:55:46 × dolio quits (~dolio@haskell/developer/dolio) (Quit: ZNC 1.8.2 - https://znc.in)
14:56:13 Ailrk joins (~Ailrk@99.199.143.168)
14:56:15 × geekosaur quits (82650c7a@130.101.12.122) (Quit: Connection closed)
14:56:33 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
14:57:29 × st8less quits (~st8less@2600:380:5554:d3db:3b08:38c8:3393:6702) (Ping timeout: 246 seconds)
14:57:38 kam1 joins (~kam1@83.123.64.17)
14:58:30 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
14:59:22 Ailrk parts (~Ailrk@99.199.143.168) ()
14:59:38 st8less joins (~st8less@inet-167-224-197-181.isp.ozarksgo.net)
14:59:51 × iam quits (511495c8@200-149-20-81.sta.estpak.ee) (Quit: Connection closed)
15:00:16 Ailrk joins (~Ailrk@99.199.143.168)
15:00:42 × Ailrk quits (~Ailrk@99.199.143.168) (Client Quit)
15:01:20 dolio joins (~dolio@haskell/developer/dolio)
15:01:33 Ailrk joins (~Ailrk@99.199.143.168)
15:01:57 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
15:03:02 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Ping timeout: 264 seconds)
15:03:30 <swarmcollective> dminuoso, thank you for the reminder. I ended up with `data StateChange = Original SomeState | Modified SomeState`
15:06:16 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1)
15:06:37 ixaxaar joins (~ixaxaar@49.207.197.94)
15:08:01 cfricke joins (~cfricke@unaffiliated/cfricke)
15:09:04 bitmapper joins (uid464869@gateway/web/irccloud.com/x-emuwabyciomfikoa)
15:10:56 viluon joins (uid453725@gateway/web/irccloud.com/x-wptflvzisznxlukx)
15:11:42 <swarmcollective> iam, I hope to introduce database interaction in the next month or so. In the past, I've used MySql with other languages due to familiarity from work projects. Do you have a recommendation for NoSql with Haskell?
15:11:52 × ephemera_ quits (~E@122.34.1.187) (Quit: ephemera_)
15:12:17 Deide joins (~Deide@217.155.19.23)
15:12:21 <merijn> "don't"? :p
15:12:33 <merijn> Actually, that extends to "nosql" in any language :p
15:12:43 × aforemny quits (~aforemny@static.248.158.34.188.clients.your-server.de) (Quit: ZNC 1.8.2 - https://znc.in)
15:12:44 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
15:12:57 <swarmcollective> :D
15:12:59 <merijn> With the possible exception of key-value stores like BerkeleyDB
15:13:10 Jd007 joins (~Jd007@162.156.11.151)
15:13:21 <kuribas> best nosql = storing JSON in a RDBMS
15:13:49 <swarmcollective> I like the realtime nature of Firebase; but saw that postgres has a similar capability... so, that might be a good solution.
15:14:01 <maerwald> store them files
15:14:46 <maerwald> you can webscale it if you use containers
15:15:13 <merijn> swarmcollective: Here, I'll give you a 2 stage flowchart for deciding databases: "Do you many concurrent writers and/or need to access the database from multiple service? Yes -> use postgres, No -> use SQLite"
15:15:16 ephemera_ joins (~E@122.34.1.187)
15:16:45 <merijn> Those two databases cover roughly 90% of all usecases :p
15:17:37 <swarmcollective> If only I worked for a company with a similar philosphy (i.e. not tied to Oracle). :D
15:17:48 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
15:17:54 aforemny joins (~aforemny@static.248.158.34.188.clients.your-server.de)
15:18:06 × aforemny quits (~aforemny@static.248.158.34.188.clients.your-server.de) (Client Quit)
15:18:38 usr25 joins (~usr25@unaffiliated/usr25)
15:18:56 aforemny joins (~aforemny@static.248.158.34.188.clients.your-server.de)
15:19:56 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
15:20:02 × aforemny quits (~aforemny@static.248.158.34.188.clients.your-server.de) (Client Quit)
15:20:15 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1)
15:20:37 × Noldorin quits (~noldorin@unaffiliated/noldorin) (Quit: Textual IRC Client: www.textualapp.com)
15:21:11 aforemny joins (~aforemny@static.248.158.34.188.clients.your-server.de)
15:23:33 hexfive joins (~hexfive@50.35.83.177)
15:26:13 mmfood joins (~mmfood@194.103.157.95)
15:28:25 × idhugo quits (~idhugo@80-62-117-86-mobile.dk.customer.tdc.net) (Ping timeout: 240 seconds)
15:28:36 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
15:30:33 × mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew)
15:30:34 × frozenErebus quits (~frozenEre@94.128.219.166) (Quit: leaving)
15:30:55 frozenErebus joins (~frozenEre@94.128.219.166)
15:32:25 × darjeeling_ quits (~darjeelin@122.245.120.7) (Ping timeout: 240 seconds)
15:35:13 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
15:39:07 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
15:39:17 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
15:41:40 × usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving)
15:46:31 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
15:50:43 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 272 seconds)
15:51:06 carlomagno joins (~cararell@148.87.23.10)
15:51:53 lambda joins (~xiretza@mail.xiretza.xyz)
15:53:16 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
15:58:42 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
15:59:17 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
15:59:49 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Remote host closed the connection)
15:59:57 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
16:03:24 dragestil_ is now known as dragestil
16:06:16 × __minoru__shirae quits (~shiraeesh@109.166.58.243) (Quit: Konversation terminated!)
16:06:36 __minoru__shirae joins (~shiraeesh@109.166.58.243)
16:08:23 × kritzefitz quits (~kritzefit@2003:5b:203b:200::10:49) (Remote host closed the connection)
16:10:38 ystael joins (~ystael@209.6.50.55)
16:11:23 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Remote host closed the connection)
16:11:57 darjeeling_ joins (~darjeelin@122.245.120.7)
16:13:48 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
16:14:04 × Ailrk quits (~Ailrk@99.199.143.168) (Quit: WeeChat 3.0)
16:14:11 <fresheyeball> edwardk: so I finished the church encoding of my library
16:14:18 <fresheyeball> the the performance is roughly exactly the same
16:14:23 <fresheyeball> which is disappointing
16:14:29 <dolio> Heh.
16:14:33 <fresheyeball> but I also suspect that perhaps I didn't do it quite right
16:14:51 × kuribas quits (~user@ptr-25vy0i8nkz1t5x5ue56.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
16:15:09 <fresheyeball> https://gitlab.com/fresheyeball/Shpadoinkle/-/blob/church/core/Shpadoinkle/Core.hs#L91
16:15:26 Ailrk joins (~Ailrk@99.199.143.168)
16:15:30 <fresheyeball> inorder to compile one of my functions, I had to make this `[Html m a]` instead of `[r]` which was suggested
16:15:38 <fresheyeball> I also wonder if Scott encoding might help here
16:15:43 <fresheyeball> or making some things strict
16:15:46 <Franciman> fresheyeball, what were you expecting after the church encoding? Why did you try it?
16:15:55 <dolio> Your type there is the Scott encoding.
16:16:04 <fresheyeball> dolio: ok then
16:16:09 <fresheyeball> well lame
16:16:21 <fresheyeball> Franciman: my UI library, while pretty fast, could be even faster
16:16:49 <fresheyeball> and some benchmarking and research shows the the `interpret` function eats a bunch of time
16:17:03 <dolio> fresheyeball: Replacing the `HTML m a` with `r` would be the Church encoding.
16:17:05 <fresheyeball> and I think that is because of the cost of the intermeidate data structure that was the inital encoding for HTml
16:17:18 <fresheyeball> sorry for my spelling
16:17:37 <fresheyeball> dolio: got it, well that was a happy accident, I couldn't get the actual church encoding to work, so I ended up with the better one
16:17:59 <fresheyeball> Franciman: my hope was the moving to a function based encoding, I can eleminate that data structure, and get a boost
16:19:52 <dolio> fresheyeball: Scott encoding might would probably not give any advantages over data, though. It is essentially the same implementation strategy as data, just represented with functions.
16:20:22 <fresheyeball> dolio: what would you recommend?
16:20:49 <fresheyeball> https://ifl2014.github.io/submissions/ifl2014_submission_13.pdf
16:20:53 <fresheyeball> I found this paper
16:21:05 <fresheyeball> which made me think scott encoding would be faster than church
16:21:10 <fresheyeball> but I don't really understand it much yet
16:21:14 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
16:21:21 <dolio> Well, if you could figure out the actual Church encoding, it might be better. But it depends on what operations are common.
16:21:48 × Ailrk quits (~Ailrk@99.199.143.168) (Quit: WeeChat 3.0)
16:22:03 <fresheyeball> why might it be better?
16:22:06 jpds joins (~jpds@gateway/tor-sasl/jpds)
16:22:07 <fresheyeball> I would like to understand more
16:24:05 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Remote host closed the connection)
16:24:38 × Yumasi quits (~guillaume@2a01:e34:ec55:290:f704:1292:fe66:8485) (Ping timeout: 264 seconds)
16:24:39 Ailrk joins (63c78fa8@99.199.143.168)
16:24:40 <fresheyeball> one thing I will say regardless here. I aestheticly liked the Scott encoding over the data type
16:24:40 <Franciman> thanks fresheyeball
16:24:45 <fresheyeball> it had a nice effect on the code
16:24:54 slack1256 joins (~slack1256@45.4.2.52)
16:25:13 Ailrk1 joins (~Ailrk@99.199.143.168)
16:25:51 Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck)
16:26:29 × Ailrk quits (63c78fa8@99.199.143.168) (Client Quit)
16:27:16 <dolio> fresheyeball: So, I guess here is the a way to think about it. The difference with Church encoding is that you have a single 'handler' for each constructor that is used uniformly throughout the tree. For Scott/data, you peel off one level, handle it, and then you can do anything for the rest of the tree...
16:28:04 <dolio> So, to do something like map, you need to rebuild the tree for Scott/data with the function applied at every level.
16:28:34 <fresheyeball> oh hmm
16:28:44 <fresheyeball> ok yeah, I could see Church being faster than Scott then
16:28:52 <fresheyeball> but I need to get rid of mapPropsRecursive
16:28:55 <dolio> For Church, you can ideally just apply an adjustment to the 'handler' for the relevant constructors, and then it will get used uniformly automatically, because that's how Church encoding works.
16:29:03 <fresheyeball> because I don't think that is even possible to write in Church
16:29:25 <fresheyeball> in practice map operations are all that should be done
16:29:35 <fresheyeball> except for once with mapPropsRecursive at the end
16:29:55 <dolio> The uniformity is bad for doing something at just one spot, but it's good if you want to adjust the whole structure in the same way.
16:30:07 <fresheyeball> right I see
16:31:15 Ailrk joins (63c78fa8@99.199.143.168)
16:31:51 × Ailrk quits (63c78fa8@99.199.143.168) (Client Quit)
16:33:13 × pera quits (~pera@unaffiliated/pera) (Ping timeout: 265 seconds)
16:33:45 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
16:34:16 <dolio> fresheyeball: It can also be worth having both, because they are good at different things. If you can tell when one operation or another is going to be more common, you can build the Church encoding, do efficient operations on it, then turn back into data for operations it's efficient on.
16:34:44 <fresheyeball> dolio: switching around is costly no?
16:35:18 frozenErebus joins (~frozenEre@94.128.219.166)
16:35:38 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
16:36:21 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
16:36:41 <dolio> It's not free. But if you do enough maps/etc. on the data, it might pay off to switch to Church, do the maps, then switch back. Because mapping the data type incurs some of the cost of the translation.
16:36:55 <fresheyeball> it's all maps all the way down
16:37:03 <fresheyeball> there is only one call that is not map, but it's expensive
16:37:20 <fresheyeball> I also think I can eliminate that call by doing it incrmentally rather than recurisively at the end
16:38:53 <fresheyeball> eek
16:38:54 × hexo quits (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
16:38:54 × srk quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
16:39:02 <fresheyeball> ok I remove that call and moved to church
16:39:06 <fresheyeball> but hoist won't compile
16:39:09 hexo joins (~hexo@gateway/tor-sasl/hexo)
16:39:11 srk joins (~sorki@gateway/tor-sasl/sorki)
16:39:22 <fresheyeball> https://gitlab.com/fresheyeball/Shpadoinkle/-/blob/church/core/Shpadoinkle/Core.hs#L158
16:39:33 <fresheyeball> dolio: do you think I can satisfy this type with the church encoding?
16:39:37 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
16:40:46 <dminuoso> dolio: Did we have the discussion wrt to (Affine)Traversals?
16:41:04 <dolio> Probably. I'm not really clear what `m` is in your stuff. It isn't really used in HTML, right?
16:41:08 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
16:41:08 <dolio> dminuoso: Possibly.
16:41:23 <fresheyeball> dolio: it's used in the Prop type which is used in the Html type
16:41:42 <fresheyeball> I have not yet chruch encoded prop, I didn't want to go through the effort unless I see some benefit first
16:42:12 benjamingr__ joins (uid23465@gateway/web/irccloud.com/x-xgcckaxpiczvgpzv)
16:43:12 idhugo joins (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net)
16:43:43 <dolio> fresheyeball: I think it will look essentially the same; there is just no recursive call to `hoistHtml`.
16:44:22 × boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed)
16:45:21 <dminuoso> dolio: I believe you argued, that they were useless because there are no operations that needed affine traversals. What about `preview`?
16:46:09 boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
16:46:44 <dminuoso> The thing of firstOf/headOf (operating on an arbitrary Fold) is that they do work on an arbitrary fold. That means, you might not realize that your fold targets multiple values (where your business logic would demand some sort of proper fold)
16:47:15 <dminuoso> With `AffineFold/preview` its guaranteed that I'm not blindly ignoring other targets, since being affine guarantees there's only at most one value
16:47:56 <dminuoso> Plus, if I give you an AffineFold, knowing apriori how many targets it has is useful communication in code
16:47:58 <fresheyeball> dolio: that worked, and it's very clear why that would be faster
16:48:08 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:48:38 <fresheyeball> dolio: I have function called `h` in there, and I am not sure what to do with that one
16:48:51 <fresheyeball> I think with church it's an escaped variable
16:49:10 <fresheyeball> h t ps cs = Html $ \n _ _ -> n t ps cs
16:49:51 <fresheyeball> if cs :: forall r. [r]
16:49:54 <dminuoso> (And conversely for affine traversals you have `matching`, and similarly the type communication that it targets at most one element)
16:49:55 <fresheyeball> then I don't see how to do this
16:50:20 <dminuoso> I'm genuinely curious on your position, why you think they are useless.
16:52:16 <dolio> dminuoso: I don't really recall the context. But if I was arguing against it, my first impression is that your examples are, "I want to check things for questionable benefit," over-eagerness, not example where something can only be imlemented for an affine traversal, not an arbitrary traversal.
16:54:00 <dminuoso> Fair enough
16:54:44 <dolio> I.E. I would question whether classifying things to that degree actually prevents meaningful mistakes in proportion to the cost of doing all the classification.
16:54:53 <dminuoso> dolio: Mmm, no I just realized it was dibblego.
16:55:03 <dminuoso> My apologies.
16:55:11 × boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed)
16:55:47 × carlomagno quits (~cararell@148.87.23.10) (Ping timeout: 256 seconds)
16:56:10 × Boomerang quits (~Boomerang@2a05:f6c7:2179:0:e843:d0fd:9f46:d71a) (Quit: Leaving)
16:56:57 <dolio> fresheyeball: Where is h? It's not in hoistHtml.
16:57:14 <fresheyeball> https://gitlab.com/fresheyeball/Shpadoinkle/-/blob/church/core/Shpadoinkle/Core.hs#L315
16:57:44 <dolio> Oh, that's one of the constructors.
16:57:49 <fresheyeball> dolio: yeah
16:58:26 boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
16:59:14 × teej quits (uid154177@gateway/web/irccloud.com/x-vcedsdnwagtwbuul) (Quit: Connection closed for inactivity)
17:01:06 <dolio> h t ps cs = HTML $ \a b c -> a t ps (map (\x -> x a b c) cs)
17:01:50 <dolio> Maybe that requires unwrapping a newtype.
17:02:14 <fresheyeball> that didn't quite work
17:02:28 <fresheyeball> • Couldn't match type ‘Html m a’
17:02:29 <fresheyeball> with ‘(Text -> [(Text, Prop m a)] -> [r] -> r)
17:02:31 <fresheyeball> -> (JSM RawNode -> r) -> (Text -> r) -> r’
17:02:33 <fresheyeball> Expected type: [(Text -> [(Text, Prop m a)] -> [r] -> r)
17:02:35 <fresheyeball> -> (JSM RawNode -> r) -> (Text -> r) -> r]
17:02:35 × andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
17:02:35 × jb55 quits (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
17:02:37 <fresheyeball> Actual type: [Html m a]
17:02:39 <fresheyeball> • In the second argument of ‘map’, namely ‘cs’
17:02:41 <fresheyeball> only a wee bit spam
17:02:49 <dolio> Yeah, I forgot to unwrap.
17:03:07 jb55 joins (~jb55@gateway/tor-sasl/jb55)
17:03:10 <fresheyeball> I don't see where
17:03:18 <dolio> `unHtml x a b c`
17:03:27 andreas303 joins (~andreas@gateway/tor-sasl/andreas303)
17:03:49 <fresheyeball> ah I see now
17:03:52 <fresheyeball> yeah that worked!
17:04:38 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
17:05:12 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
17:06:36 <dolio> That's where you can see the uniformity, too. It takes some continuations and passes them to all the recursive occurrences.
17:09:21 EyalSK joins (~EyalSK@2a10:8003:382:0:acbf:2cc1:3ea5:d21e)
17:09:45 × EyalSK quits (~EyalSK@2a10:8003:382:0:acbf:2cc1:3ea5:d21e) (Remote host closed the connection)
17:12:19 × jb55 quits (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
17:12:40 jb55 joins (~jb55@gateway/tor-sasl/jb55)
17:13:14 × borne quits (~fritjof@200116b864444400d8bba186ea6b909e.dip.versatel-1u1.de) (Ping timeout: 264 seconds)
17:13:15 geekosaur joins (82650c7a@130.101.12.122)
17:14:12 <fresheyeball> dolio: so I have some lenses in here too
17:14:25 <fresheyeball> they get called rarely, but I assume they would be faster in the Scott encoding
17:14:30 <fresheyeball> do you share this assumption?
17:17:45 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
17:18:10 DTZUZU__ is now known as DTZUZU
17:19:39 howdoi joins (uid224@gateway/web/irccloud.com/x-xlbatpgsylnmdmym)
17:20:43 ContessaFortuna joins (88385f6e@136.56.95.110)
17:21:04 <ContessaFortuna> Hi all, looking for a more concise way to use helper functions/pattern matching
17:21:20 <dolio> fresheyeball: I think you probably don't want to use lenses on the Church encoding.
17:22:01 <ContessaFortuna> I have an example program here https://repl.it/@ContessaFortuna/Testing#main.hs and I don't know how to make it more concise, but I know it can be done
17:22:52 × Ailrk1 quits (~Ailrk@99.199.143.168) (Quit: WeeChat 3.0)
17:23:15 Ailrk joins (~Ailrk@99.199.143.168)
17:23:16 <ContessaFortuna> Just looking for advice on how to pattern match in a where statement to avoid using a simple helper function, or another way to condense it
17:24:11 × rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
17:24:29 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
17:24:32 jamm_ joins (~jamm@unaffiliated/jamm)
17:25:49 rj joins (~x@gateway/tor-sasl/rj)
17:26:47 <dminuoso> ContessaFortuna: What are you pattern matching on?
17:27:12 <dminuoso> Oh, my irc client was a bit weird. I see the link now as I wrote something
17:27:32 × lazyshrk quits (~lazyshrk@128.199.58.13) (Quit: ZNC 1.8.2 - https://znc.in)
17:28:14 lazyshrk joins (~lazyshrk@128.199.58.13)
17:29:04 <swarmcollective> :t maybe
17:29:06 <lambdabot> b -> (a -> b) -> Maybe a -> b
17:29:51 <dminuoso> ContessaFortuna: Place the return result of cumulus into Maybe, instead
17:29:57 <dminuoso> Err of fnlnh.
17:30:35 carlomagno joins (~cararell@148.87.23.13)
17:31:07 <dminuoso> ContessaFortuna: Also, use takeWhile instead of elemIndex+take+drop
17:31:18 <dminuoso> or better yet, `span`
17:31:21 <dminuoso> % :t span
17:31:21 <yahb> dminuoso: forall {a}. (a -> Bool) -> [a] -> ([a], [a])
17:31:24 <swarmcollective> ContessaFortuna, I believe your initialsh might fail when ("", "") is returned
17:32:20 <ContessaFortuna> Thanks dminuoso & swarmcollective
17:32:47 <dminuoso> % span (/= ' ') "Contessa Fortuna" -- ContessaFortuna
17:32:47 × rajivr quits (uid269651@gateway/web/irccloud.com/x-ykaotdmdonbhsuvt) (Quit: Connection closed for inactivity)
17:32:47 <yahb> dminuoso: ("Contessa"," Fortuna")
17:33:53 <swarmcollective> You could handle that by adding: initialsh ([], []) = "?. ?." <-- (or some other sane response here)
17:34:21 × Ailrk quits (~Ailrk@99.199.143.168) (Quit: WeeChat 3.0)
17:34:39 <ski> (or handling the `Just' and `Nothing', directly in `initials' or `initialsh')
17:35:10 <ContessaFortuna> I was asking how to do that ski, how do I convert the pattern matching for Just/Nothing to being handled in the function itself?
17:35:19 Ailrk joins (~Ailrk@99.199.143.168)
17:35:21 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
17:35:24 <fresheyeball> dolio: all I really need is `injectProps` and which I think can be done with the Church encoding
17:35:33 <ski> ContessaFortuna : either use `case'-
17:35:39 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
17:35:43 <ContessaFortuna> thanks
17:35:47 <ski> ContessaFortuna : either use `case'-`of', or use a helper function (possibly defined inside a `where')
17:35:51 × roconnor quits (~roconnor@host-104-157-194-235.dyn.295.ca) (Ping timeout: 272 seconds)
17:35:53 × Ailrk quits (~Ailrk@99.199.143.168) (Client Quit)
17:36:45 Ailrk joins (~Ailrk@99.199.143.168)
17:37:00 <dolio> fresheyeball: Is that only modifying the top level?
17:37:16 pera joins (~pera@unaffiliated/pera)
17:37:34 <ski> ContessaFortuna : would you like to keep `fnln' (but not necessarily `fnlnh' and `initialsh' .. i figure these are "helpers") ?
17:38:06 × zebrag quits (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
17:38:26 zebrag joins (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr)
17:38:41 <ContessaFortuna> I think I got it ski, I'm just keeping fnln and initials by using case-of
17:38:50 <ski> i would probably suggest changing `fnln' to having type `String -> Maybe (String,String)', and leave deciding how to handle the no-space case to its caller
17:39:35 <ski> (since your `("","")' just seems like a "filler", to make it accept your code, rather than actually desired functionality)
17:39:46 <fresheyeball> dolio: yeah I got it already
17:39:49 <fresheyeball> that one was easy
17:39:55 <fresheyeball> last one here is `mpaChildren`
17:40:11 <fresheyeball> which is giving me the same challenge as before with `r != Html m a`
17:40:18 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
17:41:10 <dolio> I think those are both bad operations on the Church encoding.
17:41:44 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Ping timeout: 240 seconds)
17:41:58 <ski> ContessaFortuna : you know how to use `where', right ?
17:42:27 <ContessaFortuna> Yep ski, I think I got it from here
17:42:37 ski nods
17:42:47 <ContessaFortuna> thx
17:43:04 <fresheyeball> well apprently injectProps has one call
17:43:17 <fresheyeball> and mapChildren is unused entirely, so I am deleting it along with the lenses
17:43:48 <NieDzejkob> is it possible to have the (v @ Foo x) syntax work when TypeApplications are enabled?
17:43:55 Wuzzy joins (~Wuzzy@p5b0df671.dip0.t-ipconnect.de)
17:44:45 <fresheyeball> NieDzejkob: what is x? a type? or a term?
17:45:25 <NieDzejkob> x is a term, (v @ Foo x) is a normal pattern that parses properly only if TypeApplications is disabled
17:45:31 × boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed)
17:45:54 <geekosaur> drop the spaces around the @/as
17:46:05 × chele quits (~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
17:46:31 <NieDzejkob> O_o ok
17:50:36 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
17:54:53 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
17:57:48 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
17:59:40 <fresheyeball> dolio: https://gitlab.com/fresheyeball/Shpadoinkle/-/blob/church/backends/pardiff/Shpadoinkle/Backend/ParDiff.hs#L413
17:59:55 <fresheyeball> I am struggling with this one, worked fine with the scott encoding
18:00:08 <fresheyeball> but I don't see how to handle `cs` now that it's `[r]`
18:00:16 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
18:02:11 <dolio> Instead of traverse it's just sequence or something.
18:03:25 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 240 seconds)
18:05:46 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 260 seconds)
18:06:43 <monochrom> Haskell is the finest whitespace-sensitive language >:)
18:14:29 × mmfood quits (~mmfood@194.103.157.95) (Quit: Leaving)
18:14:33 boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
18:16:13 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
18:16:44 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
18:17:26 × zebrag quits (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
18:17:45 zebrag joins (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr)
18:18:48 <merijn> monochrom: You're gonna go and diss Edwin Brady like that?
18:18:56 <merijn> monochrom: Shame on you
18:19:12 <monochrom> Who is Edwin Brady?
18:19:14 <dolio> Is Idris whitespace sensitive?
18:19:22 <merijn> monochrom: The guy behind Idris
18:19:35 <monochrom> Idris is the finest dependently typed language.
18:19:37 <merijn> But I was of course refering to his *real* contribution to programming languages
18:19:45 <merijn> Not this Idris pish-posh
18:19:51 <merijn> https://en.wikipedia.org/wiki/Whitespace_(programming_language)
18:20:04 <dolio> Wait, he's behind that?
18:20:09 <merijn> dolio: Yes
18:20:12 <merijn> dolio: Isn't it amazing
18:20:23 <monochrom> haha OK
18:21:06 <monochrom> But what is Whitespace's type system?
18:21:19 conal joins (~conal@64.71.133.70)
18:21:29 <Ferdirand> wait, that language is really disappointing
18:21:46 <Ferdirand> it uses an ad-hoc encoding of a dozen primitives into tabs and spaces ?
18:21:52 <dminuoso> Ferdirand: Yeah.
18:21:58 <dminuoso> It's not really creative
18:22:08 <monochrom> See? :)
18:22:10 <dminuoso> Malbolge however, that's creative.
18:22:10 <geekosaur> sounds like what happens when you get a PL guy drunk
18:22:10 <Ferdirand> why not map tabs to S and spaces to K ?
18:22:19 <merijn> dminuoso: It's the pre-eminent language for spies!
18:22:29 <merijn> You can print your source code without getting caught!
18:22:41 <Ferdirand> and newline to function application
18:23:08 <dolio> SK needs parentheses.
18:23:23 × rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
18:23:24 <Ferdirand> even when you use a prefix function application operator?
18:23:39 <Ferdirand> or postfix maybe, would look better with the newlines at the end
18:23:59 <dolio> In that case it might not.
18:24:00 <Ferdirand> and then you need to parse it right-to-left also probably
18:24:00 <monochrom> prefix or postfix works when and only when all arities are known.
18:24:13 <Ferdirand> arity is always 1, no?
18:24:53 <monochrom> That's dogma.
18:24:59 <dolio> Application arity is 2.
18:25:15 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
18:25:17 <Ferdirand> fair point
18:25:21 <Ferdirand> but it still works, right?
18:25:30 <monochrom> Write "(S S) S" in prefix. Write "S (S S)" in prefix.
18:25:39 <Ferdirand> it would just be unlambda with withespace lexemes
18:25:52 <Ferdirand> *whitespace
18:26:26 rj joins (~x@gateway/tor-sasl/rj)
18:26:29 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Remote host closed the connection)
18:26:30 <Ferdirand> monochrom: eeeh... ``SSS vs `S`SS ?
18:27:04 <monochrom> Yes if you have a symbol for application.
18:27:15 <monochrom> But SK calculus doesn't have a symbol for application.
18:27:23 <Ferdirand> 19:22 < Ferdirand> and newline to function application
18:27:27 <monochrom> There is a reason it is not called SK` calculus.
18:27:43 <monochrom> and application has arity 2, as dolio said.
18:27:52 <monochrom> It is amazing how people move goalposts.
18:28:49 <dolio> Also the combinators are arity 0. :)
18:28:55 <jonn> Dear all, I'm searching for the simplest way to add logStdoutDev to Warp middleware while using Servant. Does anyone have a working example or a suggestion at what set of functions to look to replace `run`?
18:28:57 <monochrom> hee hee
18:29:08 <Ferdirand> moving goalposts
18:29:15 <Ferdirand> ok, whatever
18:29:31 <monochrom> Anyway see how much "arity is always 1" is an anal pedantic dogma that gets no one nowhere.
18:30:02 × giogiogio quits (5e89ad7c@94.137.173.124) (Ping timeout: 240 seconds)
18:30:48 <jonn> I have a very standard and simple way to serve the API: https://git.sr.ht/~jonn/do-auth/tree/master/item/src/DoAuth/Server.hs#L71 and I'd like to avoid any monad-hoisting or other "advanced" approaches...
18:32:28 oish joins (~charlie@228.25.169.217.in-addr.arpa)
18:32:33 × bo__ quits (~bo@178.150.122.153) (Ping timeout: 246 seconds)
18:33:18 bo__ joins (~bo@178.150.122.153)
18:33:20 × oish quits (~charlie@228.25.169.217.in-addr.arpa) (Client Quit)
18:34:37 <monochrom> Where is "monad hoisting" in that code?
18:41:22 <jonn> monochrom: I said that I want to avoid it. So far, I'm avoiding it. In my current WIP branch I have server implemented and it works in Firefox, but not when I use Servant Client. Now I'm trying to debug and I don't know what is the simplest way to add logging for dev environments, hence the question.
18:45:56 <jonn> Yeah, as I said, I even know which function I want to plug into warp middleware to make simplest logging work (logStdoutDev), I just don't know how to work with warp middlewares.
18:46:36 frozenErebus joins (~frozenEre@94.128.219.166)
18:47:35 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
18:48:49 <ski> @hoogle Bool -> i a -> i (Maybe a)
18:48:50 <lambdabot> Control.Monad.Extra whenMaybe :: Applicative m => Bool -> m a -> m (Maybe a)
18:48:50 <lambdabot> Extra whenMaybe :: Applicative m => Bool -> m a -> m (Maybe a)
18:49:32 leat joins (~leat@128-71-254-160.broadband.corbina.ru)
18:49:41 <fresheyeball> dolio++
18:49:45 <fresheyeball> dolio:thank you so much
18:49:53 <swarmcollective> jonn, you can use a record to store a list of messages generated during processing, then print from the server? This is not likely a good solution; its the best I got. SMH
18:49:56 <fresheyeball> with your nudges I was able to get the whole project compiling again with the church encoding
18:50:08 <swarmcollective> @karma+ dolio
18:50:08 <lambdabot> dolio's karma raised to 32.
18:50:20 × mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Remote host closed the connection)
18:50:37 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
18:51:20 <jonn> swarmcollective: I was thinking about something like Debug.trace'ing from handler implementations. Do you have the same idea in mind?
18:52:04 <dolio> fresheyeball: Is it actually any faster?
18:52:05 mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh)
18:54:01 × boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed)
18:54:50 <fresheyeball> dolio: yes! it is!
18:54:55 <fresheyeball> I just tested it
18:54:56 <dolio> Okay, good.
18:55:02 <fresheyeball> 132ms droped to 98ms
18:55:11 <fresheyeball> and I haven't encoded the props type yet
18:55:22 boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
18:55:24 <fresheyeball> taking a few more samples to be sure
18:56:01 giogiogio joins (5e89ad7c@94.137.173.124)
18:56:22 × geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
18:56:50 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
18:56:58 cuz joins (~user@38.140.58.234)
18:56:58 <fresheyeball> further samples are event beter!
18:57:01 <fresheyeball> betttter!
18:57:03 <fresheyeball> WOW!
18:57:37 × rotty quits (rotty@ghost.xx.vu) (Ping timeout: 256 seconds)
18:57:53 <swarmcollective> jonn, I've not needed to do much tracing / logging. When I haved, I've used MonadLogging as it was already built into the codebase. I assume you want to avoid MonadLogging. Sorry that I'm not much help.
18:58:48 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
18:59:22 <jonn> Right, thanks anyway, maybe someone will shed some light about enabling Wai-level logging, I'll use Debug.trace over requests for the time being...
18:59:32 <maralorn> Is there a difference between the flags I can pass to "cabal" vs. "./Setup"?
18:59:33 × boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Client Quit)
18:59:42 hiroaki joins (~hiroaki@ip4d166d67.dynamic.kabel-deutschland.de)
18:59:43 boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
18:59:56 <maralorn> More specifically I am trying to pass an "allow-newer" to my "./Setup configure"
18:59:59 mirrorbird joins (~psutcliff@2a00:801:44d:603d:d116:d5a1:4a2f:a08f)
19:00:51 <maralorn> But while "cabal configure --help" talks about "allow-newer"
19:01:05 <maralorn> "./Setup" doesn‘t.
19:01:08 <monochrom> allow-newer applies to dependency chasing. dependency chasing is entirely absent in Setup.
19:02:10 × dhouthoo quits (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0)
19:02:11 <maralorn> monochrom: But it fails with a bound error and I want to tell it, that it's okay.
19:02:17 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
19:02:26 L1Cafe joins (~L1Cafe@kydara.com)
19:02:28 × xelxebar_ quits (~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection)
19:02:46 <monochrom> Edit the *.cabal file.
19:02:46 jpds joins (~jpds@gateway/tor-sasl/jpds)
19:02:47 xelxebar joins (~xelxebar@gateway/tor-sasl/xelxebar)
19:03:24 <maralorn> monochrom: Okay, I accept, that that would be the "best" solution. Is there another one?
19:03:38 × berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
19:03:39 berberman joins (~berberman@unaffiliated/berberman)
19:03:55 <maralorn> (I am in a nix build so editing the .cabal file means writing a patch.)
19:04:07 <monochrom> You will need to know that Setup is for, for example, Ubuntu maintainers who make deb packages. Setup is going to miss all features that make no sense to Ubuntu maintainers.
19:04:37 <merijn> maralorn: Setup.hs doesn't install dependencies
19:04:55 <merijn> (at least, I don't think it does?)
19:04:59 × idhugo quits (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Ping timeout: 265 seconds)
19:04:59 × L1Cafe quits (~L1Cafe@kydara.com) (Quit: The Lounge - https://thelounge.chat)
19:05:03 × mirrorbird quits (~psutcliff@2a00:801:44d:603d:d116:d5a1:4a2f:a08f) (Ping timeout: 272 seconds)
19:05:04 <merijn> So how would loosening bounds even make sense
19:05:22 L1Cafe joins (~L1Cafe@kydara.com)
19:05:38 remby joins (~rcg@bras-base-london1483w-grc-11-76-69-70-199.dsl.bell.ca)
19:05:43 <maralorn> merijn: I don‘t want it to install dependencies. I have already installed and provided the dependencies. I just want it to accept that the dependencies provided are fine.
19:05:46 <jonn> BTW, I figured out the bug I had in usage of Servant.Client! I configured it with `baseUrlPath` as "/".
19:05:55 <jonn> Whereas correct is "".
19:06:10 <merijn> maralorn: https://cabal.readthedocs.io/en/latest/setup-commands.html
19:08:08 <exarkun> "path as string" strikes again
19:08:11 <maralorn> Huh, there is allow-newer in that list of options …
19:08:13 <swarmcollective> jonn, you are not alone; I've been there done that. ;)
19:09:10 <jonn> exarkun: oh, my twitter feed is 99% butthurt about path as string whenever I work lately.
19:10:15 geekosaur joins (82650c7a@130.101.12.122)
19:10:32 <exarkun> :)
19:11:21 <jonn> I think around 2015 in Haskellcast one of the guests was saying that straightening up the Path types, but it's not easy. I suppose it's still not easy. But I think I'll make a blog post or something untangling all the paths and showing where to get safer alternatives and how to convert to/from.
19:13:10 <jonn> The fact that `system-filepath` package (which is the "good" x-platform path types and operators library) exports modules 'Filesystem.Path', whereas `filepath` exports modules `System.Filepath`.
19:13:36 <giogiogio> Cale: hi
19:14:05 <jonn> No matter how many years one writes in Haskell, unless the person is an author or a contributor to said libs, one can and will get the wrong `FilePath` type.
19:14:15 <jonn> </rant>
19:14:36 × hexo quits (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
19:14:36 × srk quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
19:14:50 srk joins (~sorki@gateway/tor-sasl/sorki)
19:14:55 hexo joins (~hexo@gateway/tor-sasl/hexo)
19:17:54 <maralorn> merijn++ Thanks for the link. Apparently the Cabal used in this nixpkgs version is to old? I am gonna investigate.
19:18:28 <remby> is there a modern version of this url? https://www.haskell.org/bookshelf
19:18:45 <maralorn> Hm
19:18:51 <maralorn> merijn++
19:19:02 × giogiogio quits (5e89ad7c@94.137.173.124) (Ping timeout: 240 seconds)
19:20:14 <remby> I'm looking for "Haskell for Miranda Programmers" which was said to be at that url
19:20:33 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
19:20:41 <merijn> @where tutorial
19:20:41 <lambdabot> http://www.haskell.org/tutorial/
19:21:03 <merijn> remby: For people who know Miranda/(S)ML, etc. the tutorial is probably a decent starting point
19:21:59 <remby> ok :|
19:22:14 newtoeverything joins (4174230f@65-116-35-15.dia.static.qwest.net)
19:22:58 × jollygood2 quits (~bc8134e3@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
19:23:11 <newtoeverything> I am a math student with very little programming background. Is Haskell an ok language to start with?
19:23:46 <merijn> newtoeverything: Yes, no, maybe, it depends
19:24:09 rotty joins (rotty@ghost.xx.vu)
19:24:19 <newtoeverything> I found an online book called something like "learn you a hakell for good" and 'm gonna try to foolow it and see how it goes
19:24:35 giogiogio joins (5e89ad7c@94.137.173.124)
19:24:55 teej joins (uid154177@gateway/web/irccloud.com/x-zgnlyygkuwdxcyja)
19:25:05 × shailangsa quits (~shailangs@host86-185-98-28.range86-185.btcentralplus.com) (Ping timeout: 240 seconds)
19:25:32 <swarmcollective> newtoeverything, do you have a goal in mind (say 5 to 7 years from now, you want to ??? with regards to programming)?
19:25:36 × jrm quits (~jrm@freebsd/developer/jrm) (Ping timeout: 240 seconds)
19:26:05 × xwvvvvwx quits (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (Ping timeout: 240 seconds)
19:26:16 <maralorn> Oh, well. I am using Cabal 3.2 or older, but the documentation for runhaskell Setup.hs configure does only exist in the documentation of Cabal 3.4.
19:27:05 <maralorn> So now I wonder if the documentation is wrong or if --allow-newer for configure was introduced in 3.4.
19:27:09 <newtoeverything> I want to work in the crypto currency industry. Ive never been so interested in something before that I wanted to do it for a career
19:27:13 <ski> newtoeverything : LYAH lacks exercises, though. you could try
19:27:19 <ski> @where CIS194
19:27:19 <lambdabot> https://www.seas.upenn.edu/~cis194/spring13/lectures.html
19:27:44 <newtoeverything> I know this goal will take years, but I am not in a rush
19:28:01 <newtoeverything> thank you for the link!
19:28:25 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds)
19:28:25 <ski> if you're looking for a textbook, people often suggest
19:28:29 <ski> @where PIH
19:28:29 <lambdabot> "Programming in Haskell" by Graham Hutton in 2007-01-15,2016-09-01 at <http://www.cs.nott.ac.uk/~pszgmh/pih.html>
19:28:36 <maralorn> I wonder if there will be a crypto currency industry in a few years …
19:28:38 <ski> @where HPFFP
19:28:38 <lambdabot> "Haskell Programming: from first principles - Pure functional programming without fear or frustration" by Chistopher Allen (bitemyapp),Julie Moronuki at <http://haskellbook.com/>,#haskell-beginners
19:29:06 <monochrom> maralorn, do you know of "Setup configure --help"?
19:29:23 <ski> i learned from "Haskell: The Craft of Functional Programming" by Simon Thompson
19:29:37 × boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed)
19:29:39 <ski> a few more :
19:29:45 <ski> @where HTAC
19:29:45 <lambdabot> "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook>
19:29:48 <ski> @where wikibook
19:29:48 <lambdabot> http://en.wikibooks.org/wiki/Haskell
19:29:59 xwvvvvwx joins (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx)
19:30:03 <giogiogio> ski: hi
19:30:13 <monochrom> Chris Allen in a talk pointed out that we experts recommend what's trendy, not what we ourselves actually used.
19:30:14 <ski> hello
19:30:23 <maralorn> monochrom: Yes. And it doesn‘t list --allow-newer. Sadly.
19:30:28 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
19:30:32 <monochrom> So I'm going to heed his advice and recommend what I actually used, not what's trendy.
19:30:42 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
19:30:46 <giogiogio> ski: may I pm?
19:30:58 <monochrom> HPFFP happens to be one of the trendy ones, so I won't recommend that, I have never read it. >:)
19:31:14 boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
19:31:23 ski . o O ( what if the one you read happens to be one of the trendy ones ? )
19:31:23 <maralorn> I learned Haskell by reading every Blogpost on haskell.weekly for three years.^^
19:31:34 <monochrom> I actually used The Gentle Introduction and it helped me great deal. I recommend it. There! Chris Allen can bite me now.
19:31:38 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 260 seconds)
19:31:44 <newtoeverything> oh my gosh thank you for all the links guys\
19:31:45 <maralorn> Ah, it’s haskellweekly.news
19:31:50 <swarmcollective> newtoeverything, just my opinion: Haskell is a good idea for you. You might also find this interesting: https://iohk.io/en/blog/posts/2021/01/25/introducing-the-new-plutus-playground/
19:32:05 <newtoeverything> i feel like i have found the haskell hidden store of knowledge
19:32:25 <giogiogio> ski: may I pm, for 1 min?
19:32:41 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
19:32:54 <maralorn> newtoeverything: Yep, I think if it weren‘t for this channel I probably would have dumped Haskell somewhere along the way.
19:33:13 <maralorn> I got a lot of knowledge out of discussions here.
19:33:13 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 265 seconds)
19:33:28 × puke quits (~vroom@217.138.252.197) (Read error: Connection reset by peer)
19:33:37 <monochrom> ski, his talk was in around 2016, I think at that time all experts' beginner days predated all trendy ones at that time.
19:34:35 <ski> ok
19:35:22 <newtoeverything> Thank you all! I'm actually at work rn so I gotta run but I have bookmarked all these links and I cant wait to begin reading them and kicking off this journey. I will return with more advanced questions!
19:35:28 <monochrom> I now also think it may be too harsh to pick on LYAH.
19:35:32 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
19:35:44 <merijn> LYAH was great...when it came out
19:35:56 × remby quits (~rcg@bras-base-london1483w-grc-11-76-69-70-199.dsl.bell.ca) (Ping timeout: 240 seconds)
19:35:56 <monochrom> A lot of people liked LYAH back then. The real audience, not just the experts.
19:36:02 <merijn> It came out very shortly before or after I started learning Haskell
19:36:02 × newtoeverything quits (4174230f@65-116-35-15.dia.static.qwest.net) (Quit: Connection closed)
19:36:11 <merijn> And there was nothing else that was accessible
19:36:13 jamm_ joins (~jamm@unaffiliated/jamm)
19:36:19 <monochrom> The bashing was basically begun by Chris Allen single-handedly.
19:36:28 <merijn> So that's what existed and therefore people remember it fondly
19:36:33 tzlil joins (~tzlil@unaffiliated/tzlil)
19:36:41 <merijn> monochrom: Naah, it got critique even before then
19:36:52 <monochrom> And he did so on the ground of observing a lot of people who used LYAH and then still couldn't do sh*t.
19:36:59 <maerwald> was lyah before cis194?
19:37:04 <merijn> maerwald: well before
19:37:15 <merijn> LYAH came out in like 2009, 2010 iirc?
19:37:36 <monochrom> What I observe is there is a selection bias of that observation. If you're sitting in #haskell, for example, you're only going to see lost people, not successful people.
19:37:48 <merijn> archive.org says 2008
19:38:05 × bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Quit: Lost terminal)
19:38:06 × zebrag quits (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
19:38:25 zebrag joins (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr)
19:38:40 <maerwald> I think it's great when you had 3 4cl of whisky (or two glasses of wine), because the pictures can still guide you
19:38:42 <merijn> https://web.archive.org/web/20081013110019/http://learnyouahaskell.com/ blast from the past
19:38:53 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Remote host closed the connection)
19:39:31 <monochrom> Oh, and there are programmer nerds who hate any visual art at all.
19:39:49 puke joins (~vroom@217.138.252.197)
19:39:52 <merijn> monochrom: It's both ways, I think lots of people who learned in 2008-2012 also have rose coloured glasses of how well they actually learned things from LYAH :p
19:40:26 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 240 seconds)
19:40:29 danvet_ joins (~danvet@212-51-149-181.fiber7.init7.net)
19:40:54 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
19:42:25 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 272 seconds)
19:43:33 × rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
19:44:59 rj joins (~x@gateway/tor-sasl/rj)
19:45:35 × cuz quits (~user@38.140.58.234) (Ping timeout: 265 seconds)
19:45:38 <dminuoso> Say I have some `g = fix $ \d -> D { a = [1,2,3]; b = length (a d) }` -- is there a version of this, where when I update the field `a`, such that `b` adapts automatically to the new `a`?
19:45:50 mizu_no_oto joins (~textual@cpe-66-66-222-11.rochester.res.rr.com)
19:45:52 <dminuoso> I feel like Im dancing around what nix calls overlays
19:45:55 remby joins (~rcg@bras-base-london1483w-grc-11-76-69-70-199.dsl.bell.ca)
19:46:30 Shailangsa_ joins (~shailangs@host86-185-58-207.range86-185.btcentralplus.com)
19:47:35 <exarkun> What's `fix`?
19:47:41 <dminuoso> % :t fix
19:47:41 <yahb> dminuoso: forall {a}. (a -> a) -> a
19:47:48 <ski> fix f = x
19:47:50 <ski> where
19:47:53 <ski> x = f x
19:48:07 <monochrom> http://www.vex.net/~trebla/haskell/fix.xhtml
19:48:15 <ski> > fix ([0,1] ++)
19:48:17 <lambdabot> [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1...
19:48:21 kritzefitz joins (~kritzefit@212.86.56.80)
19:48:45 <dminuoso> My use case is that I want to memoize expensive computations on a record, but I sometimes want to update that record - so I want the memoized computation to be invalidated that way.
19:48:53 <monochrom> tldr fix is the same as self-reference.
19:50:07 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
19:50:53 × danvet_ quits (~danvet@212-51-149-181.fiber7.init7.net) (Ping timeout: 256 seconds)
19:51:04 <monochrom> I wonder if you are going after mutable variables.
19:51:06 × xff0x quits (~xff0x@2001:1a81:5376:4800:c2c8:2482:792f:c3ad) (Ping timeout: 265 seconds)
19:51:17 contiver joins (~contiver@84-115-64-195.wifi.dynamic.surfer.at)
19:51:52 <dminuoso> monochrom: Any (safe) take on mutable variables would require a manual IORef cache with manual invalidation.
19:51:53 xff0x joins (~xff0x@2001:1a81:5376:4800:e291:4b9:510e:7433)
19:52:01 <dminuoso> Or..
19:54:22 <monochrom> Hrm, overlay eh?
19:54:30 ski . o O ( zippers,lenses,open recursion,comonads,adaptive/incremental computation )
19:54:50 heatsink joins (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9)
19:55:45 × ixaxaar quits (~ixaxaar@49.207.197.94) (Ping timeout: 240 seconds)
19:55:54 <monochrom> Maybe keep around the function (\d -> D { a = [1,2,3]; b = length (a d) }) itself, not just the resulting fixed point. Update the function.
19:55:58 cuz joins (~user@38.140.58.234)
19:56:12 tzlil joins (~tzlil@unaffiliated/tzlil)
19:57:37 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
19:57:57 <ski> but then you'd probably recompute every time you wanted to access, no ?
19:58:15 <monochrom> Because the semantics of overlay and subclassing is you have Fix F as your base class, and subclass means you extend F to G and then Fix G is your subclass.
19:58:52 <ski> `new' is `fix', yes, giving you open recursion
19:59:00 <dminuoso> What is `new`?
19:59:09 <ski> OO term
19:59:20 <ski> construct a new object from a class
19:59:27 <dminuoso> Ah, you mean some Class.new() type of thing?
19:59:31 <ski> yes
19:59:43 <ski> the "class" is the function `\this -> ..this..'
19:59:51 <monochrom> Maybe also keep around a=[1,2,3] so later when you have a'=[1,2,3,4] a' is not recomputed from scratch, it starts with a.
19:59:55 <dminuoso> That's an interesting mind model
20:00:24 × nrdmn9 quits (~nrdmn@95.129.53.118) (Ping timeout: 246 seconds)
20:00:29 <monochrom> That's the only rigorous model known to all humanity. :)
20:00:44 raym joins (~ray@45.64.220.98)
20:00:44 <ski> but once you've constructed your object, you can't update the methods (and have open recursion work) anymore
20:01:02 bergey joins (~user@107.181.19.30)
20:01:08 <ski> (you could still update `IORef's, of course ..)
20:01:09 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds)
20:01:22 <dminuoso> monochrom: Is this model used in literature? If yes, in what context?
20:01:41 <monochrom> All PLT papers that talk about subclassing.
20:01:42 <ski> iirc, Oleg mentions this somewhere on his site
20:01:45 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 240 seconds)
20:01:59 <dminuoso> Fair enough, I havent read much literature on subclassing
20:02:01 <ski> (specifically, mentioning how one can encode it, in Haskell)
20:02:09 <dminuoso> ski: Yeah, I fear that manual IORef for both `a` and `b` is indeed the simplest choice here.
20:02:44 <dminuoso> The interesting bit is, this is sort of what JIT compilers do under the hood all the time
20:03:17 <dminuoso> At least aggressive ones with speculative optimization
20:03:35 <monochrom> It is possible that Luca Cardelli thought this up first.
20:03:35 <dminuoso> Where computations get inlined under the assumption that (mutable) references dont mutate, and when they mutate the inlining gets undone
20:04:09 × __minoru__shirae quits (~shiraeesh@109.166.58.243) (Ping timeout: 264 seconds)
20:04:11 minoru_shiraeesh joins (~shiraeesh@109.166.59.19)
20:04:11 <ski> Cardelli has nice papers
20:04:18 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 260 seconds)
20:05:24 × petersen quits (~petersen@redhat/juhp) (Ping timeout: 265 seconds)
20:06:09 <ski> sometimes i've wanted to be able to add "memoized fields" to data types, in Haskell
20:07:35 × heatsink quits (~heatsink@2600:1700:bef1:5e10:d5a7:74c0:d5b8:dca9) (Remote host closed the connection)
20:07:46 petersen joins (~petersen@redhat/juhp)
20:07:48 <ski> perhaps something along the line of `data Tree a = Tip | Node a (Tree a) (Tree a) where height :: Tree a -> Int; height Tip = 0; height (Node _ l r) = 1 + max (height l) (height r)'
20:08:28 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Quit: mputz)
20:08:40 <ski> with the intent that when using `Node x t0 t1' to construct a new `Tree a', it'd memoize the height of this new node, in terms of the (memoized) heights of `t0' and `t1'
20:09:19 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
20:09:34 mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl)
20:09:34 × mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
20:09:34 mouseghost joins (~draco@wikipedia/desperek)
20:09:50 tzlil joins (~tzlil@unaffiliated/tzlil)
20:10:09 × Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 264 seconds)
20:10:23 <monochrom> That sounds like the expression problem all over again.
20:10:35 × Shailangsa_ quits (~shailangs@host86-185-58-207.range86-185.btcentralplus.com) ()
20:10:44 <ski> heh :)
20:11:26 <ski> i wasn't aiming for third-party properties, here
20:13:42 <monochrom> Hrm, you may be right to relate this to open recursion. Perhaps open recursion can solve this too.
20:14:36 <monochrom> height is a catamorphism of Tree. Totally just another algebra of the base functor.
20:14:51 cig_in_mouth joins (592de093@89.45.224.147)
20:15:33 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 264 seconds)
20:15:33 × cig_in_mouth quits (592de093@89.45.224.147) (Client Quit)
20:16:29 mirrorbird joins (~psutcliff@2a00:801:44d:603d:d116:d5a1:4a2f:a08f)
20:16:51 jalumar joins (uid392211@gateway/web/irccloud.com/x-fbybggmahjjwkaqm)
20:17:00 × mananamenos quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Ping timeout: 256 seconds)
20:17:03 <monochrom> I end up hand-embedding the field in the data structure. data Tree a = Tip Int | Node Int a (Tree a) (Tree a).
20:17:35 nrdmn9 joins (~nrdmn@95.129.53.118)
20:17:38 <monochrom> Then provide smart constructors tip = Tip 0; node x l r = Node (the correct formula) x l r
20:18:06 × Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
20:18:21 <monochrom> Because some tree functions are not catamorphisms, in fact more like anamorphisms --- building trees.
20:18:35 CrazyPython joins (~crazypyth@2600:1700:722:1a30:8de7:2840:b70b:3672)
20:18:42 <ski> i was thinking about mentioning smart constructors, above
20:19:33 cig_in_mouth joins (~textual@182.64.96.152)
20:20:00 <monochrom> But now that you bring up this wish item, it becomes very visibly annoying that "the correct formula" is just an algebra of the base functor, there ought to be a better expression than this handcoding.
20:20:01 <dolio> I think I've seen some language that had that sort of thing.
20:20:05 cig_in_mouth is now known as cig_in
20:20:18 cig_in is now known as cig_in_mouth
20:20:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
20:20:45 nicecoats joins (~nicecoats@195.181.171.239)
20:20:52 tzlil joins (~tzlil@unaffiliated/tzlil)
20:21:07 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:22:39 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
20:23:16 × nicecoats quits (~nicecoats@195.181.171.239) (Client Quit)
20:24:28 <monochrom> Hey speaking of Oleg, he likes {-# Language GADTs #-} instead of LANGUAGE :)
20:24:48 cig_in_m_ joins (cig_in_mou@gateway/vpn/mullvad/ciginmouth/x-85815230)
20:24:53 <dolio> I don't even capitalize the L.
20:25:12 <monochrom> you 31337 people
20:25:27 <dolio> Always annoys me in Agda that I still need to write OPTIONS.
20:25:34 <monochrom> haha
20:26:01 <monochrom> OK I think "language" is indeed the easiest to enter
20:26:28 <monochrom> iNtErEsTiNg
20:26:38 × cig_in_mouth quits (~textual@182.64.96.152) (Ping timeout: 256 seconds)
20:26:42 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
20:26:57 × cig_in_m_ quits (cig_in_mou@gateway/vpn/mullvad/ciginmouth/x-85815230) (Client Quit)
20:27:01 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:27:12 <ski> reminds me of how in some older languages, keywords would be in all caps
20:27:49 <monochrom> No no no. Reminds me of DOS and Windows filenames. >:)
20:28:05 <monochrom> But yeah those old languages.
20:28:16 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 240 seconds)
20:28:30 <monochrom> For a long time, I wrote "SELECT" not "select" in SQL, too.
20:28:47 <monochrom> "It's an old language, I don't want to risk it" or something.
20:30:37 <NieDzejkob> singletons breaks when I use String in my datatype. Am I missing something? $(singletons [d| data Foo = Bar String |]) -- Couldn't match type ‘Demote Char’ with ‘Char’ / Could not deduce: Demote Char ~ Char
20:30:42 tzlil joins (~tzlil@unaffiliated/tzlil)
20:30:44 × fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
20:31:02 notzmv` joins (~user@191.255.89.231)
20:31:12 <dolio> Oh yeah. I use lowercase in SQL, too.
20:31:45 × fendor quits (~fendor@77.119.130.50.wireless.dyn.drei.com) (Remote host closed the connection)
20:31:45 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
20:31:45 × mizu_no_oto quits (~textual@cpe-66-66-222-11.rochester.res.rr.com) (Quit: Computer has gone to sleep.)
20:32:18 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
20:32:19 × notzmv quits (~user@unaffiliated/zmv) (Read error: Connection reset by peer)
20:32:27 shailangsa joins (~shailangs@host86-185-58-207.range86-185.btcentralplus.com)
20:32:34 <monochrom> Hrm is it true that all language extension names start with capital letter? Because {-# lAnGuAgE patternSynonyms #-} is a "cannot parse" error, {-# lAnGuAgE Patternsynonyms #-} is just an "unsupported extension" error.
20:32:52 fendor joins (~fendor@77.119.130.50.wireless.dyn.drei.com)
20:32:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:33:06 <dolio> The extension name is exact.
20:33:21 <geekosaur> that wasn't quite the question
20:33:24 <dolio> Only pragmas can vary.
20:33:50 <monochrom> But a different error message implies a different code path.
20:34:25 <dolio> I mean, yeah, they all start with a capital letter.
20:34:26 <monochrom> It's like "p is not uppercase, I'm not even going to call it an unrecognized extension"
20:34:35 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-lcvdymuwotphajrf)
20:35:19 <NieDzejkob> I mean, aren't uppercase and lowercase identifiers disjoint lexical classes?
20:35:27 <monochrom> Ah haha I was not reading the error message completely. It does remind "each starting with a capital letter"
20:35:58 <geekosaur> one wonders what lowercase might be reserved for
20:36:16 × evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Read error: Connection reset by peer)
20:36:30 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 260 seconds)
20:36:42 <monochrom> Parameterized extensions \∩/
20:37:24 <monochrom> {-# language PolymorphismRank(2) #-} and {-# language PolymorphismRank(n) #-}
20:37:40 evanjs joins (~evanjs@075-129-098-007.res.spectrum.com)
20:38:03 jdwidari joins (~jdwidari@173.38.117.75)
20:38:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
20:38:06 × zebrag quits (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
20:38:20 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
20:38:25 zebrag joins (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr)
20:38:50 <monochrom> NieDzejkob: I don't know singletons (good riddance), but String=[Char], if that helps.
20:38:52 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:39:27 <monochrom> I also have the feeling that String is not going to be promoted to Symbol.
20:39:32 <geekosaur> which may mean the problem is that existence of type level strings does not mean existence of type level chars
20:39:35 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:40:00 <geekosaur> (I think that's supposed to be in some future ghc release)
20:40:04 ski . o O ( `{-# LANGUAGE No MonomorphismRestriction #-}' )
20:40:17 <NieDzejkob> okay, is there some other type that *can* get promoted to Symbol?
20:41:52 <monochrom> If you use the functions in GHC.TypeLits they can bridge String and Symbol.
20:42:43 <monochrom> But it's much more tailormade than an automatic [Char] <-> Symbol.
20:43:43 <monochrom> This is why I don't do dependent typing in Haskell.
20:44:05 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
20:44:26 tzlil joins (~tzlil@unaffiliated/tzlil)
20:44:26 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
20:44:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:45:14 × son0p quits (~son0p@181.58.39.182) (Ping timeout: 272 seconds)
20:45:53 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
20:46:17 sord937 joins (~sord937@gateway/tor-sasl/sord937)
20:47:21 carlomagno1 joins (~cararell@148.87.23.13)
20:47:24 cig_in_mouth joins (cig_in_mou@gateway/vpn/mullvad/ciginmouth/x-85815230)
20:47:39 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
20:48:10 × carlomagno quits (~cararell@148.87.23.13) (Ping timeout: 256 seconds)
20:50:21 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
20:50:31 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:51:51 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
20:51:56 × forgottenone quits (~forgotten@176.42.30.133) (Read error: Connection reset by peer)
20:52:13 forgottenone joins (~forgotten@176.42.30.133)
20:52:14 contiver_ joins (~contiver@84-115-65-91.wifi.dynamic.surfer.at)
20:52:49 <NieDzejkob> okay, is it even possible to create a datatype that contains something string-like and works both as a value and a type?
20:54:36 × contiver quits (~contiver@84-115-64-195.wifi.dynamic.surfer.at) (Ping timeout: 240 seconds)
20:55:09 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 264 seconds)
20:56:20 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:57:07 × bergey quits (~user@107.181.19.30) (Ping timeout: 265 seconds)
20:57:18 tzlil joins (~tzlil@unaffiliated/tzlil)
20:58:00 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:59:35 × carlomagno1 quits (~cararell@148.87.23.13) (Remote host closed the connection)
20:59:55 carlomagno joins (~cararell@148.87.23.13)
21:00:01 × contiver_ quits (~contiver@84-115-65-91.wifi.dynamic.surfer.at) (Ping timeout: 256 seconds)
21:00:33 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
21:01:09 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
21:01:44 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:02:03 notzmv` is now known as notzmv
21:02:20 × cuz quits (~user@38.140.58.234) (Ping timeout: 272 seconds)
21:02:20 × notzmv quits (~user@191.255.89.231) (Changing host)
21:02:20 notzmv joins (~user@unaffiliated/zmv)
21:02:36 × Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1)
21:03:29 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 272 seconds)
21:05:36 cuz joins (~user@38.140.58.234)
21:06:09 frozenErebus joins (~frozenEre@94.128.219.166)
21:06:13 CrazyPyt_ joins (~crazypyth@2600:1700:722:1a30:a03f:d9d5:8898:7cd2)
21:06:16 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
21:07:56 × CrazyPython quits (~crazypyth@2600:1700:722:1a30:8de7:2840:b70b:3672) (Ping timeout: 240 seconds)
21:08:19 heatsink joins (~heatsink@2600:1700:bef1:5e10:2ddb:1faf:7144:5905)
21:08:25 Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it)
21:10:36 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
21:12:02 × CrazyPyt_ quits (~crazypyth@2600:1700:722:1a30:a03f:d9d5:8898:7cd2) (Ping timeout: 264 seconds)
21:12:29 × giogiogio quits (5e89ad7c@94.137.173.124) (Quit: Connection closed)
21:13:09 × slack1256 quits (~slack1256@45.4.2.52) (Ping timeout: 264 seconds)
21:13:14 × heatsink quits (~heatsink@2600:1700:bef1:5e10:2ddb:1faf:7144:5905) (Ping timeout: 264 seconds)
21:18:09 <edwardk> NieDzejkob: github.com/ekmett/haskell look in my 'types' package in there. its not done, but it provides kind level String as kind [Char] by hacking the Char kind to be inhabited
21:18:19 <edwardk> ad you can convert back and forth from String to Symbol
21:19:33 CrazyPython joins (~crazypyth@2600:1700:722:1a30:41d3:413f:8951:7bf1)
21:19:43 <gentauro> does anybody have the link to a blog post about block chain (on why not use it) written by a well know Haskeller (which I have seem to forget)
21:19:50 × shailangsa quits (~shailangs@host86-185-58-207.range86-185.btcentralplus.com) (Ping timeout: 265 seconds)
21:20:09 × kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection)
21:20:26 CrazyPyt_ joins (~crazypyth@2600:1700:722:1a30:741a:577e:d69f:ce5b)
21:21:03 <gentauro> Charles Hoskinson made a video responding to the blog post
21:21:25 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds)
21:21:32 CrazyPy__ joins (~crazypyth@71-135-5-88.lightspeed.rlghnc.sbcglobal.net)
21:21:53 <edwardk> probably by stephen diehl
21:21:57 tzlil joins (~tzlil@unaffiliated/tzlil)
21:22:20 <edwardk> he's on a bit of a tear about haskell, cryptocurrency and bitcoin these days
21:22:24 <dolio> edwardk: Do you remember some Haskell derivative that had 'first class smart constructors,' where some of the constructors of a data type can act like smart constructors?
21:22:40 <edwardk> miranda, no?
21:22:47 <dolio> Did it? I couldn't find it there.
21:22:57 <edwardk> that was where i first saw the idea i think
21:23:09 <ski> Miranda did have some kind of "laws" on data types, iiuc
21:23:23 <dolio> Okay. I was thinking that was it, but wasn't able to find it in the docs.
21:23:46 <ski> (not sure i'd describe that as "first class smart constructors", though)
21:23:48 <edwardk> i thought it was you who showed me it, even
21:24:13 <dolio> It probably was.
21:24:38 × CrazyPython quits (~crazypyth@2600:1700:722:1a30:41d3:413f:8951:7bf1) (Ping timeout: 264 seconds)
21:24:44 × forgottenone quits (~forgotten@176.42.30.133) (Quit: Konversation terminated!)
21:25:03 <edwardk> hrmm
21:25:14 × CrazyPyt_ quits (~crazypyth@2600:1700:722:1a30:741a:577e:d69f:ce5b) (Ping timeout: 264 seconds)
21:25:28 <gentauro> edwardk: you are right https://www.stephendiehl.com/posts/crypto.html
21:25:29 <edwardk> confused. the miranda docs mention they had the laws feature, but not the constructor rewriting stuff we talked about
21:25:32 <gentauro> edwardk: thx
21:25:35 <edwardk> np
21:26:22 × nathanic quits (~nathan@1429641-v106.1314-static.bltnilaa.metronetinc.net) (Ping timeout: 260 seconds)
21:26:46 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
21:26:50 × Narinas quits (~Narinas@189.223.179.61.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
21:26:59 Narinas joins (~Narinas@189.223.179.61.dsl.dyn.telnor.net)
21:27:31 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
21:27:50 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 260 seconds)
21:28:56 <dolio> Oh, it was removed from the language at some point.
21:29:45 × CrazyPy__ quits (~crazypyth@71-135-5-88.lightspeed.rlghnc.sbcglobal.net) (Ping timeout: 240 seconds)
21:30:42 tzlil joins (~tzlil@unaffiliated/tzlil)
21:34:23 heatsink joins (~heatsink@2600:1700:bef1:5e10:2ddb:1faf:7144:5905)
21:36:14 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 260 seconds)
21:36:44 × rj quits (~x@gateway/tor-sasl/rj) (Quit: rj)
21:36:59 × Narinas quits (~Narinas@189.223.179.61.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
21:37:57 Narinas joins (~Narinas@189.223.179.61.dsl.dyn.telnor.net)
21:38:06 × zebrag quits (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
21:38:25 zebrag joins (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr)
21:39:04 × cuz quits (~user@38.140.58.234) (Ping timeout: 272 seconds)
21:41:28 pengjiz joins (~user@cmu-secure-128-237-82-2.nat.cmu.net)
21:43:05 × evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Ping timeout: 240 seconds)
21:44:19 evanjs joins (~evanjs@075-129-098-007.res.spectrum.com)
21:46:02 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
21:46:42 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:48:47 cuz joins (~user@38.140.58.234)
21:48:50 × hiroaki quits (~hiroaki@ip4d166d67.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
21:49:20 rj joins (~x@gateway/tor-sasl/rj)
21:49:51 × rj quits (~x@gateway/tor-sasl/rj) (Client Quit)
21:50:04 rj joins (~x@gateway/tor-sasl/rj)
21:50:22 × rj quits (~x@gateway/tor-sasl/rj) (Remote host closed the connection)
21:50:43 rj joins (~x@gateway/tor-sasl/rj)
21:51:02 × deviantfero quits (~deviantfe@190.150.27.58) (Quit: WeeChat 3.0)
21:52:34 × geekosaur quits (82650c7a@130.101.12.122) (Quit: Connection closed)
21:53:02 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 3.0)
21:53:16 <dolio> edwardk: 'Laws' were constructor rewriting. The examples are of defining canonicalized 'quotient' types.
21:54:21 <dolio> 'Law' kind of sounds like just a guard, but it's not.
21:54:39 <edwardk> k
21:54:52 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
21:55:07 deviantfero joins (~deviantfe@190.150.27.58)
21:55:52 <dolio> It's not super clear what the limitations were. I guess to implement smart constructors in general you might need to rewrite one constructor to a fancier version with extra information, which wouldn't be ideal.
21:56:44 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
21:56:48 × datajerk quits (~datajerk@sense.net) (Ping timeout: 272 seconds)
22:02:15 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
22:03:19 datajerk joins (~datajerk@sense.net)
22:04:14 usr25 joins (~usr25@unaffiliated/usr25)
22:04:15 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
22:04:17 Rudd0 joins (~Rudd0@185.189.115.103)
22:05:58 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
22:06:13 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
22:07:19 shailangsa joins (~shailangs@host86-185-58-207.range86-185.btcentralplus.com)
22:13:43 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
22:14:30 alx741 joins (~alx741@186.178.109.49)
22:14:44 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:16:05 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
22:17:18 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
22:19:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
22:21:21 idhugo joins (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net)
22:21:29 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 272 seconds)
22:21:56 conal joins (~conal@64.71.133.70)
22:25:53 × thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Ping timeout: 260 seconds)
22:28:58 thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker)
22:30:00 × rj quits (~x@gateway/tor-sasl/rj) (Quit: rj)
22:31:01 carif joins (~mcarifio@cpe-67-246-227-118.rochester.res.rr.com)
22:31:29 rj joins (~x@gateway/tor-sasl/rj)
22:31:47 tby joins (~tby@unaffiliated/tby)
22:31:49 cocytus joins (~cocytus@cpe-76-95-48-109.socal.res.rr.com)
22:33:22 <cocytus> Question: I'm using Hspec to do some testing, but I'm failing tests do to rounding errors. Is there a better tool so I can ask `shouldApproxBe` instead of `shouldBe`?
22:33:32 anuur joins (~anuur@129.205.124.168)
22:37:10 × kam1 quits (~kam1@83.123.64.17) (Ping timeout: 265 seconds)
22:38:06 × zebrag quits (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
22:38:07 <edwardk> cocytus: in the 'ad' library there is a module that ryanglscott wrote to help a bit (we have to deal with printing doubles, and platforms round differently, etc.) might be vaguely applicable, depending on how you write your tests
22:38:26 zebrag joins (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr)
22:38:32 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
22:38:45 × anuur quits (~anuur@129.205.124.168) (Ping timeout: 240 seconds)
22:39:04 vgtw_ joins (~vgtw@gateway/tor-sasl/vgtw)
22:39:05 <edwardk> https://github.com/ekmett/ad/blob/b0b31dc091a91361b0a4b85203422819777a199b/src/Numeric/AD/Internal/Doctest.hs
22:39:55 × vgtw quits (~vgtw@gateway/tor-sasl/vgtw) (Ping timeout: 268 seconds)
22:39:55 × ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 268 seconds)
22:39:56 vgtw_ is now known as vgtw
22:40:32 × teardown quits (~user@gateway/tor-sasl/mrush) (Ping timeout: 268 seconds)
22:41:17 <cocytus> Alright. I'll take a look at these thanks.
22:41:45 × idhugo quits (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Ping timeout: 272 seconds)
22:41:48 ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
22:42:11 teardown joins (~user@gateway/tor-sasl/mrush)
22:47:31 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
22:48:05 [itchyjunk] joins (~itchyjunk@unaffiliated/itchyjunk/x-1640057)
22:48:09 <[itchyjunk]> hello :s
22:50:31 borne joins (~fritjof@200116b864444400d8bba186ea6b909e.dip.versatel-1u1.de)
22:54:21 × fendor quits (~fendor@77.119.130.50.wireless.dyn.drei.com) (Read error: Connection reset by peer)
22:55:33 fissureman_ joins (~quassel@c-73-163-84-25.hsd1.dc.comcast.net)
22:55:42 × fissureman quits (~quassel@c-73-163-84-25.hsd1.dc.comcast.net) (Ping timeout: 272 seconds)
22:57:13 <Axman6> hello
23:01:25 × Anthaas quits (~Anthaas@unaffiliated/anthaas) (Ping timeout: 240 seconds)
23:01:58 frozenErebus joins (~frozenEre@94.128.219.166)
23:02:29 Anthaas joins (~Anthaas@unaffiliated/anthaas)
23:03:23 <Axman6> edwardk: looks like some progress is being made on your old account, appears to have old tweets back?
23:03:38 <Axman6> oh maybe not
23:03:56 <edwardk> it has my tweets back, but they reinstalled them on vzlish. i don't have access to that account yet though
23:04:10 <Axman6> hmmm
23:04:34 usr25_tm joins (~usr25@unaffiliated/usr25)
23:07:19 <Axman6> seems like a good start though, none of the impersonator's tweets are there any more afaict
23:08:05 × usr25 quits (~usr25@unaffiliated/usr25) (Ping timeout: 240 seconds)
23:09:57 <NieDzejkob> is it possible to somehow get a repl inside a state monad?
23:10:22 <Axman6> edwardk: I was going to offer to buy you a Yubikey but it probably wouldn't have helped if things were compromised by phone, and I can't afford to buy you an iPhone :)
23:11:16 × weikum quits (~weikum@90.218.153.39) (Ping timeout: 240 seconds)
23:12:34 remby parts (~rcg@bras-base-london1483w-grc-11-76-69-70-199.dsl.bell.ca) ("Konversation terminated!")
23:13:32 elliott__ joins (~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
23:14:07 weikum joins (~weikum@90.218.153.39)
23:14:14 <Rembane> NieDzejkob: Why do you want that?
23:14:21 × cuz quits (~user@38.140.58.234) (Ping timeout: 264 seconds)
23:14:57 × TMA quits (tma@twin.jikos.cz) (Ping timeout: 264 seconds)
23:15:39 TMA joins (tma@twin.jikos.cz)
23:15:39 jollygood2 joins (~bc8134e3@217.29.117.252)
23:15:50 × dcoutts quits (~duncan@85.186.125.91.dyn.plus.net) (Ping timeout: 265 seconds)
23:16:04 <NieDzejkob> I have some operations that use the state monad and I want to experiment with them without passing the state manually
23:17:01 <Rembane> NieDzejkob: Got it, you need to pass some state. But you can decide which state to pass. Have you taken a look at the eliminator functions lately?
23:17:16 × pera quits (~pera@unaffiliated/pera) (Ping timeout: 240 seconds)
23:17:32 <Rembane> NieDzejkob: https://hackage.haskell.org/package/mtl-2.2.2/docs/Control-Monad-State-Lazy.html#v:runState <- runState et. al.
23:18:33 × weikum quits (~weikum@90.218.153.39) (Ping timeout: 264 seconds)
23:18:58 <monochrom> which is passing initial states manually :)
23:19:02 <NieDzejkob> yeah. I want to specify the initial state, run some functions, see the result of each, and then perhaps exit the state monad and get the new state back
23:19:48 <Rembane> NieDzejkob: Got it, you can run the trace functions insdie the state monad: https://hackage.haskell.org/package/base-4.14.1.0/docs/Debug-Trace.html
23:19:50 × Tops22 quits (~Tobias@dyndsl-091-249-083-069.ewe-ip-backbone.de) (Quit: Leaving.)
23:20:08 <monochrom> I wonder if Debug.Trace solves your real problem better. http://www.vex.net/~trebla/haskell/tracing.html
23:20:21 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
23:21:12 <NieDzejkob> looks like I could get it to work: https://www.reddit.com/r/haskell/comments/87otrn/you_can_override_the_monad_that_ghci_uses/
23:21:13 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
23:22:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
23:22:51 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
23:23:07 × average quits (uid473595@gateway/web/irccloud.com/x-xnupshzcizbfldxu) (Quit: Connection closed for inactivity)
23:23:08 <NieDzejkob> nah, it's probably closer to a REPL for an EDSL than debugging
23:25:27 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 272 seconds)
23:25:35 <monochrom> yikes
23:26:36 jedws joins (~jedws@101.184.202.248)
23:26:38 × jalumar quits (uid392211@gateway/web/irccloud.com/x-fbybggmahjjwkaqm) (Quit: Connection closed for inactivity)
23:27:31 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
23:27:36 <NieDzejkob> what?
23:27:53 <monochrom> the trick of overring ghci's monad
23:28:25 <monochrom> Actually on second thoughts it is not yikes-worthy, it's rather quaint actually.
23:28:57 <monochrom> If you have to do "runReaderT" at every point you are not overriding anything, really.
23:29:23 <NieDzejkob> with some overlapping typeclasses it will work quite nicely
23:29:42 <monochrom> Well OK you're overriding the interactive printer, but runReaderT brings you back to IO, you are still not replacing IO.
23:30:10 <monochrom> For example this trick doesn't replace IO by ST.
23:30:29 <monochrom> For example this trick doesn't replace IO by Maybe.
23:30:30 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:31:06 <NieDzejkob> well it works for RWS
23:31:12 <monochrom> Conclusion: the title is a click bait.
23:32:01 × Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
23:32:14 × lawid quits (~quassel@dslb-002-202-157-179.002.202.pools.vodafone-ip.de) (Quit: lawid)
23:34:25 lawid joins (~quassel@dslb-002-202-157-179.002.202.pools.vodafone-ip.de)
23:37:45 gratadewey1 joins (~gratadewe@tmo-114-105.customers.d1-online.com)
23:37:56 <karasu1[m]> I am looking at some Haskell code, and it's using `Data.Map.Strict` instead of `Data.Map`. Why is this being done? I have never heard of `Data.Map.Strict` so I was hoping if someone could kindly explain the difference and why one would use one over the other. They both seem to be doing the exact same thing..
23:38:06 × zebrag quits (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
23:38:26 zebrag joins (~inkbottle@aaubervilliers-654-1-98-217.w86-212.abo.wanadoo.fr)
23:39:15 × jedws quits (~jedws@101.184.202.248) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:39:20 × fionnan quits (~fionnan@80.111.86.154) (Remote host closed the connection)
23:39:21 × gratadewey1 quits (~gratadewe@tmo-114-105.customers.d1-online.com) (Client Quit)
23:40:27 <Axman6> the sifference is... strictness :)
23:40:32 <Axman6> difference*
23:40:36 <ephemient> karasu1[m]: http://hackage.haskell.org/package/containers/docs/Data-Map.html and links explain
23:40:40 × jess quits (jess@freenode/staff/jess) (Quit: brb)
23:41:07 × heatsink quits (~heatsink@2600:1700:bef1:5e10:2ddb:1faf:7144:5905) (Remote host closed the connection)
23:41:19 <ephemient> Data.Map = Data.Map.Lazy. Data.Map.Strict = same data structure, but "Each function in this module is careful to force values before installing them in a Map. This is usually more efficient when laziness is not necessary. When laziness is required, use the functions in Data.Map.Lazy."
23:41:41 jess joins (jess@freenode/staff/jess)
23:41:45 × alx741 quits (~alx741@186.178.109.49) (Ping timeout: 240 seconds)
23:42:36 <Axman6> karasu1[m]: the difference is that for Data.Map(.Lazy), if you repeatedly applied a function to the values at a specific key, you'd just build up a alarge thunk. if you use Data.Map.Strict, it forces the result every time you modify the value
23:42:57 <karasu1[m]> So all values in `Data.Map.Strict.Map` are going to be actual values, right (instead of a lazy string of functions applied to a value)?
23:44:02 <Axman6> so if you ran iterate (modify someKey (+1)), in the lazy you you's end up with a map where someKey => 0+1+1+1+1+1+1+1+1+...
23:44:15 <ephemient> it's actually the same Map, it's only the functions which are different
23:44:16 <karasu1[m]> <ephemient "Data.Map = Data.Map.Lazy. Data.M"> Hmm, could you tell me where this passage is from?
23:44:26 <dolio> The description in the docs seems kind of dubious.
23:44:28 <ephemient> it's on the Data.Map.Strict doc
23:44:35 <Axman6> "actual values" means evaluated (to weak head normal form), which means we know which constructor the value has
23:45:32 <ephemient> not how it's implemented, but effectively, `Data.Map.Strict.insert k !a m = Data.Map.Lazy.insert k a m`
23:45:58 <Axman6> in a strict map, we if we had Map Int (Maybe String), the functions in that module ensure that for all the Maybe Strings, it is known if it is a Nothing or Just, but it is not known yet what the String is
23:46:02 <ephemient> same m, it's just that the Strict module's functions are strict in the map values
23:46:29 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
23:46:32 <karasu1[m]> I've never seen the ! symbol except for the list index (!!) before..
23:46:36 <ephemient> well, WHNF of a String = [Char] also means we know if it is a (:) or a [] constructor, and not anything else
23:46:40 <karasu1[m]> !a means strict?
23:46:55 <karasu1[m]> !(+ 8) evaluates 8 immediately?
23:47:03 <ephemient> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/exts/strict.html
23:47:48 <dolio> Unless you interpret "need laziness" as true when laziness avoids eagerly doing unnecessary work.
23:47:50 <ephemient> f !a = x means f a = a `seq` x
23:49:41 <karasu1[m]> never seen `seq` before, but yeah it sort of makes sense from the description on Hoogle: "The value of seq a b is bottom if a is bottom, and otherwise equal to b. In other words, it evaluates the first argument a to weak head normal form (WHNF). seq is usually introduced to improve performance by avoiding unneeded laziness."
23:50:06 <karasu1[m]> don't know what bottom and weak head normal form mean but I will look it up : D
23:51:37 <edwardk> > (let x = x in x)
23:51:40 <lambdabot> *Exception: <<loop>>
23:51:42 <ephemient> bottom (written ⟂ or sometimes _|_) is a "value" which cannot be computed. e.g. something which loops infinitely or throws an exception
23:51:43 <edwardk> ^_ that is a bottom
23:51:51 <edwardk> an infinite loop, or a throwing of an exception
23:52:03 <edwardk> > const 12 (let x = x in x)
23:52:05 <lambdabot> 12
23:52:08 <karasu1[m]> bottom looks like the false symbol in boolean logic
23:52:25 <edwardk> ^- in most languages if you go to call a function with an argument that is bottom you get bottom, because you never call the function!
23:52:39 <edwardk> think of bottom as 'undefined' more than false.
23:52:46 <edwardk> True and False are both more defined than a bottom
23:53:01 <edwardk> its like the joke in PHP that booleans are true, false and FILE_NOT_FOUND
23:53:14 <edwardk> in haskell you can't case to distinguish a bottom from another value.
23:53:15 <ephemient> bottom is a member of every (lifted) type in Haskell
23:53:35 <edwardk> in the const case i didn't case analyze the second argument. const a b = a
23:53:39 <edwardk> it ignores the b
23:53:42 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
23:53:54 <edwardk> so the fact that if you _were_ to evaluate b the compiler would spin forever doesn't come up
23:54:00 <karasu1[m]> * looking up lifted types
23:54:01 <edwardk> haskell happily hands back 12
23:54:39 <edwardk> laziness is haskell's secret sauce. it is the 11 herbs and spices that it adds to the recipe of programming language design that makes it all hang together.
23:54:48 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:55:00 <ephemient> ... knowing what unlifted types are in Haskell probably isn't going to be super helpful when you're first learning, maybe I shouldn't have mentioned that
23:55:00 <edwardk> and laziness is about if a function that takes in a bottom necessarily returns one.
23:55:08 <edwardk> notationally does f _|_ = _|_ ?
23:55:19 <edwardk> well the const case above shows in haskell it isn't necessarily true
23:55:44 <edwardk> > (\x -> "YOLO") (error "it'd be a damn shame if you evaluated this")
23:55:46 <lambdabot> "YOLO"
23:56:05 × mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew)
23:56:48 <edwardk> now, languages like scheme add some #f type, c++ has null, most languages have some kind of default value you can put in for objects that point out to the heap. and in most languages you can case match to see if you have a null and would be dumb if you tried to ignore that case.
23:56:54 conal joins (~conal@64.71.133.70)
23:57:36 × dhil quits (~dhil@80.208.56.181) (Ping timeout: 240 seconds)
23:57:48 <edwardk> in haskell we don't' do anything until we're forced to. it is the act of inspecting a value that turns it from a 'promise that really i'll compute an Int when you force me to' into actually a machine int.
23:57:53 heatsink joins (~heatsink@2600:1700:bef1:5e10:2ddb:1faf:7144:5905)
23:58:05 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
23:58:27 <edwardk> but you need bottoms at least 'in your semantics' to describe the fact that sometimes trying to go from a 'promise that i will totes compute an int when you ask' to an actual int leads to you spinning forever
23:58:30 <edwardk> in the above example
23:58:34 <edwardk> > let x = x in x
23:58:37 <lambdabot> *Exception: <<loop>>
23:58:46 <edwardk> in order to compute x i have to compute x, but in order to compute x i have to ...
23:59:12 <ephemient> error :: String -> a
23:59:38 <edwardk> :t throw
23:59:39 <lambdabot> Exception e => e -> a
23:59:50 <ephemient> given that type, the return can only ever be bottom
23:59:52 <edwardk> :t undefined
23:59:53 <lambdabot> a

All times are in UTC on 2021-02-16.