Logs on 2021-03-13 (freenode/#haskell)
| 00:05:29 | <infinisil> | hololeap: https://gist.github.com/ccdf467c657950b4c5fa1139df246fb2 |
| 00:05:58 | × | Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007) |
| 00:06:25 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Remote host closed the connection) |
| 00:07:58 | → | ezrakilty joins (~ezrakilty@75-172-115-167.tukw.qwest.net) |
| 00:08:04 | × | notzmv quits (~zmv@unaffiliated/zmv) (Ping timeout: 256 seconds) |
| 00:08:31 | → | sz0 joins (uid110435@gateway/web/irccloud.com/x-iwavjdaunpjxrjlx) |
| 00:08:57 | × | Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 264 seconds) |
| 00:09:02 | × | Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
| 00:09:25 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
| 00:09:45 | × | ketas1 quits (~ketas@37.120.211.188) (Remote host closed the connection) |
| 00:10:55 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 276 seconds) |
| 00:11:43 | → | qih joins (~pi@210-54-120-166.adsl.xtra.co.nz) |
| 00:12:06 | × | ezrakilty quits (~ezrakilty@75-172-115-167.tukw.qwest.net) (Ping timeout: 246 seconds) |
| 00:12:53 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds) |
| 00:12:58 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 245 seconds) |
| 00:13:25 | → | ezrakilty joins (~ezrakilty@75-172-115-167.tukw.qwest.net) |
| 00:15:32 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 00:16:48 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 00:18:33 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 00:18:45 | × | dbmikus quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 246 seconds) |
| 00:18:47 | → | joebobjoe joins (~joebobjoe@unaffiliated/joebobjoe) |
| 00:19:04 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 00:19:27 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 246 seconds) |
| 00:21:13 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 00:21:18 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 00:23:48 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 245 seconds) |
| 00:24:07 | → | justanotheruser joins (~justanoth@unaffiliated/justanotheruser) |
| 00:24:09 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection) |
| 00:25:31 | → | bennofs_ joins (~quassel@dslb-188-106-240-148.188.106.pools.vodafone-ip.de) |
| 00:25:45 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 00:25:49 | → | kensanata joins (~kensanata@195.140.213.38) |
| 00:26:12 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
| 00:27:15 | → | dbmikus joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
| 00:27:20 | × | curiousgay quits (~gay@178.217.208.8) (Ping timeout: 256 seconds) |
| 00:28:54 | × | bennofs__ quits (~quassel@dslb-188-106-247-127.188.106.pools.vodafone-ip.de) (Ping timeout: 246 seconds) |
| 00:31:27 | → | curiousgay joins (~gay@178.217.208.8) |
| 00:31:42 | × | dbmikus quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 246 seconds) |
| 00:32:58 | → | stree joins (~stree@68.36.8.116) |
| 00:36:02 | × | ezrakilty quits (~ezrakilty@75-172-115-167.tukw.qwest.net) (Remote host closed the connection) |
| 00:36:09 | × | sayola quits (~vekto@dslb-002-201-085-157.002.201.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
| 00:45:32 | × | conal quits (~conal@184.170.243.131) (Quit: Computer has gone to sleep.) |
| 00:47:21 | × | hexo quits (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection) |
| 00:47:21 | × | srk quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection) |
| 00:47:36 | → | hexo joins (~hexo@gateway/tor-sasl/hexo) |
| 00:47:41 | → | srk joins (~sorki@gateway/tor-sasl/sorki) |
| 00:47:52 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) |
| 00:49:12 | × | blueonyx quits (b9d4ab4b@unaffiliated/blueonyx) (Quit: Connection closed) |
| 00:49:55 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 00:52:27 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds) |
| 00:55:51 | → | conal joins (~conal@184.170.243.131) |
| 00:57:24 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 00:57:50 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Max SendQ exceeded) |
| 00:58:43 | → | rajivr joins (uid269651@gateway/web/irccloud.com/x-qhbpzrlqpyrqpcwa) |
| 00:59:57 | → | hexfive joins (~hexfive@50.35.83.177) |
| 01:00:22 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds) |
| 01:03:57 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 01:04:50 | → | justanotheruser joins (~justanoth@unaffiliated/justanotheruser) |
| 01:07:08 | → | gitgoood joins (~gitgood@82-132-219-163.dab.02.net) |
| 01:08:10 | <hololeap> | infinisil: don't know what to say apart from my previous statement :) |
| 01:08:31 | × | conal quits (~conal@184.170.243.131) (Quit: Computer has gone to sleep.) |
| 01:08:39 | → | ezrakilty joins (~ezrakilty@75-172-115-167.tukw.qwest.net) |
| 01:09:52 | → | justan0theruser joins (~justanoth@unaffiliated/justanotheruser) |
| 01:10:10 | × | gitgood quits (~gitgood@82-132-218-210.dab.02.net) (Read error: Connection reset by peer) |
| 01:10:11 | → | conal joins (~conal@64.71.133.70) |
| 01:10:50 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds) |
| 01:11:14 | → | nbloomf joins (~nbloomf@70.182.116.249) |
| 01:11:45 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 01:13:09 | × | ezrakilty quits (~ezrakilty@75-172-115-167.tukw.qwest.net) (Ping timeout: 264 seconds) |
| 01:15:19 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 01:15:29 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:16:50 | × | justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds) |
| 01:19:50 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
| 01:20:22 | → | kam1 joins (~kam1@83.123.154.198) |
| 01:20:51 | × | howdoi quits (uid224@gateway/web/irccloud.com/x-fbxhtxpvbmlflnip) (Quit: Connection closed for inactivity) |
| 01:24:00 | → | CoconutCrab joins (~Cua@unaffiliated/coconutcrab) |
| 01:26:18 | × | myShoggoth quits (~myShoggot@75.164.81.55) (Ping timeout: 245 seconds) |
| 01:27:57 | <infinisil> | hololeap: I've realized that I don't even need it lol |
| 01:28:42 | <infinisil> | Because in my case, I'm gonna want to turn all types into json Value's anyways |
| 01:28:51 | <infinisil> | And then I can just `limitRecursion :: Int -> Value -> Value` |
| 01:29:08 | <infinisil> | No need to mess with Generics and typeclasses |
| 01:29:10 | × | cfvnhtsp^ quits (cfvnhtsp@ip98-184-89-2.mc.at.cox.net) () |
| 01:29:44 | <infinisil> | But, this was an interesting experiment regardless :) |
| 01:30:37 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 01:31:52 | → | justan0theruser joins (~justanoth@unaffiliated/justanotheruser) |
| 01:31:57 | × | kam1 quits (~kam1@83.123.154.198) (Read error: Connection reset by peer) |
| 01:33:48 | × | joebobjoe quits (~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 245 seconds) |
| 01:34:57 | → | joebobjoe joins (~joebobjoe@unaffiliated/joebobjoe) |
| 01:38:01 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 276 seconds) |
| 01:39:38 | × | joebobjoe quits (~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 245 seconds) |
| 01:40:01 | → | joebobjoe joins (~joebobjoe@unaffiliated/joebobjoe) |
| 01:41:10 | × | usr256 quits (~usr25@unaffiliated/usr25) (Quit: Leaving) |
| 01:41:17 | <koz_> | Does ByteString's take and drop cause allocations? |
| 01:42:07 | → | user5023 joins (~user5023@79-100-188-22.ip.btc-net.bg) |
| 01:43:00 | → | ezrakilty joins (~ezrakilty@75-172-115-167.tukw.qwest.net) |
| 01:43:32 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds) |
| 01:44:57 | × | joebobjoe quits (~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 264 seconds) |
| 01:46:09 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 01:48:28 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 01:49:50 | → | kam1 joins (~kam1@83.123.154.198) |
| 01:51:58 | × | justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Read error: Connection reset by peer) |
| 01:52:40 | × | user5023 quits (~user5023@79-100-188-22.ip.btc-net.bg) (Quit: Leaving) |
| 01:54:51 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 01:55:03 | × | kiweun quits (~kiweun@2607:fea8:2a62:9600:5883:2b2b:203d:3c57) (Remote host closed the connection) |
| 01:55:21 | × | vchlup_ quits (~vchlup@nat.brnet.cz) (Ping timeout: 246 seconds) |
| 01:55:33 | → | kiweun joins (~kiweun@2607:fea8:2a62:9600:5883:2b2b:203d:3c57) |
| 01:55:37 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection) |
| 01:56:11 | <infinisil> | koz_: https://hackage.haskell.org/package/bytestring-0.11.1.0/docs/src/Data.ByteString.html#take |
| 01:56:36 | <koz_> | Based on this, I assume it's 'yes', because it has to 're-wrap'? |
| 01:57:15 | → | vchlup_ joins (~vchlup@nat.brnet.cz) |
| 01:58:21 | <infinisil> | koz_: Oh, you mean whether it even allocates a single byte? |
| 01:58:26 | <koz_> | infinisil: Yes. |
| 01:58:48 | × | kam1 quits (~kam1@83.123.154.198) (Read error: Connection reset by peer) |
| 01:59:51 | <infinisil> | koz_: Hmm I guess in general it can, but with rewrite rules and inlining I wouldn't be surprised for it not to in many cases |
| 02:00:14 | <koz_> | infinisil: Hmm. I might have to think about this some more. |
| 02:00:25 | <infinisil> | koz_: What's the motivation? |
| 02:00:26 | × | nbloomf quits (~nbloomf@70.182.116.249) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 02:00:30 | → | joebobjoe joins (~joebobjoe@unaffiliated/joebobjoe) |
| 02:00:48 | <koz_> | I'm tweaking the matching implementation for text-ascii to speed it up. I currently race text pretty well, but I allocate more than text does. |
| 02:02:00 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 246 seconds) |
| 02:03:12 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 02:03:25 | <infinisil> | Hmm well text's take actually doesn't even appear to be O(n) |
| 02:03:37 | <infinisil> | sorry, it _is_ O(n) |
| 02:03:39 | <koz_> | infinisil: The 'take' part isn't what I'm optimizing. |
| 02:03:51 | <koz_> | I'm posting something to bytestring's issue tracker, that may clear it up. |
| 02:04:47 | → | notzmv joins (~zmv@unaffiliated/zmv) |
| 02:05:43 | <koz_> | infinisil: https://github.com/haskell/bytestring/issues/307#issuecomment-797847849 |
| 02:06:55 | <koz_> | You can scroll to the bottom to see the code, and the benchmarks show the unwanted allocs. |
| 02:07:04 | <koz_> | If you have better ideas on why this is happening, I'm definitely all ears. |
| 02:08:51 | <infinisil> | koz_: Ah you're referring to the -O0 results where text-ascii sometimes allocates where text doesn't? |
| 02:09:03 | <koz_> | Yes. |
| 02:09:06 | <koz_> | This also happens on -O1. |
| 02:09:20 | <koz_> | At -O2 text drives off the cliff, but the allocs are still there. |
| 02:09:26 | <koz_> | And I'd rather they weren't if possible. |
| 02:09:43 | <koz_> | My only candidate for why this is happening is the 'let fragment = ...' computation. |
| 02:10:03 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 245 seconds) |
| 02:10:06 | <infinisil> | Once in -O2, ascii-text doesn't allocate but text does |
| 02:10:15 | <koz_> | It still does. |
| 02:10:18 | <infinisil> | Are these benchmarks repeatable with the same results? |
| 02:10:22 | <ntkr> | hello all, I'm trying to write a websockets application with RIO and am getting hung up on how to extend the RIO monad to the functions that the websockets library needs. Any help here is much appreciated: https://paste.tomsmeding.com/bbXsCmh5 |
| 02:10:27 | <koz_> | infinisil: Very consistently. |
| 02:10:42 | → | justan0theruser joins (~justanoth@unaffiliated/justanotheruser) |
| 02:11:12 | × | thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 260 seconds) |
| 02:11:20 | <koz_> | The allocations done by text-ascii don't go away irrespective of -O level. |
| 02:11:31 | <koz_> | Check the 'No match' lines in both blocks, for example. |
| 02:11:43 | <koz_> | (text just allocates hilariously more) |
| 02:11:46 | <infinisil> | koz_: I'd try memory profiling to figure out where exactly the allocs happen |
| 02:12:02 | <infinisil> | I've been wanting to try out https://well-typed.com/blog/2021/01/first-look-at-hi-profiling-mode/ |
| 02:12:04 | <koz_> | infinisil: What's the option to pass to 'cabal bench' to have it profile memory? |
| 02:12:35 | <koz_> | Ah, this. |
| 02:13:12 | <koz_> | So compile with -eventlog, then run with -hT? |
| 02:13:43 | <infinisil> | Haven't tried it out myself, I'd check the blog post :) |
| 02:14:15 | <koz_> | I'm not completely clear from it, because they use raw GHC. |
| 02:14:22 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:14:28 | <koz_> | I'll try adding -eventlog and -hT and see wat happen. |
| 02:14:37 | × | gitgoood quits (~gitgood@82-132-219-163.dab.02.net) (Read error: Connection reset by peer) |
| 02:14:42 | <koz_> | How recent a GHC do I need? |
| 02:14:51 | <infinisil> | It should be in 8.10.2 (the blog mentions that too) |
| 02:14:58 | <koz_> | OK, cool. |
| 02:14:59 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds) |
| 02:15:29 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 02:15:41 | <infinisil> | actually it mentions that there's a backport for 8.10.2, not sure if it's merged (I'd think so though) |
| 02:15:51 | <koz_> | I have 8.10.4 so it should be there? |
| 02:15:53 | × | dcoutts__ quits (~duncan@85.186.125.91.dyn.plus.net) (Remote host closed the connection) |
| 02:16:04 | → | dcoutts_ joins (~dcoutts@unaffiliated/dcoutts) |
| 02:16:07 | <infinisil> | Probably |
| 02:16:13 | <koz_> | OK, let's see then. |
| 02:16:17 | → | dcoutts__ joins (~duncan@85.186.125.91.dyn.plus.net) |
| 02:18:17 | × | dcoutts quits (~dcoutts@unaffiliated/dcoutts) (Ping timeout: 246 seconds) |
| 02:19:14 | <koz_> | How do I pass args to the executable in 'cabal bench'? |
| 02:19:43 | <infinisil> | Oh actually it might not be in yet, it looks like it was merged 1 week ago..? |
| 02:19:48 | <koz_> | Oh rofl. |
| 02:19:51 | <infinisil> | Checking https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3469 |
| 02:19:53 | <koz_> | So just regular heap profile? |
| 02:19:58 | <infinisil> | Yeah |
| 02:20:04 | <koz_> | What's the arg for that? |
| 02:20:10 | <infinisil> | No idea too :) |
| 02:20:54 | <koz_> | -h apparently. |
| 02:21:55 | <infinisil> | I'd do some research on profiling, it's not straightforward iirc |
| 02:22:04 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 02:22:54 | <koz_> | http://hackage.haskell.org/package/hp2pretty seems useful |
| 02:23:52 | <koz_> | Yeah... it's not terribly informative. |
| 02:25:02 | <koz_> | I'll see if this gets bodigrim's attention. |
| 02:25:12 | → | tmontoya joins (~tmontoya@ip70-191-3-73.lv.lv.cox.net) |
| 02:25:19 | × | carlomagno quits (~cararell@148.87.23.12) (Quit: Leaving.) |
| 02:25:30 | <infinisil> | koz_: https://github.com/mpickering/eventlog2html |
| 02:25:33 | <infinisil> | How about that |
| 02:25:33 | <joebobjoe> | is there a functional alternative to sh? |
| 02:25:37 | <koz_> | infinisil: Yeah, I saw that. |
| 02:25:42 | <koz_> | joebobjoe: As in, the shell? |
| 02:25:49 | <joebobjoe> | like I just want to glue some commands together but I don't want to learn zsh/sh |
| 02:25:55 | <joebobjoe> | koz_: yea |
| 02:26:16 | <koz_> | There's shh, but I dunno how good it is. |
| 02:26:51 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 246 seconds) |
| 02:26:51 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in) |
| 02:27:54 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 02:28:23 | → | drbean joins (~drbean@TC210-63-209-78.static.apol.com.tw) |
| 02:29:46 | × | Aquazi quits (uid312403@gateway/web/irccloud.com/x-ruqfhmrhwkcudnys) (Quit: Connection closed for inactivity) |
| 02:30:03 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit) |
| 02:30:08 | <joebobjoe> | ok thanks |
| 02:30:34 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 02:31:02 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 02:33:41 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit) |
| 02:34:43 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 02:35:15 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds) |
| 02:35:32 | <VarikValefor[m]> | To anyone who has not read the language report: READ THE LANGUAGE REPORT!!! |
| 02:35:53 | <koz_> | VarikValefor[m]: Why the emphatic presentation? |
| 02:36:12 | <monochrom> | Are you OK? |
| 02:36:21 | × | justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
| 02:36:31 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit) |
| 02:36:39 | → | Jd007 joins (~Jd007@162.156.11.151) |
| 02:37:12 | → | myShoggoth joins (~myShoggot@75.164.81.55) |
| 02:37:33 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 02:39:24 | → | justan0theruser joins (~justanoth@unaffiliated/justanotheruser) |
| 02:41:29 | <VarikValefor[m]> | koz_: The emphasis is placed onto the suggestion to convey the mild annoyances which have accumulated after questions which are best answered with "RTFM" have been repeatedly encountered. |
| 02:41:29 | <VarikValefor[m]> | monochrom: Everything seems to be in order. |
| 02:41:43 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 276 seconds) |
| 02:45:22 | <ntkr> | hello all, I'm trying to write a websockets application with RIO and am getting hung up on how to extend the RIO monad to the functions that the websockets library needs. Any help here is much appreciated: https://paste.tomsmeding.com/bbXsCmh5 [repost] |
| 02:45:31 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 02:45:49 | <koz_> | ntkr: You may have to wait a while. |
| 02:46:01 | <koz_> | I saw your query, but the channel's quiet, and I don't feel qualified to assist. |
| 02:46:29 | × | xff0x quits (~xff0x@2001:1a81:520c:1100:a1d8:2af1:7428:6b99) (Ping timeout: 272 seconds) |
| 02:46:34 | <ntkr> | oh thats fine, i appreciate you acknowledging the ask |
| 02:46:49 | → | mixfix41 joins (~user@unaffiliated/mixfix41) |
| 02:47:08 | <infinisil> | ntkr: You'll want to use https://hackage.haskell.org/package/unliftio-core-0.2.0.1/docs/Control-Monad-IO-Unlift.html#t:MonadUnliftIO |
| 02:47:18 | <infinisil> | The RIO monad is an instance of that |
| 02:47:42 | → | xff0x joins (~xff0x@2001:1a81:5243:ae00:c201:8f39:a8f8:4489) |
| 02:48:14 | <ntkr> | infinisil: i appreciate the direction, i'll read up |
| 02:48:48 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 245 seconds) |
| 02:48:52 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds) |
| 02:49:15 | ← | tmontoya parts (~tmontoya@ip70-191-3-73.lv.lv.cox.net) () |
| 02:50:49 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 276 seconds) |
| 02:51:16 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
| 02:51:19 | <infinisil> | ntkr: I think this is actually the better thing to read: https://github.com/fpco/unliftio/tree/master/unliftio#unlifting-in-2-minutes |
| 02:51:37 | → | elliott_ joins (~elliott_@172.58.187.170) |
| 02:52:20 | <ntkr> | infinisil: its definitely a little more dummy-friendly and that suits me |
| 02:54:16 | → | stree joins (~stree@68.36.8.116) |
| 02:54:43 | × | justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
| 02:55:05 | <infinisil> | I think it should be `withRunInIO $ \runInIO -> libFunc (runInIO . myFunc)` in your run function |
| 02:55:29 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 02:55:59 | × | jud quits (~jud@unaffiliated/jud) (Quit: Leaving) |
| 02:56:04 | × | elliott_ quits (~elliott_@172.58.187.170) (Read error: Connection reset by peer) |
| 02:56:18 | × | ezrakilty quits (~ezrakilty@75-172-115-167.tukw.qwest.net) (Ping timeout: 245 seconds) |
| 02:56:49 | → | Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 02:57:52 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 02:58:09 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 264 seconds) |
| 02:58:50 | → | ezrakilty joins (~ezrakilty@75-172-115-167.tukw.qwest.net) |
| 02:59:57 | <infinisil> | Alternatively you could actually just use the ReaderT approach mentioned in that page |
| 03:00:33 | × | curiousgay quits (~gay@178.217.208.8) (Ping timeout: 264 seconds) |
| 03:01:28 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
| 03:01:30 | <infinisil> | That should be `ReaderT $ \env -> libFunc (\a -> runReaderT (myFunc a) env)` |
| 03:01:35 | → | curiousgay joins (~gay@178.217.208.8) |
| 03:01:46 | <infinisil> | And it's equivalent to what unliftio does with `withRunInIO` |
| 03:01:50 | <infinisil> | ntkr: ^ |
| 03:03:28 | × | CrazyPython quits (~crazypyth@98.122.164.118) (Read error: Connection reset by peer) |
| 03:04:03 | <ntkr> | i'm grateful and impressed that you solved my problem so quickly. I'll need several cycles to figure out why this works |
| 03:04:18 | × | DataComputist quits (~lumeng@50.43.26.251) (Ping timeout: 256 seconds) |
| 03:04:47 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 03:05:35 | <koz_> | ntkr: It'll become second nature to you eventually. |
| 03:05:55 | <ntkr> | i'm looking forward to it :D |
| 03:06:09 | → | ddellacosta joins (~ddellacos@86.106.143.187) |
| 03:07:08 | × | m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 256 seconds) |
| 03:08:41 | → | FinnElija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) |
| 03:08:41 | finn_elija | is now known as Guest75344 |
| 03:08:41 | FinnElija | is now known as finn_elija |
| 03:09:50 | × | ezrakilty quits (~ezrakilty@75-172-115-167.tukw.qwest.net) (Remote host closed the connection) |
| 03:09:56 | → | DataComputist joins (~lumeng@50.43.26.251) |
| 03:10:02 | → | justan0theruser joins (~justanoth@unaffiliated/justanotheruser) |
| 03:10:28 | × | ddellacosta quits (~ddellacos@86.106.143.187) (Ping timeout: 245 seconds) |
| 03:12:08 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 245 seconds) |
| 03:12:20 | × | Guest75344 quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds) |
| 03:14:00 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
| 03:20:13 | <ntkr> | this all just clicked for me and i have become a little smarter, thanks all! it is now apparent to me that i will need to do this kind of monadic impedence-matching for many of the functions exported by the websockets library. |
| 03:23:51 | <infinisil> | ntkr: If you're feeling adventurous, you could make a PR for the library to use unliftio :) |
| 03:24:06 | × | alx741 quits (~alx741@181.196.69.27) (Quit: alx741) |
| 03:25:16 | → | Kaiepi joins (~Kaiepi@47.54.252.148) |
| 03:25:23 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 03:27:58 | × | myShoggoth quits (~myShoggot@75.164.81.55) (Ping timeout: 245 seconds) |
| 03:30:22 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
| 03:31:53 | → | ddellacosta joins (~ddellacos@86.106.143.122) |
| 03:34:06 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 03:34:27 | <ntkr> | seems like just the right mix of doable and challenging, thanks for the homework! |
| 03:34:38 | × | theDon quits (~td@muedsl-82-207-238-185.citykom.de) (Ping timeout: 260 seconds) |
| 03:35:27 | × | raehik1 quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 03:36:25 | → | theDon joins (~td@muedsl-82-207-238-134.citykom.de) |
| 03:36:36 | × | ddellacosta quits (~ddellacos@86.106.143.122) (Ping timeout: 256 seconds) |
| 03:38:19 | <infinisil> | :D |
| 03:42:13 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 272 seconds) |
| 03:43:28 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 276 seconds) |
| 03:51:53 | → | kam1 joins (~kam1@83.123.154.198) |
| 03:53:24 | × | kam1 quits (~kam1@83.123.154.198) (Read error: Connection reset by peer) |
| 03:53:35 | → | myShoggoth joins (~myShoggot@75.164.81.55) |
| 03:57:38 | → | CrazyPython joins (~crazypyth@98.122.164.118) |
| 04:04:50 | × | CrazyPython quits (~crazypyth@98.122.164.118) (Read error: Connection reset by peer) |
| 04:05:07 | → | kam1 joins (~kam1@83.123.154.198) |
| 04:08:01 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 04:08:11 | → | Rudd0 joins (~Rudd0@185.189.115.108) |
| 04:09:07 | × | Sheilong quits (uid293653@gateway/web/irccloud.com/x-lslonovgjxgqvcfu) () |
| 04:09:28 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 04:09:55 | × | kam1 quits (~kam1@83.123.154.198) (Read error: Connection reset by peer) |
| 04:12:58 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 245 seconds) |
| 04:13:57 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds) |
| 04:21:22 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 04:22:42 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 04:23:58 | → | kam1 joins (~kam1@83.123.154.198) |
| 04:24:01 | × | kam1 quits (~kam1@83.123.154.198) (Read error: Connection reset by peer) |
| 04:26:40 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 04:31:45 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds) |
| 04:32:54 | × | CodeAlways quits (uid272474@gateway/web/irccloud.com/x-joqrqepywiyvdqbk) (Quit: Connection closed for inactivity) |
| 04:32:59 | → | toorevitimirp joins (~tooreviti@117.182.180.50) |
| 04:34:45 | × | stree quits (~stree@68.36.8.116) (Quit: Caught exception) |
| 04:34:57 | → | Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas) |
| 04:35:09 | → | stree joins (~stree@68.36.8.116) |
| 04:36:47 | → | rdivyanshu joins (uid322626@gateway/web/irccloud.com/x-ilslhqpdgnemujjo) |
| 04:36:50 | → | CaptainIRS joins (9d31f23d@157.49.242.61) |
| 04:37:09 | × | kiweun quits (~kiweun@2607:fea8:2a62:9600:5883:2b2b:203d:3c57) () |
| 04:39:39 | → | Wuzzy joins (~Wuzzy@p57a2ecf2.dip0.t-ipconnect.de) |
| 04:42:23 | → | ddellacosta joins (~ddellacos@86.106.143.10) |
| 04:43:09 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 04:43:34 | → | __minoru__shirae joins (~shiraeesh@109.166.56.60) |
| 04:43:48 | × | Techcable quits (~Techcable@168.235.93.147) (Quit: ZNC - https://znc.in) |
| 04:44:52 | → | Techcable joins (~Techcable@168.235.93.147) |
| 04:44:58 | → | bdixat joins (~AdminUser@pool-173-76-103-124.bstnma.fios.verizon.net) |
| 04:44:59 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:45:06 | × | joebobjoe quits (~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 246 seconds) |
| 04:45:33 | → | joebobjoe joins (~joebobjoe@unaffiliated/joebobjoe) |
| 04:46:20 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 04:46:30 | × | ddellacosta quits (~ddellacos@86.106.143.10) (Ping timeout: 246 seconds) |
| 04:46:31 | <curiousgay> | gentle introduction to haskell tutorial has a broken example at 7.4 (page 36) |
| 04:46:51 | × | jophish quits (~jophish@li1766-207.members.linode.com) (Ping timeout: 246 seconds) |
| 04:47:52 | <curiousgay> | I don't know how to make putStr work before taking input and I had to replace catch function with catchIOError |
| 04:49:53 | <monochrom> | The issue with putStr is line buffering. If you don't mind s/putStr/putStrLn/ , it's a quick fix and you can move on without going down a rabbit hole. |
| 04:50:16 | × | joebobjoe quits (~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 256 seconds) |
| 04:50:56 | <curiousgay> | monochrom: what about catch function? I tried using the one from Control.Exception and got a type error |
| 04:51:02 | <monochrom> | The issue with catch is an overhaul of Haskell exception system. |
| 04:51:48 | <curiousgay> | ah, so you mean backwards compatibility is broken |
| 04:51:54 | <monochrom> | Yes. |
| 04:57:00 | × | __minoru__shirae quits (~shiraeesh@109.166.56.60) (Ping timeout: 246 seconds) |
| 04:57:18 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 04:57:36 | → | Tario joins (~Tario@201.192.165.173) |
| 05:02:07 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 276 seconds) |
| 05:02:10 | × | dfeuer quits (~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
| 05:04:49 | × | Wuzzy quits (~Wuzzy@p57a2ecf2.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 05:10:05 | <infinisil> | monochrom: Oh when did that happen? |
| 05:11:12 | → | joebobjoe joins (~joebobjoe@unaffiliated/joebobjoe) |
| 05:11:41 | <monochrom> | A long time ago. But basically when Control.Exception was incorporated. |
| 05:12:10 | <monochrom> | which basically around the time of the "async exception" paper |
| 05:12:44 | <monochrom> | or "imprecise exception" or both. |
| 05:15:02 | × | borne quits (~fritjof@200116b86456970065fd8eaafdc5f06e.dip.versatel-1u1.de) (Ping timeout: 264 seconds) |
| 05:15:09 | → | Lycurgus joins (~niemand@98.4.114.199) |
| 05:15:25 | <hololeap> | is safe-exceptions the answer? |
| 05:15:46 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 05:15:46 | <monochrom> | Not in this conversation. |
| 05:16:15 | <monochrom> | Have you read the conversation? |
| 05:16:21 | <Lycurgus> | is it a fp malapropism? |
| 05:16:22 | → | borne joins (~fritjof@200116b86494d2006eea3fb954ab8361.dip.versatel-1u1.de) |
| 05:16:27 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Client Quit) |
| 05:18:36 | × | toorevitimirp quits (~tooreviti@117.182.180.50) (Ping timeout: 256 seconds) |
| 05:18:59 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 05:19:45 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 05:20:39 | → | toorevitimirp joins (~tooreviti@117.182.180.50) |
| 05:20:49 | <hololeap> | apparently. i read the conversation but i admit i don't understand the underlying issue |
| 05:22:52 | <monochrom> | There were two questions. First one was about old code from The Gentle Introduction not compiling today. Second was a history question. |
| 05:23:00 | <glguy> | hololeap, Long ago we just had IOError. You could throw IO error, you could catch them, That was the type of exceptions. Want to make your own exception? userError :: String -> IOError |
| 05:23:33 | <glguy> | A simpler time when nothing went wrong and there weren't any interesting errors to speak about |
| 05:23:42 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds) |
| 05:24:22 | <glguy> | ioError :: IOError -> IO a |
| 05:24:23 | <glguy> | catch :: IO a -> (IOError -> IO a) -> IO a |
| 05:24:26 | <infinisil> | But then everything changed when the fir.. functions wanted to throw their own exceptions |
| 05:24:27 | <c_wraith> | it was sad when we invented a flaky external world |
| 05:25:03 | <glguy> | and then people started writing programs that could fail in elaborate ways and they wanted elaborate, new exception types to throw and catch |
| 05:25:42 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 246 seconds) |
| 05:26:32 | <Lycurgus> | let a hundred fleurs de mal blossom! |
| 05:28:13 | <infinisil> | I'm kind of hoping for some open-union Either way of throwing errors is getting adopted |
| 05:29:25 | → | CMCDragonkai2 joins (~Thunderbi@60-242-118-130.tpgi.com.au) |
| 05:30:37 | <Lycurgus> | in soviet FP, safe-exceptions is a sacred profanity |
| 05:30:45 | × | Lycurgus quits (~niemand@98.4.114.199) (Quit: Exeunt) |
| 05:32:31 | <monochrom> | First you have to get open unions. :) |
| 05:32:52 | <curiousgay> | monochrom: btw, have you tried declarative programming languages that are not functional (for example, logic, dataflow)? I want the picture of declarative programming as a whole |
| 05:34:18 | <hololeap> | so, i take it that the "async exception" paper has nothing to do with AsyncException that safe-exceptions tries to handle? |
| 05:35:56 | <c_wraith> | no, that's what it's about. but that isn't the problem being discussed |
| 05:37:06 | <monochrom> | safe-exceptions is way after both the paper and the type existed. |
| 05:39:30 | <hololeap> | i just read the relevant part of the tutorial mentioned and i think i understand now. |
| 05:39:44 | <monochrom> | I did some Prolog homework a long time ago. Recently I realized that logic programming would be great for writing down type inference algorithms. You just transcribe the type rules, then the computer will fill in unification for you, no need to call "unify" explicitly and manually thread metavariables. |
| 05:41:35 | <hololeap> | i didn't expect it to have a definition of `catch` that is so different from the current version |
| 05:41:40 | → | jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se) |
| 05:41:59 | <hololeap> | s/definition/type signature/ |
| 05:43:14 | <curiousgay> | haha, I'll need to adjust to current standard after I finish reading this tutorial |
| 05:43:15 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Read error: Connection reset by peer) |
| 05:43:38 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 05:44:57 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
| 05:47:33 | × | poscat1 quits (~poscat@123.116.89.28) (Ping timeout: 245 seconds) |
| 05:48:36 | → | poscat joins (~poscat@123.112.148.153) |
| 05:51:37 | → | danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
| 05:53:00 | × | myShoggoth quits (~myShoggot@75.164.81.55) (Ping timeout: 246 seconds) |
| 05:54:03 | → | ddellacosta joins (~ddellacos@86.106.143.10) |
| 05:55:26 | × | kensanata quits (~kensanata@195.140.213.38) (Remote host closed the connection) |
| 05:56:00 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 05:59:19 | × | ddellacosta quits (~ddellacos@86.106.143.10) (Ping timeout: 276 seconds) |
| 06:00:36 | × | poscat quits (~poscat@123.112.148.153) (Remote host closed the connection) |
| 06:01:03 | × | Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007) |
| 06:01:09 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
| 06:02:54 | → | poscat joins (~poscat@123.112.148.153) |
| 06:08:09 | → | bahamas joins (~lucian@unaffiliated/bahamas) |
| 06:09:01 | → | yalm joins (~yalm@unaffiliated/yalm) |
| 06:09:38 | → | frozenErebus joins (~frozenEre@94.128.82.20) |
| 06:14:23 | → | jeremybennett joins (~jeremyben@37.120.211.188) |
| 06:16:52 | × | joebobjoe quits (~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 276 seconds) |
| 06:17:26 | × | bitmapper quits (uid464869@gateway/web/irccloud.com/x-skqtalghxubvhphg) (Quit: Connection closed for inactivity) |
| 06:18:47 | → | slack1256 joins (~slack1256@dvc-186-186-101-190.movil.vtr.net) |
| 06:22:30 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:23:58 | → | kam1 joins (~kam1@83.123.154.198) |
| 06:25:09 | × | xsperry quits (~as@unaffiliated/xsperry) (Ping timeout: 264 seconds) |
| 06:26:57 | × | kam1 quits (~kam1@83.123.154.198) (Read error: Connection reset by peer) |
| 06:27:21 | × | urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna) |
| 06:27:44 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 06:29:07 | → | xsperry joins (~as@unaffiliated/xsperry) |
| 06:29:26 | × | spoonm quits (~spoonm@tokyo.spoonm.org) (Ping timeout: 264 seconds) |
| 06:30:23 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 06:33:48 | × | azure1 quits (~azure@103.154.230.130) (Ping timeout: 245 seconds) |
| 06:34:45 | → | azure1 joins (~azure@103.154.230.130) |
| 06:35:03 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 245 seconds) |
| 06:43:36 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 256 seconds) |
| 06:45:25 | → | mmohammadi9812 joins (~mmohammad@2.178.240.243) |
| 06:46:11 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 06:46:46 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 276 seconds) |
| 06:49:34 | → | v75-AsSeNtE joins (~Raul@host-87-18-109-234.retail.telecomitalia.it) |
| 06:49:47 | <v75-AsSeNtE> | hello |
| 06:49:54 | <v75-AsSeNtE> | !info |
| 06:50:25 | <v75-AsSeNtE> | !request |
| 06:50:56 | <glguy> | v75-AsSeNtE, are you looking for something Haskell related? |
| 06:53:56 | → | raym joins (~ray@45.64.220.113) |
| 06:55:11 | × | bahamas quits (~lucian@unaffiliated/bahamas) (Quit: leaving) |
| 06:55:39 | → | stree joins (~stree@68.36.8.116) |
| 06:56:30 | × | v75-AsSeNtE quits (~Raul@host-87-18-109-234.retail.telecomitalia.it) (Quit: over35 la mia scelta! http://chatover35.altervista.org/) |
| 06:58:31 | <dmwit> | infinisil: Hm. Is the current exception mechanism not essentially an open union-alike? |
| 06:59:23 | × | slack1256 quits (~slack1256@dvc-186-186-101-190.movil.vtr.net) (Read error: Connection reset by peer) |
| 06:59:31 | → | slac36247 joins (~slack1256@dvc-186-186-101-190.movil.vtr.net) |
| 07:00:23 | → | kam1 joins (~kam1@83.123.154.198) |
| 07:00:42 | <infinisil> | dmwit: Hm yeah, though untyped |
| 07:01:00 | <dmwit> | err, untyped? |
| 07:01:59 | → | ddellacosta joins (~ddellacos@86.106.143.70) |
| 07:02:15 | <infinisil> | dmwit: Well, functions don't tell you what they throw |
| 07:02:19 | <infinisil> | from the type signature |
| 07:02:27 | <dmwit> | Ah, yeah, that is true. |
| 07:02:32 | <dmwit> | It's an interesting tradeoff. |
| 07:02:46 | × | toorevitimirp quits (~tooreviti@117.182.180.50) (Remote host closed the connection) |
| 07:03:22 | <dmwit> | For industrial-strength stuff you obviously want that, and the attending annoyance is just enforcing good practices. |
| 07:03:24 | × | kam1 quits (~kam1@83.123.154.198) (Read error: Connection reset by peer) |
| 07:03:46 | <dmwit> | For your one-off weekend projects, you usually don't want that because it gets in the way of throwing together an MVP. |
| 07:04:20 | <infinisil> | I'm not sure if that has to be the case |
| 07:05:08 | <infinisil> | What if an open union for errors was part of base, and all libraries used it |
| 07:05:29 | <dmwit> | I expect most IO-y type signatures would be littered with extra stuff, and most numerical calculations, too. |
| 07:05:31 | × | rdivyanshu quits (uid322626@gateway/web/irccloud.com/x-ilslhqpdgnemujjo) (Quit: Connection closed for inactivity) |
| 07:05:47 | <dmwit> | Do you think they wouldn't? |
| 07:06:21 | <infinisil> | Yeah they might, but that sounds better in the long term |
| 07:06:25 | <dmwit> | (And the closer you get to `main` the larger the collection of litter.) |
| 07:06:41 | <dmwit> | Right. Long-term projects definitely want that, I agree. |
| 07:07:09 | × | ddellacosta quits (~ddellacos@86.106.143.70) (Ping timeout: 264 seconds) |
| 07:07:26 | <dmwit> | Mmm, well. Projects where you care about doing things right want that. ^_^ |
| 07:07:49 | <dmwit> | A lot of hobby programming is just sort of fine with exceptional behavior just being exceptional and crashing. |
| 07:07:56 | <infinisil> | I'm actually not sure how an interface for easily bubbling up errors from arbitrary functions would look like |
| 07:08:47 | <dmwit> | (i.e. there are plenty of long-term but low-impact projects that don't want it) |
| 07:09:24 | <infinisil> | dmwit: I think it could still be explicit then, like using a partial `ignoreError :: Either e a -> a` |
| 07:10:35 | <dmwit> | So you would want some blessed collection of exceptions which did not have to appear in the type signature? |
| 07:11:04 | <infinisil> | Hm no? |
| 07:11:06 | <dmwit> | (Or what choice of "partial" do you make here, if not "throws an exception"? "loops"?) |
| 07:11:36 | <infinisil> | Imagine a hackage where every library returns an Either in case of an error (or something equivalent) |
| 07:11:49 | <infinisil> | Exceptions don't exist |
| 07:12:09 | <dmwit> | So, operationally, what does your ignoreError do, if not throw an exception? |
| 07:12:32 | <infinisil> | `error`'s out, uncatchable, panics |
| 07:12:48 | <dmwit> | That's... what an exception is. |
| 07:12:55 | <infinisil> | exceptions are catchable |
| 07:13:03 | dmwit | shrugs |
| 07:13:06 | <dmwit> | If you say so. |
| 07:13:16 | × | juri_ quits (~juri@178.63.35.222) (Ping timeout: 240 seconds) |
| 07:13:21 | <infinisil> | Well I guess technically it might still be an exception in the rts |
| 07:13:31 | <infinisil> | But it's not exposed in Haskell |
| 07:13:44 | <infinisil> | Calling `error` just stops the program |
| 07:14:17 | <infinisil> | But anyways, `ignoreError` would just be a way to ignore the errors if somebody doesn't want to care about them in a quick and dirty project |
| 07:15:17 | <infinisil> | Nothing I'd encourage using of course, the focus should be on Either (or something equivalent/better) handling and bubbling up |
| 07:15:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:15:51 | <dmwit> | I suspect if you did that you'd just replay the history we've already gone through. Some libraries would cheat and use it when they shouldn't, and then people would demand a way to catch these things so they could deal with cheating libraries, and then we'd find out we wanted structured exceptions and not just (), and then we'd be back where we are now. |
| 07:16:41 | <dmwit> | There's also a separate line about interrupting other threads and stuff. |
| 07:17:11 | <infinisil> | Would history repeat itself if there was a very convenient way to bubble up errors though? |
| 07:18:44 | <dmwit> | Probably. There's plenty of libraries on Hackage that go out of their way to cheat with the mechanisms for cheating we already have, even though the non-cheating version is more convenient. |
| 07:19:18 | <infinisil> | What if there was a GHC extension |
| 07:20:11 | <dmwit> | What does the extension do, and what problem is that solving? |
| 07:20:17 | <infinisil> | Something like "automatically open union all errors in do notation" |
| 07:20:29 | → | juri_ joins (~juri@178.63.35.222) |
| 07:20:37 | <infinisil> | Or idk, infer the type of a function based on that |
| 07:20:50 | <infinisil> | Without the user having to annotate it |
| 07:20:51 | <infinisil> | Idk |
| 07:21:31 | <infinisil> | But I have hope that there's *something* that could be done to have nice ergonomics, whether it be a library or a change in GHC itself |
| 07:21:46 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 07:21:50 | × | waleee-cl quits (uid373333@gateway/web/irccloud.com/x-ztluuxltoyaaemrx) (Quit: Connection closed for inactivity) |
| 07:21:53 | <infinisil> | I shall now read https://www.fpcomplete.com/blog/error-handling-is-hard/ |
| 07:22:00 | <dmwit> | heh |
| 07:27:04 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 276 seconds) |
| 07:27:59 | → | arrowsvc_ joins (~arr@2.93.163.35) |
| 07:30:59 | infinisil | now reads https://www.parsonsmatt.org/2020/01/03/plucking_constraints.html |
| 07:38:16 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 07:39:45 | slac36247 | is now known as slack1256 |
| 07:40:18 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 07:43:19 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 276 seconds) |
| 07:43:57 | → | kam1 joins (~kam1@83.123.154.198) |
| 07:45:22 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
| 07:45:24 | × | slack1256 quits (~slack1256@dvc-186-186-101-190.movil.vtr.net) (Remote host closed the connection) |
| 07:48:13 | × | mmohammadi9812 quits (~mmohammad@2.178.240.243) (Quit: Leaving) |
| 07:49:33 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 07:49:38 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 07:49:46 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 07:56:07 | → | forgottenone joins (~forgotten@176.42.24.172) |
| 07:57:38 | × | borne quits (~fritjof@200116b86494d2006eea3fb954ab8361.dip.versatel-1u1.de) (Ping timeout: 264 seconds) |
| 07:57:41 | → | plutoniix joins (~q@node-uj8.pool-125-24.dynamic.totinternet.net) |
| 07:58:53 | → | aggin joins (~ecm@103.88.87.21) |
| 08:00:01 | → | magnuscake joins (~magnuscak@87-121-92-61.dyn.launtel.net.au) |
| 08:02:04 | <magnuscake> | Hey peeps |
| 08:02:14 | <magnuscake> | Folds are giving me such a hard time :( |
| 08:02:16 | <magnuscake> | Anyways |
| 08:02:17 | <magnuscake> | https://paste.tomsmeding.com/SGdQKBdk |
| 08:02:19 | <dmwit> | o/ |
| 08:02:46 | <magnuscake> | I am having a hard time understanding everything after the `where` part |
| 08:03:07 | <magnuscake> | I understand what its doing |
| 08:03:09 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 272 seconds) |
| 08:03:24 | <magnuscake> | But I can't understand how |
| 08:03:58 | <dmwit> | Yikes, this code is... not good. |
| 08:04:07 | <dmwit> | Anyway we should be able to get you to where you understand it. |
| 08:04:23 | <magnuscake> | I saw a couple of instances of the same code from different people |
| 08:04:38 | × | frozenErebus quits (~frozenEre@94.128.82.20) (Ping timeout: 256 seconds) |
| 08:04:44 | <magnuscake> | So my question is |
| 08:04:54 | <dmwit> | FWIW I would filterDbDate items = [date | DbDate date <- items]. |
| 08:05:12 | <magnuscake> | Yeah of course that makes a lot more sense |
| 08:05:20 | <magnuscake> | But in this case, we have to use folds |
| 08:05:30 | × | aggin quits (~ecm@103.88.87.21) (Quit: WeeChat 3.0.1) |
| 08:05:40 | <magnuscake> | How does that getDate thing work |
| 08:05:41 | <dmwit> | Even if you must use a fold this can be done in various better ways. But never mind. |
| 08:05:46 | <magnuscake> | I didn't know that was valid syntax |
| 08:05:57 | <dmwit> | Hm, which bit of syntax surprises you, exactly? |
| 08:06:29 | <magnuscake> | So I get `getDate` is the function to apply to the list values |
| 08:06:38 | <dmwit> | Right. |
| 08:06:41 | <magnuscake> | But how does the whole |
| 08:06:51 | × | kam1 quits (~kam1@83.123.154.198) (Read error: Connection reset by peer) |
| 08:06:52 | <magnuscake> | getDate (DbDate date) xs =... |
| 08:06:59 | <magnuscake> | Work? |
| 08:07:03 | <magnuscake> | Sorry for being too general |
| 08:07:12 | <dmwit> | Is it the `(DbDate date)` bit that's surprising you? |
| 08:07:21 | <dmwit> | If so, it's called pattern matching. |
| 08:07:29 | × | jathan quits (~jathan@69.61.93.38) (Quit: WeeChat 2.3) |
| 08:07:36 | <magnuscake> | Oh yes I undertand that |
| 08:07:41 | <dmwit> | Hm, okay. |
| 08:07:58 | <magnuscake> | So taking the example of a case in Haskell |
| 08:08:08 | <magnuscake> | If a certain statement is true |
| 08:08:09 | <dmwit> | Well, there's... really not much more to `getDate (DbDate date) xs =` than that. `DbDate date` is a pattern match, `xs` is a pattern match. That's it. |
| 08:08:32 | <magnuscake> | So does it mean |
| 08:09:01 | <magnuscake> | foldr getDate (DbDate date) xs |
| 08:09:15 | <magnuscake> | As in when the function finds a valid pattern? |
| 08:09:36 | <dmwit> | Hm, no, this function is applied to every element of the list. |
| 08:09:46 | <dmwit> | If the `DbDate date` pattern doesn't match, it proceeds to the next line. |
| 08:09:51 | <dmwit> | (And the next line always matches.) |
| 08:09:57 | × | xff0x quits (~xff0x@2001:1a81:5243:ae00:c201:8f39:a8f8:4489) (Ping timeout: 260 seconds) |
| 08:10:30 | <magnuscake> | Ok. And what about the xs ++ [date] at the end |
| 08:10:36 | <dmwit> | Another way to write this that may be more comfortable for you, if you understand `case`, is `getDate v xs = case v of { DbDate date -> xs ++ [date]; _ -> xs ++ [] }`. |
| 08:10:37 | × | yalm quits (~yalm@unaffiliated/yalm) (Quit: WeeChat 3.0.1) |
| 08:10:54 | → | xff0x joins (~xff0x@2001:1a81:5243:ae00:7d99:4326:2dd6:91b3) |
| 08:10:59 | <dmwit> | `xs ++ [date]` appends two lists. The first is `xs`. The second is a list with a single item, namely, `date`. |
| 08:11:02 | <dmwit> | For example: |
| 08:11:04 | <magnuscake> | Ah yes that makes it easier |
| 08:11:08 | <dmwit> | > [5, 7, 100] ++ [3] |
| 08:11:10 | <lambdabot> | [5,7,100,3] |
| 08:11:17 | <magnuscake> | Ok |
| 08:11:34 | <magnuscake> | But isn't xs supposed to be the list that is passed to the function |
| 08:11:47 | <magnuscake> | Or rather the list the function is applied to |
| 08:11:51 | <dmwit> | Hm. You say "the function", but there are (at least) two functions here. |
| 08:12:13 | <magnuscake> | Sorry the main `filterDbDate` |
| 08:12:18 | <dmwit> | `xs` definitely is not the `[DatabaseItem]` that's supplied to `filterDbDate`. |
| 08:12:26 | <magnuscake> | I suppose that is where the xs is coming from? |
| 08:12:54 | <dmwit> | No. The first argument to `getDate` is a list element. The second is some value that's getting accumulated during the fold. It starts as `[]`, and is extended by calling `getDate`. |
| 08:13:32 | <dmwit> | (precision: the first argument to `getDate` is an element of the list that's supplied to `filterDbDate`) |
| 08:13:36 | <magnuscake> | Oh |
| 08:13:57 | <magnuscake> | Yes yes its more clear now |
| 08:14:08 | <dmwit> | \\o/ |
| 08:14:21 | <dmwit> | heh, whoops. I grew an extra arm. I'm not very good at IRC |
| 08:14:51 | <magnuscake> | Lol. Anyways |
| 08:15:16 | <magnuscake> | Where does this whole pattern of writing the the function this way come from |
| 08:15:22 | <magnuscake> | As in |
| 08:15:31 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 08:15:41 | <magnuscake> | I don't think I have seen this sort of thing with folds |
| 08:16:07 | <dmwit> | Can you give a few examples of other things that you would consider to be "this sort of thing"? |
| 08:16:12 | <dmwit> | I don't really know what that means. |
| 08:16:23 | <magnuscake> | From what I have learnt, the arguments are all passed in one line, as in with a foldr |
| 08:16:30 | <magnuscake> | Oh yes just give me a sec |
| 08:16:33 | <dmwit> | (Maybe also a few negative examples -- i.e. of things that are "not this sort of thing".) |
| 08:18:42 | <magnuscake> | Maybe its due to my limited knowledge, but here is a simple one: |
| 08:18:45 | <magnuscake> | foldr const 0 "tacos" |
| 08:18:57 | <magnuscake> | Now this is easy to understand |
| 08:19:23 | <magnuscake> | Lets say, we replace const with something we define ourselves to fold the list eventually |
| 08:19:56 | CMCDragonkai2 | is now known as CMCDragonkai |
| 08:20:00 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds) |
| 08:20:07 | <magnuscake> | Couldn't we, instead of defining the whole thing as a function instead of using the where ... |
| 08:20:16 | <magnuscake> | Or is that even possible? |
| 08:20:52 | <magnuscake> | I hope you get what I am saying |
| 08:21:04 | <dmwit> | You ask, "Couldn't we, instead of X...?". But usually such a question must go in the form "Couldn't we, instead of X, do Y?". |
| 08:21:38 | <magnuscake> | lol sorry I meant it that way |
| 08:22:00 | <dmwit> | ...meant it what way? |
| 08:22:17 | <magnuscake> | Couldn't we define the whole thing after the `where` in a single function that we pass as the argument to foldr? |
| 08:22:29 | <dmwit> | Isn't that what was done? |
| 08:22:45 | <magnuscake> | Is it? |
| 08:23:11 | <magnuscake> | Ok I guess I was overthinking it |
| 08:23:19 | <dmwit> | Yes. We defined "the whole thing" (getDate) after the `where` in a single function that we pass as the argument to foldr. |
| 08:23:42 | <magnuscake> | Oo ok |
| 08:24:09 | <magnuscake> | Btw what was the easier way you were talking about? |
| 08:24:22 | <magnuscake> | To write the above? If you don't mind sharing |
| 08:24:23 | <dmwit> | I don't believe I ever claimed "easier". Only "better". |
| 08:24:38 | <magnuscake> | Yes better |
| 08:25:10 | <dmwit> | This implementation is quadratic, because it repeatedly appends to the list. |
| 08:25:24 | <dmwit> | Additionally, it goes `xs ++ []`, which doesn't do anything, but spends a lot of time. |
| 08:26:03 | <dmwit> | You can fix those two things in various ways. One way would be `filterDbDate = reverse . foldr getDate [] where getDate (DbDate date) xs = date:xs; getDate _ xs = xs`. |
| 08:27:00 | <dmwit> | Another would be to use a so-called "difference list", as in `filterDbDate items = foldr getDate id items [] where getDate (DbDate date) f = f . (date:); getDate _ f = f`. |
| 08:27:51 | <magnuscake> | Hmmm yes that does look better |
| 08:28:33 | <magnuscake> | I'll def add those those to my notes |
| 08:28:50 | <dmwit> | I guess there's probably also something with a left fold? IDK. |
| 08:29:20 | <dmwit> | But my favorite way is still to not use a fold, because the non-fold implementation is so immediately clear to beginner and expert alike. |
| 08:29:43 | <dmwit> | (without sacrificing performance) |
| 08:29:49 | <magnuscake> | Hmmm yes but got to flex those foldr skills |
| 08:29:57 | dmwit | nods |
| 08:29:58 | <magnuscake> | Its been challenging |
| 08:30:09 | <magnuscake> | Can't wait to get to monads lol |
| 08:30:17 | <magnuscake> | Anyways |
| 08:30:47 | <magnuscake> | That definitely clears it up. Thank you very much for your time dmwit |
| 08:31:18 | <dmwit> | 👍 |
| 08:31:35 | × | magnuscake quits (~magnuscak@87-121-92-61.dyn.launtel.net.au) (Quit: Leaving) |
| 08:34:23 | → | CodeAlways joins (uid272474@gateway/web/irccloud.com/x-jbfyoygjgujgyaip) |
| 08:34:49 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 08:36:58 | × | pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!) |
| 08:39:05 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 08:45:09 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:45:10 | <olligobber> | @src (++) |
| 08:45:10 | <lambdabot> | [] ++ ys = ys |
| 08:45:11 | <lambdabot> | (x:xs) ++ ys = x : (xs ++ ys) |
| 08:45:11 | <lambdabot> | -- OR |
| 08:45:11 | <lambdabot> | xs ++ ys = foldr (:) ys xs |
| 08:45:33 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds) |
| 08:48:56 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 08:51:15 | × | Unhammer quits (~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection) |
| 08:52:22 | → | Unhammer joins (~Unhammer@gateway/tor-sasl/unhammer) |
| 08:53:25 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 08:54:43 | × | drbean quits (~drbean@TC210-63-209-78.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in) |
| 08:56:14 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 08:57:58 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 245 seconds) |
| 08:58:43 | × | Benzi-Junior quits (~BenziJuni@dsl-149-64-40.hive.is) (Ping timeout: 276 seconds) |
| 09:00:15 | → | borne joins (~fritjof@200116b86494d20065fd8eaafdc5f06e.dip.versatel-1u1.de) |
| 09:00:36 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 246 seconds) |
| 09:04:08 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 256 seconds) |
| 09:04:09 | × | juri_ quits (~juri@178.63.35.222) (Ping timeout: 264 seconds) |
| 09:05:57 | × | borne quits (~fritjof@200116b86494d20065fd8eaafdc5f06e.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
| 09:06:27 | → | borne joins (~fritjof@2a06:8782:ffbb:1337:e811:68d9:a46:a27f) |
| 09:07:27 | × | jeremybennett quits (~jeremyben@37.120.211.188) (Remote host closed the connection) |
| 09:08:46 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 09:13:11 | → | Benzi-Junior joins (~BenziJuni@88-149-64-40.du.xdsl.is) |
| 09:14:55 | → | magnuscake joins (~magnuscak@87-121-92-61.dyn.launtel.net.au) |
| 09:16:14 | → | stree joins (~stree@68.36.8.116) |
| 09:18:17 | → | pera joins (~pera@unaffiliated/pera) |
| 09:20:31 | × | jonatan quits (~nate@h77-53-70-163.cust.a3fiber.se) (Ping timeout: 256 seconds) |
| 09:22:13 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Remote host closed the connection) |
| 09:22:27 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 09:27:15 | → | wilkie joins (~wilkie@217.146.82.202) |
| 09:27:22 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
| 09:27:58 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 245 seconds) |
| 09:28:36 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 09:29:21 | × | CMCDragonkai quits (~Thunderbi@60-242-118-130.tpgi.com.au) (Ping timeout: 264 seconds) |
| 09:31:26 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 09:31:40 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 09:32:12 | × | vicfred quits (vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving) |
| 09:34:00 | × | Kaiepi quits (~Kaiepi@47.54.252.148) (Remote host closed the connection) |
| 09:35:21 | × | Waifod quits (~Waifod@91.106.123.186) (Ping timeout: 264 seconds) |
| 09:35:53 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 245 seconds) |
| 09:36:47 | → | Waifod joins (Waifod@gateway/vpn/protonvpn/waifod) |
| 09:40:48 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 09:42:19 | → | jonatan joins (~nate@h77-53-70-163.cust.a3fiber.se) |
| 09:45:37 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 09:45:53 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 245 seconds) |
| 09:48:27 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 09:48:54 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 09:49:04 | CodeAlways | is now known as SaitamaPlus |
| 09:49:53 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 09:52:04 | → | mikoto-chan joins (~anass@gateway/tor-sasl/mikoto-chan) |
| 09:57:19 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 10:01:27 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection) |
| 10:01:32 | → | spoonm joins (~spoonm@tokyo.spoonm.org) |
| 10:01:46 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 10:03:59 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 10:04:34 | → | Kaiepi joins (~Kaiepi@47.54.252.148) |
| 10:04:52 | × | borne quits (~fritjof@2a06:8782:ffbb:1337:e811:68d9:a46:a27f) (Ping timeout: 260 seconds) |
| 10:05:28 | → | Tops2 joins (~Tobias@dyndsl-095-033-094-082.ewe-ip-backbone.de) |
| 10:06:57 | → | __minoru__shirae joins (~shiraeesh@109.166.56.117) |
| 10:06:58 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 276 seconds) |
| 10:07:20 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 10:08:13 | → | borne joins (~fritjof@2a06:8782:ffbb:1337:e811:68d9:a46:a27f) |
| 10:08:30 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds) |
| 10:08:48 | × | mikoto-chan quits (~anass@gateway/tor-sasl/mikoto-chan) (Remote host closed the connection) |
| 10:09:11 | → | mikoto-chan joins (~anass@gateway/tor-sasl/mikoto-chan) |
| 10:12:33 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds) |
| 10:12:38 | × | borne quits (~fritjof@2a06:8782:ffbb:1337:e811:68d9:a46:a27f) (Ping timeout: 264 seconds) |
| 10:13:33 | → | borne joins (~fritjof@2a06:8782:ffbb:1337:e811:68d9:a46:a27f) |
| 10:17:47 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 10:19:28 | → | SanchayanM joins (~Sanchayan@106.201.41.226) |
| 10:22:37 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) |
| 10:26:23 | <gentauro> | lambdabot: s/[] ++ ys = ys/[ ] ++ ys = ys/ |
| 10:26:33 | <gentauro> | i mean |
| 10:26:39 | <gentauro> | lambdabot: s/[] ++ ys = ys/[ ] ++ ys = ys/ |
| 10:26:41 | <gentauro> | :) |
| 10:27:38 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds) |
| 10:28:17 | × | jespada quits (~jespada@90.254.243.187) (Quit: Leaving) |
| 10:28:20 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 10:28:36 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Client Quit) |
| 10:29:56 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 10:30:18 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Client Quit) |
| 10:35:12 | × | zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving) |
| 10:36:27 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 10:36:34 | → | zaquest joins (~notzaques@5.128.210.178) |
| 10:41:02 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds) |
| 10:42:30 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 10:46:47 | → | Carlos_14 joins (~Carlos_14@185.130.146.38) |
| 10:47:23 | ← | Carlos_14 parts (~Carlos_14@185.130.146.38) () |
| 10:49:54 | → | Carlos_14 joins (~Carlos_14@185.130.146.38) |
| 10:50:51 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 10:52:00 | → | Tops21 joins (~Tobias@dyndsl-095-033-094-082.ewe-ip-backbone.de) |
| 10:53:43 | × | Carlos_14 quits (~Carlos_14@185.130.146.38) (Remote host closed the connection) |
| 10:54:22 | × | Guest48052 quits (~textual@2603-7000-3040-0000-b05d-e0a9-84ee-9eef.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 10:54:25 | × | pera quits (~pera@unaffiliated/pera) (Ping timeout: 276 seconds) |
| 10:55:08 | → | Tops22 joins (~Tobias@dyndsl-095-033-094-082.ewe-ip-backbone.de) |
| 10:55:46 | × | Tops2 quits (~Tobias@dyndsl-095-033-094-082.ewe-ip-backbone.de) (Ping timeout: 256 seconds) |
| 10:56:18 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 245 seconds) |
| 10:58:36 | × | Tops21 quits (~Tobias@dyndsl-095-033-094-082.ewe-ip-backbone.de) (Ping timeout: 256 seconds) |
| 11:02:19 | → | son0p joins (~son0p@181.58.39.182) |
| 11:05:31 | → | juri_ joins (~juri@178.63.35.222) |
| 11:09:21 | × | borne quits (~fritjof@2a06:8782:ffbb:1337:e811:68d9:a46:a27f) (Ping timeout: 272 seconds) |
| 11:10:23 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 11:11:08 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 11:14:34 | × | magnuscake quits (~magnuscak@87-121-92-61.dyn.launtel.net.au) (Ping timeout: 276 seconds) |
| 11:15:36 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
| 11:16:09 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds) |
| 11:24:40 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 256 seconds) |
| 11:27:25 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 11:32:21 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds) |
| 11:35:15 | → | idhugo joins (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) |
| 11:36:57 | → | stree joins (~stree@68.36.8.116) |
| 11:45:15 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:46:33 | → | Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
| 11:49:07 | → | pera joins (~pera@unaffiliated/pera) |
| 11:51:02 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 11:51:51 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 11:53:22 | → | toorevitimirp joins (~tooreviti@117.182.180.50) |
| 11:56:10 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 276 seconds) |
| 11:59:07 | → | frozenErebus joins (~frozenEre@94.128.82.20) |
| 11:59:50 | → | Alleria joins (~textual@2603-7000-3040-0000-b05d-e0a9-84ee-9eef.res6.spectrum.com) |
| 12:00:13 | Alleria | is now known as Guest62405 |
| 12:01:32 | → | jacks2 joins (~bc8134e3@217.29.117.252) |
| 12:03:52 | → | asheshambasta joins (~user@ptr-e1lysax7wb2jvi3x8cp.18120a2.ip6.access.telenet.be) |
| 12:04:50 | × | Guest62405 quits (~textual@2603-7000-3040-0000-b05d-e0a9-84ee-9eef.res6.spectrum.com) (Ping timeout: 264 seconds) |
| 12:06:34 | × | pera quits (~pera@unaffiliated/pera) (Ping timeout: 276 seconds) |
| 12:06:52 | → | pera joins (~pera@unaffiliated/pera) |
| 12:11:18 | × | frozenErebus quits (~frozenEre@94.128.82.20) (Ping timeout: 245 seconds) |
| 12:12:44 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 12:15:34 | → | Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck) |
| 12:18:41 | → | m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
| 12:19:13 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 12:24:03 | → | neiluj joins (~jco@91-167-203-101.subs.proxad.net) |
| 12:24:09 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) |
| 12:24:23 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 12:25:03 | × | neiluj quits (~jco@91-167-203-101.subs.proxad.net) (Changing host) |
| 12:25:03 | → | neiluj joins (~jco@unaffiliated/neiluj) |
| 12:25:03 | × | __minoru__shirae quits (~shiraeesh@109.166.56.117) (Ping timeout: 245 seconds) |
| 12:25:21 | × | xff0x quits (~xff0x@2001:1a81:5243:ae00:7d99:4326:2dd6:91b3) (Ping timeout: 272 seconds) |
| 12:26:07 | → | xff0x joins (~xff0x@2001:1a81:5243:ae00:5e7b:1781:48fd:8ee9) |
| 12:27:27 | × | idhugo quits (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Ping timeout: 246 seconds) |
| 12:28:01 | → | JokerAscensionEx joins (~egp_@2.95.74.168) |
| 12:28:08 | × | JokerAscensionEx quits (~egp_@2.95.74.168) (Remote host closed the connection) |
| 12:28:50 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
| 12:28:50 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds) |
| 12:31:09 | → | ddellacosta joins (~ddellacos@86.106.143.213) |
| 12:31:16 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 276 seconds) |
| 12:32:18 | → | geekosaur joins (ac3a5746@172.58.87.70) |
| 12:34:27 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 12:35:10 | × | Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 276 seconds) |
| 12:35:20 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 12:35:42 | × | seanparsons quits (~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Quit: ZNC 1.8.1 - https://znc.in) |
| 12:35:57 | × | ddellacosta quits (~ddellacos@86.106.143.213) (Ping timeout: 264 seconds) |
| 12:38:23 | × | raym quits (~ray@45.64.220.113) (Quit: leaving) |
| 12:38:55 | × | toorevitimirp quits (~tooreviti@117.182.180.50) (Quit: Konversation terminated!) |
| 12:45:21 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 12:46:53 | × | asheshambasta quits (~user@ptr-e1lysax7wb2jvi3x8cp.18120a2.ip6.access.telenet.be) (Ping timeout: 272 seconds) |
| 12:48:16 | → | drbean joins (~drbean@TC210-63-209-202.static.apol.com.tw) |
| 12:48:23 | × | pera quits (~pera@unaffiliated/pera) (Ping timeout: 245 seconds) |
| 12:49:57 | → | toorevitimirp joins (~tooreviti@117.182.180.50) |
| 12:50:03 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 245 seconds) |
| 12:50:34 | → | tfl^ joins (tfl@ip98-184-89-2.mc.at.cox.net) |
| 12:54:26 | × | SanchayanM quits (~Sanchayan@106.201.41.226) (Quit: SanchayanM) |
| 12:55:18 | → | JokerAscensionEx joins (~egp_@2.95.74.168) |
| 12:55:26 | × | JokerAscensionEx quits (~egp_@2.95.74.168) (Remote host closed the connection) |
| 12:55:30 | → | Aquazi joins (uid312403@gateway/web/irccloud.com/x-tmzskshpdqzcnhax) |
| 12:57:33 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 264 seconds) |
| 12:57:43 | → | Wuzzy joins (~Wuzzy@p57a2ecf2.dip0.t-ipconnect.de) |
| 13:00:46 | → | bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 13:01:34 | → | Alleria joins (~textual@zrcout.mskcc.org) |
| 13:01:57 | Alleria | is now known as Guest16306 |
| 13:04:21 | × | _ashbreeze_ quits (~mark@64.85.214.234.reverse.socket.net) (*.net *.split) |
| 13:04:21 | × | lawid quits (~quassel@dslb-090-186-208-048.090.186.pools.vodafone-ip.de) (*.net *.split) |
| 13:04:21 | × | e2 quits (e2@sponsored.by.bnc4you.xyz) (*.net *.split) |
| 13:04:21 | × | cgfbee quits (~bot@oc1.itim-cj.ro) (*.net *.split) |
| 13:04:21 | × | tv quits (~tv@unaffiliated/tv) (*.net *.split) |
| 13:04:21 | × | mniip quits (mniip@freenode/staff/mniip) (*.net *.split) |
| 13:04:21 | × | andjjj23 quits (~irc@107.170.228.47) (*.net *.split) |
| 13:04:21 | × | chirpsalot quits (~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) (*.net *.split) |
| 13:04:21 | × | thebnq quits (~bnq@herrokitty.com) (*.net *.split) |
| 13:04:21 | × | Chousuke quits (oranenj@coffee.modeemi.fi) (*.net *.split) |
| 13:04:21 | × | icebreaker quits (michalc@unaffiliated/icebreaker) (*.net *.split) |
| 13:04:21 | × | swater quits (bouhier200@perso.iiens.net) (*.net *.split) |
| 13:04:21 | × | oldsk00l quits (~znc@ec2-18-130-254-135.eu-west-2.compute.amazonaws.com) (*.net *.split) |
| 13:04:21 | × | toppler` quits (~user@mtop.default.momentoftop.uk0.bigv.io) (*.net *.split) |
| 13:04:21 | × | charukiewicz quits (~quassel@irouteince04.i.subnet.rcn.com) (*.net *.split) |
| 13:04:21 | × | bendo_ quits (~bendo@130.61.122.121) (*.net *.split) |
| 13:04:21 | × | anoe quits (~anoe@delanoe.org) (*.net *.split) |
| 13:04:21 | × | ij quits (~ij@NixOS/user/siers) (*.net *.split) |
| 13:04:21 | × | orcus quits (~orcus@unaffiliated/orcus) (*.net *.split) |
| 13:04:21 | × | ymherklotz quits (~ymherklot@ee-ymh15.ee.ic.ac.uk) (*.net *.split) |
| 13:04:21 | × | sqrt2 quits (~ben@unaffiliated/sqrt2) (*.net *.split) |
| 13:04:21 | × | cpape`` quits (~user@static.180.18.203.116.clients.your-server.de) (*.net *.split) |
| 13:04:21 | × | pierrot quits (~pi@unaffiliated/pierrot) (*.net *.split) |
| 13:04:21 | × | leifm quits (~leifm@dawn.whatbox.ca) (*.net *.split) |
| 13:04:21 | × | electrostat quits (~dag@unaffiliated/electrostat) (*.net *.split) |
| 13:04:21 | × | codedmart quits (~codedmart@149.28.9.205) (*.net *.split) |
| 13:04:21 | × | filwisher_ quits (~filwisher@78.141.201.45) (*.net *.split) |
| 13:04:21 | × | andi- quits (~andi-@NixOS/user/andi-) (*.net *.split) |
| 13:04:21 | × | tolt quits (~weechat-h@li219-154.members.linode.com) (*.net *.split) |
| 13:04:21 | × | Patternmaster quits (~georg@li1192-118.members.linode.com) (*.net *.split) |
| 13:04:21 | × | runawayfive quits (~nope@unaffiliated/runawayfive) (*.net *.split) |
| 13:04:21 | × | wagle quits (~wagle@quassel.wagle.io) (*.net *.split) |
| 13:04:21 | × | acro quits (~acro@unaffiliated/acro) (*.net *.split) |
| 13:04:21 | × | newsham_ quits (~ubuntu@ec2-18-218-216-88.us-east-2.compute.amazonaws.com) (*.net *.split) |
| 13:04:21 | × | kumo quits (~kumo@139.180.144.166) (*.net *.split) |
| 13:04:21 | × | tchakka quits (~tchakkazu@static-47-180-28-65.lsan.ca.frontiernet.net) (*.net *.split) |
| 13:04:21 | × | vancz_ quits (~vancz@unaffiliated/vancz) (*.net *.split) |
| 13:04:21 | × | pie_ quits (~pie_bnc]@unaffiliated/pie-/x-0787662) (*.net *.split) |
| 13:04:21 | × | stiell quits (~stian@fsf/member/stiell) (*.net *.split) |
| 13:04:21 | × | qz quits (~quetzal@li272-85.members.linode.com) (*.net *.split) |
| 13:04:21 | × | cross quits (~cross@spitfire.i.gajendra.net) (*.net *.split) |
| 13:04:21 | × | fredcy quits (~fredcy@mail.yankowski.com) (*.net *.split) |
| 13:04:21 | × | Clint quits (~Clint@libre.fm/hacker/clint) (*.net *.split) |
| 13:04:21 | × | ibloom quits (sid350277@gateway/web/irccloud.com/x-teixkoeowtnjnhtx) (*.net *.split) |
| 13:04:21 | × | grfn quits (sid449115@gateway/web/irccloud.com/x-itpsiegdpgfcmhuq) (*.net *.split) |
| 13:04:21 | × | jhuizy quits (~jhuizy@static.241.188.216.95.clients.your-server.de) (*.net *.split) |
| 13:04:21 | × | adium quits (adium@unaffiliated/adium) (*.net *.split) |
| 13:04:21 | × | jtobin quits (~jtobin@li1555-212.members.linode.com) (*.net *.split) |
| 13:04:21 | × | Unode quits (~Unode@unaffiliated/unode) (*.net *.split) |
| 13:04:21 | × | Twey quits (~twey@unaffiliated/twey) (*.net *.split) |
| 13:04:21 | × | kaol quits (~kaol@178.62.241.234) (*.net *.split) |
| 13:04:21 | × | metadave quits (sid28102@gateway/web/irccloud.com/x-jepzsdjwnpmillkf) (*.net *.split) |
| 13:04:21 | × | teehemkay quits (sid14792@gateway/web/irccloud.com/x-xjeoshtnvicuunzo) (*.net *.split) |
| 13:04:21 | × | joel135 quits (sid136450@gateway/web/irccloud.com/x-rryyobdkncseyrpe) (*.net *.split) |
| 13:04:21 | × | NemesisD quits (sid24071@gateway/web/irccloud.com/x-fyuwobsnbmjnxtac) (*.net *.split) |
| 13:04:21 | × | jassob quits (~jassob@korrob.vth.sgsnet.se) (*.net *.split) |
| 13:04:21 | × | exarkun quits (~exarkun@14.79.69.34.bc.googleusercontent.com) (*.net *.split) |
| 13:04:21 | × | whatisRT quits (~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de) (*.net *.split) |
| 13:04:21 | × | PlasmaStar quits (plasma@unaffiliated/plasmastar) (*.net *.split) |
| 13:04:21 | × | glamas quits (~glamas@107.182.17.237) (*.net *.split) |
| 13:04:21 | × | kipras`away quits (~kipras@re199n846.sritis.lt) (*.net *.split) |
| 13:04:21 | × | relrod quits (~relrod@redhat/ansible.staff.relrod) (*.net *.split) |
| 13:04:21 | × | jvanbure quits (~jvanbure@159.65.233.183) (*.net *.split) |
| 13:04:21 | × | dredozubov quits (~dredozubo@37.139.21.214) (*.net *.split) |
| 13:04:22 | × | towel quits (~towel@unaffiliated/towel) (*.net *.split) |
| 13:04:22 | × | eagleflo quits (~aku@eagleflow.fi) (*.net *.split) |
| 13:04:22 | × | t36s quits (~t36s@138.68.90.188) (*.net *.split) |
| 13:04:22 | × | xts quits (~ts@46.101.20.9) (*.net *.split) |
| 13:04:27 | → | magicman joins (~tchakkazu@static-47-180-28-65.lsan.ca.frontiernet.net) |
| 13:04:27 | → | relrod joins (~relrod@origin.elrod.me) |
| 13:04:28 | → | icebreaker joins (michalc@freeshell.de) |
| 13:04:28 | → | lawid joins (~quassel@dslb-090-186-208-048.090.186.pools.vodafone-ip.de) |
| 13:04:28 | × | icebreaker quits (michalc@freeshell.de) (Changing host) |
| 13:04:28 | → | icebreaker joins (michalc@unaffiliated/icebreaker) |
| 13:04:28 | → | swater_ joins (bouhier200@perso.iiens.net) |
| 13:04:29 | → | Chousuke_ joins (oranenj@coffee.modeemi.fi) |
| 13:04:29 | → | thebnq joins (~bnq@herrokitty.com) |
| 13:04:29 | × | relrod quits (~relrod@origin.elrod.me) (Changing host) |
| 13:04:29 | → | relrod joins (~relrod@redhat/ansible.staff.relrod) |
| 13:04:30 | → | glamas joins (~glamas@107.182.17.237) |
| 13:04:30 | → | eagleflo joins (~aku@eagleflow.fi) |
| 13:04:32 | → | ymherklotz joins (~ymherklot@2a0c:5bc0:40:107b:fdfc:4d2d:898a:f9f5) |
| 13:04:32 | → | kipras`away joins (~kipras@re199n846.sritis.lt) |
| 13:04:32 | → | anoe joins (~anoe@delanoe.org) |
| 13:04:33 | → | wagle joins (~wagle@quassel.wagle.io) |
| 13:04:33 | → | Clint joins (~Clint@libre.fm/hacker/clint) |
| 13:04:34 | → | joel135 joins (sid136450@gateway/web/irccloud.com/x-oaoaohovhhkrzuvg) |
| 13:04:34 | → | metadave joins (sid28102@gateway/web/irccloud.com/x-ojtbvqwfgtmjogse) |
| 13:04:34 | → | xts joins (~ts@46.101.20.9) |
| 13:04:34 | → | filwisher joins (~filwisher@78.141.201.45) |
| 13:04:36 | → | Patternmaster joins (~georg@li1192-118.members.linode.com) |
| 13:04:36 | → | towel_ joins (~towel@unaffiliated/towel) |
| 13:04:36 | → | fredcy joins (~fredcy@mail.yankowski.com) |
| 13:04:36 | → | pie_ joins (~pie_bnc]@unaffiliated/pie-/x-0787662) |
| 13:04:36 | → | vancz joins (~vancz@unaffiliated/vancz) |
| 13:04:36 | → | sqrt2_ joins (~ben@unaffiliated/sqrt2) |
| 13:04:37 | → | pierrot joins (~pi@unaffiliated/pierrot) |
| 13:04:37 | → | toppler` joins (~user@mtop.default.momentoftop.uk0.bigv.io) |
| 13:04:37 | → | qz joins (~quetzal@li272-85.members.linode.com) |
| 13:04:38 | → | grfn joins (sid449115@gateway/web/irccloud.com/x-kcukqthhmxycekel) |
| 13:04:38 | → | bendo joins (~bendo@130.61.122.121) |
| 13:04:38 | → | teehemkay joins (sid14792@gateway/web/irccloud.com/x-hoggebnksvacugax) |
| 13:04:38 | → | jvanbure joins (~jvanbure@159.65.233.183) |
| 13:04:38 | → | ibloom joins (sid350277@gateway/web/irccloud.com/x-xmmzzmccpahpnuwt) |
| 13:04:38 | → | t36s joins (~t36s@2a03:b0c0:3:d0::1c23:5001) |
| 13:04:39 | → | cpape``` joins (~user@static.180.18.203.116.clients.your-server.de) |
| 13:04:39 | → | NemesisD joins (sid24071@gateway/web/irccloud.com/x-mxvrvawysstqytii) |
| 13:04:39 | → | electrostat joins (~dag@unaffiliated/electrostat) |
| 13:04:39 | → | leifm joins (~leifm@dawn.whatbox.ca) |
| 13:04:39 | → | dredozubov joins (~dredozubo@37.139.21.214) |
| 13:04:39 | → | codedmart joins (~codedmart@149.28.9.205) |
| 13:04:39 | → | exarkun joins (~exarkun@14.79.69.34.bc.googleusercontent.com) |
| 13:04:39 | → | whatisRT joins (~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de) |
| 13:04:40 | → | jtobin joins (~jtobin@li1555-212.members.linode.com) |
| 13:04:40 | → | newsham joins (~ubuntu@ec2-18-218-216-88.us-east-2.compute.amazonaws.com) |
| 13:04:41 | → | orcus joins (~orcus@unaffiliated/orcus) |
| 13:04:42 | → | _ashbreeze_ joins (~mark@64.85.214.234.reverse.socket.net) |
| 13:04:42 | → | siers joins (~ij@2a03:b0c0:1:e0::366:f001) |
| 13:04:49 | → | cross joins (~cross@spitfire.i.gajendra.net) |
| 13:05:00 | → | jhuizy joins (~jhuizy@static.241.188.216.95.clients.your-server.de) |
| 13:05:00 | → | andjjj23 joins (~irc@107.170.228.47) |
| 13:05:03 | → | Unode joins (~Unode@unaffiliated/unode) |
| 13:05:04 | → | kumo joins (~kumo@139.180.144.166) |
| 13:05:08 | → | tv joins (~tv@unaffiliated/tv) |
| 13:05:11 | → | oldsk00l joins (~znc@ec2-18-130-254-135.eu-west-2.compute.amazonaws.com) |
| 13:05:16 | → | Lycurgus joins (~niemand@98.4.114.199) |
| 13:05:31 | → | adium joins (adium@unaffiliated/adium) |
| 13:05:31 | → | mniip joins (mniip@freenode/staff/mniip) |
| 13:05:45 | → | jassob joins (~jassob@korrob.vth.sgsnet.se) |
| 13:06:08 | → | tolt joins (~weechat-h@li219-154.members.linode.com) |
| 13:06:11 | → | stiell joins (~stian@fsf/member/stiell) |
| 13:06:17 | → | cgfbee joins (~bot@oc1.itim-cj.ro) |
| 13:06:23 | → | charukiewicz joins (~quassel@irouteince04.i.subnet.rcn.com) |
| 13:06:27 | → | PlasmaStar joins (plasma@unaffiliated/plasmastar) |
| 13:06:32 | → | chirpsalot joins (~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) |
| 13:07:08 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 13:07:23 | × | forgottenone quits (~forgotten@176.42.24.172) (Remote host closed the connection) |
| 13:07:42 | → | e2 joins (e2@sponsored.by.bnc4you.xyz) |
| 13:07:45 | × | notzmv quits (~zmv@unaffiliated/zmv) (Ping timeout: 264 seconds) |
| 13:08:03 | × | yahb quits (xsbot@haskell/bot/yahb) (Ping timeout: 246 seconds) |
| 13:08:43 | → | pera joins (~pera@unaffiliated/pera) |
| 13:08:47 | → | Twey joins (~twey@unaffiliated/twey) |
| 13:08:56 | → | andi- joins (~andi-@NixOS/user/andi-) |
| 13:09:27 | → | kaol joins (~kaol@178.62.241.234) |
| 13:10:01 | → | acro joins (~acro@188.166.31.185) |
| 13:10:01 | × | acro quits (~acro@188.166.31.185) (Changing host) |
| 13:10:01 | → | acro joins (~acro@unaffiliated/acro) |
| 13:10:01 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 13:10:45 | → | runawayfive joins (~nope@unaffiliated/runawayfive) |
| 13:13:02 | → | yahb joins (xsbot@haskell/bot/yahb) |
| 13:14:36 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds) |
| 13:14:36 | × | pera quits (~pera@unaffiliated/pera) (Ping timeout: 256 seconds) |
| 13:16:34 | → | forgottenone joins (~forgotten@176.42.24.172) |
| 13:18:33 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Quit: jpds) |
| 13:23:45 | → | frozenErebus joins (~frozenEre@94.128.82.20) |
| 13:24:55 | → | RamZess joins (~osboxes@213.142.184.77) |
| 13:25:18 | <RamZess> | hello everyone |
| 13:25:28 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) |
| 13:27:58 | × | juri_ quits (~juri@178.63.35.222) (Ping timeout: 245 seconds) |
| 13:30:02 | × | RamZess quits (~osboxes@213.142.184.77) (Quit: leaving) |
| 13:30:02 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds) |
| 13:30:27 | × | wilkie quits (~wilkie@217.146.82.202) (Remote host closed the connection) |
| 13:31:21 | <geekosaur> | hello |
| 13:31:24 | → | RamZess joins (~osboxes@213.142.184.77) |
| 13:31:27 | <geekosaur> | oh, they left |
| 13:32:54 | × | bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 246 seconds) |
| 13:33:00 | <RamZess> | Is anybody here alive and ready to help? I have a couple of beginner questions about stack and ghci. |
| 13:33:28 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 13:33:29 | <siraben> | RamZess: don't ask to ask, just ask! |
| 13:35:06 | → | juri_ joins (~juri@178.63.35.222) |
| 13:37:10 | × | forgottenone quits (~forgotten@176.42.24.172) (Remote host closed the connection) |
| 13:37:33 | <Lycurgus> | but it's OK that you already did |
| 13:37:59 | <Lycurgus> | it's just common IRC etiquette not to |
| 13:38:05 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 13:38:12 | <gentauro> | RamZess: as long as peeps don't reply: "You should just drop stack and use cabal" :P (happens from time to time, sadly) |
| 13:39:19 | → | forgottenone joins (~forgotten@176.42.24.172) |
| 13:39:41 | → | Tario joins (~Tario@201.192.165.173) |
| 13:39:50 | Lycurgus | recommends set .stack yaml to lts 8.6.5 and use stack repl |
| 13:40:00 | → | Hobbestigrou1 joins (~Hobbestig@195.140.213.38) |
| 13:40:49 | <geekosaur> | the latter in particular, since stack wants to manage ghc itself so you can't just run ghci, you need to run it via stack |
| 13:41:18 | <RamZess> | Let say I wanna play with standalone hs file (~/dev/HelloWorld.has). There is no stack project there but I have stack installed. When I start "stack ghci -packages xzy" it says that I'm using "global-project" and install packages into ~/.stack/snapshots. I want to use permament for "global-project" some packages. I put them into "packages" ~/.stack/global-project/stack.yaml but it does not work. Any |
| 13:41:24 | <RamZess> | suggestions? |
| 13:41:27 | → | Jd007 joins (~Jd007@162.156.11.151) |
| 13:42:58 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 245 seconds) |
| 13:44:50 | × | drbean quits (~drbean@TC210-63-209-202.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in) |
| 13:45:33 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 264 seconds) |
| 13:46:07 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 13:47:25 | → | idhugo joins (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) |
| 13:50:01 | × | Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007) |
| 13:50:07 | <gentauro> | RamZess: when I use `stack + ghci` for scripting I do something like this -> https://gitlab.com/spisemisu/pcx-utils/-/blob/master/src/pcf-v61-teams.hs#L1-9 |
| 13:50:49 | <gentauro> | oh, that script doesn't have packages. W8 a second |
| 13:51:13 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 276 seconds) |
| 13:51:36 | <gentauro> | RamZess: there you go -> https://gitlab.com/spisemisu/remove-facebook-content/-/blob/master/RFC.hs#L1-13 |
| 13:52:03 | <gentauro> | RamZess: the `trick` is to call add packages with double dash -> `--package aeson` |
| 13:52:06 | <gentauro> | ;) |
| 13:54:25 | <RamZess> | gentauro: I yep double dash, it was a mistake. I want to have kind of a standard set of packages that are already references (without --package ..) when I start stack gchi |
| 13:57:01 | <RamZess> | gentauro: when I use the .hs with script annotated packages would it be correct intepreted with "stack ghci"? |
| 13:57:20 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 13:58:16 | → | stree joins (~stree@68.36.8.116) |
| 14:00:24 | × | Lycurgus quits (~niemand@98.4.114.199) (Quit: Exeunt) |
| 14:00:38 | × | aarvar quits (~foewfoiew@2601:602:a080:fa0:6cfb:c91f:3c9a:a8cb) (Ping timeout: 264 seconds) |
| 14:01:42 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) |
| 14:03:50 | → | seanparsons joins (~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) |
| 14:07:54 | → | __minoru__shirae joins (~shiraeesh@109.166.56.41) |
| 14:09:34 | → | timCF joins (~i.tkachuk@m91-129-99-43.cust.tele2.ee) |
| 14:15:16 | → | fendor joins (~fendor@178.115.131.242.wireless.dyn.drei.com) |
| 14:15:20 | × | fendor quits (~fendor@178.115.131.242.wireless.dyn.drei.com) (Remote host closed the connection) |
| 14:15:51 | → | fendor joins (~fendor@178.115.131.242.wireless.dyn.drei.com) |
| 14:15:53 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 14:15:57 | <timCF> | Hello! Can anybody recommend elegent way to compose pipline of multiple `MonadIO m => prev -> m (Either Error next)` expressions without tons of `case` expressions? `next` type is used as `prev` in next expression in pipline |
| 14:17:23 | → | alx741 joins (~alx741@181.196.69.27) |
| 14:22:09 | × | frozenErebus quits (~frozenEre@94.128.82.20) (Ping timeout: 264 seconds) |
| 14:22:52 | → | CrazyPython joins (~crazypyth@98.122.164.118) |
| 14:23:09 | <absence> | timCF: check out ExceptT in transformers |
| 14:24:28 | × | clog quits (~nef@bespin.org) (Ping timeout: 260 seconds) |
| 14:24:36 | <absence> | "MonadIO m => prev -> ExceptT Error m next" can be composed using normal monad operators, like =<<, <=<, etc |
| 14:25:41 | → | ddellacosta joins (~ddellacos@86.106.143.10) |
| 14:25:45 | → | Sornaensis joins (~kvirc@077213203030.dynamic.telenor.dk) |
| 14:26:12 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) |
| 14:26:28 | <timCF> | absence: thanks! |
| 14:27:25 | <Philonous> | Is there a tool that automatically generates / updates package version bounds in a cabal file? |
| 14:29:57 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 14:30:18 | × | ddellacosta quits (~ddellacos@86.106.143.10) (Ping timeout: 246 seconds) |
| 14:31:14 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds) |
| 14:31:22 | <absence> | if i have an MVector, and a function that takes Vector, can i somehow make them talk to eachother without creating a copy? |
| 14:31:23 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 14:32:35 | → | frozenErebus joins (~frozenEre@94.128.82.20) |
| 14:34:10 | <sm[m]> | Philonous: cabal-bounds, I'm thinking |
| 14:35:57 | → | Stanley00 joins (~stanley00@unaffiliated/stanley00) |
| 14:37:17 | <sm[m]> | RamZess, this works: in ~/.ghci add :set -package pretty-simple, etc. |
| 14:37:37 | <timCF> | absence: seems like ExceptT relies on throwing/catching runtime exceptions? This does not sounds good. Version of code with tons of `<-` and `case` expressions used to compose `IO Either a b` expressions is ugly, but at least error handling is pure |
| 14:38:08 | <sm[m]> | RamZess: but next time those packages aren't installed, eg after a global stackage resolver update, GHCI won't start |
| 14:38:13 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 14:39:15 | → | pera joins (~pera@unaffiliated/pera) |
| 14:41:33 | <RamZess> | sm[m] ! thax It works! |
| 14:42:17 | <absence> | timCF: it doesn't, it just sounds like it because of the names used for the functions and types. if you look at the source code, it's just does the pattern matching behing the scenes |
| 14:42:38 | → | bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 14:43:47 | <absence> | timCF: it's identical to MaybeT for Maybe in that regard, but due to an unfortunate historical incident, the name EitherT was already taken, so we're stuck with the somewhat misleading ExceptT |
| 14:43:53 | <timCF> | absence: hmm, I've just got confused of lots of `SomeException` handlers in this example http://www.mega-nerd.com/erikd/Blog/CodeHacking/Haskell/what_do_you_mean.html |
| 14:44:37 | <sm[m]> | np |
| 14:45:53 | <absence> | timCF: i don't think the ExceptT in that example is the same one |
| 14:46:11 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 14:47:13 | <absence> | timCF: https://hackage.haskell.org/package/transformers-0.5.6.2/docs/Control-Monad-Trans-Except.html#t:ExceptT |
| 14:47:25 | × | geekosaur quits (ac3a5746@172.58.87.70) (Quit: Connection closed) |
| 14:47:30 | × | tfl^ quits (tfl@ip98-184-89-2.mc.at.cox.net) (Read error: Connection reset by peer) |
| 14:47:49 | <timCF> | absence: thanks! |
| 14:50:03 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 14:54:17 | <Philonous> | absence, There's unsafeFreeze, but it's unsafe, as the name implies. In particular, if you change the MVector later you might get unexpected behaviour |
| 14:55:00 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 14:55:45 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds) |
| 14:57:43 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 14:58:30 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 14:58:40 | → | ddellacosta joins (~ddellacos@86.106.143.226) |
| 14:58:52 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) |
| 15:00:55 | → | ddellaco_ joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 15:01:16 | ← | RamZess parts (~osboxes@213.142.184.77) () |
| 15:01:17 | <absence> | Philonous: thanks, guess i'll stick with freeze for now |
| 15:02:34 | <loyon> | oh dear, ormolu and servant typed apis don't go well together :-/ |
| 15:02:58 | × | ddellacosta quits (~ddellacos@86.106.143.226) (Ping timeout: 245 seconds) |
| 15:04:41 | <Mrbuck> | any one here write haskell on windows? |
| 15:04:56 | <absence> | yes |
| 15:05:07 | × | CrazyPython quits (~crazypyth@98.122.164.118) (Ping timeout: 256 seconds) |
| 15:08:41 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 15:09:19 | <Mrbuck> | absence: ok |
| 15:09:51 | <timCF> | Are there any shortcuts for `((f <$>) <$>)` or `((bimap f g) <$>)`? I found that I'm often using these boilerplate expressions with `m (Either a b)` |
| 15:10:26 | × | hexfive quits (~hexfive@50.35.83.177) (Quit: i must go. my people need me.) |
| 15:11:13 | <Philonous> | What workflow do people have to come up with version bounds for dependencies? |
| 15:11:37 | <Philonous> | Try to guess each one manually by looking at hackage? |
| 15:11:43 | × | bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 245 seconds) |
| 15:11:52 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 15:11:56 | <maerwald> | just use ^>= |
| 15:12:08 | <absence> | timCF: if you wrap the "m (Either e a)" in ExceptT, you only need one fmap. unfortunately bimap doesn't work :/ |
| 15:12:43 | <absence> | (but there's withExceptT for modifying the "e" value) |
| 15:13:14 | × | berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds) |
| 15:13:58 | <timCF> | absence: yeah, this sounds reasonable. I was recommended many times to use `ExceptT`. Probably it's time to overcome fear of monad transformers and learn them) |
| 15:14:28 | <Philonous> | maerwald, I still need to know the version to match on |
| 15:14:39 | → | notzmv joins (~zmv@unaffiliated/zmv) |
| 15:14:41 | <maerwald> | timCF: `Excepts` is cooler |
| 15:15:00 | <maerwald> | Philonous: start with the one in your build plan |
| 15:15:04 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 15:15:10 | <absence> | timCF: they can be intimidating and confusing for sure, but you'll run into them all the time, so it's worth learning |
| 15:15:34 | <maerwald> | timCF: https://hackage.haskell.org/package/haskus-utils-variant-3.0/docs/Haskus-Utils-Variant-Excepts.html |
| 15:15:54 | <maerwald> | ExceptT is boring... if I use it, I just go with String for the error type, because otherwise it's too annoying |
| 15:16:21 | <maerwald> | constant back and forth translation or an app-wide error type |
| 15:16:25 | <maerwald> | those are your options |
| 15:16:59 | <timCF> | maerwald: why String? Why not to create custom sum type to represent differnt errors? |
| 15:17:12 | <maerwald> | timCF: because then you have to translate back and forth |
| 15:18:10 | <absence> | maerwald: perhaps let him walk before running :) sounds like he's new to monad transformers |
| 15:18:46 | <timCF> | haha, that's true |
| 15:21:09 | → | blueonyx joins (59cc8bbd@unaffiliated/blueonyx) |
| 15:26:17 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 15:27:13 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) |
| 15:29:05 | × | bgamari quits (~bgamari@72.65.101.184) (Quit: ZNC 1.8.1 - https://znc.in) |
| 15:29:31 | → | raiaq joins (~raiaq@2a02:120b:2c2d:2310:94ae:9dd9:49dc:99b2) |
| 15:30:36 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds) |
| 15:31:50 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds) |
| 15:32:21 | × | frozenErebus quits (~frozenEre@94.128.82.20) (Ping timeout: 264 seconds) |
| 15:32:33 | × | Waifod quits (Waifod@gateway/vpn/protonvpn/waifod) (Ping timeout: 245 seconds) |
| 15:33:15 | × | Sornaensis quits (~kvirc@077213203030.dynamic.telenor.dk) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/) |
| 15:33:53 | → | bgamari joins (~bgamari@72.65.101.101) |
| 15:39:29 | × | Stanley00 quits (~stanley00@unaffiliated/stanley00) () |
| 15:42:04 | → | pyx joins (~pyx@unaffiliated/pyx) |
| 15:42:28 | × | pyx quits (~pyx@unaffiliated/pyx) (Client Quit) |
| 15:44:58 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 15:50:48 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 15:50:59 | → | CrazyPython joins (~crazypyth@98.122.164.118) |
| 15:52:43 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Client Quit) |
| 15:53:21 | × | notzmv quits (~zmv@unaffiliated/zmv) (Ping timeout: 264 seconds) |
| 15:54:46 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 15:55:40 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 15:55:58 | → | VeeBoi joins (8077ca8d@natp-128-119-202-141.wireless.umass.edu) |
| 15:57:00 | × | teardown_ quits (~user@gateway/tor-sasl/mrush) (Ping timeout: 268 seconds) |
| 15:57:16 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 15:59:08 | × | puke quits (~vroom@217.138.252.202) (Quit: puke) |
| 16:00:19 | × | BenSima[m] quits (bensimatim@gateway/shell/matrix.org/x-qkslyhndqfzvjpcd) (Quit: Idle for 30+ days) |
| 16:00:20 | × | utdemir[m] quits (utdemirmat@gateway/shell/matrix.org/x-suedpldutimmauoc) (Quit: Idle for 30+ days) |
| 16:04:36 | × | ddellaco_ quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds) |
| 16:04:44 | → | supercoven joins (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) |
| 16:06:12 | × | CrazyPython quits (~crazypyth@98.122.164.118) (Ping timeout: 246 seconds) |
| 16:06:12 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 246 seconds) |
| 16:07:37 | × | toorevitimirp quits (~tooreviti@117.182.180.50) (Remote host closed the connection) |
| 16:08:38 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 3.0.1) |
| 16:10:31 | → | puke joins (~vroom@217.138.252.202) |
| 16:11:03 | × | VeeBoi quits (8077ca8d@natp-128-119-202-141.wireless.umass.edu) (Ping timeout: 240 seconds) |
| 16:13:36 | → | carlomagno joins (~cararell@148.87.23.6) |
| 16:14:51 | × | usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving) |
| 16:15:22 | × | swarmcollective quits (~joseph@cpe-24-208-140-96.insight.res.rr.com) (Ping timeout: 256 seconds) |
| 16:15:27 | → | renzhi joins (~renzhi@2607:fa49:653f:eb00::296e) |
| 16:17:25 | → | swarmcollective joins (~joseph@cpe-24-208-140-96.insight.res.rr.com) |
| 16:19:29 | → | stree joins (~stree@68.36.8.116) |
| 16:19:58 | → | frozenErebus joins (~frozenEre@94.128.82.20) |
| 16:20:28 | × | jrqc quits (~rofl@96.78.87.197) (Ping timeout: 256 seconds) |
| 16:21:25 | → | notzmv joins (~zmv@unaffiliated/zmv) |
| 16:22:47 | → | Vra joins (8077caa7@natp-128-119-202-167.wireless.umass.edu) |
| 16:23:20 | → | jrqc joins (~rofl@96.78.87.197) |
| 16:26:08 | × | notzmv quits (~zmv@unaffiliated/zmv) (Ping timeout: 256 seconds) |
| 16:27:13 | <__minoru__shirae> | maerwald: "constant back and forth translation or an app-wide error type" |
| 16:27:53 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) |
| 16:28:00 | → | notzmv joins (~zmv@unaffiliated/zmv) |
| 16:28:17 | <__minoru__shirae> | how about wrapping? |
| 16:28:23 | Vra | is now known as zomq |
| 16:28:34 | → | ezrakilty joins (~ezrakilty@97-113-58-224.tukw.qwest.net) |
| 16:28:50 | × | fendor quits (~fendor@178.115.131.242.wireless.dyn.drei.com) (Remote host closed the connection) |
| 16:29:09 | <__minoru__shirae> | you just wrap whatever error with your wrapper |
| 16:29:11 | → | Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas) |
| 16:31:00 | → | fendor joins (~fendor@178.115.131.242.wireless.dyn.drei.com) |
| 16:32:26 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds) |
| 16:34:33 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 16:36:30 | → | joebobjoe joins (~joebobjoe@unaffiliated/joebobjoe) |
| 16:37:51 | <__minoru__shirae> | if this were to work, you wouldn't even need a wrapper, because Either itself is a wrapper |
| 16:39:10 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds) |
| 16:39:19 | <__minoru__shirae> | some problem with types? Don't all errors inherit from some class or something? |
| 16:39:38 | <monochrom> | Huh, there is only one translation direction, and it's from your own error type to string, and it's only at the UI boundary. |
| 16:40:33 | <monochrom> | You will want your own custom type, preferrably and ADT, if you want catch-and-conditionally-rethrow. |
| 16:40:50 | <monochrom> | Because your condition will have to examine the content of the error. |
| 16:41:39 | <monochrom> | I trust that this is not where you think you need the inverse translation, because that would reflect a dumb use of ExceptT. |
| 16:42:38 | × | dwt quits (~dwt@2601:2c6:8080:618:7090:bcee:c3c7:64ac) (Ping timeout: 264 seconds) |
| 16:43:13 | × | ezrakilty quits (~ezrakilty@97-113-58-224.tukw.qwest.net) (Remote host closed the connection) |
| 16:43:58 | → | borne joins (~fritjof@200116b86494d20065fd8eaafdc5f06e.dip.versatel-1u1.de) |
| 16:44:53 | × | raiaq quits (~raiaq@2a02:120b:2c2d:2310:94ae:9dd9:49dc:99b2) (Quit: WeeChat 3.0.1) |
| 16:45:03 | × | idhugo quits (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Ping timeout: 246 seconds) |
| 16:46:30 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:48:14 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 16:48:58 | <maerwald> | The problem is this: 1. either you have non-fine grained error sum type -> you never know what stuff your function may *really* gonna throw, so you just broke catching, 2. you have fine-grained error sum types (per module or even per functions), then you constantly have to translate erros to your other sum types (or convert to string and give up) |
| 16:49:44 | <maerwald> | open sum types fix this, but at other costs (e.g. type inference) |
| 16:50:56 | <maerwald> | whatever you do, ergonomics aren't too great |
| 16:51:41 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 16:53:08 | <monochrom> | I think if you s/non-fine-grained/has possibilities you don't actually produce/ , I understand. |
| 16:53:26 | → | HarveyPwca joins (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) |
| 16:53:30 | <maerwald> | yes |
| 16:54:29 | <maerwald> | in backend settings, you often don't really catch anything, but just translate the errors to a HTTP response, so an app-wide sum type can be feasible |
| 16:54:32 | <maerwald> | but not generally |
| 16:56:51 | → | joseph joins (~joseph@cpe-24-208-140-96.insight.res.rr.com) |
| 16:56:52 | → | Deide joins (~Deide@217.155.19.23) |
| 16:57:07 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 276 seconds) |
| 16:57:14 | joseph | is now known as Guest72818 |
| 16:57:22 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 16:57:52 | <maerwald> | that's why I like IO exceptions + testing them in your unit tests |
| 16:58:15 | <maerwald> | not fool proof, but good enough for me |
| 16:58:22 | → | conal joins (~conal@64.71.133.70) |
| 16:59:38 | × | swarmcollective quits (~joseph@cpe-24-208-140-96.insight.res.rr.com) (Ping timeout: 245 seconds) |
| 17:02:19 | × | poscat quits (~poscat@123.112.148.153) (Ping timeout: 276 seconds) |
| 17:03:13 | → | poscat joins (~poscat@123.112.148.153) |
| 17:05:50 | ← | jakalx parts (~jakalx@base.jakalx.net) ("Error from remote client") |
| 17:06:00 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 17:08:29 | → | bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 17:14:33 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 17:15:42 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 17:16:00 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 17:16:07 | → | CrazyPython joins (~crazypyth@98.122.164.118) |
| 17:17:01 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Client Quit) |
| 17:17:15 | × | bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 246 seconds) |
| 17:19:00 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds) |
| 17:19:59 | <fendor> | why doesnt lambdabot report about package uploads anymore? |
| 17:20:10 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 17:21:06 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 17:21:28 | <geekosaur> | wasn't lambdabot, it was hackagebot. and I think it started when freenode started having netsplits, and the bot needs to be restarted |
| 17:22:01 | <geekosaur> | Last seen : Mar 02 10:08:40 2021 (1w 4d 7h ago) |
| 17:22:46 | <geekosaur> | mniip, around? can you kick the hackage bot? |
| 17:22:47 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Client Quit) |
| 17:24:03 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 17:25:27 | → | Paks joins (~paks@c-69-136-183-189.hsd1.il.comcast.net) |
| 17:25:29 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Client Quit) |
| 17:28:30 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 17:31:15 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Client Quit) |
| 17:31:34 | × | Hobbestigrou1 quits (~Hobbestig@195.140.213.38) (Remote host closed the connection) |
| 17:35:35 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 17:39:46 | → | elusive joins (~Jeanne-Ka@static-198-54-134-171.cust.tzulo.com) |
| 17:40:02 | <geekosaur> | @tell mniip the hackage bot is stuck, can you restart it? |
| 17:40:03 | <lambdabot> | Consider it noted. |
| 17:40:36 | × | Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Ping timeout: 268 seconds) |
| 17:40:51 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 17:42:45 | <dmj`> | monochrom: In avg xs = sum xs / length xs, If sum gets evaluated first, then it would be true that the entire list is forced into memory, not just the spine. |
| 17:43:22 | × | zomq quits (8077caa7@natp-128-119-202-167.wireless.umass.edu) (Ping timeout: 240 seconds) |
| 17:43:51 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Client Quit) |
| 17:43:57 | → | Sheilong joins (uid293653@gateway/web/irccloud.com/x-yuuljllgcbbnaiwc) |
| 17:45:19 | <monochrom> | Oh, heh, that. |
| 17:45:23 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 17:46:02 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
| 17:47:35 | → | pehjota joins (~pehjota@37.120.211.188) |
| 17:48:21 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 272 seconds) |
| 17:48:59 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 17:51:28 | → | mirrorbird joins (dwsjeid911@gateway/vpn/mullvad/dwsjeid911) |
| 17:51:51 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 3.1) |
| 17:52:23 | → | raehik1 joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 17:53:16 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection) |
| 17:53:37 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 17:54:24 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 17:54:34 | → | conal joins (~conal@64.71.133.70) |
| 17:55:42 | × | blueonyx quits (59cc8bbd@unaffiliated/blueonyx) (Ping timeout: 240 seconds) |
| 17:55:45 | × | Benzi-Junior quits (~BenziJuni@88-149-64-40.du.xdsl.is) (Ping timeout: 246 seconds) |
| 17:56:03 | → | Benzi-Junior joins (~BenziJuni@88-149-67-143.du.xdsl.is) |
| 17:57:17 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 17:58:02 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 17:59:15 | × | joebobjoe quits (~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 246 seconds) |
| 17:59:21 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds) |
| 18:00:37 | <dmj`> | monochrom: it seems "sum" is always evaluated first ... |
| 18:01:42 | × | geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds) |
| 18:01:54 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
| 18:01:58 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Client Quit) |
| 18:02:15 | → | Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck) |
| 18:05:56 | × | rajivr quits (uid269651@gateway/web/irccloud.com/x-qhbpzrlqpyrqpcwa) (Quit: Connection closed for inactivity) |
| 18:06:25 | <c_wraith> | I wouldn't trust that observation. That's the sort of thing GHC is free to change whenever the optimizer feels like it |
| 18:06:36 | × | conal quits (~conal@64.71.133.70) (Ping timeout: 246 seconds) |
| 18:07:26 | → | Vra joins (8077cab5@natp-128-119-202-181.wireless.umass.edu) |
| 18:09:20 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 18:10:06 | → | waleee-cl joins (uid373333@gateway/web/irccloud.com/x-eyjzukijciociqrd) |
| 18:10:36 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Client Quit) |
| 18:11:02 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 18:11:10 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 18:11:45 | → | conal joins (~conal@192.145.118.125) |
| 18:11:47 | → | dsrt^ joins (dsrt@ip98-184-89-2.mc.at.cox.net) |
| 18:13:28 | <dmj`> | c_wraith: sure, I'd love to see an example |
| 18:15:27 | × | borne quits (~fritjof@200116b86494d20065fd8eaafdc5f06e.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
| 18:18:07 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 18:18:54 | × | __minoru__shirae quits (~shiraeesh@109.166.56.41) (Ping timeout: 256 seconds) |
| 18:18:57 | <int-e> | dmj`: it doesn't even have to be the optimizer; imagine _ / 0 = error "divide by 0"; a / b = ... |
| 18:19:01 | → | minoru_shiraeesh joins (~shiraeesh@109.166.56.131) |
| 18:20:53 | × | conal quits (~conal@192.145.118.125) (Quit: Computer has gone to sleep.) |
| 18:21:49 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 3.1) |
| 18:22:04 | <monochrom> | I wonder if https://mail.haskell.org/pipermail/haskell-cafe/2011-April/091048.html counts >:) |
| 18:22:21 | → | joebobjoe joins (~joebobjoe@unaffiliated/joebobjoe) |
| 18:23:02 | × | carlomagno quits (~cararell@148.87.23.6) (Quit: Leaving.) |
| 18:23:02 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 18:23:18 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Client Quit) |
| 18:23:55 | <monochrom> | To be fair I could not reproduce it with any type that is not as boring as (). |
| 18:24:17 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 18:24:39 | <c_wraith> | I bet you could get CSE to kick in if you had a separate use of length xs that had to be evaluated first |
| 18:26:46 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 18:27:58 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 256 seconds) |
| 18:28:46 | <dmj`> | monochrom: also, another "gotcha", Divide-by-zero isn't thrown unless its a Rational, otherwise, just NaN is returned (Double / Float). So not identical behavior for all Fractional instances. The plot thickens. |
| 18:28:52 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 18:29:08 | → | ddellacosta joins (~ddellacos@86.106.143.83) |
| 18:29:18 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) |
| 18:30:21 | <dmj`> | int-e: sure that makes sense, unless 'a' had been evaluated elsewhere 'b' should be forced first because of the 0 check. I want to see where GHC is at liberty to choose. That example doesn't seem like GHC has a choice (assuming both 'a' and 'b' are thunks). |
| 18:32:04 | <int-e> | dmj`: well with the floating point version it gets a choice |
| 18:32:21 | <int-e> | as you just pointed out yourself |
| 18:32:26 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 18:32:43 | → | bobiusbillius joins (~bobiusbil@2a00:23c7:9909:5b01:9143:54d3:f1e8:156d) |
| 18:32:58 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 18:33:58 | × | ddellacosta quits (~ddellacos@86.106.143.83) (Ping timeout: 276 seconds) |
| 18:33:58 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer) |
| 18:34:11 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 3.1) |
| 18:34:14 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 18:34:14 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds) |
| 18:35:28 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 18:37:03 | <dmj`> | int-e: wouldn't it /not/ have a choice because it would evaluate the first case (_ / 0) -- thus forcing 'b' first. Order of the function definitions matters. |
| 18:37:16 | → | tromp_ joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 18:37:31 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 18:37:36 | <dmj`> | if a / b was defined before _ / 0 then I'd believe it has a choice |
| 18:37:39 | <int-e> | dmj`: there is no error case, division is just strict in both arguments. |
| 18:37:54 | × | CaptainIRS quits (9d31f23d@157.49.242.61) (Quit: Connection closed) |
| 18:38:09 | <int-e> | > undefined/0 :: Float |
| 18:38:11 | <lambdabot> | *Exception: Prelude.undefined |
| 18:38:34 | <int-e> | > 0/undefined :: Float |
| 18:38:36 | <lambdabot> | *Exception: Prelude.undefined |
| 18:38:47 | <monochrom> | > undefined/0 :: Rational |
| 18:38:49 | <lambdabot> | *Exception: Prelude.undefined |
| 18:38:57 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds) |
| 18:39:51 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Client Quit) |
| 18:40:09 | → | stree joins (~stree@68.36.8.116) |
| 18:40:16 | <int-e> | dmj`: in that imaginary example, yes, it would not get a choice |
| 18:40:58 | <dmj`> | sure, its strict in both arguments. |
| 18:41:07 | <dmj`> | > error "foo" / error "bar" |
| 18:41:09 | <lambdabot> | *Exception: foo |
| 18:41:21 | × | darjeeling_ quits (~darjeelin@122.245.218.92) (Ping timeout: 264 seconds) |
| 18:41:51 | → | frozen_burnman joins (~frozen_bu@80-90-135-76.static.oxid.cz) |
| 18:41:56 | <int-e> | ghc tends to be careful with that extra freedom offered by exchanging one bottom for another |
| 18:42:23 | → | ADG1089__ joins (~aditya@106.212.74.137) |
| 18:42:33 | <int-e> | I don't really know under what circumstances it does that. |
| 18:43:12 | <tomsmeding> | there is https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/bugs.html#expressions-and-patterns |
| 18:43:13 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 18:43:25 | <tomsmeding> | though that's a bit more subtle than the discussion at hand, I think |
| 18:43:43 | × | jumper149 quits (~jumper149@ip185225.wh.uni-hannover.de) (Client Quit) |
| 18:43:50 | × | frozenErebus quits (~frozenEre@94.128.82.20) (Ping timeout: 256 seconds) |
| 18:48:06 | → | marinelli joins (~marinelli@gateway/tor-sasl/marinelli) |
| 18:49:08 | × | tromp_ quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 18:49:25 | <dmj`> | tomsmeding: yea, when it says, "This should call error, but it returns True", I don't agree with that statement. seq (f []) returns a partially applied function evaluated to whnf, but its not the application of the function. f [] :: b -> b, maybe it should say, "this seems like it should call error" |
| 18:50:00 | <tomsmeding> | dmj`: ah, but f [] is defined as error, isn't it? |
| 18:50:18 | <tomsmeding> | so evaluating f [] to WHNF using seq should technically speaking throw an error |
| 18:50:34 | <tomsmeding> | note that evaluating function types to WHNF does actually do something: |
| 18:50:41 | <tomsmeding> | > (undefined :: Int -> Int) `seq` () |
| 18:50:42 | × | geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds) |
| 18:50:43 | <lambdabot> | *Exception: Prelude.undefined |
| 18:51:49 | <tomsmeding> | an actual lambda object, or I guess a closure object in proper terminology, is the WHNF of a function type |
| 18:51:51 | <dmj`> | that's different, you're unboxing undefined here. f [] is not fully applied to produce the undefined, despite the fact the argument is unused, it seems one needs to be applied. |
| 18:52:12 | <tomsmeding> | dmj`: "f [] is not fully applied" -- isn't it? |
| 18:52:20 | <dmj`> | tomsmeding: what's the type of f ? |
| 18:52:28 | <dmj`> | tomsmeding: note the eta expansion |
| 18:52:28 | <tomsmeding> | well, [a] -> b -> b |
| 18:52:37 | <dmj`> | no 'b' was specified |
| 18:52:59 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 18:53:53 | <tomsmeding> | dmj`: would it be different if we had 'newtype Func b = Func (b -> b)', and 'f :: [a] -> Func b', where 'f [] = error "urk" ; f (x:xs) = Func (\x -> x)' ? |
| 18:54:28 | → | darjeeling_ joins (~darjeelin@122.245.218.190) |
| 18:54:32 | <tomsmeding> | there 'f [] `seq` True' should certainly error, right? |
| 18:55:16 | <tomsmeding> | I guess same question if I wrote 'data' instead of 'newtype' |
| 18:55:43 | <dmj`> | @def newtype Func b = Func (b -> b) |
| 18:55:44 | <lambdabot> | Defined. |
| 18:56:48 | <dmj`> | @def func' :: [a] -> Func b; func' [] = error "urk"; func' (x:xs) = Func (\x -> x) |
| 18:56:50 | <lambdabot> | Defined. |
| 18:57:10 | <dmj`> | > func' [] `seq` True |
| 18:57:12 | <lambdabot> | *Exception: urk |
| 18:57:21 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 246 seconds) |
| 18:57:38 | <c_wraith> | dmj`: whether or not you like it, eta expansion can actually remove bottoms in Haskell. It's not 100% valid as an optimization |
| 18:57:44 | <tomsmeding> | because the WHNF of a Func is the constructor, which in this case evaluates to bottom |
| 18:58:30 | <tomsmeding> | if it was 'data Func', that would be correct; now that it's 'newtype Func' the field of Func is strict, so it's not only the Func constructor but also the function inside of it that needs to be evaluated to get the WHNF of Func |
| 18:58:34 | <dmj`> | tomsmeding: hmm, still don't think this is comparing apples to apples though, eta-expansion isn't happening in the same way with Func as it is with f :: [a] -> b -> b |
| 18:58:37 | <tomsmeding> | not that it matters in this particular example |
| 18:58:58 | <tomsmeding> | but then, how is the type (b -> b) any different from Func? |
| 18:59:05 | <tomsmeding> | it's still a type that can have values |
| 18:59:16 | <c_wraith> | It's different in how GHC optimizes it. |
| 18:59:33 | <tomsmeding> | true, which ghc declares as a bug in its user's guide :) |
| 18:59:36 | <tomsmeding> | though an intentional bug |
| 19:00:07 | <dmj`> | tomsmeding: its different because Func is wrapping it right |
| 19:00:09 | <koz_> | c_wraith: "eta expansion can actually remove bottoms" <-- Sir Mix-a-Lot is disappointed |
| 19:00:18 | <tomsmeding> | being able to evaluate function-typed values to WHNF is actually very useful |
| 19:01:07 | <tomsmeding> | to give a very concrete example: this function 'run1' takes a function in the Accelerate embedded language, and returns a Haskell function that evaluates it https://hackage.haskell.org/package/accelerate-llvm-native-1.3.0.0/docs/Data-Array-Accelerate-LLVM-Native.html#v:run1 |
| 19:01:18 | × | Guest16306 quits (~textual@zrcout.mskcc.org) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 19:01:22 | <siers> | Are there any implementations of mutable sets in hackage? |
| 19:01:33 | <koz_> | siers: HashSet too slow for you? |
| 19:01:43 | <koz_> | Or rather, why is mutability important? |
| 19:01:47 | <tomsmeding> | the Accelerate compiler implementation is written in such a way that forcing that 'a -> b' function to WHNF evaluates the full compilation of the Accelerate function |
| 19:02:02 | × | Vra quits (8077cab5@natp-128-119-202-181.wireless.umass.edu) (Ping timeout: 240 seconds) |
| 19:02:11 | <tomsmeding> | which is useful to be able to do explicitly, e.g. for benchmarking purposes |
| 19:03:06 | <siers> | koz_, I'm just looking for it. I don't think I'll end up needing it. |
| 19:03:08 | <int-e> | dmj`: One case where ghc *will* exchange bottoms is when you have a complex function that is strict in its arguments but evaluates them in different orders depending on the precise inputs... and ghc decides to unbox the arguments. It seems hard to come up with a small, reliable example for that. |
| 19:03:27 | <c_wraith> | siers: it's hard to imagine one being better than IORef (Set a) or MVar (Set a) |
| 19:03:34 | → | berberman_ joins (~berberman@unaffiliated/berberman) |
| 19:03:43 | → | ddellacosta joins (~ddellacos@86.106.143.213) |
| 19:03:44 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 19:03:53 | <c_wraith> | siers: it *could* happen, but you'd need a ridiculous amount of concurrent access |
| 19:04:10 | × | jb55 quits (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection) |
| 19:04:21 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds) |
| 19:04:32 | <koz_> | c_wraith: In all honesty, given how badly HashMap clocks anything in hashtables in practice? HashSet is probably fast enough for whatever you wanna do, zero mutability required. |
| 19:04:37 | → | jb55 joins (~jb55@gateway/tor-sasl/jb55) |
| 19:04:53 | <c_wraith> | koz_: mutability matters for concurrent modifications, not performance |
| 19:05:00 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 19:05:51 | <koz_> | c_wraith: Fair point. |
| 19:08:21 | × | ddellacosta quits (~ddellacos@86.106.143.213) (Ping timeout: 264 seconds) |
| 19:08:40 | → | _jogo_ joins (~jogo@ip5b42a696.dynamic.kabel-deutschland.de) |
| 19:08:55 | <dmj`> | tomsmeding: I don't disagree Func (b -> b) should be semantically equivalent to (b -> b), but I think they might desugar differently. |
| 19:09:41 | <tomsmeding> | dmj`: ghc very well might, but if the effect is observable, that's a deviation from the haskell standard |
| 19:09:47 | <c_wraith> | I remember some benchmarking of concurrent data structures a while back, and there was a note at the end saying just using a standard immutable data structure in an MVar trounced all of them for performance up until something like 12 cores were making frequent updates. |
| 19:10:09 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds) |
| 19:10:50 | <tomsmeding> | dmj`: haskell isn't defined in terms of desugarings, it's defined in terms of how stuff should behave semantically |
| 19:11:13 | <tomsmeding> | ghc mostly adheres to the definitions, but sometimes deviates, for example with the eta-expansion I linked; but it doesn't always do that |
| 19:11:33 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 19:12:44 | × | raehik1 quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 19:13:02 | × | son0p quits (~son0p@181.58.39.182) (Quit: Lost terminal) |
| 19:17:10 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:17:28 | → | Alleria joins (~textual@2603-7000-3040-0000-90f8-4e28-a385-635a.res6.spectrum.com) |
| 19:17:32 | <dmj`> | tomsmeding: it's pretty unintuitive behavior, I agree. Representation will change semantics though, the more you unbox, the stricter things have to be. |
| 19:17:51 | Alleria | is now known as Guest34685 |
| 19:18:09 | <tomsmeding> | dmj`: that's certainly true: if you start unboxing, you change semantics |
| 19:18:39 | <tomsmeding> | I think we're arguing from different perspectives: you're seeing the implementation (ghc) as truth, I'm seeing the specification (the haskell report) as truth, and the implementation something that mostly adheres to spec |
| 19:19:05 | <tomsmeding> | so when I say that eta-expansion "should" not change semantics, you say "but it does" -- true, but that was not my point :p |
| 19:19:11 | × | fendor quits (~fendor@178.115.131.242.wireless.dyn.drei.com) (Remote host closed the connection) |
| 19:19:20 | <tomsmeding> | correction: eta-expansion of course changes semantics |
| 19:19:31 | × | _jogo_ quits (~jogo@ip5b42a696.dynamic.kabel-deutschland.de) (Quit: _jogo_) |
| 19:19:35 | <tomsmeding> | I should have said: ghc should not eta-expand in an observable way |
| 19:20:04 | <tomsmeding> | two ways to reason about behaviour :) |
| 19:20:17 | <int-e> | tomsmeding: which is why they list this as a known bug or infelicity |
| 19:20:25 | <tomsmeding> | precisely |
| 19:20:32 | <tomsmeding> | :) |
| 19:20:36 | <int-e> | in contrast, exchanging one bottom for another is perfectly legitimate |
| 19:20:42 | <tomsmeding> | ghc developers are ever diligent |
| 19:21:05 | <int-e> | just very annoying (especially when a meaningful error gets replaced by another error or by nontermination) |
| 19:21:26 | × | joebobjoe quits (~joebobjoe@unaffiliated/joebobjoe) (Quit: Lost terminal) |
| 19:22:47 | × | jb55 quits (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection) |
| 19:23:08 | → | jb55 joins (~jb55@gateway/tor-sasl/jb55) |
| 19:24:35 | <dmj`> | tomsmeding: maybe "desugaring" was the wrong word, but the representation of data types in GHC Haskell Core is different than functions (hence why this isn't an apples-to-apples comparison), I think data types could be desugared to lambdas in Core, but they're not (correct me if I'm wrong), so that might have something to do with the fact that Func (b->b) than b->b |
| 19:24:41 | <dmj`> | is different than* |
| 19:25:09 | → | makergrl joins (~ident@212.65.4.46.bc.googleusercontent.com) |
| 19:25:12 | <dmj`> | and its probably most definitely the reason eta-expansion isn't happening for Func |
| 19:26:01 | <siers> | How do I run an IO effect in "StateT IO a b"? |
| 19:26:17 | <dmj`> | liftIO |
| 19:26:46 | → | ddellacosta joins (~ddellacos@86.106.143.70) |
| 19:26:56 | <siers> | if it was some other monad, then could I not lift it? |
| 19:27:12 | <dmj`> | siers: can only liftIO if its an instance of MonadIO |
| 19:27:29 | <dmj`> | siers: true for all transformers, not true for all monads |
| 19:27:38 | <enikar> | there is also lift. |
| 19:27:42 | → | unyu joins (~pyon@unaffiliated/pyon) |
| 19:28:32 | <siers> | dmj`, "not true for all monads" ah |
| 19:28:50 | → | fendor joins (~fendor@178.115.131.242.wireless.dyn.drei.com) |
| 19:29:58 | <tomsmeding> | true for all transformers -- if, of course, the next monad (transformer) in the stack also implements MonadIO |
| 19:30:01 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) |
| 19:30:14 | <tomsmeding> | 'StateT Maybe a' does not implement MonadIO |
| 19:30:47 | <siers> | how do I write [] type unapplied? |
| 19:30:49 | <siers> | the* |
| 19:31:02 | <siers> | forall? |
| 19:31:14 | <siers> | I just wanted to plug it into StateT to see what that even would mean |
| 19:31:25 | <hpc> | it's just [] |
| 19:31:42 | <hpc> | StateT m [] a |
| 19:31:43 | <siers> | > [1] :: [] Int |
| 19:31:45 | <lambdabot> | [1] |
| 19:31:54 | <siers> | hm, that did not work in ghci |
| 19:32:05 | <siers> | ah, never mind |
| 19:32:22 | <unyu> | “:k [] Int” works just fine in GHCi. |
| 19:32:29 | <siers> | yes, yes :) |
| 19:33:09 | <unyu> | Do sequences represented as finger trees efficiently support the following operation? Find an element x in the sequence AxB, and replace it with another sequence C, getting ACB. If so, is the intermediate state of the zipper focused at x the same as if were merely going to replace x with another element y? |
| 19:34:15 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 240 seconds) |
| 19:34:18 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 19:35:38 | <peutri> | how many points per subquestion? |
| 19:35:48 | × | Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1) |
| 19:36:09 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 19:36:48 | <tomsmeding> | unyu: the replacing can be implemented using splitAt and ><, both of which are logarithmic |
| 19:37:26 | <tomsmeding> | but they do restructure the tree |
| 19:37:43 | × | ddellacosta quits (~ddellacos@86.106.143.70) (Remote host closed the connection) |
| 19:39:39 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 19:43:12 | × | mirrorbird quits (dwsjeid911@gateway/vpn/mullvad/dwsjeid911) (Ping timeout: 246 seconds) |
| 19:44:03 | <unyu> | Thanks! I guess restructuring is inevitable for arbitrary C. But, for small enough C (say, 2 elements), it should be possible to insert C into the hole A_B, without splitting the latter into A and B first, right? |
| 19:45:02 | × | arrowsvc_ quits (~arr@2.93.163.35) (Ping timeout: 256 seconds) |
| 19:46:46 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 276 seconds) |
| 19:47:04 | → | frozenErebus joins (~frozenEre@94.128.82.20) |
| 19:47:26 | <tomsmeding> | unyu: that depends on how the finger tree is currently structured; it might be true, but it might also not be |
| 19:48:00 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) |
| 19:48:05 | <tomsmeding> | unyu: this paper explains quite nicely how the structure works: https://dl.acm.org/doi/10.1145/3406088.3409026 |
| 19:48:31 | <unyu> | Thanks! |
| 19:49:20 | <monochrom> | That's a nice paper indeed. |
| 19:49:45 | <monochrom> | Very often "how you would reinvent it" is the best explanation. |
| 19:51:18 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 19:51:35 | <dmj`> | still waiting for "how you would reinvent GHC" |
| 19:52:09 | <tomsmeding> | lots of work |
| 19:52:34 | → | vicfred joins (vicfred@gateway/vpn/mullvad/vicfred) |
| 19:54:44 | × | srk quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection) |
| 19:54:44 | × | hexo quits (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection) |
| 19:55:00 | → | srk joins (~sorki@gateway/tor-sasl/sorki) |
| 19:55:03 | → | hexo joins (~hexo@gateway/tor-sasl/hexo) |
| 19:56:27 | <dmj`> | tomsmeding: that's why I'm a fan of the cronokirby series https://github.com/cronokirby/haskell-in-haskell |
| 19:58:23 | → | kingmaker joins (2edfa3b9@HSI-KBW-46-223-163-185.hsi.kabel-badenwuerttemberg.de) |
| 19:58:34 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 19:58:52 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) |
| 19:59:46 | → | aarvar joins (~foewfoiew@2601:602:a080:fa0:6cfb:c91f:3c9a:a8cb) |
| 20:02:34 | <dmj`> | "GHC for the rest of us" |
| 20:03:52 | × | DavidEichmann quits (~david@234.109.45.217.dyn.plus.net) (Remote host closed the connection) |
| 20:05:37 | × | petersen quits (~petersen@redhat/juhp) (Ping timeout: 276 seconds) |
| 20:05:54 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 20:07:41 | → | petersen joins (~petersen@redhat/juhp) |
| 20:10:03 | × | jdt quits (~jdt@38.77.195.50) (Ping timeout: 245 seconds) |
| 20:10:31 | <duairc> | Is this use of `unsafeCoerce` incorrect: https://paste.tomsmeding.com/frUzLTeS |
| 20:10:49 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 276 seconds) |
| 20:12:18 | → | joebobjoe joins (~joebobjoe@unaffiliated/joebobjoe) |
| 20:14:15 | <joebobjoe> | is there a tool that can mock a website? e.g., go to website in browser, log in, interact with it... then the mock server can play it all back to you so you can test the server for things like scraper scripts without actually hitting the server |
| 20:15:18 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 20:17:03 | → | malumore joins (~malumore@151.62.123.0) |
| 20:18:15 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 20:21:05 | → | myShoggoth joins (~myShoggot@75.164.81.55) |
| 20:21:09 | × | jacks2 quits (~bc8134e3@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout)) |
| 20:21:21 | → | jdt joins (~jdt@38.77.195.50) |
| 20:22:09 | → | fosterite joins (~fosterite@2600:6c46:7800:fecf:2d14:82db:e894:f28b) |
| 20:29:15 | → | slack1256 joins (~slack1256@dvc-186-186-101-190.movil.vtr.net) |
| 20:29:54 | × | myShoggoth quits (~myShoggot@75.164.81.55) (Ping timeout: 260 seconds) |
| 20:31:13 | → | pavonia joins (~user@unaffiliated/siracusa) |
| 20:31:55 | <juri_> | joebobjoe: look up 'MockServer'. it's written in java, and i do that sortof stuff with it. |
| 20:32:22 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 20:33:22 | <joebobjoe> | ok thanks |
| 20:35:24 | × | kingmaker quits (2edfa3b9@HSI-KBW-46-223-163-185.hsi.kabel-badenwuerttemberg.de) (Quit: Connection closed) |
| 20:38:38 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 20:43:17 | → | gitgood joins (~gitgood@80-44-12-84.dynamic.dsl.as9105.com) |
| 20:43:33 | → | tinhatcat joins (~tsranso@108-91-101-161.lightspeed.gnvlsc.sbcglobal.net) |
| 20:45:58 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 260 seconds) |
| 20:48:19 | → | fuzzypixelz joins (2ec10464@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
| 20:48:30 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 256 seconds) |
| 20:49:13 | <fuzzypixelz> | what would be a fairly large project I could build in Haskell? I want to get a sense of big programs that do "real world" tasks. |
| 20:49:32 | <dmj`> | fuzzypixelz: A compiler |
| 20:49:39 | → | mirrorbird joins (dwsjeid911@gateway/vpn/mullvad/dwsjeid911) |
| 20:49:50 | <geekosaur> | existing, or something you want to write? |
| 20:50:07 | <fuzzypixelz> | something I want to write |
| 20:50:15 | <shapr> | fuzzypixelz: duplicate file finder? |
| 20:50:17 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 20:50:38 | <shapr> | That could be a fairly small project if you know a bunch of Haskell |
| 20:50:45 | <shapr> | like, finish it in a day |
| 20:51:10 | <fuzzypixelz> | shapr: how about a fairly _large_ project? (: |
| 20:51:16 | <shapr> | fuzzypixelz: what do you want to write? |
| 20:51:42 | <shapr> | I wrote a few useful programs that I use everyday, like https://github.com/shapr/sandwatch and https://github.com/shapr/bloohm |
| 20:52:31 | <shapr> | fuzzypixelz: what scratches your own itch? |
| 20:52:59 | → | hackage joins (mniip@haskell/bot/hackage) |
| 20:53:07 | <mniip> | geekosaur, whoops it looks like the server was rebooted and it's one of those things that's just running in SCREEN |
| 20:53:27 | <fuzzypixelz> | shapr: I actually don't have any ideas for something "useful to me" |
| 20:53:32 | <shapr> | fuzzypixelz: I also spent three months writing https://github.com/shapr/fermatslastmargin |
| 20:53:38 | <geekosaur> | thanks |
| 20:54:16 | <mniip> | must've been a week, too |
| 20:54:30 | <juri_> | write real things. real problems are harder, you learn more. :D |
| 20:54:56 | <fuzzypixelz> | that's ... why I'm here, for inspiration (: |
| 20:55:05 | <dmj`> | fuzzypixelz: what do you find useful, reimplement some unix commands you use every day |
| 20:55:27 | <dmj`> | fuzzypixelz: if you play games, write solvers for the games you play, or tools to help you in the game. |
| 20:55:34 | <fuzzypixelz> | I usually just do with whatever tools I can put my hands on, which not the best mindset for this I'm afraid ): |
| 20:55:58 | <shapr> | Oh yeah, I was addicted to Endless Sky so I wrote a solver! https://shapr.github.io/posts/2019-07-10-smt-solvers.html |
| 20:56:01 | <dmj`> | fuzzypixelz: write a browser |
| 20:58:08 | <fuzzypixelz> | an internet broswe right? |
| 20:58:43 | <shapr> | you could even start with a Gemini browser if you want simpler? |
| 20:59:16 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 20:59:16 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
| 20:59:16 | × | sm2n quits (~sm2n@bras-base-hmtnon143hw-grc-15-70-54-78-219.dsl.bell.ca) (Ping timeout: 256 seconds) |
| 20:59:17 | <dmj`> | fuzzypixelz: yea, but could be text based like lynx |
| 20:59:47 | <dmj`> | fuzzypixelz: reimplement sqlite in Haskell |
| 21:00:20 | <fuzzypixelz> | thanks, both those sound interesting to me |
| 21:00:44 | → | stree joins (~stree@68.36.8.116) |
| 21:00:55 | <hpc> | shapr: funny, i just did a similar exercise for all the shields and engines that accounts for mass, heat, and energy |
| 21:01:21 | <shapr> | hpc: TELL ME MORE |
| 21:01:33 | <shapr> | cause I never got that far |
| 21:01:42 | <shapr> | hpc: did you start with my article? |
| 21:01:51 | <MarcelineVQ> | yes, do tell |
| 21:01:54 | <hpc> | so, i didn't go all the way to "solve for a target mass threshold" |
| 21:01:56 | <shapr> | I like to think someone gained some benefit from me writing that post and its followup |
| 21:02:08 | <hpc> | but i noticed that the whole system is linear |
| 21:02:08 | → | hexfive joins (~hexfive@50.35.83.177) |
| 21:02:16 | <hpc> | and that cooling modules have a very simple equation |
| 21:02:25 | <hpc> | and once you have that, energy has a really simple equation |
| 21:02:49 | <hpc> | so you can turn heat and energy into mass equivalence quite simply, and everything has a single effective mass value |
| 21:02:51 | <shapr> | hpc: you gonna write a blog post? |
| 21:02:58 | shapr | thinks about that |
| 21:03:00 | <hpc> | i don't have a blog |
| 21:03:07 | <shapr> | hpc: want me to get you a blog? :-P |
| 21:03:11 | <hpc> | once you have that idea though, it's pretty simple |
| 21:03:16 | <hpc> | i did the whole thing in libreoffice |
| 21:03:21 | shapr | blinks |
| 21:03:32 | <geekosaur> | spreadsheet? |
| 21:03:36 | <hpc> | yep |
| 21:04:02 | <MarcelineVQ> | it's funny to me that the best cooling module in the game is named "Cooling Module" |
| 21:04:18 | × | Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving) |
| 21:04:18 | <shapr> | hpc: write it up, I'll put a guest post on my blog :-P |
| 21:04:28 | <hpc> | hah |
| 21:05:27 | × | marinelli quits (~marinelli@gateway/tor-sasl/marinelli) (Quit: marinelli) |
| 21:06:03 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 21:06:04 | × | plutoniix quits (~q@node-uj8.pool-125-24.dynamic.totinternet.net) (Ping timeout: 276 seconds) |
| 21:06:40 | × | bobiusbillius quits (~bobiusbil@2a00:23c7:9909:5b01:9143:54d3:f1e8:156d) (Quit: To the neversphere.) |
| 21:07:49 | → | fendor_ joins (~fendor@91.141.1.110.wireless.dyn.drei.com) |
| 21:09:36 | × | tinhatcat quits (~tsranso@108-91-101-161.lightspeed.gnvlsc.sbcglobal.net) (Quit: Leaving) |
| 21:09:57 | → | sm2n joins (~sm2n@bras-base-hmtnon143hw-grc-15-70-54-78-219.dsl.bell.ca) |
| 21:09:59 | → | plutoniix joins (~q@node-uj8.pool-125-24.dynamic.totinternet.net) |
| 21:10:05 | × | hexfive quits (~hexfive@50.35.83.177) (Quit: i must go. my people need me.) |
| 21:10:17 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 21:11:15 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 265 seconds) |
| 21:11:15 | × | fendor quits (~fendor@178.115.131.242.wireless.dyn.drei.com) (Ping timeout: 265 seconds) |
| 21:15:00 | × | ADG1089__ quits (~aditya@106.212.74.137) (Remote host closed the connection) |
| 21:15:08 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 21:15:10 | → | Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
| 21:15:14 | → | Vra joins (8077caad@natp-128-119-202-173.wireless.umass.edu) |
| 21:15:52 | × | Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Remote host closed the connection) |
| 21:19:47 | <duairc> | Does anyone know if this use of `unsafeCoerce` is "safe"? https://paste.tomsmeding.com/frUzLTeS |
| 21:19:56 | × | fuzzypixelz quits (2ec10464@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Connection closed) |
| 21:20:01 | → | Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
| 21:20:37 | × | Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Remote host closed the connection) |
| 21:23:10 | → | Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
| 21:24:33 | <edwardk> | duairc looks sound to me |
| 21:25:58 | <tapas> | deploy it in production to test |
| 21:26:46 | × | Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Client Quit) |
| 21:27:11 | hackage | ory-kratos 0.0.5.5 - API bindings for Ory Kratos https://hackage.haskell.org/package/ory-kratos-0.0.5.5 (njaremko) |
| 21:27:50 | → | Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
| 21:27:58 | <duairc> | edwardk: Thanks! |
| 21:29:42 | <edwardk> | +1 for deploying directly to production |
| 21:30:20 | <Rembane> | If it typechecks, ship it! |
| 21:30:21 | <edwardk> | on the other hand i wrote not one but two illegal applicatives yesterday and plan to ship them in a library i expect all sorts of people to build atop. |
| 21:30:29 | <edwardk> | so maybe seek a second or third opinion |
| 21:31:26 | → | jathan joins (~jathan@69.61.93.38) |
| 21:31:40 | <edwardk> | https://github.com/ekmett/distributive/blob/2f58c1d5839c9c78b3ba0f82f52b09323b0fcb42/src/Data/Distributive.hs#L933 <- yolo |
| 21:31:54 | <geekosaur> | you know you're doing it, though |
| 21:32:27 | <edwardk> | that isn't always the case. ;) |
| 21:32:31 | <hugo> | Using Network.Socket (from networ), is there a way to recvieve data if available, alterantively check if data is available and only recieve then? |
| 21:32:42 | <hugo> | Without some socket to file descriptor hack? |
| 21:33:33 | → | raehik1 joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 21:33:51 | × | usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving) |
| 21:35:10 | × | neightchan quits (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9) |
| 21:35:13 | <geekosaur> | hugo, usually we read in a separate thread |
| 21:36:21 | <geekosaur> | anyway, it's not really designed for that use case, so no |
| 21:37:03 | → | natechan joins (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 21:40:28 | <hugo> | geekosaur: Sepparate threads would solve it. But it would require a major redesign. I'm getting synchronous and asyncronous messages over the same connection, and want to be able to check for eventual asynchrounous messages any time. |
| 21:41:11 | orion_ | is now known as orion |
| 21:41:40 | orion | is now known as Guest25944 |
| 21:42:20 | Guest25944 | is now known as orion |
| 21:42:23 | × | orion quits (~orion@c-76-19-236-20.hsd1.ct.comcast.net) (Changing host) |
| 21:42:23 | → | orion joins (~orion@unaffiliated/orion) |
| 21:42:27 | × | geekosaur quits (82650c7a@130.101.12.122) (Quit: Connection closed) |
| 21:43:34 | → | borne joins (~fritjof@200116b86494d20065fd8eaafdc5f06e.dip.versatel-1u1.de) |
| 21:47:32 | × | mikoto-chan quits (~anass@gateway/tor-sasl/mikoto-chan) (Quit: mikoto-chan) |
| 21:47:43 | → | mikoto-chan joins (~anass@gateway/tor-sasl/mikoto-chan) |
| 21:47:47 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 21:49:30 | fendor_ | is now known as fendor |
| 21:50:03 | × | CitizenSnips quits (~CitizenSn@irc.refl.club) (Quit: ZNC 1.8.2 - https://znc.in) |
| 21:50:06 | <fendor> | Just received a bug report that executable bits are missing for my hackage sdist... Can I fix that? |
| 21:50:53 | → | CitizenSnips joins (~CitizenSn@irc.refl.club) |
| 21:51:33 | × | supercoven quits (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Ping timeout: 264 seconds) |
| 21:53:41 | hackage | ory-kratos 0.0.5.6 - API bindings for Ory Kratos https://hackage.haskell.org/package/ory-kratos-0.0.5.6 (njaremko) |
| 21:56:00 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 21:57:34 | <minoru_shiraeesh> | hugo: there are two modules: Network.Socket.ByteString and Network.Socket.ByteString.Lazy |
| 21:58:15 | <minoru_shiraeesh> | in ByteString one there is a recv function |
| 21:58:55 | <minoru_shiraeesh> | in ByteString.Lazy one there is a recv and getContents function |
| 21:59:58 | <hugo> | minoru_shiraeesh: I'm using the strict variant, since that's what attoparsec wanted |
| 22:00:19 | <hugo> | Both recv comes with the notice "This function may block until a message arrives.", which is exacly my problem |
| 22:00:26 | → | Rudd0 joins (~Rudd0@185.189.115.103) |
| 22:00:40 | × | puffnfresh quits (~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) (Ping timeout: 276 seconds) |
| 22:01:48 | → | puffnfresh joins (~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) |
| 22:03:18 | <minoru_shiraeesh> | one of the options is to call recv in a loop and write to a channel |
| 22:03:30 | <minoru_shiraeesh> | and then read from that channel in another thread, right? |
| 22:03:53 | <dmj`> | yea, use synchronization primitives and threads liberally |
| 22:04:21 | → | ADG1089__ joins (~aditya@106.212.74.137) |
| 22:04:41 | <hugo> | minoru_shiraeesh: That could work. |
| 22:05:21 | × | Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving) |
| 22:05:34 | <minoru_shiraeesh> | iirc you can check a channel for a new message in a non-blocking way, in stm |
| 22:07:06 | <minoru_shiraeesh> | yes, there are tryReadTChan and tryPeekTChan functions |
| 22:07:37 | <minoru_shiraeesh> | and isEmptyTChan |
| 22:10:46 | <minoru_shiraeesh> | Control.Concurrent.Chan has getChanContents function that returns a lazy list, but I doubt that it's possible to check for a new message in a non-blocking way |
| 22:10:57 | <koz_> | For newArray, what is the tuple of indices argument meant to mean? |
| 22:11:02 | <koz_> | (rows, columns) or something else? |
| 22:11:21 | <monochrom> | Data.Array's newArray? lower and upper bounds. |
| 22:11:29 | <koz_> | Ah, thanks! |
| 22:11:33 | <koz_> | That makes worlds of sense. |
| 22:11:40 | × | plutoniix quits (~q@node-uj8.pool-125-24.dynamic.totinternet.net) (Ping timeout: 265 seconds) |
| 22:12:10 | <monochrom> | The Algol and Pascal days when arrays were programmer-based, not 0-based or 1-based. |
| 22:12:40 | <monochrom> | @quote monochrom pointless.debate |
| 22:12:40 | <lambdabot> | monochrom says: All pointless debates can be settled by going polymorphic. |
| 22:12:42 | → | plutoniix joins (~q@node-uj8.pool-125-24.dynamic.totinternet.net) |
| 22:13:21 | <hpc> | all pointless debates are pointful debates with variables omitted |
| 22:13:22 | <monochrom> | One more sanity that C killed. |
| 22:13:27 | <monochrom> | haha |
| 22:13:42 | <hpc> | (that one works in both meanings) |
| 22:14:04 | → | conal joins (~conal@64.71.133.70) |
| 22:14:28 | <minoru_shiraeesh> | I mean, if it was possible, Control.Concurrent.Chan would expose non-blocking functions, but that's just a guess |
| 22:14:41 | <hugo> | minoru_shiraeesh: Looks like I will go the route of TChan:s... I had just hoped that the same non-blocking alternatives would be available directly on scoket |
| 22:14:48 | <hugo> | s/scoket/sockets/ |
| 22:14:58 | <koz_> | Suppose I have a where-binding which is only used in one branch of a conditional. I assume this will be lazy in the computation bound? |
| 22:15:46 | <mpickering> | How do I understand this error about a broken package from cabal? |
| 22:15:50 | <mpickering> | [__2] rejecting: directory-1.3.6.0/installed-1.3.6.0 (package is broken, |
| 22:15:50 | <mpickering> | missing depenedency unix-2.7.2.2) |
| 22:16:11 | hackage | aeson-combinators 0.0.5.0 - Aeson combinators for dead simple JSON decoding https://hackage.haskell.org/package/aeson-combinators-0.0.5.0 (MarekFajkus) |
| 22:16:17 | <monochrom> | Yes koz_. |
| 22:16:27 | <koz_> | monochrom: Good to know my intuition led me right there. |
| 22:17:59 | <monochrom> | "f x = if x==0 then 10 else q where q = div 100 x" is an example. |
| 22:18:26 | <monochrom> | (div 100 0 doesn't happen) |
| 22:18:47 | × | ericsagn1 quits (~ericsagne@2405:6580:0:5100:985d:1221:bd5b:d5dd) (Ping timeout: 272 seconds) |
| 22:19:38 | → | conal_ joins (~conal@66.115.157.13) |
| 22:20:42 | × | conal quits (~conal@64.71.133.70) (Ping timeout: 246 seconds) |
| 22:21:10 | × | fosterite quits (~fosterite@2600:6c46:7800:fecf:2d14:82db:e894:f28b) (Remote host closed the connection) |
| 22:21:32 | × | conal_ quits (~conal@66.115.157.13) (Client Quit) |
| 22:21:48 | → | fosterite joins (~fosterite@2600:6c46:7800:fecf:2d14:82db:e894:f28b) |
| 22:22:14 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 22:23:16 | × | frozenErebus quits (~frozenEre@94.128.82.20) (Ping timeout: 265 seconds) |
| 22:23:49 | → | Neuromancer joins (~Neuromanc@unaffiliated/neuromancer) |
| 22:23:49 | × | ADG1089__ quits (~aditya@106.212.74.137) (Remote host closed the connection) |
| 22:24:03 | → | frozenErebus joins (~frozenEre@94.128.82.20) |
| 22:24:41 | hackage | hls-retrie-plugin 1.0.0.1 - Retrie integration plugin for Haskell Language Server https://hackage.haskell.org/package/hls-retrie-plugin-1.0.0.1 (PepeIborra) |
| 22:26:34 | → | fosterit_ joins (~fosterite@2600:6c46:7800:fecf:690b:a72:cdb4:908c) |
| 22:29:22 | × | frozenErebus quits (~frozenEre@94.128.82.20) (Ping timeout: 256 seconds) |
| 22:30:38 | × | fosterite quits (~fosterite@2600:6c46:7800:fecf:2d14:82db:e894:f28b) (Ping timeout: 264 seconds) |
| 22:30:39 | → | ericsagn1 joins (~ericsagne@2405:6580:0:5100:b44d:6014:67a8:1b64) |
| 22:31:38 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 22:35:21 | × | malumore quits (~malumore@151.62.123.0) (Ping timeout: 265 seconds) |
| 22:36:15 | × | Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Read error: Connection reset by peer) |
| 22:36:36 | × | mikoto-chan quits (~anass@gateway/tor-sasl/mikoto-chan) (Ping timeout: 268 seconds) |
| 22:36:38 | × | fendor quits (~fendor@91.141.1.110.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
| 22:39:10 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 22:39:18 | × | forgottenone quits (~forgotten@176.42.24.172) (Quit: Konversation terminated!) |
| 22:41:12 | → | ajc joins (~ajc@69.231.232.79) |
| 22:42:12 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 22:42:16 | × | fosterit_ quits (~fosterite@2600:6c46:7800:fecf:690b:a72:cdb4:908c) (Remote host closed the connection) |
| 22:43:50 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
| 22:44:07 | → | fuzzypixelz joins (2ec10464@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
| 22:45:28 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 245 seconds) |
| 22:46:14 | × | ajc quits (~ajc@69.231.232.79) (Quit: Leaving.) |
| 22:47:43 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 22:55:04 | → | frozenErebus joins (~frozenEre@94.128.82.20) |
| 22:57:45 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving) |
| 22:58:04 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 22:58:31 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
| 22:58:33 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 22:58:52 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) |
| 22:58:56 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection) |
| 22:59:12 | × | plutoniix quits (~q@node-uj8.pool-125-24.dynamic.totinternet.net) (Ping timeout: 246 seconds) |
| 23:03:28 | → | plutoniix joins (~q@node-uj8.pool-125-24.dynamic.totinternet.net) |
| 23:04:42 | × | unyu quits (~pyon@unaffiliated/pyon) (Quit: ERC (IRC client for Emacs 27.1)) |
| 23:05:01 | × | danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
| 23:05:23 | × | Tops22 quits (~Tobias@dyndsl-095-033-094-082.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 23:05:45 | → | ajc joins (~ajc@69.231.232.79) |
| 23:06:13 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 23:06:38 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 23:06:58 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 23:08:41 | → | teardown joins (~user@gateway/tor-sasl/mrush) |
| 23:09:02 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 256 seconds) |
| 23:09:32 | × | ajc quits (~ajc@69.231.232.79) (Quit: Konversation terminated!) |
| 23:09:50 | → | ajc_ joins (~ajc@69.231.232.79) |
| 23:10:24 | × | pera quits (~pera@unaffiliated/pera) (Ping timeout: 246 seconds) |
| 23:11:15 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
| 23:11:52 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
| 23:11:58 | × | ajc_ quits (~ajc@69.231.232.79) (Client Quit) |
| 23:12:18 | → | pera joins (~pera@unaffiliated/pera) |
| 23:14:15 | × | plutoniix quits (~q@node-uj8.pool-125-24.dynamic.totinternet.net) (Ping timeout: 246 seconds) |
| 23:14:42 | × | fuzzypixelz quits (2ec10464@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 240 seconds) |
| 23:15:20 | → | ajc joins (~ajc@69.231.232.79) |
| 23:15:46 | → | bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 23:15:47 | → | plutoniix joins (~q@node-uj8.pool-125-24.dynamic.totinternet.net) |
| 23:16:31 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Remote host closed the connection) |
| 23:19:56 | × | HarveyPwca quits (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Quit: Leaving) |
| 23:20:33 | × | bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
| 23:21:24 | → | stree joins (~stree@68.36.8.116) |
| 23:27:12 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 23:29:15 | × | xsperry quits (~as@unaffiliated/xsperry) (Remote host closed the connection) |
| 23:30:03 | × | usr25 quits (~usr25@unaffiliated/usr25) (Ping timeout: 245 seconds) |
| 23:30:57 | × | Vra quits (8077caad@natp-128-119-202-173.wireless.umass.edu) (Quit: Connection closed) |
| 23:31:55 | × | elusive quits (~Jeanne-Ka@static-198-54-134-171.cust.tzulo.com) (Quit: Leaving) |
| 23:36:53 | → | lechner joins (~lechner@letbox-vps.us-core.com) |
| 23:49:14 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) |
| 23:51:35 | × | borne quits (~fritjof@200116b86494d20065fd8eaafdc5f06e.dip.versatel-1u1.de) (Ping timeout: 240 seconds) |
| 23:52:13 | → | unyu joins (~pyon@unaffiliated/pyon) |
| 23:53:25 | × | bdixat quits (~AdminUser@pool-173-76-103-124.bstnma.fios.verizon.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 23:58:33 | → | hacxman joins (~hexo@gateway/tor-sasl/hexo) |
| 23:58:33 | → | sorki joins (~sorki@gateway/tor-sasl/sorki) |
| 23:59:14 | × | hexo quits (~hexo@gateway/tor-sasl/hexo) (Ping timeout: 268 seconds) |
| 23:59:15 | hacxman | is now known as hexo |
| 23:59:51 | × | srk quits (~sorki@gateway/tor-sasl/sorki) (Ping timeout: 268 seconds) |
All times are in UTC on 2021-03-13.