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.