Logs on 2022-12-16 (liberachat/#haskell)
| 00:12:12 | × | acidjnk quits (~acidjnk@p200300d6e7137a0005c6f28ba6b2016c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 00:13:06 | → | raster joins (~raster@183.82.204.115) |
| 00:14:15 | × | raster quits (~raster@183.82.204.115) (Client Quit) |
| 00:15:38 | → | beefbambi joins (~beefbambi@183.82.204.115) |
| 00:19:12 | × | Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:21:29 | × | ksqsf quits (~user@134.209.106.31) (Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.60)) |
| 00:24:04 | → | xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 00:33:18 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 00:37:12 | × | ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Quit: WeeChat 3.7.1) |
| 00:38:42 | → | ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
| 00:40:39 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit) |
| 00:41:41 | × | Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 268 seconds) |
| 00:45:42 | × | JordiGH quits (~jordi@user/jordigh) (Remote host closed the connection) |
| 00:46:15 | → | JordiGH joins (~jordi@user/jordigh) |
| 00:46:19 | × | JordiGH quits (~jordi@user/jordigh) (Remote host closed the connection) |
| 00:46:38 | → | JordiGH joins (~jordi@user/jordigh) |
| 00:46:38 | × | JordiGH quits (~jordi@user/jordigh) (Remote host closed the connection) |
| 00:54:47 | → | j4cc3b joins (~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 00:59:14 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 260 seconds) |
| 01:01:07 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 01:01:07 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 01:01:07 | → | wroathe joins (~wroathe@user/wroathe) |
| 01:05:26 | → | fizbin joins (~fizbin@user/fizbin) |
| 01:09:24 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 01:10:35 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:14:22 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
| 01:16:43 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:17:05 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 01:35:05 | → | zeenk joins (~zeenk@2a02:2f04:a30d:4300::7fe) |
| 01:40:06 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::6126) |
| 01:40:08 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::6126) (Client Quit) |
| 01:41:47 | → | razetime joins (~quassel@49.207.203.213) |
| 01:42:04 | × | Xeroine quits (~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
| 01:42:23 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 01:42:44 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 01:46:59 | × | zeenk quits (~zeenk@2a02:2f04:a30d:4300::7fe) (Quit: Konversation terminated!) |
| 01:54:23 | × | rodental quits (~rodental@38.146.5.222) (Remote host closed the connection) |
| 02:00:22 | × | j4cc3b quits (~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 272 seconds) |
| 02:05:24 | → | money_ joins (~money@216-131-83-77.nyc.as62651.net) |
| 02:08:38 | × | beefbambi quits (~beefbambi@183.82.204.115) (Ping timeout: 268 seconds) |
| 02:09:18 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 02:10:20 | → | rodental joins (~rodental@38.146.5.222) |
| 02:13:39 | × | simp|e quits (~skralg@user/simple) (Remote host closed the connection) |
| 02:13:56 | × | dgb8 quits (~dgb@astra4961.startdedicated.net) (Quit: The Lounge - https://thelounge.github.io) |
| 02:14:26 | → | dgb8 joins (~dgb@astra4961.startdedicated.net) |
| 02:14:26 | × | dgb8 quits (~dgb@astra4961.startdedicated.net) (Client Quit) |
| 02:14:49 | → | simple joins (skralg@user/simple) |
| 02:14:55 | → | dgb8 joins (~dgb@astra4961.startdedicated.net) |
| 02:16:00 | × | dgb8 quits (~dgb@astra4961.startdedicated.net) (Client Quit) |
| 02:18:52 | ← | gwern parts (~gwern@user/gwern) () |
| 02:19:51 | → | dgb8 joins (~dgb@astra4961.startdedicated.net) |
| 02:27:08 | × | razetime quits (~quassel@49.207.203.213) (Ping timeout: 252 seconds) |
| 02:32:20 | oats | is now known as tomas |
| 02:36:26 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
| 02:36:45 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 02:37:59 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 02:39:27 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 02:46:23 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 02:46:23 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 02:46:23 | → | wroathe joins (~wroathe@user/wroathe) |
| 02:55:07 | × | money_ quits (~money@216-131-83-77.nyc.as62651.net) (Ping timeout: 256 seconds) |
| 02:59:45 | → | money_ joins (~money@216-131-83-77.nyc.as62651.net) |
| 03:00:50 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 255 seconds) |
| 03:02:34 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 252 seconds) |
| 03:09:33 | → | money__ joins (~money@50.239.93.29) |
| 03:11:54 | × | money__ quits (~money@50.239.93.29) (Read error: Connection reset by peer) |
| 03:12:41 | × | money_ quits (~money@216-131-83-77.nyc.as62651.net) (Ping timeout: 256 seconds) |
| 03:12:42 | → | money__ joins (~money@50.239.93.29) |
| 03:16:09 | × | johnw quits (~johnw@2600:1700:cf00:db0:b0f5:26ad:fa0:865f) (Quit: ZNC - http://znc.in) |
| 03:19:24 | burakcan- | is now known as burakcank |
| 03:25:37 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:25:37 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 03:25:37 | finn_elija | is now known as FinnElija |
| 03:33:10 | × | money__ quits (~money@50.239.93.29) (Read error: Connection reset by peer) |
| 03:34:10 | → | money_ joins (~money@50.239.93.29) |
| 03:35:14 | → | waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) |
| 03:35:35 | × | td_ quits (~td@83.135.9.20) (Ping timeout: 268 seconds) |
| 03:37:13 | → | td_ joins (~td@83.135.9.25) |
| 03:37:37 | × | lyxia quits (~lyxia@poisson.chat) (Ping timeout: 256 seconds) |
| 03:37:53 | → | lyxia joins (~lyxia@poisson.chat) |
| 03:41:27 | × | money_ quits (~money@50.239.93.29) (Read error: Connection reset by peer) |
| 03:42:46 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 03:43:01 | → | money__ joins (~money@50.239.93.29) |
| 03:45:31 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 03:45:36 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds) |
| 03:46:36 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 03:48:02 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 03:48:36 | → | masterbuilder joins (~master@user/masterbuilder) |
| 03:49:46 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 268 seconds) |
| 04:03:29 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 04:04:18 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 04:04:23 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
| 04:05:42 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 04:06:31 | × | money__ quits (~money@50.239.93.29) (Ping timeout: 256 seconds) |
| 04:07:48 | → | money_ joins (~money@172.58.203.79) |
| 04:08:55 | → | money__ joins (~money@50.239.93.29) |
| 04:09:03 | × | money_ quits (~money@172.58.203.79) (Read error: Connection reset by peer) |
| 04:09:50 | → | money_ joins (~money@2607:fb91:bd34:c1b1:60ff:ce4f:5cae:2e80) |
| 04:13:19 | × | money__ quits (~money@50.239.93.29) (Ping timeout: 256 seconds) |
| 04:14:38 | → | dsrt^ joins (~dsrt@76.145.185.103) |
| 04:21:06 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 04:22:53 | → | money__ joins (~money@50.239.93.29) |
| 04:26:21 | × | money_ quits (~money@2607:fb91:bd34:c1b1:60ff:ce4f:5cae:2e80) (Ping timeout: 256 seconds) |
| 04:26:28 | → | Kaiepi joins (~Kaiepi@108.175.84.104) |
| 04:29:32 | → | slack1256 joins (~slack1256@181.42.45.84) |
| 04:30:57 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 04:32:56 | × | waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 268 seconds) |
| 04:35:28 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds) |
| 04:42:44 | → | razetime joins (~quassel@49.207.203.213) |
| 04:45:13 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 04:45:40 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 04:58:32 | → | mbuf joins (~Shakthi@49.204.113.218) |
| 05:00:52 | × | slack1256 quits (~slack1256@181.42.45.84) (Ping timeout: 272 seconds) |
| 05:01:26 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 05:11:13 | → | bontaq joins (~user@ool-45779fe5.dyn.optonline.net) |
| 05:19:55 | → | jargon joins (~jargon@174-22-192-24.phnx.qwest.net) |
| 05:27:00 | → | slack1256 joins (~slack1256@181.42.45.84) |
| 05:28:22 | → | mcfilib joins (uid302703@user/mcfilib) |
| 05:28:54 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 05:32:14 | → | money_ joins (~money@2607:fb91:bd24:772:1444:8545:2c03:8bb9) |
| 05:32:32 | × | slack1256 quits (~slack1256@181.42.45.84) (Ping timeout: 272 seconds) |
| 05:35:07 | <iqubic> | I'm looking for a version of a lens function that might not exist. |
| 05:35:29 | × | money__ quits (~money@50.239.93.29) (Ping timeout: 256 seconds) |
| 05:35:54 | <iqubic> | I want something like "at :: Index m -> Lens' m (Maybe (IxValue m))" but gives me a "Lens' m (IxValue m)" that just errors if it's a Nothing. |
| 05:36:27 | <c_wraith> | you can use ix with singular |
| 05:37:54 | <iqubic> | How does that work? |
| 05:38:04 | <c_wraith> | :t ix |
| 05:38:05 | <lambdabot> | (Ixed m, Applicative f) => Index m -> (IxValue m -> f (IxValue m)) -> m -> f m |
| 05:38:20 | <c_wraith> | ix is like at, but it gives back a traversal |
| 05:38:24 | <c_wraith> | :t singular |
| 05:38:26 | <lambdabot> | (Conjoined p, Functor f) => Traversing p f s t a a -> Over p f s t a a |
| 05:38:49 | <c_wraith> | singular transforms a traversal into a lens that will crash if it doesn't have exactly one target |
| 05:38:58 | <iqubic> | I see. Makes sense. |
| 05:39:10 | <iqubic> | I'm using this to index into a "Map String a" |
| 05:42:14 | <c_wraith> | > M.fromList [("hello", 1),("world", 2)] ^. singular (ix "hello") |
| 05:42:15 | <lambdabot> | 1 |
| 05:42:20 | <c_wraith> | > M.fromList [("hello", 1),("world", 2)] ^. singular (ix "help") |
| 05:42:22 | <lambdabot> | *Exception: singular: empty traversal |
| 05:46:21 | <c_wraith> | Whoops, I was a bit off on my description of singular. If the traversal has multiple targets, it will just get the first one, not error. |
| 05:49:45 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 05:50:48 | → | money__ joins (~money@50.239.93.29) |
| 05:54:45 | × | money_ quits (~money@2607:fb91:bd24:772:1444:8545:2c03:8bb9) (Ping timeout: 256 seconds) |
| 05:56:31 | → | slack1256 joins (~slack1256@181.42.45.84) |
| 06:01:44 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 255 seconds) |
| 06:11:32 | → | trev joins (~trev@user/trev) |
| 06:16:22 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:16:43 | × | iqubic quits (~avi@2601:601:1100:edd0:9ce:db2c:6ec0:6fd1) (Remote host closed the connection) |
| 06:18:12 | → | iqubic joins (~avi@2601:601:1100:edd0:8902:307c:9a5f:dd30) |
| 06:20:29 | × | money__ quits (~money@50.239.93.29) (Quit: late) |
| 06:25:53 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 06:25:53 | × | dtman34 quits (~dtman34@2601:447:d000:93c9:f2ce:ff11:8e35:42b2) (Ping timeout: 246 seconds) |
| 06:29:23 | → | money_ joins (~money@50.239.93.29) |
| 06:34:45 | → | fizbin_ joins (~fizbin@user/fizbin) |
| 06:36:27 | → | Ybombinator joins (~Ybombinat@85.254.75.176) |
| 06:36:50 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 252 seconds) |
| 06:37:13 | fizbin_ | is now known as fizbin |
| 06:37:20 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 06:44:49 | → | dtman34 joins (~dtman34@2601:447:d000:93c9:5a3c:a3a1:a91d:2efa) |
| 06:46:23 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 06:46:55 | → | bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex) |
| 06:55:00 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1) |
| 06:55:46 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 252 seconds) |
| 06:56:08 | <Ybombinator> | Why can desort accept arguments in this example https://bpa.st/P43E4 ? Shouldn't desort have a parameter like x that it accepts in it's definition like this "desort x" and then somehow pass it to function composition? |
| 06:58:38 | → | johnw joins (~johnw@2600:1700:cf00:db0:fc6e:5acb:13f7:b72d) |
| 06:59:27 | <jackdk> | @src (.) |
| 06:59:27 | <lambdabot> | (f . g) x = f (g x) |
| 06:59:53 | <c_wraith> | in Haskell a function is a function. (.) returns a function. |
| 07:00:07 | <jackdk> | `desort = (reverse . sort)` is `\x -> reverse (sort x)`, which is a function |
| 07:00:40 | <c_wraith> | you don't need to bind parameters for a definition to be a function. |
| 07:01:22 | <opqdonut> | consider a simpler example like: mysort = sort |
| 07:01:37 | <opqdonut> | you can still call mysort [1,2,3], because it's just sort [1,2,3] |
| 07:02:14 | <Ybombinator> | oh right |
| 07:02:23 | <Ybombinator> | thanks |
| 07:09:32 | × | tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving) |
| 07:11:19 | → | tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
| 07:14:19 | × | Ybombinator quits (~Ybombinat@85.254.75.176) (Quit: Quit) |
| 07:19:53 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 07:20:17 | <int-e> | "in Haskell a function is a function" -- a value, maybe? |
| 07:21:44 | <Jade[m]> | I think they meant A function can take a function as it's input? |
| 07:22:04 | <Jade[m]> | And likewise return one |
| 07:22:34 | <int-e> | Yeah, that's the sense of "value" that I meant. |
| 07:22:38 | <c_wraith> | no, I meant exactly what I said. a function simply *is* a function |
| 07:22:45 | <c_wraith> | no special syntax required |
| 07:23:27 | → | Inst joins (~Inst@2601:6c4:4081:54f0:8d82:4e66:2137:ab94) |
| 07:23:34 | <Inst> | wait, isn't GHCJS sort of pointless? |
| 07:23:45 | <Inst> | because you can't get integration in or out of existing JS code |
| 07:23:46 | <int-e> | Jade[m]: (so none of the more theoretical stuff with weak head normal forms and the like) |
| 07:23:54 | <Inst> | elm developers told me that GHCJS outputs terrible JS |
| 07:23:56 | <c_wraith> | Inst: it has an ffi |
| 07:24:10 | <Inst> | I took a look at a site that seems to be using GHCJS |
| 07:24:32 | <Inst> | and I was like, what, it's a Haskell RTS implemented in JS |
| 07:24:39 | <c_wraith> | but GHCJS is also mostly obsolete |
| 07:24:43 | <int-e> | "outputs terrible JS" is fine as long as you never look at it and it's not *too* hard on browsers |
| 07:25:21 | <davean> | Inst: Of course you can get integration in and out of existing JS |
| 07:25:21 | <int-e> | (I'm actually not a fan, but pragmatically there's no issue.) |
| 07:26:03 | <Inst> | I mean this is relative to recent integration of a GHCJS variant into GHC in 9.6 |
| 07:26:24 | <Inst> | there's a potential convenience feature in that you can make Haskell code readable in a JS form |
| 07:26:36 | <davean> | Inst: I have no idea why you think you couldn't. Yes it has a good bit of the GHC RTS compiled in, but that has nothing to do with integrating with other JS |
| 07:27:11 | <int-e> | It's fair to say that it would be useless without a working FFI to connect to (other) JS. |
| 07:27:26 | <davean> | Right, its very obvious it can do it |
| 07:27:44 | <davean> | I suppose making it callable from JS isn't as obvious, but that works fine too |
| 07:27:46 | × | shane quits (~shane@ana.rch.ist) (Remote host closed the connection) |
| 07:27:56 | <Inst> | i mean, from my use case, it's more, I want to make my Haskell code readable to non-haskellers |
| 07:28:07 | <Inst> | an easy way to do this is via GHCJS |
| 07:28:27 | <Inst> | or, I misunderstood, because it looks like it's not intended to be human readable |
| 07:28:30 | <davean> | GHCJS isn't code translation, its compilation |
| 07:28:43 | <davean> | Its a compiler |
| 07:28:50 | <int-e> | Inst: yeah it doesn't work for that purpose |
| 07:28:51 | <Inst> | in which case, why not asterius / new wasm backend? |
| 07:29:43 | <int-e> | And it's hard to imagine anything that really works for that purpose... you express algorithms differently in Haskell. So it's more of a machine translation task, but in an unforgiving environment with little redundancy. |
| 07:29:52 | <Inst> | with WASM at least, it's not intended to be readable |
| 07:29:57 | <davean> | Inst: You might want to review the difference between a compiler and a transpiler |
| 07:30:08 | <Inst> | I understand |
| 07:30:24 | <int-e> | Most JS in the wild isn't readable either, even when it's written in JS or TS... because of minification. |
| 07:30:34 | <davean> | There has been a Haskell-JS transpiler or two |
| 07:30:40 | <davean> | I don't think anyone ever cares about them though |
| 07:30:44 | <davean> | why would you want that? |
| 07:30:56 | <davean> | Right, you want web pages to work well |
| 07:31:01 | <davean> | No one reads the code on the page |
| 07:31:08 | <davean> | well, other than security researchers |
| 07:31:27 | <davean> | The code that you serve is for execution, you want the best form for execution |
| 07:31:28 | <c_wraith> | haste and sunroof? those two were basically transpilers, right? |
| 07:31:43 | <Inst> | haste iirc had RTS code, no? |
| 07:31:52 | <int-e> | Even as a human who understands the code... if your Haskell code actually depends on laziness, translation will not be straightforward. |
| 07:31:52 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 07:31:54 | <c_wraith> | ah, ok. it was bigger than I recalled |
| 07:32:10 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 07:32:10 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 07:32:42 | <davean> | c_wraith: There were a few others ... |
| 07:33:00 | <c_wraith> | but yeah, I agree with int-e. idiomatic Haskell code looks like a nightmare in most other languages if you preserve the semantics of individual portions of the code. |
| 07:33:27 | <davean> | And if you don't, its not that code |
| 07:34:05 | <Inst> | you know what I mean when I say Hascalator, right? |
| 07:34:22 | × | manwithluck quits (~manwithlu@194.177.28.176) (Remote host closed the connection) |
| 07:34:32 | <davean> | Oh hey, Fay got a release in the last decade |
| 07:34:49 | <Inst> | sarcasm? |
| 07:35:11 | <davean> | No, it got a 2021 release. Apparently thats still alive |
| 07:36:12 | → | manwithluck joins (~manwithlu@194.177.28.176) |
| 07:36:45 | → | gmg joins (~user@user/gehmehgeh) |
| 07:37:57 | × | mcfilib quits (uid302703@user/mcfilib) (Quit: Connection closed for inactivity) |
| 07:39:00 | <Inst> | by Hascalator, it's a joke between Haskell and Scala communities |
| 07:39:22 | <Inst> | quite a few Scala developers eventually end up becoming Haskell developers because they're interested in the typed FP side, and Scala is a way for them to build experience in typed FP |
| 07:39:48 | <Inst> | It appears that JS is also becoming sort of a Hascalator; iirc, wasn't Alexis King formerly a JS dev? |
| 07:40:45 | <davean> | Inst: you may not be horrified by the Fay output, though like, its a subset, and subset isn't stressed enough in that sentance. Its missing some of the best parts of Haskell |
| 07:41:12 | <Inst> | I'm just a bit disappointed |
| 07:41:24 | <Inst> | since GHCJS being officially supported by GHC means that there's more support to GHCJS |
| 07:41:45 | <Inst> | I guess Fay is more interesting; i.e, the idea is, a production team can experiment with Haskell, with their former language being a functional dialect of JS |
| 07:41:59 | <Inst> | the idea is, if the project fails, transpile to JS, keep the transpiled code |
| 07:42:12 | <Inst> | reducing the costs of an experimental project in Haskell |
| 07:42:22 | <Inst> | it also encourages JSers to move into Haskell |
| 07:43:03 | <Inst> | since they could transpile their Haskell into JS and have some safety features, and if there's FFI, as with the apparently abandoned inline-JS, transition to Haskell is gentler |
| 07:44:18 | <davean> | What does inline-js have to do with there being an FFI? |
| 07:44:56 | <Inst> | erm, let's backtrack, you are familiar with the joke "Hascalator", right? |
| 07:45:18 | <davean> | I've come across it, but we're not joking here |
| 07:45:57 | <Inst> | If you're talking about FFI, the idea is that being able to FFI into JS libs provides a level of comfort and adjustment to JS devs moving into Haskell, and inline-JS does the same thing |
| 07:46:52 | <davean> | same thing, but we have FFIs |
| 07:47:00 | <davean> | inline-js would use the FFI |
| 07:47:02 | <davean> | not provide it |
| 07:47:48 | <Inst> | I'm not sure what's going on with that project |
| 07:47:55 | <Inst> | I assumed they'd develop a FFI for JS |
| 07:48:22 | <davean> | No, we HAVE FFIs |
| 07:48:33 | <davean> | Thats how like GHCJS can exist as a functional thing |
| 07:48:58 | <davean> | You have to have them in both directions for that to even start working |
| 07:49:17 | <davean> | FFIs are an entire different level and thing from inline- packages |
| 07:49:46 | <Inst> | I'm searching for it, but I don't see Haskell FFIs to JS other than Foreign.JavaScript in ThreePennyGUI |
| 07:50:14 | <davean> | Because they're a BASE COMPONENT PROVIDED AS PART OF A COMPILER - they have to be |
| 07:50:23 | <davean> | you can't "build" one, you have to have one |
| 07:50:36 | <Inst> | well, i'll walk off if i'm being frustrating |
| 07:50:38 | <Inst> | thanks for your time |
| 07:50:46 | <jackdk> | I have literally in the past provided functions written in Haskell to be called by JS |
| 07:51:12 | <jackdk> | Unfortunately it was for an internal project but yeah |
| 07:51:38 | <davean> | Inst: you're just clearly ignorant of the very idea of what an FFI is |
| 07:52:14 | <davean> | while theoretically you can write them inside some languages, certainly Haskell isn't one, it directly involves the calling conventions of the host system |
| 07:52:15 | <Inst> | a foreign function interface, a provision for one language to call another or be called by another |
| 07:52:48 | <Inst> | afaik Haskell has C FFIs |
| 07:53:04 | <Inst> | there's attempts at building FFIs between Haskell and Python, but the project seems old and bitrotted |
| 07:53:04 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:53:42 | <davean> | Yes, but you can NOT write those *inside* the language of anything remotely high level. The compiler of a language that doesn't let you directly mess with the host architecture MUST be a COMPILER PRIMATIVE |
| 07:53:55 | <davean> | And we keep telling you, the JS one is right there |
| 07:53:57 | <Inst> | and yeah, I'm aware of that |
| 07:54:17 | <davean> | you seem not to be, because you point to things like inline-js |
| 07:54:21 | <Inst> | the way I understand it is that the JS FFI is implemented as part of GHCJS |
| 07:54:31 | <davean> | For the GHCJS compiler |
| 07:54:45 | <davean> | being a compiler primative, it must be in the compiler that it is related to, yes |
| 07:55:26 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:55:38 | <Inst> | I'm curious, afaik GHCJS was extremely hard to use, i.e, the support had dropped. The interest right now is building a JS backend for GHC in 9.6 |
| 07:56:32 | <Inst> | but if it's a backend, does that apply to FFI with the normal LLVM backend? |
| 07:56:37 | <davean> | A lot of the "hard to use" is it required an appropriate enviroment, and since it wasn't integrated into GHC it always trailed, and stuff wasn't tested for it specificly. |
| 07:57:05 | <Inst> | NixOS, I assume |
| 07:57:08 | <davean> | no |
| 07:57:11 | <davean> | though it was easy there |
| 07:57:35 | <davean> | but ... A) the LLVM backend isn't "normal" B) what do you mean "to FFI with the normal LLVM backend"? |
| 07:58:22 | <davean> | I wouldn't be surprised if you'd never used the LLVM backend |
| 07:58:31 | <Inst> | the implication of GHCJS is that it's localized to the backend, like, if I use inline-C right now, GHC will compile C object code (if I'm correct here), then call into it when I FFI |
| 07:58:41 | <jackdk> | There was support in stack for a time, but it bitrotted. Most people I know who use ghcjs do so with Nix but not necessarily NixOS |
| 07:58:50 | <Inst> | how have I offended you, davean? |
| 07:58:57 | <davean> | no |
| 07:59:31 | <Inst> | So, I'm guessing, GHC is still using the gcc backend by default, no? |
| 07:59:38 | <davean> | No |
| 07:59:47 | <Inst> | or rather, clang |
| 07:59:49 | <davean> | No |
| 07:59:55 | <davean> | It generated native machine code |
| 08:00:02 | <davean> | *generates |
| 08:00:24 | <davean> | You can ask it to generate C code, which can be compiled with GCC or clang, but thats SUPER rare and mostly unsupported |
| 08:00:32 | <davean> | mostly exists for bootstrapping on new architectures |
| 08:00:52 | <davean> | and it has an LLVM one, if you ask it nicely to use it, though its usually worse except for tight numeric code |
| 08:01:49 | <Inst> | so regarding the JS FFI, say, post 9.6, if I just use the default backend, I won't have access to the JS FFI? |
| 08:02:14 | <davean> | You can't just call another language, there has to be a host architecture relationship to that language. |
| 08:02:24 | <davean> | so if you compile with a JS targetting backend, you can just use the FFI |
| 08:02:33 | <davean> | also probably the wasm one. |
| 08:02:47 | <davean> | but certainly not the x86 or ARM one, that would be nonsensicle |
| 08:03:33 | <davean> | You could have an API to a JS execution engine - thats what the Python one you cite sorta is |
| 08:03:38 | × | thaumavorio quits (~thaumavor@thaumavor.io) (Quit: ZNC 1.8.2 - https://znc.in) |
| 08:03:58 | <davean> | If you link to a JS execution engine, you can use the native FFI to call the symbols it exports. |
| 08:04:22 | <Inst> | I assume with custom build, you could link into Node and call JS code |
| 08:04:46 | <davean> | Nothing custom needed, but yes |
| 08:06:19 | <davean> | You could use the compilers FFI to bridge into the JS execution enviroment |
| 08:06:24 | → | thaumavorio joins (~thaumavor@thaumavor.io) |
| 08:07:06 | <davean> | We already have some of those hanging around |
| 08:07:26 | <davean> | we have to for things like running Template Haskell |
| 08:10:08 | → | manwithl- joins (~manwithlu@2a09:bac1:5bc0:20::49:125) |
| 08:10:52 | × | manwithluck quits (~manwithlu@194.177.28.176) (Ping timeout: 272 seconds) |
| 08:15:24 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 08:15:46 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 08:17:06 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 08:17:10 | × | ubert quits (~Thunderbi@p200300ecdf264e7202f1c0a81cd86a27.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 08:17:24 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 08:18:45 | × | money_ quits (~money@50.239.93.29) (Quit: late) |
| 08:20:21 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) |
| 08:21:59 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 08:22:25 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 08:23:15 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:70c3:bbfa:bcc:5827) |
| 08:25:15 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) (Ping timeout: 260 seconds) |
| 08:26:01 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 08:27:43 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 08:30:11 | → | zeenk joins (~zeenk@2a02:2f04:a30d:4300::7fe) |
| 08:32:31 | × | slack1256 quits (~slack1256@181.42.45.84) (Remote host closed the connection) |
| 08:34:13 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 252 seconds) |
| 08:35:52 | × | thegeekinside quits (~thegeekin@189.217.82.244) (Read error: Connection reset by peer) |
| 08:40:41 | → | vpan joins (~0@212.117.1.172) |
| 08:41:08 | × | Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 252 seconds) |
| 08:42:51 | → | nschoe joins (~q@141.101.51.197) |
| 08:43:52 | × | ft quits (~ft@p4fc2a257.dip0.t-ipconnect.de) (Quit: leaving) |
| 08:45:48 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 08:46:43 | <Inst> | are there any leaks about what's planned for 9.8? |
| 08:46:53 | <Inst> | I knew 9.6 was the GHCJS / Asterius release |
| 08:49:12 | <int-e> | https://gitlab.haskell.org/ghc/ghc/-/milestones/379#tab-issues doesn't seem to have anything dramatic yet |
| 08:51:25 | <Inst> | this is more interesting |
| 08:51:26 | <Inst> | https://gitlab.haskell.org/ghc/ghc/-/issues/22326 |
| 08:51:59 | <dminuoso> | Im looking for a minimalistic mustache-style template library with a lot dependency footprint. Any ideas? |
| 08:52:09 | <dminuoso> | *small dependency footprint, heh |
| 08:52:22 | → | freeside joins (~mengwong@nat-veranstaltungen.uni-saarland.de) |
| 08:52:49 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 08:53:11 | → | Sciencentistguy joins (~sciencent@hacksoc/ordinary-member) |
| 08:53:40 | → | avicenzi joins (~avicenzi@2a00:ca8:a1f:b004::c32) |
| 08:53:42 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 08:53:59 | <jonathanx__> | I'm looking for a datatype that is a bit like Data.These, but instead of "This a | That b | These a b", I want "Foo a | Bar b | Baz" |
| 08:54:24 | <jonathanx__> | I can make it myself ofc, but does anyone know a lib that has somehting like it? |
| 08:54:25 | <dminuoso> | jonathanx__: And what is that data type supposed to do? |
| 08:54:34 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Ping timeout: 252 seconds) |
| 08:54:38 | <dminuoso> | You could just use `Maybe (Either S T)` |
| 08:56:58 | <jonathanx__> | yes I could, I'd be interested in something akin to a performant partition, with the type "partition' :: Foldable f => (a -> PotentialType b c) -> f a -> (f b, f c)) |
| 08:57:06 | × | freeside quits (~mengwong@nat-veranstaltungen.uni-saarland.de) (Ping timeout: 272 seconds) |
| 08:57:21 | <jonathanx__> | and yes, I could make this through combining partitionEithers and catMaybes |
| 08:57:43 | → | fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 08:57:53 | <jonathanx__> | I'm just wondering it there's prior art, since I'm working with something that's a bit performance sensitive |
| 08:57:58 | <dminuoso> | Foldable is not powerful enough to do this. |
| 08:58:25 | <jonathanx__> | true |
| 08:58:33 | <jonathanx__> | excahnge it for a list |
| 08:59:03 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 08:59:20 | × | Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 268 seconds) |
| 09:00:16 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 272 seconds) |
| 09:00:53 | <dminuoso> | I've been thinking about ways to generalize partitioning for a while |
| 09:01:34 | <dminuoso> | The best thing I can ever come up with, is essentially optics, lens. |
| 09:01:48 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 09:01:58 | → | freeside joins (~mengwong@nat-veranstaltungen.uni-saarland.de) |
| 09:02:08 | <jonathanx__> | Right! |
| 09:02:37 | <jonathanx__> | I could kind of remembers seeing some mention of a datatype like this in an announcement for Data.These |
| 09:02:53 | <dminuoso> | So by using hlists, you could do something along the lines of |
| 09:03:32 | <jonathanx__> | There is a symmetry where you can get 4 different data types by removing one constructor from "Foo | Bar a | Baz b | Bazz ab" |
| 09:03:38 | <jonathanx__> | *Bazz a b |
| 09:03:40 | <dminuoso> | `partition :: HList ... -> [a] -> HList ...` |
| 09:04:00 | <dminuoso> | Doing this in a general pattern is awkwardly difficult |
| 09:04:05 | <dminuoso> | But it is easy enough to just say |
| 09:04:20 | <dminuoso> | Conjure up a typeclass |
| 09:05:05 | <dminuoso> | Such that you could say `gpartition (_Left, _Right) [Left 1, Left 2, Left 3, Right 4]` |
| 09:05:12 | <dminuoso> | And you could have |
| 09:05:55 | <dminuoso> | oh just strike that I havent quite worked it out yet |
| 09:06:12 | <dminuoso> | but the main issue is that I dont know how to do this efficiently |
| 09:06:35 | <dminuoso> | What we would need is some general: |
| 09:06:40 | × | freeside quits (~mengwong@nat-veranstaltungen.uni-saarland.de) (Ping timeout: 252 seconds) |
| 09:06:47 | → | thyriaen joins (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1) |
| 09:06:51 | <dminuoso> | `fuse :: Fold s t -> Fold s u -> Fold s (t, u)` |
| 09:07:09 | <dminuoso> | That will correctly fuse it together at their common merge point |
| 09:07:26 | <dminuoso> | or their split point, rather |
| 09:08:16 | <dminuoso> | (I guess this would be a kind of cross join in algebraic terms) |
| 09:08:36 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:484b:db47:7265:c55f) |
| 09:09:16 | <dminuoso> | jonathanx__: For what its worth, I think this *can* be built using the same dark black magic that drives this |
| 09:09:19 | <dminuoso> | :t upon |
| 09:09:20 | <lambdabot> | (Indexable [Int] p, Data s, Data a, Applicative f) => (s -> a) -> p a (f a) -> s -> f s |
| 09:09:49 | × | xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds) |
| 09:10:01 | <dminuoso> | Or you could even use `upon` directly probably |
| 09:10:17 | × | beefbambi quits (~beefbambi@183.82.176.168) (Ping timeout: 255 seconds) |
| 09:10:29 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 09:11:02 | <dminuoso> | > [1,2,3,4] & upon head .~ 0 |
| 09:11:04 | <lambdabot> | [0,2,3,4] |
| 09:11:31 | <iqubic> | What does upon do? |
| 09:11:55 | <dminuoso> | Just provide it a regular function, and by pure black magic, it transforms it into a traversal. |
| 09:12:06 | <iqubic> | I see. |
| 09:12:35 | <iqubic> | > (1,2) & upon fst +~ 7 |
| 09:12:36 | <lambdabot> | (8,2) |
| 09:12:49 | <iqubic> | That is pure black magic. |
| 09:12:56 | <dminuoso> | :> |
| 09:13:00 | × | son0p quits (~ff@2604:3d08:5b7f:5540::d832) (Ping timeout: 255 seconds) |
| 09:13:06 | <dminuoso> | The type of upon tells you how this works. |
| 09:13:32 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 09:13:57 | <iqubic> | > Just 1 & upon (\x -> case x of Nothing -> 0; Just y -> y) .~ 2 |
| 09:13:59 | <lambdabot> | Just 2 |
| 09:14:13 | <iqubic> | > Nothing & upon (\x -> case x of Nothing -> 0; Just y -> y) .~ 2 |
| 09:14:15 | <lambdabot> | Nothing |
| 09:14:20 | <dminuoso> | It involves sorcery including unsafePerformIO, using Data to just try out every field in the ADT representation, provoking runtime exceptions, catching them.. |
| 09:14:30 | <iqubic> | Okay, that is pure black magic. |
| 09:14:41 | <dminuoso> | https://hackage.haskell.org/package/lens-5.2/docs/src/Data.Data.Lens.html#lookupon |
| 09:14:54 | <iqubic> | > Nothing & upon (\x -> case x of Nothing -> undefined; Just y -> y) .~ 2 |
| 09:14:55 | <dminuoso> | And it then counts the indices as it goes through.. |
| 09:14:56 | <lambdabot> | Nothing |
| 09:15:14 | <iqubic> | Wait... what!?!? |
| 09:15:29 | <iqubic> | Nothing & upon undefined .~ 2 |
| 09:15:35 | → | azimut_ joins (~azimut@gateway/tor-sasl/azimut) |
| 09:15:39 | <iqubic> | > Nothing & upon undefined .~ 2 |
| 09:15:41 | <lambdabot> | Nothing |
| 09:15:42 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in) |
| 09:15:49 | <iqubic> | That really is black magic. |
| 09:15:50 | <dminuoso> | you're invalidating a precondition |
| 09:15:58 | <dminuoso> | `First, the user supplied function must access only one field of the specified type.` |
| 09:16:08 | <dminuoso> | your function does not actually access a field. |
| 09:16:16 | <iqubic> | Didn't know there was a precondition. |
| 09:16:23 | <dminuoso> | It says so on the haddock. |
| 09:16:26 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 09:16:46 | × | Xeroine quits (~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
| 09:17:07 | <iqubic> | How enlightened is edwardk? |
| 09:17:23 | <dminuoso> | First, the user supplied function must access only one field of the specified type. T |
| 09:17:26 | <dminuoso> | Oops |
| 09:17:28 | <dminuoso> | https://hackage.haskell.org/package/lens-5.2/docs/src/Data.Data.Lens.html#template |
| 09:17:35 | <dminuoso> | iqubic: well honestly this primitive isnt as complicated to build |
| 09:17:37 | <dminuoso> | its just very evil. |
| 09:18:00 | <dminuoso> | It shows that you can do ruby-style metaprogramming with runtime reflection *just* *fine* in haskell |
| 09:18:46 | <iqubic> | The craziest thing I've ever done with Lens is write my own Plated instance and run a paramorphism on some custom data type. |
| 09:19:22 | → | money_ joins (~money@50.239.93.29) |
| 09:19:31 | → | freeside joins (~mengwong@nat-veranstaltungen.uni-saarland.de) |
| 09:19:54 | × | money_ quits (~money@50.239.93.29) (Client Quit) |
| 09:20:30 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 09:20:44 | → | money_ joins (~money@50.239.93.29) |
| 09:21:41 | <dminuoso> | If I read the code right, the way this works is that by using the data instance and template, it swaps out *every* value in the ADT with an exception |
| 09:22:04 | <dminuoso> | And it then uses the function zooming into each field while counting a kind of field index |
| 09:22:09 | <dminuoso> | and if the exception is tripped |
| 09:22:24 | <iqubic> | Why!?!?! That's all kinds of messed up |
| 09:22:31 | <dminuoso> | then you know what the accessor was looking at |
| 09:22:50 | <dminuoso> | https://hackage.haskell.org/package/lens-5.2/docs/src/Data.Data.Lens.html#lookupon |
| 09:23:03 | <dminuoso> | case unsafePerformIO $ E.try $ evaluate $ field $ s & indexing l %@~ \i (a::a) -> E.throw (FieldException i a) of .... |
| 09:23:42 | <dminuoso> | Yup its doubly crazy because its not entirely reliable due to imprecise exceptions |
| 09:24:03 | × | freeside quits (~mengwong@nat-veranstaltungen.uni-saarland.de) (Ping timeout: 260 seconds) |
| 09:24:39 | <dminuoso> | iqubic: ah hold on, let me rephrase. |
| 09:24:42 | <dminuoso> | no its even better! |
| 09:24:48 | <dminuoso> | each field is replaced by an exception that contains the index |
| 09:24:56 | <dminuoso> | (the index in template) |
| 09:25:08 | <dminuoso> | then you just use the accessor, provoke the pure exception, catch it, extract the index |
| 09:25:16 | <dminuoso> | and then using the index you can recover a traversal |
| 09:25:27 | <dminuoso> | oh this is lovely |
| 09:25:36 | <dminuoso> | somebody went to prison for this one |
| 09:25:54 | <money_> | ? |
| 09:26:37 | <dminuoso> | So yeah. Using this technique we can definitely conjure up some kind of |
| 09:26:48 | <iqubic> | edward is to blame for this, I think. |
| 09:26:48 | <dminuoso> | fuse :: Data s => Data t => Fold s t -> Fold s u -> Fold s (t, u) |
| 09:27:51 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 09:28:13 | <dminuoso> | with some precondition that the folds dont overlap |
| 09:28:22 | <dminuoso> | and probably better both be affine |
| 09:28:49 | × | money_ quits (~money@50.239.93.29) (Quit: late) |
| 09:29:44 | × | azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 09:30:23 | × | razetime quits (~quassel@49.207.203.213) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 09:31:38 | → | money_ joins (~money@50.239.93.29) |
| 09:33:18 | × | money_ quits (~money@50.239.93.29) (Client Quit) |
| 09:34:50 | → | akegalj joins (~akegalj@93-137-174-44.adsl.net.t-com.hr) |
| 09:36:42 | → | money_ joins (~money@50.239.93.29) |
| 09:36:48 | × | money_ quits (~money@50.239.93.29) (Client Quit) |
| 09:38:43 | → | money_ joins (~money@50.239.93.29) |
| 09:40:41 | × | money_ quits (~money@50.239.93.29) (Read error: Connection reset by peer) |
| 09:43:47 | → | Kaiepi joins (~Kaiepi@108.175.84.104) |
| 09:44:45 | → | freeside joins (~mengwong@nat-veranstaltungen.uni-saarland.de) |
| 09:51:12 | → | CiaoSen joins (~Jura@p200300c95730b6002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 09:52:43 | × | zeenk quits (~zeenk@2a02:2f04:a30d:4300::7fe) (Quit: Konversation terminated!) |
| 10:03:11 | → | ksqsf joins (~user@134.209.106.31) |
| 10:09:47 | → | chele joins (~chele@user/chele) |
| 10:09:59 | → | xff0x_ joins (~xff0x@2405:6580:b080:900:5047:9af2:d4a8:44bb) |
| 10:15:40 | → | zaquest joins (~notzaques@5.130.79.72) |
| 10:17:09 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 10:17:24 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 10:17:43 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 10:19:59 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:70c3:bbfa:bcc:5827) (Ping timeout: 265 seconds) |
| 10:21:55 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds) |
| 10:22:36 | × | beefbambi quits (~beefbambi@183.82.176.168) (Ping timeout: 272 seconds) |
| 10:22:43 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 10:22:48 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 10:23:17 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 10:24:56 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 10:25:11 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 10:25:57 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 10:26:37 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:c184:76cc:3bad:bcb1) |
| 10:29:03 | × | maerwald quits (~maerwald@user/maerwald) (Quit: gone) |
| 10:29:09 | → | ksqsf` joins (~user@134.209.106.31) |
| 10:29:35 | → | maerwald joins (~maerwald@mail.hasufell.de) |
| 10:30:23 | × | maerwald quits (~maerwald@mail.hasufell.de) (Changing host) |
| 10:30:23 | → | maerwald joins (~maerwald@user/maerwald) |
| 10:32:44 | × | ksqsf quits (~user@134.209.106.31) (Ping timeout: 272 seconds) |
| 10:34:00 | × | ksqsf` quits (~user@134.209.106.31) (Ping timeout: 272 seconds) |
| 10:35:12 | → | tvandinther joins (~tvandinth@101.98.118.246) |
| 10:35:17 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 10:35:32 | <tvandinther> | I'm building a command line app and I want to incorporate logging of different types (switchable using options) as output as well as the data itself. Which approach would be recommended? Should I just use a writer monad or something more? |
| 10:35:43 | × | tvandinther quits (~tvandinth@101.98.118.246) (Quit: Quit) |
| 10:35:58 | → | tvandinther joins (~tvandinth@101.98.118.246) |
| 10:36:00 | <dminuoso> | I too tend to ask questions and leave 11 seconds afterwads. |
| 10:36:02 | <dminuoso> | :p |
| 10:36:16 | <tvandinther> | Haha sorry. Wrong button on this new irc app |
| 10:36:24 | <dminuoso> | tvandinther: I would probably use monad-logger (or use the same style) |
| 10:36:37 | <dminuoso> | Because it docouples the place of logging from a concrete implementation |
| 10:37:01 | <dminuoso> | As for different outputs, make it a runtime flag that alters how the log string is pushed into the logger |
| 10:37:11 | <dminuoso> | or maybe just the latter |
| 10:37:24 | <iqubic> | Yeah, use monad-logger or similar and then you can mock different implementations |
| 10:37:30 | <dminuoso> | that is, monad-logger is useful if you want to quickly switch out where logs go to (and how they are filtered) |
| 10:37:40 | <dminuoso> | but if output ever only goes to stdout, might as well just use fast-logger |
| 10:38:04 | <tvandinther> | Yeah it'll be nice to write all logs and then filter them based on the switch when I want to write them to the console |
| 10:38:18 | <dminuoso> | tvandinther: for that you can still do it with fast-logger. |
| 10:38:46 | <dminuoso> | the main advantage of monad-logger is decoupling the implementation (especially useful if you ship it as a library), or if you wantt o switch out the implementation (log to stdout, to a file, to a tchan, etc...) |
| 10:39:04 | <dminuoso> | THough personally I would probably favour `hsyslog` |
| 10:39:06 | <dminuoso> | over fast-logger. |
| 10:39:40 | <tvandinther> | It's a small app so I would favour simplicity over decoupling |
| 10:39:50 | × | Xeroine quits (~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
| 10:39:51 | <tvandinther> | I'll take a look at fast-logger and hsyslog |
| 10:39:55 | <dminuoso> | hsyslog is simple, and yet strong in decoupling |
| 10:40:03 | <dminuoso> | the decoupling mechanism is completely there |
| 10:40:15 | <dminuoso> | given that in most systemd installations, syslog goes directly into journald |
| 10:40:26 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 10:40:26 | <dminuoso> | so you have filtering built-in in journald |
| 10:40:28 | <dminuoso> | and facilities |
| 10:41:13 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 10:41:31 | <dminuoso> | you can also use monad-logger and syslog in tandem |
| 10:41:45 | × | xff0x_ quits (~xff0x@2405:6580:b080:900:5047:9af2:d4a8:44bb) (Ping timeout: 260 seconds) |
| 10:41:51 | × | xacktm quits (~xacktm@user/xacktm) (Ping timeout: 260 seconds) |
| 10:41:57 | <tvandinther> | Although my purpose isn't *really* considered logging, right? It's more just about aggregating a classifiable output and processing it to stdout |
| 10:41:58 | <dminuoso> | this way you can reduce the journal storage requirements outside of debugging scenarios, enable debugging, but *still* be able to quickly and comfortably filter output |
| 10:42:02 | <dminuoso> | okay |
| 10:42:15 | <dminuoso> | tvandinther: then, perhaps you rather just want ReaderT or a global IORef. |
| 10:42:19 | × | andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Ping timeout: 260 seconds) |
| 10:42:35 | <dminuoso> | Which just keeps the sort of "format/precision" as ambient state or an environment |
| 10:42:41 | <dminuoso> | and you then have functions like |
| 10:42:57 | <dminuoso> | `pprThing :: PprMode -> Thing -> Doc ann` |
| 10:43:14 | <dminuoso> | with say `data PppMode = PprJSON | PprSimple | PprDetailed` |
| 10:43:15 | → | xff0x_ joins (~xff0x@ai071162.d.east.v6connect.net) |
| 10:43:32 | → | michalz joins (~michalz@185.246.204.72) |
| 10:45:24 | <tvandinther> | With WriterT I read that there are performance issues with it but would it be a problem for let's say 10000 appends considering the process will exit afterwards? |
| 10:46:58 | × | tvandinther quits (~tvandinth@101.98.118.246) (Quit: Quit) |
| 10:47:11 | → | tvandinther joins (~tvandinth@101.98.118.246) |
| 10:51:11 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 10:52:25 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 11:03:18 | jespada_ | is now known as jespada |
| 11:05:02 | × | akegalj quits (~akegalj@93-137-174-44.adsl.net.t-com.hr) (Ping timeout: 272 seconds) |
| 11:05:30 | × | CiaoSen quits (~Jura@p200300c95730b6002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 11:05:42 | → | xacktm joins (~xacktm@user/xacktm) |
| 11:05:52 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 11:07:10 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 11:09:28 | × | tvandinther quits (~tvandinth@101.98.118.246) (Ping timeout: 272 seconds) |
| 11:10:37 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 11:13:57 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 11:19:22 | → | andreas303 joins (andreas303@ip227.orange.bnc4free.com) |
| 11:20:23 | → | tvandinther joins (~tvandinth@101.98.118.246) |
| 11:22:11 | → | son0p joins (~ff@2604:3d08:5b7f:5540::417e) |
| 11:22:30 | → | mmhat joins (~mmh@p5081a34e.dip0.t-ipconnect.de) |
| 11:23:26 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) |
| 11:23:45 | → | ksqsf` joins (~user@134.209.106.31) |
| 11:23:52 | <jackdk> | Run it and see? But we have Control.Monad.Trans.Writer.CPS now which lacks this problem. (It is isomorphic to StateT but does not provide MonadState-esque operations) |
| 11:24:01 | ksqsf` | is now known as ksqsf |
| 11:24:40 | <jackdk> | the concrete transformer is in transformers-0.6 and the MTL support is since mtl-2.3 |
| 11:25:09 | × | tvandinther quits (~tvandinth@101.98.118.246) (Ping timeout: 260 seconds) |
| 11:25:39 | <jackdk> | @tell tvandinther https://hackage.haskell.org/package/transformers-0.6.0.4/docs/Control-Monad-Trans-Writer-CPS.html If you're appending on the right, you may want a snoc list, Data.Sequence, or difference list (dlist) |
| 11:25:39 | <lambdabot> | Consider it noted. |
| 11:26:18 | × | fizbin quits (~fizbin@user/fizbin) (Remote host closed the connection) |
| 11:26:19 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 11:26:37 | → | fizbin joins (~fizbin@user/fizbin) |
| 11:27:06 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 11:27:50 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) (Ping timeout: 260 seconds) |
| 11:31:45 | × | freeside quits (~mengwong@nat-veranstaltungen.uni-saarland.de) (Ping timeout: 252 seconds) |
| 11:37:00 | → | ec_ joins (~ec@gateway/tor-sasl/ec) |
| 11:37:32 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 11:38:23 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 11:38:40 | → | freeside joins (~mengwong@nat-veranstaltungen.uni-saarland.de) |
| 11:38:55 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 11:39:48 | × | ec_ quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 11:40:28 | → | ec_ joins (~ec@gateway/tor-sasl/ec) |
| 11:42:55 | × | dextaa quits (~DV@user/dextaa) (Quit: Ping timeout (120 seconds)) |
| 11:43:15 | × | freeside quits (~mengwong@nat-veranstaltungen.uni-saarland.de) (Ping timeout: 256 seconds) |
| 11:43:19 | → | dextaa joins (~DV@user/dextaa) |
| 11:46:17 | → | CiaoSen joins (~Jura@p200300c95730b6002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 11:47:28 | → | rnat joins (uid73555@id-73555.lymington.irccloud.com) |
| 11:47:38 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 11:52:18 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 12:01:27 | × | phma quits (phma@2001:5b0:211f:2488:eec1:974f:5902:6cf5) (Read error: Connection reset by peer) |
| 12:02:30 | → | phma joins (~phma@host-67-44-208-106.hnremote.net) |
| 12:03:30 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 12:03:38 | → | doyougnu joins (~doyougnu@cpe-74-69-132-225.stny.res.rr.com) |
| 12:20:04 | → | freeside joins (~mengwong@nat-veranstaltungen.uni-saarland.de) |
| 12:21:00 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer) |
| 12:24:39 | × | freeside quits (~mengwong@nat-veranstaltungen.uni-saarland.de) (Ping timeout: 260 seconds) |
| 12:25:36 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 12:25:41 | → | __monty__ joins (~toonn@user/toonn) |
| 12:25:59 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:29:06 | → | __xor joins (~xor@74.215.182.83) |
| 12:29:54 | × | _xor quits (~xor@74.215.182.83) (Ping timeout: 272 seconds) |
| 12:33:36 | × | __xor quits (~xor@74.215.182.83) (Ping timeout: 252 seconds) |
| 12:34:21 | → | hsw_ joins (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) |
| 12:34:53 | → | __xor joins (~xor@74.215.182.83) |
| 12:35:29 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 12:37:13 | → | elevenkb joins (~elevenkb@105.224.37.128) |
| 12:37:51 | × | hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection) |
| 12:39:20 | → | hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com) |
| 12:44:05 | → | waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) |
| 12:46:38 | <dminuoso> | monochrom: You were using emacs with ghci for integrating errors, right? |
| 12:48:01 | × | bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 12:50:33 | × | hsw_ quits (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Quit: Leaving) |
| 12:55:01 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 12:55:13 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 12:56:51 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 13:00:29 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 13:01:44 | × | kaskal quits (~kaskal@2001:4bb8:2d1:32ed:7894:4e7:1e3f:f8dd) (Ping timeout: 246 seconds) |
| 13:06:12 | → | kaskal joins (~kaskal@213-147-167-253.nat.highway.webapn.at) |
| 13:15:07 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 13:18:26 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 13:22:05 | → | zaquest joins (~notzaques@5.130.79.72) |
| 13:22:45 | × | mncheck quits (~mncheck@193.224.205.254) (Remote host closed the connection) |
| 13:23:50 | → | zeenk joins (~zeenk@2a02:2f04:a30d:4300::7fe) |
| 13:24:42 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) |
| 13:27:32 | × | paulpaul1076 quits (~textual@95-29-5-111.broadband.corbina.ru) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 13:29:03 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) (Ping timeout: 252 seconds) |
| 13:30:03 | <dminuoso> | % type Nummy = forall a. Num a => Maybe a |
| 13:30:03 | <yahb2> | <no output> |
| 13:30:15 | <dminuoso> | % a :: () -> Nummy; a _ = Just 5 |
| 13:30:15 | <yahb2> | <no output> |
| 13:30:25 | <dminuoso> | % b :: () -> Maybe Int; b = a |
| 13:30:25 | <yahb2> | <interactive>:42:27: error: ; • Couldn't match type: forall a. Num a => Maybe a ; with: Maybe Int ; Expected: () -> Maybe Int ; Actual: () -> Nummy ; • In... |
| 13:30:46 | <dminuoso> | % :set -XDeepSubsumption |
| 13:30:47 | <yahb2> | <no output> |
| 13:30:49 | <dminuoso> | % b :: () -> Maybe Int; b = a |
| 13:30:49 | <yahb2> | <no output> |
| 13:30:57 | <dminuoso> | Why is simple subsumption breaking this? |
| 13:31:18 | <dminuoso> | Isnt `a :: () -> Nummy` perfectly equivalent to `a :: Num a => () -> Maybe a`? |
| 13:32:33 | × | elevenkb quits (~elevenkb@105.224.37.128) (Ping timeout: 260 seconds) |
| 13:32:37 | → | freeside joins (~mengwong@eduroam-134-96-204-5.uni-saarland.de) |
| 13:34:20 | × | CiaoSen quits (~Jura@p200300c95730b6002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 13:39:29 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 13:42:18 | → | mncheck joins (~mncheck@193.224.205.254) |
| 13:49:44 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 13:50:56 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 14:04:13 | → | thegeekinside joins (~thegeekin@189.217.82.244) |
| 14:04:24 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 14:08:54 | × | freeside quits (~mengwong@eduroam-134-96-204-5.uni-saarland.de) (Ping timeout: 268 seconds) |
| 14:11:40 | → | freeside joins (~mengwong@nat-veranstaltungen.uni-saarland.de) |
| 14:13:42 | × | ksqsf quits (~user@134.209.106.31) (Remote host closed the connection) |
| 14:14:52 | → | ksqsf joins (~user@2001:da8:d800:336:943b:89e6:6fda:8564) |
| 14:17:34 | × | freeside quits (~mengwong@nat-veranstaltungen.uni-saarland.de) (Ping timeout: 272 seconds) |
| 14:20:02 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 14:24:05 | × | waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Quit: WeeChat 3.7.1) |
| 14:26:32 | → | freeside joins (~mengwong@nat-veranstaltungen.uni-saarland.de) |
| 14:37:06 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Remote host closed the connection) |
| 14:40:50 | × | pavonia quits (~user@user/siracusa) (Ping timeout: 252 seconds) |
| 14:44:30 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 14:46:37 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1) |
| 14:56:01 | → | califax joins (~califax@user/califx) |
| 14:59:19 | × | hpc quits (~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 256 seconds) |
| 15:01:01 | → | hpc joins (~juzz@ip98-169-35-163.dc.dc.cox.net) |
| 15:02:35 | × | gdd quits (~gdd@2001:470:1f13:187:e8a5:fbff:fe29:42f5) (Ping timeout: 264 seconds) |
| 15:03:58 | → | akegalj joins (~akegalj@141-136-165-175.dsl.iskon.hr) |
| 15:05:39 | × | hpc quits (~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 260 seconds) |
| 15:08:01 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:c184:76cc:3bad:bcb1) (Ping timeout: 252 seconds) |
| 15:11:14 | × | thyriaen quits (~thyriaen@2a01:aea0:dd4:4bae:6245:cbff:fe9f:48b1) (Remote host closed the connection) |
| 15:11:35 | → | hpc joins (~juzz@ip98-169-35-163.dc.dc.cox.net) |
| 15:11:52 | × | freeside quits (~mengwong@nat-veranstaltungen.uni-saarland.de) (Ping timeout: 252 seconds) |
| 15:12:51 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) |
| 15:13:01 | × | dsrt^ quits (~dsrt@76.145.185.103) (Remote host closed the connection) |
| 15:16:13 | → | Azel_ joins (~Azel@2a01:e0a:1f1:98e0:fa28:19ff:fea0:c205) |
| 15:20:07 | tomas | is now known as oats |
| 15:25:29 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 15:26:11 | → | mestre joins (~mestre@191.177.185.178) |
| 15:27:01 | × | rnat quits (uid73555@id-73555.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:27:22 | <mestre> | Hello, does anybody knows if there is a mastodon instance for functional programming? |
| 15:29:21 | <Jade[m]> | @pl a . a |
| 15:29:21 | <lambdabot> | a . a |
| 15:29:36 | <leah2> | mestre: types.pl maybe |
| 15:30:26 | <Jade[m]> | theres fix of course which is the infinite version of this |
| 15:30:27 | <Jade[m]> | is there an idiom for f . f or f . f . f? |
| 15:30:46 | <mestre> | leah2: uh, this looks interesting, ty! |
| 15:31:56 | → | freeside joins (~mengwong@nat-veranstaltungen.uni-saarland.de) |
| 15:32:33 | <geekosaur> | Jade[m], it's too short for there to be one, we just write it |
| 15:32:55 | <geekosaur> | for many of them there's a use of iterate, but for 2 or 3 it's not worth it |
| 15:40:26 | × | freeside quits (~mengwong@nat-veranstaltungen.uni-saarland.de) (Ping timeout: 255 seconds) |
| 15:42:31 | → | CiaoSen joins (~Jura@p200300c95718c3002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 15:45:22 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:48:19 | <Jade[m]> | fair |
| 15:50:46 | <EvanR> | :t groupBy |
| 15:50:47 | <lambdabot> | (a -> a -> Bool) -> [a] -> [[a]] |
| 15:51:24 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 15:51:57 | <EvanR> | how do you group by a field, such as fst or snd |
| 15:52:06 | <unit73e> | :t exterminatus |
| 15:52:07 | <lambdabot> | error: Variable not in scope: exterminatus |
| 15:52:10 | <unit73e> | :( |
| 15:52:20 | <EvanR> | this signature seems wonderfully obtuse right now |
| 15:52:32 | → | ozkutuk53 joins (~ozkutuk@176.240.173.153) |
| 15:52:38 | → | freeside joins (~mengwong@nat-veranstaltungen.uni-saarland.de) |
| 15:52:53 | <unit73e> | :t groupOn |
| 15:52:54 | <lambdabot> | error: |
| 15:52:54 | <lambdabot> | • Variable not in scope: groupOn |
| 15:52:54 | <lambdabot> | • Perhaps you meant one of these: |
| 15:53:01 | <geekosaur> | `groupBy (comparing snd)` |
| 15:53:02 | <unit73e> | I was hoping that existed lol |
| 15:53:07 | × | ksqsf quits (~user@2001:da8:d800:336:943b:89e6:6fda:8564) (Ping timeout: 252 seconds) |
| 15:53:21 | <unit73e> | well there you go |
| 15:53:30 | <unit73e> | groupBy (comparing ...) |
| 15:53:36 | <EvanR> | :t comparing |
| 15:53:37 | <lambdabot> | Ord a => (b -> a) -> b -> b -> Ordering |
| 15:53:59 | <EvanR> | Ordering... Bool... the neutrons aren't forming right now |
| 15:55:03 | <geekosaur> | given a transformer from a value to another value inside of it (a primitive lens, if you will) and a pair of values, apply the transformer to each value and pass both to `compare` |
| 15:55:12 | → | Guest|65 joins (~Guest|65@84.22.220.152) |
| 15:55:19 | <EvanR> | > groupBy (\(x,_) (y,_) -> x==y) [(1,2),(1,3),(2,5)] |
| 15:55:21 | <lambdabot> | [[(1,2),(1,3)],[(2,5)]] |
| 15:55:56 | <geekosaur> | and comparing is the same as (compare `on`) |
| 15:56:08 | <EvanR> | yeah but groupBy wants a Bool |
| 15:56:17 | <EvanR> | for some reason |
| 15:56:33 | <geekosaur> | well, yes, it looks for some notion of equality |
| 15:56:33 | <EvanR> | comparing works great for sortBy |
| 15:56:45 | <geekosaur> | so there is equatingt,m or equivalently ((==) `on`) |
| 15:56:53 | <geekosaur> | *equating, |
| 15:57:01 | <EvanR> | there is equating? |
| 15:57:03 | <EvanR> | :t equating |
| 15:57:04 | <lambdabot> | error: Variable not in scope: equating |
| 15:57:08 | <geekosaur> | @index equating |
| 15:57:08 | <lambdabot> | Distribution.Simple.Utils |
| 15:57:13 | <geekosaur> | wrong one |
| 15:57:32 | <geekosaur> | think it's in there somewhere, but ((==) `on`) is the same thing and I think preferred |
| 15:57:45 | <geekosaur> | only reason there's a separate `comparing` is it came first |
| 15:58:02 | <geekosaur> | :t on |
| 15:58:03 | <lambdabot> | (b -> b -> c) -> (a -> b) -> a -> a -> c |
| 15:58:05 | <EvanR> | on (==) is what I was forgetting |
| 15:58:05 | × | califax quits (~califax@user/califx) (Ping timeout: 255 seconds) |
| 15:58:35 | <Jade[m]> | ((==) `on`) isn't that the same as (on (==)) |
| 15:58:43 | <EvanR> | > groupBy (on (==) id) [(1,2),(1,3),(2,5)] |
| 15:58:44 | <lambdabot> | [[(1,2)],[(1,3)],[(2,5)]] |
| 15:58:51 | <Jade[m]> | * `((==) \`on`)` isn't that the same as `(on (==))` |
| 15:58:55 | <EvanR> | uhg |
| 15:58:56 | → | j4cc3b joins (~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 15:58:59 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 15:59:04 | <Jade[m]> | * `((==) \`on`)` isn't that the same as `(on (==))` |
| 15:59:05 | <EvanR> | > groupBy (on (==) fst) [(1,2),(1,3),(2,5)] |
| 15:59:07 | <lambdabot> | [[(1,2),(1,3)],[(2,5)]] |
| 15:59:09 | <EvanR> | \o/ |
| 15:59:10 | × | unit73e quits (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Ping timeout: 252 seconds) |
| 15:59:14 | <geekosaur> | yes |
| 15:59:35 | <Jade[m]> | * `((==) \\`on\`)` isn't that the same as `(on (==))` |
| 15:59:36 | <Jade[m]> | * `((==) `on`)` isn't that the same as `(on (==))` |
| 15:59:37 | <geekosaur> | but `(==) \`on\` snd` reads better |
| 15:59:40 | × | jinsun quits (~jinsun@user/jinsun) (Ping timeout: 252 seconds) |
| 16:00:05 | <geekosaur> | fsvo "reads better" |
| 16:00:22 | <EvanR> | do you guys know there are randomly backslashes in your messages |
| 16:00:50 | <EvanR> | is that a matrix thing or |
| 16:00:53 | <geekosaur> | that's to keep matrix from exploding (Jade[m] is on Matrix) |
| 16:01:02 | <EvanR> | lol |
| 16:01:07 | <EvanR> | it will explode? |
| 16:01:08 | <Jade[m]> | I often use it instead of flip because (flip f) x reads a lot worse than (`f` x) |
| 16:01:14 | <geekosaur> | since `x` is fixed width / code, but we have `` used in its Haskell sense within |
| 16:01:23 | <EvanR> | and now I'm seeing unicode character 0011 |
| 16:01:24 | <geekosaur> | welll, it'll misrender |
| 16:01:34 | <geekosaur> | that's another matrix thingt |
| 16:01:40 | <EvanR> | :( |
| 16:01:51 | <Jade[m]> | yeah im on matrix |
| 16:02:02 | <geekosaur> | I tried to configure hexchat to translate it but that stopped tabs from updating (longstanding hexchat bug) |
| 16:02:09 | <Jade[m]> | what does my username look like? |
| 16:02:20 | → | califax joins (~califax@user/califx) |
| 16:02:20 | <EvanR> | <Jade[m]> |
| 16:02:26 | <geekosaur> | "Jade[m]" but that probably gfets translated by the gateway |
| 16:03:11 | <Jade[m]> | geekosaur: ah ok, was wondering if it'd transfer the flag as well haha |
| 16:03:43 | <geekosaur> | the default is to convert your matrix username to something valid as an IRC nick and then append "[m]" |
| 16:03:53 | <EvanR> | you have a flag? cool |
| 16:04:02 | <Jade[m]> | ok I see |
| 16:04:25 | <Jade[m]> | EvanR: trans flag 🏳️⚧️ |
| 16:04:28 | <geekosaur[m]> | I'm over here too but it's a separate account |
| 16:04:49 | <Jade[m]> | geekosaur[m]: very nice |
| 16:04:51 | <geekosaur> | not a valid nick char |
| 16:05:07 | <Jade[m]> | yep |
| 16:05:26 | <geekosaur> | nicks are limited to one of the ISO charsets (not iso8859-1, it's the scandinavian charset for historical reasons) |
| 16:06:21 | <geekosaur> | letters and digits only, but within that charset so we get extra chars that represent things like ø |
| 16:06:30 | → | Guest75 joins (Guest75@2a01:7e01::f03c:92ff:fe5d:7b18) |
| 16:06:48 | <Jade[m]> | lets goo |
| 16:06:51 | <Jade[m]> | äöü? |
| 16:07:16 | <EvanR> | that flag appears correctly, impressive |
| 16:08:15 | → | jinsun joins (~jinsun@user/jinsun) |
| 16:09:27 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 16:09:37 | <EvanR> | whenever sortBy and groupBy are needed, it means comparing and on are needed, and so three imports are needed |
| 16:09:48 | <EvanR> | Data.List, Data.Ord, Data.Function |
| 16:09:57 | <EvanR> | three imports for 2 functions xD |
| 16:10:34 | <Jade[m]> | make a module that re-exports these |
| 16:10:49 | × | Guest|65 quits (~Guest|65@84.22.220.152) (Quit: Connection closed) |
| 16:11:23 | <EvanR> | custom prelude? xD |
| 16:12:32 | <geekosaur> | there is sortOn that combines sortBy with on. sadly the same is not true of groupBy |
| 16:12:57 | <geekosaur> | then again it's arguable that if it matters that much, you probably shouldn't be using a list |
| 16:14:31 | × | nschoe quits (~q@141.101.51.197) (Quit: Switching off) |
| 16:15:09 | → | Guest|65 joins (~Guest|65@84.22.220.152) |
| 16:16:12 | → | bitmapper joins (uid464869@id-464869.lymington.irccloud.com) |
| 16:16:46 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds) |
| 16:18:31 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 16:19:04 | → | nschoe joins (~q@141.101.51.197) |
| 16:22:04 | <EvanR> | when life gives you a list, you use all this stuff to make a Map |
| 16:23:11 | × | Guest|65 quits (~Guest|65@84.22.220.152) (Quit: Connection closed) |
| 16:24:52 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
| 16:25:10 | <Jade[m]> | hahaha |
| 16:29:23 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) |
| 16:30:08 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 16:32:19 | Jade[m] | uploaded an image: (32KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/ptUmacIdEbgEpCUEDyaGQXul/2022-12-16_17-33.png > |
| 16:33:03 | × | manwithl- quits (~manwithlu@2a09:bac1:5bc0:20::49:125) (Remote host closed the connection) |
| 16:33:25 | → | manwithluck joins (~manwithlu@2a09:bac1:5bc0:20::49:125) |
| 16:33:40 | × | mbuf quits (~Shakthi@49.204.113.218) (Quit: Leaving) |
| 16:35:19 | <geekosaur> | someone needs to upgrade @girl19, clearly 🙂 |
| 16:38:44 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 16:45:46 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 272 seconds) |
| 16:54:53 | → | razetime joins (~quassel@49.207.203.213) |
| 16:54:53 | → | ft joins (~ft@p4fc2a257.dip0.t-ipconnect.de) |
| 16:56:41 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 16:58:29 | × | freeside quits (~mengwong@nat-veranstaltungen.uni-saarland.de) (Ping timeout: 268 seconds) |
| 16:58:50 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 17:02:01 | <monochrom> | dminuoso: Yes emacs haskell-mode has error integration. P.S. I think simple subsumption's purpose includes treating "forall a. X -> F a" and "X -> forall a. F a" differently (to make something else easier). |
| 17:03:19 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 17:05:04 | <monochrom> | EvanR: When life gives you C, you write Hugs. :) |
| 17:09:23 | × | nschoe quits (~q@141.101.51.197) (Remote host closed the connection) |
| 17:11:46 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) (Remote host closed the connection) |
| 17:12:04 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 17:12:57 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 17:16:48 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 17:17:39 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds) |
| 17:18:07 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 17:18:54 | × | razetime quits (~quassel@49.207.203.213) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 17:19:37 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 17:20:54 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 17:23:53 | × | michalz quits (~michalz@185.246.204.72) (Remote host closed the connection) |
| 17:24:39 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:484b:db47:7265:c55f) (Quit: use-value) |
| 17:25:33 | × | jespada quits (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 17:25:34 | × | Vajb quits (~Vajb@2001:999:250:c9:8588:6e93:7809:7816) (Read error: Connection reset by peer) |
| 17:26:42 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
| 17:30:40 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::6126) |
| 17:32:34 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 17:34:51 | → | Vajb joins (~Vajb@2001:999:250:c9:8588:6e93:7809:7816) |
| 17:37:03 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 17:47:12 | × | juri_ quits (~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 268 seconds) |
| 17:49:40 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) |
| 17:50:13 | × | zeenk quits (~zeenk@2a02:2f04:a30d:4300::7fe) (Quit: Konversation terminated!) |
| 17:57:41 | → | michalz joins (~michalz@185.246.204.94) |
| 17:57:56 | × | vpan quits (~0@212.117.1.172) (Quit: Leaving.) |
| 17:58:28 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::6126) (Quit: Going elsewhere) |
| 17:58:55 | × | beefbambi quits (~beefbambi@183.82.176.168) (Ping timeout: 268 seconds) |
| 17:59:52 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 18:02:15 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) |
| 18:03:22 | → | Hercules1 joins (~Hercules@ti0018a400-7782.bb.online.no) |
| 18:04:59 | × | califax quits (~califax@user/califx) (Ping timeout: 255 seconds) |
| 18:05:27 | × | Hercules1 quits (~Hercules@ti0018a400-7782.bb.online.no) (Client Quit) |
| 18:06:17 | × | michalz quits (~michalz@185.246.204.94) (Ping timeout: 246 seconds) |
| 18:06:26 | → | califax joins (~califax@user/califx) |
| 18:07:22 | → | michalz joins (~michalz@185.246.204.94) |
| 18:08:47 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 18:10:41 | × | CiaoSen quits (~Jura@p200300c95718c3002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Quit: CiaoSen) |
| 18:11:54 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
| 18:12:47 | → | juri_ joins (~juri@84-19-175-179.pool.ovpn.com) |
| 18:17:00 | → | econo joins (uid147250@user/econo) |
| 18:17:08 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 18:18:23 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 18:19:40 | <voidzero> | hey so thanks for the reinforcement yesterday |
| 18:20:56 | <monochrom> | :) |
| 18:22:37 | <voidzero> | today my studies went great, and when I got to the assignment "write a caesar cipher function and add a decipher function" I wrote this. Please rate it. https://paste.tomsmeding.com/KvwMuHdh |
| 18:23:45 | <voidzero> | nixos-install -v --show-trace --no-root-passwd --root /mnt |
| 18:23:48 | <voidzero> | oops |
| 18:24:17 | <voidzero> | wrong clipboard |
| 18:24:51 | <monochrom> | I think it's OK. |
| 18:26:48 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 18:26:58 | <voidzero> | :) |
| 18:28:04 | <voidzero> | originally I thought I'd use the range > 48 and < 123, but ' ' is ord 32 so I took that as the bottom limit |
| 18:28:46 | <voidzero> | lower limit |
| 18:29:20 | <VOID[m]> | Fellas, I was here recently trying to make lenses for my tree |
| 18:29:21 | <VOID[m]> | I did a thing after getting some suggestions from nice people here |
| 18:29:21 | <VOID[m]> | Could someone please take a look and tell me how much I overcomplicated it? |
| 18:29:21 | <VOID[m]> | https://paste.tomsmeding.com/2x1wnlBN |
| 18:29:59 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 18:30:14 | <dsal> | VOID[m]: can you not derive Functor, Foldable, and Traversable? |
| 18:30:45 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 18:31:18 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 18:31:47 | <VOID[m]> | I am not sure, I didn't trust derive for complex type :P |
| 18:31:47 | <VOID[m]> | How do I know if it derived correctly? Is it as simple as "if it compiles its good"? |
| 18:33:33 | <dsal> | You can test laws with checkers, but it's probably more likely to be correct if it can derive than if you wrote it by hand. |
| 18:34:12 | <geekosaur> | in the case of Functor, there is only one correct derivation and if the compiler can't do it then it almost certainly can't be done |
| 18:34:29 | × | tomjagua1paw quits (~tom@li367-225.members.linode.com) (Ping timeout: 260 seconds) |
| 18:34:55 | <VOID[m]> | Then from now on I shall derive |
| 18:35:03 | → | tomjaguarpaw joins (~tom@li367-225.members.linode.com) |
| 18:35:44 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 18:36:43 | <geekosaur> | (there are cases involving GADTs where you have to use standalone deriving, but the same rule applies) |
| 18:37:17 | <dsal> | Yeah, last time I built something fancy and tree-like, I apparently did a ton of checkers. |
| 18:37:27 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 18:37:42 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) (Remote host closed the connection) |
| 18:38:33 | <monochrom> | I am the opposite. I don't trust myself for complex types. |
| 18:39:27 | <VOID[m]> | monochrom: Honestly, that's probably smarter. I just didn't expect it to be able to derive... |
| 18:39:57 | <dsal> | That's how I ended up with my last somewhat complex type. I wrote all the things and the tests and then I realized I could derive them so pulled out all that extra code. |
| 18:40:05 | <monochrom> | More honestly I'm just lazy. |
| 18:41:17 | <geekosaur> | if it can derive it then by construction it is correct. it's only in the case where it can't derive Foldable or Traversable that it's possible you can write it. (for Functor, as I said, if it can't derive it then it can't be done) |
| 18:42:01 | <monochrom> | I need to test that against my favourite example... >:D |
| 18:42:31 | <VOID[m]> | I was right, deriving doesn't work well for Foldable for my type. It derives but order is terrible |
| 18:43:04 | <geekosaur> | hm, that is a possibility, yes. |
| 18:43:05 | <VOID[m]> | (so traversable maybe too? I don't remember if order matters there) |
| 18:43:07 | <monochrom> | Ugh I'm impressed. DeriveFunctor works for C r a = ((a -> r) -> r) too. |
| 18:43:27 | <geekosaur> | order doesn't matter for Traversable |
| 18:43:46 | <monochrom> | How is order terrible? |
| 18:44:18 | <monochrom> | Ah there is choice of preorder postorder inorder. |
| 18:44:28 | <monochrom> | But "terrible" is the wrong word. |
| 18:44:49 | → | tvandinther joins (~tvandinth@101.98.118.246) |
| 18:45:08 | <VOID[m]> | Implementing by hand: λ> foldr (:) [] sampleTree -- [1,2,3,4,5,6,7,8,9] |
| 18:45:12 | <VOID[m]> | Deriving: [4,5,6,7,8,9,1,2,3] |
| 18:45:32 | <VOID[m]> | For a tree:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/4efca93f25b953e5c3d04383b1a2519b2f0f5219>) |
| 18:49:16 | × | tvandinther quits (~tvandinth@101.98.118.246) (Ping timeout: 272 seconds) |
| 18:52:32 | → | slack1256 joins (~slack1256@191.125.227.69) |
| 18:52:43 | <monochrom> | Alternatively you could have declared _values before _branches. |
| 18:53:08 | → | tvandinther joins (~tvandinth@101.98.118.246) |
| 18:53:17 | <slack1256> | Does stack's package.yaml have a section to specify data-files as in cabal? |
| 18:57:30 | × | tvandinther quits (~tvandinth@101.98.118.246) (Ping timeout: 252 seconds) |
| 18:59:24 | <sm1> | I'm guessing data-files: |
| 19:00:12 | × | cheater quits (~Username@user/cheater) (Read error: Connection reset by peer) |
| 19:00:39 | <dsal> | VOID[m]: https://play-haskell.tomsmeding.com/saved/K2DGICtL |
| 19:00:59 | → | cheater joins (~Username@user/cheater) |
| 19:01:28 | → | paulpaul1076 joins (~textual@95-29-5-111.broadband.corbina.ru) |
| 19:02:22 | × | nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat) |
| 19:02:38 | × | AlexZenon quits (~alzenon@178.34.161.14) (Ping timeout: 252 seconds) |
| 19:03:02 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 19:03:22 | × | Alex_test quits (~al_test@178.34.161.14) (Ping timeout: 252 seconds) |
| 19:04:12 | <VOID[m]> | I'll refactor my pattern matching to actually use records and I'll be able to use that, thanks |
| 19:05:28 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 19:05:38 | <VOID[m]> | And that foldr in getTree? It feels ugly, have I missed an obvious way to write it prettier? |
| 19:05:38 | <VOID[m]> | Or is it ok... |
| 19:10:53 | → | Alex_test joins (~al_test@178.34.161.14) |
| 19:11:14 | <dsal> | You might be able to get further with uniplate, but I don't know that it's holding you back in any way. |
| 19:12:04 | × | doyougnu quits (~doyougnu@cpe-74-69-132-225.stny.res.rr.com) (Ping timeout: 272 seconds) |
| 19:12:31 | → | AlexZenon joins (~alzenon@178.34.161.14) |
| 19:14:41 | <voidzero> | if not pretty, embellish with comments |
| 19:16:03 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) |
| 19:17:15 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 19:18:26 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 19:20:52 | × | Guest75 quits (Guest75@2a01:7e01::f03c:92ff:fe5d:7b18) (Quit: Client closed) |
| 19:24:18 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 19:27:57 | → | tvandinther joins (~tvandinth@101.98.118.246) |
| 19:34:18 | <iqubic> | I hate that there's no HasTrie instance for Sets |
| 19:35:38 | <iqubic> | https://hackage.haskell.org/package/MemoTrie-0.6.10/docs/Data-MemoTrie.html |
| 19:36:33 | <VOID[m]> | maybe `o & branches %~ (\b -> set ps b t)` is better than map inside fmap |
| 19:37:32 | <iqubic> | Ideally I'd want `Instance (HasTrie a) => HasTrie (Set a)` |
| 19:37:39 | → | gmg joins (~user@user/gehmehgeh) |
| 19:37:59 | × | mestre quits (~mestre@191.177.185.178) (Quit: Lost terminal) |
| 19:38:22 | <VOID[m]> | Except I think I made a mistake... |
| 19:41:50 | × | tvandinther quits (~tvandinth@101.98.118.246) (Ping timeout: 272 seconds) |
| 19:47:25 | × | avicenzi quits (~avicenzi@2a00:ca8:a1f:b004::c32) (Ping timeout: 252 seconds) |
| 19:47:28 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) (Remote host closed the connection) |
| 19:47:41 | <VOID[m]> | Ok, do you guys have any tips on navigating lens docs |
| 19:47:52 | <VOID[m]> | Finding anything there seems near impossible for me... |
| 19:48:12 | <VOID[m]> | They have some weirdly specific operators |
| 19:48:34 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 260 seconds) |
| 19:49:38 | <VOID[m]> | I want to iterate over a list applying a function until it returns a Just |
| 19:51:48 | <VOID[m]> | Also, is it possible to check if a function has infix version in lens? |
| 19:53:08 | × | paulpaul1076 quits (~textual@95-29-5-111.broadband.corbina.ru) (Quit: Textual IRC Client: www.textualapp.com) |
| 19:53:25 | → | asthasr joins (~asthasr@208.80.78.154) |
| 19:54:29 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 19:54:57 | → | Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
| 19:56:51 | <unit73e> | kind of needed actual cross platform paths but it's still in experimental :\ |
| 19:57:41 | <unit73e> | it will be filepath 2.x |
| 19:58:56 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
| 20:03:37 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 20:03:59 | → | tvandinther joins (~tvandinth@101.98.118.246) |
| 20:04:03 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 20:05:20 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 20:08:14 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 20:08:45 | × | tvandinther quits (~tvandinth@101.98.118.246) (Ping timeout: 260 seconds) |
| 20:09:29 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 20:10:27 | → | tvandinther joins (~tvandinth@101.98.118.246) |
| 20:15:24 | × | tvandinther quits (~tvandinth@101.98.118.246) (Ping timeout: 272 seconds) |
| 20:15:55 | → | tvandinther joins (~tvandinth@101.98.118.246) |
| 20:17:17 | × | slack1256 quits (~slack1256@191.125.227.69) (Remote host closed the connection) |
| 20:18:57 | × | tvandinther quits (~tvandinth@101.98.118.246) (Client Quit) |
| 20:20:53 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) |
| 20:23:17 | × | mmhat quits (~mmh@p5081a34e.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1) |
| 20:34:23 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 20:35:34 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:8ce1:49ba:5282:c918) |
| 20:36:03 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 20:38:28 | monochrom | turns on both LambdaCase and BlockArguments to write "catchError xyz \case E1 -> ... E2 -> ..." \∩/ |
| 20:38:36 | → | pavonia joins (~user@user/siracusa) |
| 20:39:05 | <monochrom> | {-# language JavaCatchSyntax #-} |
| 20:39:10 | <Rembane> | How to win at life |
| 20:39:40 | <Rembane> | I've activated RecordDotSyntax and that makes my Haskell code look very unHaskelly |
| 20:39:55 | <monochrom> | Oh I could also use infix `catchError`! |
| 20:40:15 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 20:40:58 | <dsal> | iqubic: can't you just write that? |
| 20:41:17 | <dsal> | VOID[m]: I liked "optics by example" for understanding the concepts. The docs are just… you've got to know things. |
| 20:41:47 | <unit73e> | Rembane, I do have some Javaskell in my code, like having each record in its own file, but that's about it |
| 20:42:07 | <unit73e> | It just feels more organized to me that way |
| 20:42:14 | <unit73e> | private files, obviously |
| 20:42:28 | <unit73e> | so say Entry is it's own file |
| 20:42:32 | <VOID[m]> | I've read many optics tutorials now ;_; |
| 20:42:32 | <VOID[m]> | I just want a way to find specific stuff... |
| 20:42:32 | <VOID[m]> | Like having array of Maybe, get first Just |
| 20:42:36 | <Rembane> | unit73e: Private files are the best, or wait... what does that mean? |
| 20:42:46 | <unit73e> | Rembane, it means they're not exposed in cabal |
| 20:42:56 | <VOID[m]> | How do I even look for that... |
| 20:43:18 | <unit73e> | they're in other-modules, basically |
| 20:43:19 | <Rembane> | VOID[m]: I have no idea... fold using <|> as operator instead? |
| 20:43:38 | <Rembane> | unit73e: Cool. Sounds like a way to encapsulate things. |
| 20:43:43 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:8ce1:49ba:5282:c918) (Quit: WeeChat 2.8) |
| 20:44:02 | <unit73e> | yeah then I can just use Entry.whatever and it's a good deal |
| 20:44:05 | <dsal> | > foldr (<|>) Nothing [Nothing, Nothing, Just 3, Just 5, Nothing] |
| 20:44:06 | <lambdabot> | Just 3 |
| 20:44:18 | <dsal> | > listToMaybe . catMaybes $ [Nothing, Nothing, Just 3, Just 5, Nothing] |
| 20:44:19 | <lambdabot> | Just 3 |
| 20:44:48 | <VOID[m]> | That's what I am doing right now, but lens has so much weirdly specific stuff, that it feels like there might be a thing for that... |
| 20:44:48 | <VOID[m]> | It has a specific thing for list of booleans for example |
| 20:44:53 | <unit73e> | like we say here, each monkey in his own branch |
| 20:45:09 | <dsal> | > [Nothing, Nothing, Just 3, Just 5, Nothing] ^? folded . _Just |
| 20:45:10 | <lambdabot> | Just 3 |
| 20:46:38 | <Rembane> | :t (^?) |
| 20:46:39 | <lambdabot> | s -> Getting (First a) s a -> Maybe a |
| 20:46:48 | <dsal> | :t preview |
| 20:46:49 | <lambdabot> | MonadReader s m => Getting (First a) s a -> m (Maybe a) |
| 20:47:41 | <dsal> | > preview (folded . _Just) [Nothing, Nothing, Just 3, Just 5, Nothing] |
| 20:47:43 | <lambdabot> | Just 3 |
| 20:47:52 | <monochrom> | I have lots of inner classes in a Java file. |
| 20:48:11 | <monochrom> | I guess my Java code is fairly Haskelly. |
| 20:48:23 | <monochrom> | or fairly Cish. |
| 20:48:43 | <dsal> | I was writing a lot of scheme last time I had a java job. I had a ~70 line method that started with `return` and just nested a bunch of junk. |
| 20:48:44 | <VOID[m]> | dsal: <3 thx, that seems obvious now |
| 20:48:45 | <monochrom> | actually I know, Algolly. |
| 20:49:01 | <monochrom> | haha |
| 20:49:38 | <monochrom> | Yeah in C I write like fib(n) { return n<=2 ? 1 : fib(n-1) + fib(n-2) ; } |
| 20:49:55 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 20:50:07 | <Rembane> | dsal: Is that MonadReader in preview a red herring or... why does it work? |
| 20:51:53 | <dsal> | Yeah, I didn't expect that. |
| 20:52:18 | <dsal> | preview l = asks (getFirst #. foldMapOf l (First #. Just)) |
| 20:52:52 | <monochrom> | I think the lens library is a large vocabulary. Like all large vocabulary in all languages (especially natural languages), even a dictionary that explains each word is of limited use. You immerse yourself in that language and absorb by osmosis and practice. |
| 20:54:10 | <monochrom> | Yes IOW I'm saying that this is like 0.1 times "where is a better doc for English?" |
| 20:54:36 | <Rembane> | monochrom: I would love to have a better doc for English |
| 20:55:18 | <Rembane> | dsal: That's an interesting definition that makes me slightly worried. Oh well. If it work it works. |
| 20:55:46 | <monochrom> | My personal example: Although "precarity" is clearly in dictionaries, I didn't even know it existed until my labour union used it in newsletters. |
| 20:56:13 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) (Remote host closed the connection) |
| 20:56:47 | <monochrom> | There is not going to be a tutorial or library doc that would tell me about "precarity" in advance. One has to wait until someone else actually uses it in a real sentence. |
| 20:57:51 | <monochrom> | Natural language teachers recommend that the only way to help is to read more books. |
| 20:58:04 | <monochrom> | So, read more other people's code. |
| 20:59:18 | <dsal> | Rembane: My brain's not good at understanding what asks is doing there. |
| 20:59:21 | <VOID[m]> | monochrom: but it'd be great to at least be able to look for an infix version of function quickly, and I think there was a naming patter explained in one of the tutorials, idk if it's described in docks somewhere, couldn't find it |
| 20:59:43 | <dsal> | VOID[m]: hoogle? |
| 20:59:58 | <VOID[m]> | For which problem... |
| 21:00:16 | <dsal> | hoogle's good for finding the name of a thing you want done. |
| 21:00:57 | <dsal> | :t getFirst #. foldMapOf l (First #. Just) |
| 21:00:58 | <lambdabot> | error: |
| 21:00:58 | <lambdabot> | • Variable not in scope: |
| 21:00:58 | <lambdabot> | (#.) :: (First a0 -> Maybe a0) -> (s0 -> r0) -> t |
| 21:01:04 | <dsal> | :t getFirst . foldMapOf l (First . Just) |
| 21:01:05 | <lambdabot> | error: |
| 21:01:05 | <lambdabot> | • Couldn't match type ‘Expr’ |
| 21:01:05 | <lambdabot> | with ‘(a -> Const (First a) a) -> s -> Const (First a) s’ |
| 21:01:11 | <dsal> | :t \l -> getFirst . foldMapOf l (First . Just) |
| 21:01:12 | <lambdabot> | Getting (First a) s a -> s -> Maybe a |
| 21:01:16 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 21:01:48 | <VOID[m]> | The types in lenses are long and hard to get |
| 21:01:48 | <VOID[m]> | And stuff like "is there an infix for view?" (an obvious example, I know) is hard to find |
| 21:01:48 | <VOID[m]> | With view/set it's easyish thanks to readme, but other functions? |
| 21:01:52 | <dsal> | OK. I figured it was something like that. I don't think I would've thought to construct it that way. |
| 21:02:07 | <dsal> | :t view |
| 21:02:08 | <lambdabot> | MonadReader s m => Getting a s a -> m a |
| 21:02:17 | <dsal> | @hoogle MonadReader s m => Getting a s a -> m a |
| 21:02:17 | <lambdabot> | Control.Lens.Combinators view :: MonadReader s m => Getting a s a -> m a |
| 21:02:17 | <lambdabot> | Control.Lens.Getter view :: MonadReader s m => Getting a s a -> m a |
| 21:02:17 | <lambdabot> | Network.AWS.Lens view :: MonadReader s m => Getting a s a -> m a |
| 21:02:56 | <dsal> | Yeah, preview and ^? are slightly different because of that weird monadreader thing. |
| 21:03:49 | <dsal> | You have to rearrange it some. |
| 21:03:53 | <dsal> | :t preview |
| 21:03:54 | <lambdabot> | MonadReader s m => Getting (First a) s a -> m (Maybe a) |
| 21:04:14 | <dsal> | @hoogle Getting (First a) s a -> s -> Maybe a |
| 21:04:15 | <lambdabot> | Lens.Micro.Extras preview :: Getting (First a) s a -> s -> Maybe a |
| 21:04:15 | <lambdabot> | Control.Lens.Fold (^?) :: s -> Getting (First a) s a -> Maybe a |
| 21:04:15 | <lambdabot> | Control.Lens.Operators (^?) :: s -> Getting (First a) s a -> Maybe a |
| 21:04:59 | <unit73e> | monochrom, interestingly java tried to copy haskell with its own modules, aka project jigsaw, but it's so crappy that nobody uses |
| 21:05:44 | <unit73e> | and javascript, off all languages, actually copied kind of right |
| 21:06:32 | <Rembane> | dsal: Same here. The Reader monad is IIRC function application but in a monad, can that intuition help here? |
| 21:07:35 | <VOID[m]> | I'll have to figure out the rearranging |
| 21:07:42 | <dsal> | > asks (+) 2 3 |
| 21:07:44 | <lambdabot> | 5 |
| 21:07:45 | × | trev quits (~trev@user/trev) (Remote host closed the connection) |
| 21:08:30 | <unit73e> | I also find it interesting that React is a cheap knockoff of haskell in the monad idea |
| 21:08:39 | <unit73e> | but only somewhat |
| 21:08:50 | → | crazazy joins (~user@130.89.171.62) |
| 21:09:28 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 21:09:48 | <[exa]> | react has anything like monads? |
| 21:10:20 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 21:11:12 | <geekosaur> | callbacks? |
| 21:11:26 | <Rembane> | Hooks? |
| 21:11:47 | <[exa]> | that's a bit more like an effect system but no monads |
| 21:11:47 | <dsal> | blackjack? |
| 21:12:28 | <unit73e> | [exa], they have this components idea, where you have to lift and whatnot, but it's only somewhat copied |
| 21:12:38 | <unit73e> | and they even copied Effect |
| 21:12:47 | <unit73e> | but only superficially |
| 21:12:53 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 21:13:21 | <unit73e> | it's obvious they copied the name and are going somewhat with the same idea, but it's javascript |
| 21:13:50 | <unit73e> | so it leaves a lot to be desired |
| 21:13:55 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 21:13:55 | <unit73e> | Purescript is the way to go imo |
| 21:14:20 | × | Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 255 seconds) |
| 21:14:31 | <[exa]> | lifting in react usually means making state more global, still no monads :( |
| 21:14:34 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 21:14:44 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 21:15:46 | <[exa]> | (you could say the nice musculous people in gyms copied lifting from haskell) |
| 21:15:56 | <unit73e> | the first time I used React it felt like they tried to shoehorn functional into javascript and came up with that thingy |
| 21:16:06 | <unit73e> | it's not great but they have something |
| 21:17:04 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 21:17:18 | <unit73e> | they even tried to sell the idea of high order components |
| 21:17:32 | <unit73e> | which is kind off.. wtf.. but whatever |
| 21:18:05 | <crazazy> | ngl i like class components in react over hooks |
| 21:18:40 | → | Kaiepi joins (~Kaiepi@108.175.84.104) |
| 21:18:54 | <crazazy> | was also a nice distinction: class components hold local state, function components do not |
| 21:19:12 | <unit73e> | I honestly don't care how react or anything JS ends up, because in the end of the day, there's always some weirdness you can't get rid off in JS |
| 21:19:22 | <unit73e> | but that's just me |
| 21:19:26 | <unit73e> | who gave up on JS |
| 21:19:45 | <unit73e> | still have to program in JS but I just don't care if it's pretty or not |
| 21:19:46 | <unit73e> | rant over |
| 21:20:30 | × | beefbambi quits (~beefbambi@183.82.176.168) (Ping timeout: 252 seconds) |
| 21:20:32 | <[exa]> | well it would be great to have more of the sensible js frontends like purescript |
| 21:20:42 | <[exa]> | s/sensible/sensibler/ |
| 21:20:48 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 21:21:32 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds) |
| 21:24:10 | <dolio> | Or to not require compiling to JS to begin with. |
| 21:25:05 | Rembane | waves the webassembly flag for completion |
| 21:30:38 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 21:31:56 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 21:31:56 | × | jinsun quits (~jinsun@user/jinsun) (Killed (mercury.libera.chat (Nickname regained by services))) |
| 21:31:56 | jinsun__ | is now known as jinsun |
| 21:32:27 | <iqubic> | So, is there no way good way to memoize a function that takes a `(HasTrie a) => Set a` as one of its input! |
| 21:32:29 | <iqubic> | ?? |
| 21:32:54 | × | beefbambi quits (~beefbambi@183.82.176.168) (Ping timeout: 268 seconds) |
| 21:33:10 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 21:33:20 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
| 21:33:28 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 21:33:28 | jinsun | is now known as Guest8699 |
| 21:33:28 | jinsun__ | is now known as jinsun |
| 21:33:58 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 21:34:41 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
| 21:35:00 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 21:36:38 | × | Guest8699 quits (~jinsun@user/jinsun) (Ping timeout: 252 seconds) |
| 21:36:53 | <juri_> | is there a way to intentionally create an orphan deriving instance? my test suite wants Eq everywhere, but i want to remove it from my program. |
| 21:37:02 | <juri_> | s/program/library/ |
| 21:37:43 | <geekosaur> | standalone deriving in the test suite? |
| 21:37:50 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 21:38:08 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 21:41:33 | <juri_> | i suppose. i didn't want to write it myself, but seems pretty boilerplate. |
| 21:43:39 | <geekosaur> | erm, I meant adding `{-# LANGUAGE StandaloneDeriving #-}` and writing `deriving instance …` (https://downloads.haskell.org/ghc/9.4.1/docs/users_guide/exts/standalone_deriving.html) |
| 21:44:59 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 21:46:44 | → | RedSwan joins (~jared@174-23-134-43.slkc.qwest.net) |
| 21:48:07 | <juri_> | oh, neat. thanks! |
| 21:50:49 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 21:50:57 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 21:51:10 | → | mmhat joins (~mmh@p200300f1c72368bbee086bfffe095315.dip0.t-ipconnect.de) |
| 21:56:43 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) |
| 22:01:12 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) (Ping timeout: 252 seconds) |
| 22:04:03 | <jackdk> | Could use reflection? There's code to synthesise temporary monoid instances, I'm sure you could do the same for eq |
| 22:04:58 | × | beefbambi quits (~beefbambi@183.82.176.168) (Ping timeout: 268 seconds) |
| 22:05:11 | → | beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) |
| 22:10:36 | × | texasmynsted quits (~texasmyns@99.96.221.112) (Ping timeout: 255 seconds) |
| 22:12:47 | → | doyougnu joins (~doyougnu@cpe-74-69-132-225.stny.res.rr.com) |
| 22:14:39 | × | beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer) |
| 22:15:38 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 22:22:03 | × | euandreh quits (~Thunderbi@179.214.113.107) (Remote host closed the connection) |
| 22:24:21 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 22:24:34 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 22:26:40 | → | euandreh joins (~Thunderbi@179.214.113.107) |
| 22:28:42 | × | doyougnu quits (~doyougnu@cpe-74-69-132-225.stny.res.rr.com) (Ping timeout: 252 seconds) |
| 22:29:39 | <dsal> | iqubic: can't you just make that instance? |
| 22:31:43 | → | jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) |
| 22:32:09 | × | euandreh quits (~Thunderbi@179.214.113.107) (Quit: euandreh) |
| 22:34:16 | × | Azel_ quits (~Azel@2a01:e0a:1f1:98e0:fa28:19ff:fea0:c205) (Quit: Konversation terminated!) |
| 22:38:32 | × | fizbin quits (~fizbin@user/fizbin) (Ping timeout: 272 seconds) |
| 22:39:43 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:45:44 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 22:52:05 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 22:54:06 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 22:54:48 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 23:00:20 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 23:00:20 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 23:00:20 | → | wroathe joins (~wroathe@user/wroathe) |
| 23:01:31 | × | fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 260 seconds) |
| 23:01:54 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 23:02:26 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 23:07:56 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 23:08:12 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 23:08:19 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 23:10:12 | × | Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Ping timeout: 272 seconds) |
| 23:12:53 | × | beefbambi quits (~beefbambi@183.82.176.168) (Read error: Connection reset by peer) |
| 23:13:37 | → | beefbambi joins (~beefbambi@183.82.176.168) |
| 23:14:26 | × | akegalj quits (~akegalj@141-136-165-175.dsl.iskon.hr) (Quit: leaving) |
| 23:19:22 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:19:41 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 23:20:02 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds) |
| 23:44:45 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:46:04 | × | mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 252 seconds) |
| 23:47:25 | × | zer0bitz quits (~zer0bitz@196.244.192.57) (Read error: Connection reset by peer) |
| 23:57:39 | × | mmhat quits (~mmh@p200300f1c72368bbee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1) |
| 23:58:47 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Ping timeout: 256 seconds) |
All times are in UTC on 2022-12-16.