Home liberachat/#haskell: Logs Calendar

Logs on 2022-06-07 (liberachat/#haskell)

00:00:30 <EvanR> that sounds like what happens at warp 10
00:02:20 <dsal> DigitalKiwi: I live on a small island, so getting batteries shipped to me complicates things quite a bit.
00:02:49 <dsal> Some of my projects battery kit is "hackage" though
00:05:04 <dsal> jackdk: I'm a stack user and am relatively happy. I don't interact with stack too much, though.
00:06:00 <jackdk> dsal: thanks for the data point
00:06:26 <DigitalKiwi> the less i use stack the happier i am too
00:06:28 <dsal> Work is nix and make and ghcid. It is… OK.
00:07:11 × Alleria_ quits (~AllahuAkb@68.65.161.35) (Quit: Textual IRC Client: www.textualapp.com)
00:07:39 <jackdk> make!? Now I'm intrigued.
00:10:17 × zeenk quits (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) (Quit: Konversation terminated!)
00:12:53 <dsal> *huge* makefile. Just a convenient place to leave everyone's entry points.
00:13:22 <dsal> i.e., make as a script, not make as a dependency tracker thing.
00:13:40 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
00:15:27 <Bulby[m]> I thought it was bad because it breaks when something small changes
00:15:33 <Bulby[m]> or maybe those are just lies
00:15:42 <dsal> What breaks/
00:15:51 <Bulby[m]> nix
00:16:26 <dsal> I use nixos on all my linux machines (at least the ones that will run it). It's super nice.
00:16:42 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a007:efa3:2690:a05d) (Remote host closed the connection)
00:16:43 <dsal> For devs, we all have all the dependencies we need with minimal coordination.
00:16:55 <Bulby[m]> does it have to be nixos to use nix
00:17:05 <dsal> Nope, I'm developing on an M1 mac.
00:17:26 <dsal> (because I don't have my nixos box handy)
00:17:28 <Bulby[m]> interesting
00:18:06 <dsal> How to get all of the necessary dependencies installed and all the right stuff in your shell in order to build and run all of our code on whatever platform you're on: `nix-shell`
00:18:14 <monochrom> Haha so nix and haskell are competing on "who's getting a debugger later" >:)
00:18:21 <yushyin> :D
00:18:48 <dsal> I have a debugger for nix. It's just a department I interface with via slack.
00:19:52 <monochrom> I had a few friends with whom I unilaterally imagined "will I finish my PhD later than them?" so I know the feelling perfectly. (I finished last haha.)
00:21:36 Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net)
00:22:55 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a007:efa3:2690:a05d)
00:24:18 × sebastiandb quits (~sebastian@pool-108-18-101-17.washdc.fios.verizon.net) (Ping timeout: 250 seconds)
00:24:56 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
00:25:23 bilegeek joins (~bilegeek@2600:1008:b02b:743:567:fb63:d9c2:484b)
00:27:04 <yushyin> i tried to read up on nix flakes this weekend to use it for my server orchestration. i had no previous experience with nix and i have to say, it's quite a rabbit hole.
00:30:53 × DNH quits (~DNH@2a02:8108:1100:16d8:bcb2:718:99f3:56c4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:32:32 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 272 seconds)
00:42:25 × Tuplanolla quits (~Tuplanoll@91-159-69-1.elisa-laajakaista.fi) (Quit: Leaving.)
00:42:25 <Bulby[m]> the stack/heap approach for the interp looks really fun for the garbage collector to not do anything about
00:45:51 × xff0x quits (~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 246 seconds)
00:47:37 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
00:47:52 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:48:43 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
00:48:50 <EvanR> a garbage collector for your heap seems straightforward
00:56:49 nate3 joins (~nate@98.45.169.16)
01:01:45 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
01:03:13 finsternis joins (~X@23.226.237.192)
01:05:53 × alp quits (~alp@user/alp) (Ping timeout: 255 seconds)
01:10:22 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:16:30 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:26:04 <EvanR> oof unless cyclic references
01:26:26 Topsi joins (~Topsi@dyndsl-095-033-092-041.ewe-ip-backbone.de)
01:29:07 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
01:33:29 × cosimone quits (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81) (Remote host closed the connection)
01:34:16 xff0x joins (~xff0x@s5.HtokyoFL1.vectant.ne.jp)
01:36:20 cosimone joins (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81)
01:37:06 sebastiandb joins (~sebastian@pool-108-18-101-17.washdc.fios.verizon.net)
01:39:16 notzmv joins (~zmv@user/notzmv)
01:39:30 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
01:48:31 andrey__ joins (~andrey@p200300dbcf15530023ad2f8f21d0715c.dip0.t-ipconnect.de)
01:49:23 slack1256 joins (~slack1256@186.11.82.227)
01:51:03 × andrey_ quits (~andrey@p200300dbcf0906009ea91513703af53a.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
01:53:13 <Benzi-Junior> http://ix.io/3ZAB
01:58:59 <Benzi-Junior> I'm trying to figure out how to build the interpretations of the operations "delay", "broadcast", and "receive" as specified by runIO
01:59:42 <Benzi-Junior> because I'm fairly sure I'm not supposed to go back to dealing with the constructors
02:02:56 <Bulby[m]> for that heap, if you find it on the stack is it guarenteed to be on the heap?
02:04:23 × gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 255 seconds)
02:04:54 <jackdk> Benzi-Junior: looks like some good progress there. You will need to match on the constructors, but only to consume the `Agent msg ()` structure. Can you write a function that can run a single agent?
02:11:36 <Benzi-Junior> jackdk, huh surprised to hear that, I don't see myself having any issues writing a processing function that matches on constructors
02:11:57 <Benzi-Junior> just thought that was the wrong way to do it
02:12:51 <Axman6> ok, morality question time: if I have a function foo :: a -> b, whhich might occasionally call error, is it morally ok to do something like foo' :: a -> Either SomeException b; foo' a = unsafePerformIO (try (evaluate (foo b)))
02:13:37 <Benzi-Junior> well I need to figure out what the right way to write the Agent msg a -> STM a part
02:13:48 <Benzi-Junior> but the logic I feel should be simple
02:14:45 yosef` joins (~user@user/yosef/x-2947716)
02:16:12 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 276 seconds)
02:16:59 <Bulby[m]> oh i'm getting some of the picture now - recursion ftw !
02:17:53 × df quits (~ben@justworks.xyz) (Remote host closed the connection)
02:18:43 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
02:20:45 × td_ quits (~td@muedsl-82-207-238-164.citykom.de) (Ping timeout: 276 seconds)
02:22:06 td_ joins (~td@muedsl-82-207-238-064.citykom.de)
02:29:57 k8yun joins (~k8yun@user/k8yun)
02:33:15 <jackdk> Axman6: I assume there's a reason not to rewrite it directly to `a -> Either String b`?
02:34:50 MsGaGaGa joins (~MsGaGaGa@S01069050ca4e3573.cg.shawcable.net)
02:37:12 <Axman6> it's from a library
02:37:21 <jackdk> Axman6: fork it
02:37:28 <Axman6> but it turns out I actually want to steal its whole implementation
02:38:01 <jackdk> Also I think you could catch `ErrorCall` and not `SomeException`
02:38:59 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
02:44:33 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:44:37 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:56:32 × _xor quits (~xor@72.49.198.103) (Quit: brb)
03:01:57 × MsGaGaGa quits (~MsGaGaGa@S01069050ca4e3573.cg.shawcable.net) (Quit: Client closed)
03:03:00 andrey_ joins (~andrey@p200300dbcf1b4800d6d421d0e0348cd5.dip0.t-ipconnect.de)
03:05:27 × andrey__ quits (~andrey@p200300dbcf15530023ad2f8f21d0715c.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
03:05:42 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:15:18 × ente quits (~daemon@inferno.barfooze.de) (Ping timeout: 272 seconds)
03:19:25 <Bulby[m]> i have to have a counter in my megaparsec parser.... obviously the solution is to write a megaparsec polysemy effect
03:21:53 <dsal> I use StateT for that sort of thing.
03:24:05 <Bulby[m]> i have one better: unsafe perform io
03:24:39 <Cale> Bulby[m]: Isn't megaparsec itself a transformer?
03:24:48 <Cale> Or am I confusing it with the original parsec?
03:24:59 <Bulby[m]> yes LOL
03:25:14 <Cale> data ParsecT e s m a
03:25:16 <Bulby[m]> megaparsec is a transformer
03:25:27 <Cale> yeah, that's the reason it's a transformer, so you can transform IO
03:25:45 <Cale> (or anything else)
03:26:09 <Cale> But also, it's possible to do a counter without transforming
03:26:17 <Bulby[m]> how so
03:26:21 <Cale> Just have a parser that is defined as a function of the count
03:26:26 <Cale> and make it recursive
03:26:58 <Cale> (or several parsers, if needs be)
03:32:00 <Bulby[m]> that sounds like I should just use ParsecT
03:32:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
03:33:03 <dsal> Are you not?
03:33:15 <Cale> Yeah, possibly. Depends on how long you need to use the counter for, how many things would need an extra parameter
03:33:20 <Bulby[m]> i was using Parsec, not ParsecT
03:33:58 <dsal> type Parsec s u = ParsecT s u Identity
03:35:16 zebrag joins (~chris@user/zebrag)
03:36:53 <Bulby[m]> argh I hate that I can't just registerParseFailure in makeExprParser operators
03:39:20 × zebrag quits (~chris@user/zebrag) (Client Quit)
03:39:21 gio123 joins (~gio123@146.255.226.194)
03:39:47 <dsal> I'm not sure what that means.
03:48:29 <Bulby[m]> https://paste.tomsmeding.com/FYNShH5z now this is programming
03:49:20 ente joins (~daemon@inferno.barfooze.de)
03:51:53 calleum_ joins (~calleum@user/calleum)
03:55:00 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
03:57:28 eggplant_ joins (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e)
04:00:29 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a007:efa3:2690:a05d) (Ping timeout: 255 seconds)
04:02:38 Topsi1 joins (~Topsi@dyndsl-095-033-027-152.ewe-ip-backbone.de)
04:02:49 × gio123 quits (~gio123@146.255.226.194) (Quit: Client closed)
04:03:14 gio123 joins (~gio123@146.255.226.194)
04:04:19 × Topsi quits (~Topsi@dyndsl-095-033-092-041.ewe-ip-backbone.de) (Ping timeout: 246 seconds)
04:09:57 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 276 seconds)
04:12:05 sebastiandb_ joins (~sebastian@pool-108-18-101-17.washdc.fios.verizon.net)
04:12:43 × madnight quits (~madnight@static.59.103.201.195.clients.your-server.de) (Ping timeout: 246 seconds)
04:12:43 × fiddlerwoaroof_ quits (~fiddlerwo@user/fiddlerwoaroof) (Ping timeout: 246 seconds)
04:12:43 × nerdypepper quits (~nerdypepp@user/nerdypepper) (Ping timeout: 246 seconds)
04:13:04 × tafa quits (~tafa@user/tafa) (Ping timeout: 246 seconds)
04:13:13 nerdypepper joins (~nerdypepp@user/nerdypepper)
04:13:25 × shailangsa quits (~shailangs@host86-186-136-116.range86-186.btcentralplus.com) (Ping timeout: 246 seconds)
04:13:30 monochrm joins (~trebla@216.138.220.146)
04:13:37 madnight joins (~madnight@static.59.103.201.195.clients.your-server.de)
04:13:41 tafa joins (~tafa@user/tafa)
04:13:46 × gnyeki quits (~gnyeki@user/gnyeki) (Ping timeout: 246 seconds)
04:13:52 CodeKiwi joins (~kiwi@2604:a880:400:d0::1ca0:e001)
04:13:55 Philonous_ joins (~Philonous@user/philonous)
04:14:07 × mzan quits (~quassel@mail.asterisell.com) (Ping timeout: 246 seconds)
04:14:07 × icebreaker quits (~icebreake@user/icebreaker) (Ping timeout: 246 seconds)
04:14:28 × sebastiandb quits (~sebastian@pool-108-18-101-17.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
04:14:28 × monochrom quits (trebla@216.138.220.146) (Ping timeout: 246 seconds)
04:14:28 × DigitalKiwi quits (~kiwi@137.184.156.191) (Ping timeout: 246 seconds)
04:14:28 × Philonous quits (~Philonous@user/philonous) (Ping timeout: 246 seconds)
04:14:28 monochrm is now known as monochrom
04:14:33 fiddlerwoaroof joins (~fiddlerwo@user/fiddlerwoaroof)
04:14:49 × Typedfern quits (~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net) (Ping timeout: 246 seconds)
04:14:49 × kjak quits (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
04:14:55 mzan joins (~quassel@mail.asterisell.com)
04:15:45 gnyeki joins (~gnyeki@li578-216.members.linode.com)
04:15:45 × gnyeki quits (~gnyeki@li578-216.members.linode.com) (Changing host)
04:15:45 gnyeki joins (~gnyeki@user/gnyeki)
04:15:59 icebreaker joins (~icebreake@user/icebreaker)
04:16:34 × califax quits (~califax@user/califx) (Ping timeout: 240 seconds)
04:16:34 × noteness quits (~noteness@user/noteness) (Ping timeout: 240 seconds)
04:16:38 kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
04:17:04 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 240 seconds)
04:17:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
04:18:48 noteness joins (~noteness@user/noteness)
04:19:08 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
04:19:43 califax joins (~califax@user/califx)
04:21:31 mbuf joins (~Shakthi@223.190.216.42)
04:23:40 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
04:23:49 Vajb joins (~Vajb@n5ar9yynwxqg80e32-2.v6.elisa-mobile.fi)
04:25:33 nate3 joins (~nate@98.45.169.16)
04:28:18 Typedfern joins (~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net)
04:30:11 andrey__ joins (~andrey@p508d49e0.dip0.t-ipconnect.de)
04:30:45 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds)
04:30:50 × rekahsoft quits (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) (Ping timeout: 240 seconds)
04:31:59 <dsal> Bulby[m]: Why do that when you have several ways to do it right?
04:32:27 × andrey_ quits (~andrey@p200300dbcf1b4800d6d421d0e0348cd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
04:33:51 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
04:50:30 × Topsi1 quits (~Topsi@dyndsl-095-033-027-152.ewe-ip-backbone.de) (Read error: Connection reset by peer)
04:51:50 × calleum_ quits (~calleum@user/calleum) (Ping timeout: 240 seconds)
04:54:01 dsrt^ joins (~dsrt@c-24-131-46-83.hsd1.ga.comcast.net)
04:54:34 <slack1256> @let sumGuarded xs = scarl' (+) 0 xs
04:54:36 <lambdabot> /sandbox/tmp/.L.hs:160:17: error:
04:54:36 <lambdabot> • Variable not in scope:
04:54:36 <lambdabot> scarl' :: (a0 -> a0 -> a0) -> t0 -> t -> t1
04:54:43 shailangsa_ joins (~shailangs@host86-186-136-116.range86-186.btcentralplus.com)
04:54:44 <slack1256> @let sumGuarded xs = scanl' (+) 0 xs
04:54:46 <lambdabot> Defined.
04:54:58 <slack1256> > sumGuarded [10,9..1]
04:55:00 <lambdabot> [0,10,19,27,34,40,45,49,52,54,55]
04:55:49 × gio123 quits (~gio123@146.255.226.194) (Quit: Client closed)
04:56:24 <slack1256> I argue that we should deprecate `sum` as for infinite data type (such as list) it will return bottom. I think it is better to map to the infinite stream in case the argument is one.
04:56:44 <slack1256> Agree or disagree ?
04:59:31 <EvanR> people use non-negative Int too
04:59:56 <EvanR> as well as finite lists, in unchecked ways
05:00:31 <EvanR> also, sum is not list-specific
05:00:54 × k8yun quits (~k8yun@user/k8yun) (Read error: Connection reset by peer)
05:01:50 <EvanR> a sequence of partials sums is an entirely different animal so doesn't function as a drop in replacement
05:02:09 <slack1256> Also, if you guys have time, check http://www2.tcs.ifi.lmu.de/~abel/popl13.pdf about copatterns for codata. That example in section 2.2 sold me the idea.
05:02:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
05:08:57 × motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit)
05:09:00 <lyxia> I'll agree if you give me a type of lazy finite lists as a replacement.
05:09:15 k8yun joins (~k8yun@user/k8yun)
05:12:01 <EvanR> a Vec indexed by an existential Nat? xD
05:12:04 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
05:13:34 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
05:14:54 <slack1256> Better yet, how can we pass a proof along that a list is finite?
05:15:15 <slack1256> I can only think on a Ghost of Departed Proof kind of setup.
05:16:52 <EvanR> a Vec indexed by an existential Nat
05:17:04 <dolio> Existentials make things strict.
05:18:11 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
05:19:19 yosef`` joins (~user@223.73.197.95)
05:19:32 <dolio> At least if you build them up in pieces.
05:19:58 × yosef` quits (~user@user/yosef/x-2947716) (Read error: Connection reset by peer)
05:20:12 <EvanR> well someone wants to build it lazily, then someone else wants to consume it without knowing how it was built
05:20:40 <EvanR> first person might need to use a known Nat
05:22:07 <EvanR> lazy fuel
05:23:21 Polo joins (~Gambino@user/polo)
05:24:07 × sebastiandb_ quits (~sebastian@pool-108-18-101-17.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
05:32:12 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:34:03 dyeplexer joins (~dyeplexer@user/dyeplexer)
05:35:26 × Polo quits (~Gambino@user/polo) (Quit: Polo)
05:41:26 chomwitt joins (~chomwitt@2a02:587:dc1f:5600:c2b2:8e31:c818:61b1)
05:42:54 × slack1256 quits (~slack1256@186.11.82.227) (Ping timeout: 276 seconds)
05:46:33 andrey_ joins (~andrey@p508d48e4.dip0.t-ipconnect.de)
05:49:03 × andrey__ quits (~andrey@p508d49e0.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
05:49:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
05:51:08 motherfsck joins (~motherfsc@user/motherfsck)
05:52:32 money joins (~Gambino@user/polo)
05:59:04 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
06:00:16 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
06:00:19 × bilegeek quits (~bilegeek@2600:1008:b02b:743:567:fb63:d9c2:484b) (Quit: Leaving)
06:02:57 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
06:04:02 × dsrt^ quits (~dsrt@c-24-131-46-83.hsd1.ga.comcast.net) (Ping timeout: 260 seconds)
06:06:13 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
06:08:45 acidjnk_new joins (~acidjnk@p200300d0c7068b707c47e4f6eb00087c.dip0.t-ipconnect.de)
06:10:43 <gnyeki> is my impression correct that efforts to bring CUDA to Haskell have mostly stopped around 6 to 8 years ago? if yes, why might this be?
06:11:49 <Athas> gnyeki: I don't think that is true. The 'cuda' library is maintained to some extent. Last update was in 2021.
06:12:06 <Athas> It's a low level library, so it probably does not require much maintenance. I expect it still works.
06:12:11 × k8yun quits (~k8yun@user/k8yun) (Quit: Leaving)
06:17:37 × money quits (~Gambino@user/polo) (Quit: money)
06:21:56 vglfr joins (~vglfr@46.96.142.51)
06:23:53 littlebo1eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
06:24:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
06:25:21 remedan joins (~remedan@octo.cafe)
06:25:25 <sloorush> Hello, I was not able to build a project and then I found that some packages are broken this is what I have
06:25:26 <sloorush> ```
06:25:26 <sloorush> ❯ ghc-pkg check --simple-output
06:25:27 <sloorush> ghcid-0.8.7
06:25:27 <sloorush> ```
06:25:28 <sloorush> I have tried using this to fix it but no luck https://stackoverflow.com/a/7963056/13308517
06:25:28 <sloorush> I tried reinstalling ghcid, but it failed, here is the log:
06:25:29 <sloorush> https://pastebin.com/rNivhW3A
06:26:32 andrey__ joins (~andrey@p200300dbcf1e5100509bf59e4ea7342a.dip0.t-ipconnect.de)
06:26:55 cfricke joins (~cfricke@user/cfricke)
06:29:10 × andrey_ quits (~andrey@p508d48e4.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
06:33:38 coot joins (~coot@213.134.190.95)
06:35:03 <gnyeki> Athas: hmm you're right, 'accelerate' has been getting commits too. i will look at it. the github page doesn't list papers published after 2017 though which makes me wonder why
06:35:49 <Athas> gnyeki: I know several people are still actively working on it. I don't know why they don't have any more recent papers listed.
06:36:47 × shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit)
06:45:00 odnes joins (~odnes@5-203-158-63.pat.nym.cosmote.net)
06:46:04 × littlebo1eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
06:47:59 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
06:52:56 <[exa]> sloorush: that looks like a slightly broken install
06:53:32 <[exa]> (obviously it says that the consistency of your `base` package is broken, which is probably going to prevent reasonable installation of almost anything)
06:53:43 <[exa]> how did you get to this state btw?
06:54:25 <[exa]> also, just removing ~/.cabal and perhaps ~/.ghc and starting anew may at least get you working builds
06:55:22 × vglfr quits (~vglfr@46.96.142.51) (Ping timeout: 244 seconds)
06:58:25 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:04:27 mattil joins (~mattil@helsinki.portalify.com)
07:08:30 lottaquestions_ joins (~nick@104.221.94.126)
07:10:26 lortabac joins (~lortabac@2a01:e0a:541:b8f0:7f61:118e:9d6b:1e04)
07:10:46 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
07:10:50 × lottaquestions quits (~nick@2607:fa49:5041:a200:a394:e3c:d4d7:cf13) (Ping timeout: 255 seconds)
07:11:23 chexum joins (~quassel@gateway/tor-sasl/chexum)
07:13:15 × kitty1 quits (~kitty@096-039-147-043.res.spectrum.com) (Ping timeout: 276 seconds)
07:13:53 × lottaquestions_ quits (~nick@104.221.94.126) (Quit: Konversation terminated!)
07:14:12 lottaquestions_ joins (~nick@2607:fa49:5041:a200:decd:e377:11b7:e80e)
07:14:21 <sloorush> [exa] This did not work, i got some help from the discord server, reinstalled everything using ghcup instead of pacman, and it works now, Thank you!
07:16:18 <maerwald[m]> sloorush: arch has broken GHC
07:16:45 p_____ joins (~dyeplexer@user/dyeplexer)
07:17:38 <maerwald[m]> The amount of pain arch devs have caused to their haskell users is enough that haskell.ort now actively discourages installing ghc from arch repos: https://www.haskell.org/downloads/
07:17:48 <tomsmeding> gnyeki: Athas:there's https://dblp.uni-trier.de/rec/conf/europar/HaakMKW20.html which AFAIK isn't merged into accelerate proper, and https://arxiv.org/abs/2108.13114 (which _is_ available in accelerate-1.3) which should still be published at a conference at some point
07:18:08 <tomsmeding> maerwald[m]: haskell.place? :p
07:18:16 <maerwald[m]> No other distro has managed to get discouraged that way. So gj archlinux. Please tell your distro maintainers.
07:19:17 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 260 seconds)
07:20:16 <tomsmeding> gnyeki: current work on accelerate is mostly reworking the entire backend, which takes a while :p
07:20:28 <maerwald[m]> tomsmeding: what?
07:20:53 <tomsmeding> maerwald[m]: haskell.ort
07:21:20 <[exa]> sloorush: ah okay, arch :] good that it's solved
07:21:26 <maerwald[m]> You want a cookie for finding spelling mistake? 😄
07:21:34 × motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit)
07:22:08 × p_____ quits (~dyeplexer@user/dyeplexer) (Quit: Leaving)
07:22:27 p_____ joins (~dyeplexer@user/dyeplexer)
07:23:52 <maerwald[m]> https://data.iana.org/TLD/tlds-alpha-by-domain.txt
07:23:58 <maerwald[m]> Seems there's no .ort
07:24:01 <maerwald[m]> Too bad
07:25:09 money joins (~Gambino@user/polo)
07:25:23 calleum_ joins (~calleum@user/calleum)
07:25:54 p_____ is now known as dyeplexer
07:26:17 <tomsmeding> sad
07:26:33 <maerwald[m]> Yeah, but .space exists
07:27:19 <maerwald[m]> And .sucks
07:27:34 <maerwald[m]> That's nice. I'll create archlinux.sucks
07:27:37 <tomsmeding> lol
07:27:49 <darkling> Not sure something meaning "midden" is a particularly saleable TLD. :)
07:28:29 <tomsmeding> maerwald[m]: arch is nice, you should just ignore the haskell packages
07:30:13 <maerwald[m]> tomsmeding: i've used arch for 2.5 years and also contributed to AUR. Never again
07:30:45 <tomsmeding> I've used arch for more than that and still going strong, now on two machines
07:30:56 <tomsmeding> though I've never contributed to AUR yet, maybe that's an important difference
07:30:58 <maerwald[m]> Their package definitions have low quality and they lack sensible policies
07:30:59 <jackdk> Arch's packaging model scared me; I felt the AUR was a bit too "wild west". Moved back to Gentoo, and years later, to NixOS
07:31:36 <maerwald[m]> Gentoo is one of the few distros that has strong policies and relatively good QA, but god is the PM awful
07:32:29 <maerwald[m]> NixOS is the other way around: smart PM, awful packages and ecosystem. You can never win
07:33:05 <tomsmeding> fedora is supposed to have somewhat more of a QA process
07:33:12 <tomsmeding> but their PM is very slow, being written in python :D
07:33:32 <maerwald[m]> tomsmeding: i'm using fedora right now and the amount of updates that broke stuff are a LOT
07:33:50 <tomsmeding> ah
07:33:56 <maerwald[m]> E.g. there's zero testing of new kernel or nvidia driver versions
07:34:06 <maerwald[m]> They just bump. The user is the tester
07:34:35 <maerwald[m]> Once ie the middle of a coding session an upgrade broke the xserver and crashed everything
07:36:02 <tomsmeding> why do you upgrade in the middle of a coding session
07:36:15 <maerwald[m]> But it's somewhat ok if you only update occasionally or exclude certain packages
07:36:38 <tomsmeding> but that's worse than I've had on arch :p
07:36:43 <maerwald[m]> tomsmeding: prolly when the Firefox bug or whatever hit us
07:36:46 <tomsmeding> worst I had was non-booting because broken nvidia
07:36:58 <tomsmeding> ah
07:37:58 <maerwald[m]> Yeah on fedora a packager split the nvidia package into two, breaking suspend to ram, because the split off utility package wasn't automatically pulled in. That's both a maintainer, a policy and potentially a package manager messup
07:38:36 zeenk joins (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806)
07:38:47 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds)
07:45:11 lottaquestions joins (~nick@104.221.94.126)
07:45:47 kitty1 joins (~kitty@096-039-147-043.res.spectrum.com)
07:46:10 × yosef`` quits (~user@223.73.197.95) (Remote host closed the connection)
07:46:44 mc47 joins (~mc47@xmonad/TheMC47)
07:46:50 <Athas> Does anyone here have any experiences with decomposing Haskell programs into multiple internal libraries, rather than a single large library?
07:47:04 × yosef``` quits (~user@2409:8a55:e215:42f0:58b9:4cff:fea0:d9) (Quit: ERC (IRC client for Emacs 26.1))
07:47:16 × lottaquestions_ quits (~nick@2607:fa49:5041:a200:decd:e377:11b7:e80e) (Ping timeout: 248 seconds)
07:47:46 <Athas> My motivation would be twofold: 0) stricter enforcement of internal abstraction boundaries. 2) cabal seems a lot better at concurrent compilation of packages than concurrent compilation of modules.
07:47:52 <tomsmeding> what kind of experience are you looking for? I've used cabal's internal libraries some
07:48:06 <tomsmeding> though not published to hackage
07:48:13 <maerwald[m]> tomsmeding: wow .sucks domains are insanely expensive
07:48:22 yosef`` joins (~user@user/yosef/x-3154124)
07:48:23 <tomsmeding> maerwald[m]: all the vanity TLDs are like that
07:48:55 <tdammers> Athas: you make it sound like a big deal, but there's not an awful lot to it, or am I missing something here?
07:49:13 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
07:49:46 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
07:50:05 <Athas> tdammers: I'm just looking for experiences with doing it that way. Whether it just provides busywork with no real advantage.
07:51:58 <sm> i did it. it has to be worth the extra noise and ongoing maintenance effort
07:52:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
07:52:38 <Athas> Why did you do it?
07:52:40 × yosef`` quits (~user@user/yosef/x-3154124) (Client Quit)
07:53:46 <sm> the main reason actually was to reduce dependencies/build effort for optional functionality that not everybody needed or could build on certain platforms
07:54:01 Pickchea joins (~private@user/pickchea)
07:54:26 dos__^^ joins (~user@user/dos/x-1723657)
07:54:27 <Athas> Because cabal flags are easier to apply at the component level than at the module level?
07:54:41 <sm> also to compartmentalise and reduce cognitive load / allow independent releases, etc
07:54:51 × ente quits (~daemon@inferno.barfooze.de) (Ping timeout: 276 seconds)
07:54:54 hsw_ is now known as hsw
07:55:04 <sm> no, cabal flags are to be avoided
07:58:19 titibandit joins (~titibandi@2a00:8a60:c000:1:8a13:bf74:b2:8d47)
07:59:29 × calleum_ quits (~calleum@user/calleum) (Ping timeout: 252 seconds)
08:00:04 <sm> I'll be concrete: hledger-ui doesn't build on windows. hledger-web requires a more complex set of deps that used to be hard to build reliably. I split them off to allow easier/incremental installation of hledger's UIs. All of hledger (cli) isn't needed for scripts, so I split off hledger-lib. All of these have to be maintained separately on hackage, stackage etc., and understood by end users, so more would be counterproductive
08:01:17 yosef` joins (~user@user/yosef/x-2947716)
08:04:16 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
08:04:26 alp joins (~alp@user/alp)
08:04:30 sm remembers that things have improved a lot with haskell package installability
08:08:14 <tomsmeding> sm: I think Athas was talking about cabal's feature of having multiple 'library' blocks in a single .cabal file, one of which is public, the others of which are internal
08:08:27 jinsun joins (~jinsun@user/jinsun)
08:09:33 littlebo1eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
08:10:02 × jinsun__ quits (~jinsun@user/jinsun) (Ping timeout: 260 seconds)
08:11:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
08:11:53 <sm> thanks, probably the same applies there if to a lesser extent ? plus some compatibility issues (stack)
08:12:39 <tomsmeding> well you can't publish those internal libraries separately
08:12:51 <tomsmeding> so the "allow independent releases" advantage disappears
08:14:18 vglfr joins (~vglfr@coupling.penchant.volia.net)
08:15:21 <tomsmeding> end-users notice less of it too, but what they do notice is stack incompatibility
08:16:25 zincy joins (~zincy@2a01:4c8:1421:61c1:6126:25bb:32f2:d1cd)
08:17:53 <maerwald[m]> Ah, so it's a great way to break stack
08:19:09 LaoJI joins (~LaoJI@103.98.19.56)
08:19:34 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
08:19:54 <maerwald[m]> https://github.com/commercialhaskell/stack/issues/5318
08:20:12 <tomsmeding> ah, so if they are internal it's fine?
08:22:02 × LaoJI quits (~LaoJI@103.98.19.56) (Quit: Client closed)
08:23:42 <xdej_> sm: thank you a lot for your work on hledger-web !
08:24:47 × urdh quits (~urdh@user/urdh) (Ping timeout: 240 seconds)
08:25:34 × littlebo1eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
08:25:37 urdh joins (~urdh@user/urdh)
08:27:05 nate3 joins (~nate@98.45.169.16)
08:27:32 × tessier quits (~treed@98.171.210.130) (Ping timeout: 272 seconds)
08:27:45 _xor joins (~xor@72.49.198.103)
08:28:27 tessier joins (~treed@98.171.210.130)
08:30:45 ente joins (~daemon@inferno.barfooze.de)
08:31:47 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
08:32:12 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
08:33:22 × tessier quits (~treed@98.171.210.130) (Ping timeout: 260 seconds)
08:35:27 × ente quits (~daemon@inferno.barfooze.de) (Ping timeout: 240 seconds)
08:36:54 littlebo1eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
08:38:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
08:38:20 gehmehgeh joins (~user@user/gehmehgeh)
08:38:33 × eggplant_ quits (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e) (Remote host closed the connection)
08:38:55 tessier joins (~treed@98.171.210.130)
08:42:02 xdej_ is now known as xdej
08:48:01 __monty__ joins (~toonn@user/toonn)
08:49:47 × Techcable quits (~Techcable@user/Techcable) (Remote host closed the connection)
08:50:12 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 248 seconds)
08:51:13 dyeplexer joins (~dyeplexer@user/dyeplexer)
08:51:59 Techcable joins (~Techcable@user/Techcable)
08:55:51 × coot quits (~coot@213.134.190.95) (Quit: coot)
08:57:33 × zincy quits (~zincy@2a01:4c8:1421:61c1:6126:25bb:32f2:d1cd) (Remote host closed the connection)
08:58:14 <dragestil> Is there a cabal new-build command that builds all components in the package, including tests?
09:00:10 × dyniec[m] quits (~dyniecmat@2001:470:69fc:105::2:a85) (Quit: You have been kicked for being idle)
09:00:19 <tomsmeding> dragestil: isn't that 'cabal build all'
09:00:36 dyniec[m] joins (~dyniecmat@2001:470:69fc:105::2:a85)
09:01:16 <dragestil> tomsmeding: hmm ok, I tried it but it did not build the test. perhaps this is a difference between build and new-build?
09:01:24 dyniec[m] parts (~dyniecmat@2001:470:69fc:105::2:a85) ()
09:02:07 <tomsmeding> dragestil: I'm talking about new-build here, because I'm on cabal >v3 :p
09:02:23 <tomsmeding> but I think you're righgt
09:03:22 dragestil wishes the cabal user guide actually documents all commands
09:03:30 × Pickchea quits (~private@user/pickchea) (Ping timeout: 240 seconds)
09:05:01 Pickchea joins (~private@user/pickchea)
09:05:36 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
09:06:14 <dragestil> iirc the user guide only talks about v1 and v2 but does not say whether new- is an alias, and if so to which v
09:06:27 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 240 seconds)
09:07:04 × littlebo1eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
09:11:24 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Read error: Connection reset by peer)
09:11:49 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 258 seconds)
09:12:42 × Ranhir quits (~Ranhir@157.97.53.139) (Remote host closed the connection)
09:13:20 <tomsmeding> new- is an alias to v2-, and since cabal 3.0 the v2 commands are the default (i.e. alias of the no-prefix commands)
09:13:25 dcoutts joins (~duncan@host86-144-78-203.range86-144.btcentralplus.com)
09:14:50 <dragestil> ok
09:15:11 zincy joins (~zincy@2a01:4c8:1421:61c1:bc95:a71d:f43b:c153)
09:17:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
09:24:10 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 240 seconds)
09:25:00 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
09:25:30 chexum joins (~quassel@gateway/tor-sasl/chexum)
09:26:11 CodeKiwi is now known as DigitalKiwi
09:26:35 Kaiepi joins (~Kaiepi@156.34.47.253)
09:28:22 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
09:28:54 × Me-me quits (~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Changing host)
09:28:54 Me-me joins (~me-me@user/me-me)
09:29:16 dyeplexer joins (~dyeplexer@user/dyeplexer)
09:31:21 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e)
09:32:59 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
09:35:44 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e) (Ping timeout: 255 seconds)
09:37:38 <Las[m]> Does anyone know whether something like singletons-generic exists? Don't want to duplicate work as I'm currently working on something like that.
09:38:02 Ranhir joins (~Ranhir@157.97.53.139)
09:45:12 × zincy quits (~zincy@2a01:4c8:1421:61c1:bc95:a71d:f43b:c153) (Remote host closed the connection)
09:47:37 DNH joins (~DNH@2a02:8108:1100:16d8:e92a:ff3d:d8c7:63da)
09:49:54 notzmv joins (~zmv@user/notzmv)
09:52:56 × money quits (~Gambino@user/polo) (Quit: money)
09:55:14 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
09:56:18 gurkenglas joins (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
09:57:04 × HotblackDesiato quits (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection)
09:57:57 HotblackDesiato joins (~HotblackD@gateway/tor-sasl/hotblackdesiato)
09:59:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
10:00:05 × HotblackDesiato quits (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection)
10:00:10 ente joins (~daemon@inferno.barfooze.de)
10:00:30 HotblackDesiato joins (~HotblackD@gateway/tor-sasl/hotblackdesiato)
10:02:12 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds)
10:02:48 × cosimone quits (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81) (Ping timeout: 258 seconds)
10:05:11 × ente quits (~daemon@inferno.barfooze.de) (Ping timeout: 256 seconds)
10:07:07 <sloorush> Can "Do not use the Haskell development tools provided by Arch, they are broken." as mentioned on https://www.haskell.org/downloads/ also be mentioned on the arch wiki(https://wiki.archlinux.org/title/haskell). It'll save a lot of trouble.
10:08:03 cosimone joins (~user@93-44-186-171.ip98.fastwebnet.it)
10:10:09 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Read error: Connection reset by peer)
10:10:14 <maerwald[m]> sloorush: feel free to edit the wiki
10:11:02 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
10:13:50 dyeplexer joins (~dyeplexer@user/dyeplexer)
10:15:50 × xff0x quits (~xff0x@s5.HtokyoFL1.vectant.ne.jp) (Ping timeout: 258 seconds)
10:17:14 coot joins (~coot@213.134.190.95)
10:18:45 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
10:18:52 <sloorush> maerwald[m]: Edited! Damn I didn't know wiki pages were so easily editable (:
10:23:18 <Athas> That is the one thing that makes it a wiki!
10:23:52 money joins (~Gambino@user/polo)
10:24:52 frost joins (~frost@user/frost)
10:26:58 <yushyin> sloorush: something similar is already mentioned in the wiki: 'For these reasons, static linking is often the preferred option for local development outside of the package system. If you prefer static linking, see #Static linking or #Alternate installations for details.' but of course not as prominent as your added note
10:28:48 <sloorush> yushyin: Oh okay! but I'm not sure if this catches the eye of a first-timer. Mentioning it as a note will keep it prominent
10:34:55 BusConscious joins (~martin@ip5f5acfd5.dynamic.kabel-deutschland.de)
10:42:56 <BusConscious> hello everyone, so I am trying to write a shell interpreter in Haskell, that is as POSIX conform as I can get it to be (very early in the process currently I only have the lexer up and running).
10:43:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
10:45:00 <BusConscious> Next (even before the parser proper) I am trying to tackle word expansion: https://pubs.opengroup.org/onlinepubs/009604499/utilities/xcu_chap02.html#tag_02_06
10:45:38 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
10:45:48 <BusConscious> The last step is to remove all unquoted " ' and \ that appear in the *original* unexpanded word
10:47:46 <BusConscious> I don't want to use a whole data structure to store which " ' \ appear in the original word. Instead what I am going to do after field expansion is to escape every " ' \ resulting from a parameter expansion, command substitution or artihmetic expansion using a character, that can never appear in there otherwise
10:49:10 <BusConscious> (I can't escape using \ because I need to filter out exactly these escape identifiers I have added after step step 2 during pathname expansion in step 3)
10:50:46 <BusConscious> then in step 4 I will join all of these fields with another character y that can never appear in normal input remove all unquoted \ " ' and the escape character mentinaed up and split up into different fields using y again
10:51:10 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:51:16 <BusConscious> Anyways the problem I have is simply this: What characters can I use for that purpose
10:51:51 <BusConscious> In good ole C I would use 0xFE and 0xFF bytes, which have no meaning in unicode
10:52:53 <BusConscious> Issue here is, that I can not represent these in Haskell's char type according to doc
10:53:06 <BusConscious> Are there any other "reserved" unicodes?
10:54:04 <__monty__> I think I'd split the string into bits that need quote removal and bits that don't through the process. Then in the end compose the list (of lists, potentially) back into a string.
10:54:30 <jackdk> This is C-programmer thinking, shoe-horning additional information into a data type. I would define a new data type that can be either a character or a literal quote, and if you're worried about performance, look at unpack pragmas, unboxing, whatever else.
10:55:12 <__monty__> Also, should you even be using a String to represent these? Paths can contain every byte except for NUL so that's already not valid Unicode, no?
11:01:52 <maerwald> yes
11:03:05 <BusConscious> __monty__ this would get really ugly because I already have a list of Fields (type synonym of String). Say I do something like this var='" "'; echo hi$var . The word hi$var splits with unset IFS into Fields hi" and " . Then I would have to save for each field what indices were part of the original word and what indices were not.
11:03:10 <BusConscious> which is just nasty
11:03:22 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:7f61:118e:9d6b:1e04) (Ping timeout: 244 seconds)
11:03:28 <maerwald> String is wrong for filepaths
11:03:29 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 255 seconds)
11:03:35 <BusConscious> so much easier with these special escape sequences
11:04:13 <BusConscious> remember I'm removing these quotes using Parsec
11:04:34 lortabac joins (~lortabac@2a01:e0a:541:b8f0:77b3:5a9d:c274:ac8)
11:06:04 xff0x joins (~xff0x@b133147.ppp.asahi-net.or.jp)
11:06:38 dyeplexer joins (~dyeplexer@user/dyeplexer)
11:08:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
11:08:42 <BusConscious> So the solution is to have Field be a Data.ByteString synonym?
11:10:02 <BusConscious> but then I would have to expect, that there are files with 0xFE and 0xFF bytes in them aah
11:10:11 <BusConscious> this is making things even worse
11:10:34 <sm> xdej_: 👍🏻
11:10:50 × frost quits (~frost@user/frost) (Quit: Client closed)
11:10:53 <BusConscious> maybe I could use double NUL to join the fields into one string and single NUL to escape characters
11:11:54 <__monty__> At this point I think a rethinking of your datastructure is in order.
11:12:18 <__monty__> Probably already worth treating as an AST at this point.
11:14:29 <BusConscious> thank you for your advice, but I'm sorry to tell you, that I will not adhere to any of it :P
11:15:19 ente joins (~daemon@inferno.barfooze.de)
11:16:37 <__monty__> That's ok. At some points in life the path of suffering is the right choice.
11:17:55 <BusConscious> saving which " ' / were originally part of the word and which ones weren't would just blow up my code in size, decrease maintability and also slow it down(though this is of least concern)
11:18:44 <BusConscious> this is also kind of different to an AST in that all of these word expansions happen at runtime
11:19:18 <__monty__> AST and run-time are orthogonal concepts.
11:19:21 sympt3 joins (~sympt@user/sympt)
11:19:40 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
11:19:50 lyle joins (~lyle@104.246.145.85)
11:20:09 <BusConscious> Finally while a pathname can contain any bytes, I will assume that it does not contain NUL bytes and is in unicode.
11:20:21 <__monty__> And I don't see how a complex system of escapes on top of escapes is more maintainable than a more suitable data structure. But you are free to do as you wish.
11:20:24 <BusConscious> Or else I'm going crazy
11:20:40 <__monty__> Paths can't contain NUL bytes. But that's the only byte that's not allowed.
11:20:47 × sympt quits (~sympt@user/sympt) (Ping timeout: 260 seconds)
11:20:47 sympt3 is now known as sympt
11:21:22 <__monty__> And I seem to recall on Windows they're WTF-16, which isn't quite a Unicode encoding.
11:24:40 <maerwald> __monty__: UCS-2
11:25:25 <maerwald> but you can reasonably assume UTF-16 on windows
11:25:38 <BusConscious> I want to reuse some of the code for my lexer and that is written as Parsec.Char, because the input of the shell is unicode for sure. So I will just use String for now and not some ByteString
11:25:56 <maerwald> that's not really posix compatible
11:26:10 <maerwald> posix very clearly says that filepaths are not unicode
11:26:26 <maerwald> *not necessarily
11:27:05 <maerwald> there's a recommendation to use the portable file character set, but that's just... a recommendation
11:29:14 <BusConscious> I mean I could always change my code later, so that Field is a Data.ByteString synonym
11:29:33 <BusConscious> But the first version of my shell is not going to be POSIX compatible no matter what
11:29:56 <BusConscious> I think I will not even implement pathname expansion in the near future
11:30:03 <BusConscious> so why add this complexity?
11:31:53 <__monty__> There's a difference between necessary and unnecessary complexity.
11:32:00 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
11:32:30 <BusConscious> you have to pick your fights and make reasonable compromises. Can't go from 0 to POSIX compatible in one go
11:32:52 <BusConscious> A15:26 < maerwald> posix very clearly says that filepaths are not unicode
11:32:58 <BusConscious> oops
11:33:13 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e)
11:33:38 <__monty__> Ok, consider this, why are you so reluctant to make the changes now, rather than later?
11:33:59 frost joins (~frost@user/frost)
11:34:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
11:34:30 <maerwald> BusConscious: you can use PosixFilePath from this release candidate: https://hackage.haskell.org/package/filepath-2.0.0.0/candidate/docs/System-AbstractFilePath-Posix.html
11:37:27 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e) (Ping timeout: 240 seconds)
11:38:31 <BusConscious> Also re suitable data structure. I really only have to mark certain characters so they don't get removed when removing all quotation marks, that appeared in the original word. I'm open to suggestions but escape sequences are very easy to handle when parsing. Complex data structures describing the string to parse are not so nice to handle.
11:38:59 <BusConscious> I will absolutely do that with double NUL and NUL escapes
11:39:42 <BusConscious> Re the Field type I will maybe switch to something like ByteString later and make a TODO remark
11:40:07 <BusConscious> maerwald: A field does not have to necessarily contain a FilePath
11:40:49 <maerwald> BusConscious: PosixFilePath is just a type synonym to PosixString
11:44:19 × money quits (~Gambino@user/polo) (Read error: Connection reset by peer)
11:45:04 money joins (~Gambino@user/polo)
11:45:50 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
11:47:07 × alp quits (~alp@user/alp) (Ping timeout: 240 seconds)
11:47:58 × money quits (~Gambino@user/polo) (Client Quit)
11:48:12 calleum_ joins (~calleum@user/calleum)
11:58:25 alp joins (~alp@user/alp)
11:58:35 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:04:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
12:05:08 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 255 seconds)
12:06:30 dyeplexer joins (~dyeplexer@user/dyeplexer)
12:06:39 × calleum_ quits (~calleum@user/calleum) (Ping timeout: 240 seconds)
12:10:16 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
12:15:54 × Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
12:18:45 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 260 seconds)
12:21:35 × dcoutts_ quits (~duncan@host86-144-78-203.range86-144.btcentralplus.com) (Remote host closed the connection)
12:22:06 dcoutts_ joins (~duncan@host86-144-78-203.range86-144.btcentralplus.com)
12:26:42 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
12:28:35 nate3 joins (~nate@98.45.169.16)
12:32:06 dyeplexer joins (~dyeplexer@user/dyeplexer)
12:33:42 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
12:35:24 × coot quits (~coot@213.134.190.95) (Quit: coot)
12:43:10 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.5)
12:43:43 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
12:43:55 money joins (~Gambino@user/polo)
12:44:04 × noteness quits (~noteness@user/noteness) (Ping timeout: 240 seconds)
12:44:10 × money quits (~Gambino@user/polo) (Read error: Connection reset by peer)
12:44:42 money joins (~Gambino@user/polo)
12:46:05 × money quits (~Gambino@user/polo) (Client Quit)
12:47:49 jonathanx joins (~jonathan@94.234.52.133)
12:49:40 × acidjnk_new quits (~acidjnk@p200300d0c7068b707c47e4f6eb00087c.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
12:51:58 acidjnk_new joins (~acidjnk@p200300d0c7068b7031de7ac5fad117ed.dip0.t-ipconnect.de)
12:54:55 AlexNoo_ is now known as AlexNoo
12:58:36 dzdcnfzd joins (~dzdcnfzd@pool-108-54-250-165.nycmny.fios.verizon.net)
12:59:19 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
13:00:22 <dzdcnfzd> I'm trying to migrate a project I've written with Stack to Nix. The reason I'm migrating is that I was advised that doing so would make compiling with GHCJS easier. I have no experience with either GHCJS or Nix, and now I'm trying to figure out what the best way is to conduct the migration
13:00:39 <maerwald> xD
13:00:49 jinsun__ joins (~jinsun@user/jinsun)
13:00:51 × mattil quits (~mattil@helsinki.portalify.com) (Remote host closed the connection)
13:00:59 <dzdcnfzd> It seems like there are a lot of different techniques for doing Haskell package management on Nix. Is anyone the clear modern leading candidate?
13:01:24 mestre joins (~mestre@191.177.181.194)
13:02:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
13:02:44 × jonathanx quits (~jonathan@94.234.52.133) (Ping timeout: 255 seconds)
13:02:57 × jinsun quits (~jinsun@user/jinsun) (Ping timeout: 276 seconds)
13:03:35 <dzdcnfzd> I'm particularly interested in how I can turn an existing cabal file into a nix setup, including solving the library version inequalities.
13:03:56 coot joins (~coot@213.134.190.95)
13:06:31 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
13:07:09 jinsun joins (~jinsun@user/jinsun)
13:08:47 × jinsun__ quits (~jinsun@user/jinsun) (Ping timeout: 256 seconds)
13:10:09 <aforemny> dzdcnfzd: there is cabal2nix which can turn a .cabal file into a nix expression that you can import into a development environment
13:10:26 <aforemny> dzdcnfzd: https://haskell4nix.readthedocs.io/nixpkgs-users-guide.html#how-to-build-a-stand-alone-project
13:11:21 <dzdcnfzd> aforemny: will that handle resolving deps and getting matching package versions?
13:11:26 <aforemny> dzdcnfzd: there are helpers that do that automatically (ie. skip the cabal2nix step), but as that is not documented on the official documentation above and you are just starting out, I would just call cabal2nix for now
13:11:27 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 240 seconds)
13:11:40 <tdammers> IME, the most viable way of using Nix is to bug someone who knows Nix to do it for you
13:11:52 <geekosaur> :)
13:12:25 <dzdcnfzd> tdammers: What's weird is that all the nix doc I've read seems relatively straightforward, but everyone recommends a totally different solution
13:12:42 <aforemny> dzdcnfzd: cabal dependency resolution in Nixpkgs is quite limited: everything is resolved against the current curated package set and you get a warning if that resolution does not match the one cabal specifies
13:12:49 noteness joins (~noteness@user/noteness)
13:13:21 <dzdcnfzd> aforemny: Wait, meaning nixpkgs only contains one version per library?
13:13:33 <tdammers> dzdcnfzd: my experience with nix docs is that they tend to leave me more confused than before, and the moment I think I understand something and try to come up with a solution myself, things go pear-shaped
13:13:36 <aforemny> dzdcnfzd: that curated package set specifies multiple versions for some libraries which you might be able to explicitly use if your project requires that
13:14:17 <aforemny> dzdcnfzd: basically yes, per supported ghc version there is only one library version. there are exceptions: the more popular a library is, the greater the chance there are multiple versions because other packages depend on that
13:15:13 <aforemny> dzdcnfzd: before you invest a lot of time into porting your project to Nix in order to get set up with GHCJS i personally would verify the claim that Nix gets you a GHCJS easily
13:15:52 <dzdcnfzd> I think I'm confused at a basic level: my .cabal file has package version inequalities specified. Up until now, I've been using stack to solve those inequalities, find a matching set of package versions, download those versions, and then build. I think stack might use cabal to do the version inequality solving under the hood, but I'm not sure.
13:15:57 shriekingnoise joins (~shrieking@201.231.16.156)
13:16:01 <dzdcnfzd> With Nix, what's the equivalent?
13:16:13 <tdammers> I think the main problem with GHCJS isn't so much getting a working compiler (I believe you can just download binaries), but doing package management without going crazy
13:17:03 <aforemny> with Nix you either want to keep your project up to date in terms of libraries, that cabal is OK resolving dependencies against the current curated set of libraries offered by Nixpkgs. there is no dependency resolution in the sense that cabal does
13:17:08 jinsun__ joins (~jinsun@user/jinsun)
13:17:23 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Read error: Connection reset by peer)
13:17:24 <geekosaur> dzdcnfzd, stack uses the Cabal library but not cabal-install the program
13:17:25 <aforemny> or, you want to overlay the specific library versions into the curated package set yourself so that they match what cabal expects
13:17:30 <aforemny> in reality, it is usually a mix of both
13:18:11 <aforemny> maybe you are looking for the alternative Nix haskell infrastructure haskell.nix which does what you expect it to do (ie. resolve the specific dependencies for your project)
13:18:17 × jinsun__ quits (~jinsun@user/jinsun) (Client Quit)
13:18:45 jinsun__ joins (~jinsun@user/jinsun)
13:19:08 <aforemny> i don't know how well supported GHCJS is in either infrastructures (standalone Nixpkgs, or Nixpkgs + haskell.nix)
13:19:19 × noteness quits (~noteness@user/noteness) (Remote host closed the connection)
13:19:58 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:21:09 × jinsun quits (~jinsun@user/jinsun) (Ping timeout: 276 seconds)
13:21:20 <dzdcnfzd> Okay, so just to be sure I understand, my options are: 1. I use the latest version of every library packaged in some curated nix package (which I think comes bundled with a ghc version?), 2. I do 1, but I overlay specific haskell packages into the bundled GHC, or 3. I use something called haskell.nix, which solves my version inequalities, gets a
13:21:21 <dzdcnfzd> ghc (that I specify?) and builds an env on that basis
13:21:37 <dzdcnfzd> Is that right?
13:22:34 noteness joins (~noteness@user/noteness)
13:22:54 <aforemny> yes
13:23:24 <dzdcnfzd> Which one of these solutions does cabal2nix fit into?
13:24:14 <aforemny> cabal2nix is for solutions 1 + 2, to overlay the curated package set with either a library in a version unavailable, or your own cabal project (which likely is not available in the curated package set in any version)
13:24:54 <aforemny> it just turns a .cabal file into a .nix file. it drops version ranges of dependencies in the process
13:25:27 <dzdcnfzd> If it drops version ranges how does it get unavailable versions?
13:25:56 <dzdcnfzd> Or, by "drops version ranges" do you mean that it replaces ranges with specific versions
13:26:56 <aforemny> dzdcnfzd: right! although it really drops the version range by only referring to the dependency by name, and then that name resolves against a version of the library wrt. the curated package set offered by Nixpkgs
13:27:49 <aforemny> you have at some point the option to tell Nix that library A uses library B in version X instead of the default version. but that is a manual thing
13:27:49 <dzdcnfzd> "the curated package set offered by Nixpkgs" WITH my overlays on top, right?
13:27:59 <aforemny> yes, right
13:28:04 <dzdcnfzd> Okay
13:28:19 <dzdcnfzd> This is great, thanks so much
13:28:29 <dzdcnfzd> I've been super confused about all this
13:28:35 <dzdcnfzd> One more question (inshallah)
13:29:44 <dzdcnfzd> Does cabal2nix do the solving of package version inequalities automatically, or do I have to do the solving manually and then pass in the versions I need?
13:30:14 × jinsun__ quits (~jinsun@user/jinsun) ()
13:30:28 <dzdcnfzd> And also, I guess, do I have to download these versions myself, or am I looking for them in Nixpkgs?
13:30:47 <aforemny> you have to do it manually, cabal2nix literally drops version information and assumes you refer to the default/ most recent version of that library in Nixpkgs
13:30:49 jinsun joins (~jinsun@user/jinsun)
13:31:53 <dzdcnfzd> Okay. Super useful.
13:32:10 × Pickchea quits (~private@user/pickchea) (Ping timeout: 244 seconds)
13:32:29 <aforemny> i don't understand your second question: for the versions of libraries not available in Nixpkgs you will have to provide a Nix recipe for them via cabal2nix
13:32:40 <aforemny> but with that recipe, Nix will handling downloading the source and building the library for you
13:32:46 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
13:33:11 <dzdcnfzd> Okay. I'll try to work it out and I might have smarter questions once I've done that
13:34:12 <aforemny> dzdcnfzd: https://haskell4nix.readthedocs.io/nixpkgs-users-guide.html#how-to-create-nix-builds-for-your-own-private-haskell-packages this should be exactly what you want to read right now, i guess
13:34:34 <dzdcnfzd> kk. Thanks for all the info!
13:34:36 <aforemny> i do think you can skip the previous sections, but i am not 100% sure
13:35:00 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e)
13:35:28 liz_ joins (~liz@host86-159-158-175.range86-159.btcentralplus.com)
13:35:51 <aforemny> dzdcnfzd: and once you are comfortable with what's described there, i would look into abstracting the manual cabal2nix step as described here https://bytes.zone/posts/callcabal2nix/
13:36:29 dsrt^ joins (~dsrt@c-24-131-46-83.hsd1.ga.comcast.net)
13:39:38 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e) (Ping timeout: 255 seconds)
13:44:12 × myme quits (~myme@2a01:799:d5a:cd00:a688:b867:c411:edfd) (Ping timeout: 272 seconds)
13:44:47 myme joins (~myme@2a01:799:d5a:cd00:dd4e:6782:5084:ddd1)
13:48:39 × Vajb quits (~Vajb@n5ar9yynwxqg80e32-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
13:49:01 × odnes quits (~odnes@5-203-158-63.pat.nym.cosmote.net) (Remote host closed the connection)
13:49:08 odnes_ joins (~odnes@5-203-158-63.pat.nym.cosmote.net)
13:50:00 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
13:53:15 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 260 seconds)
13:56:02 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
14:00:39 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
14:05:14 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
14:06:11 × dsrt^ quits (~dsrt@c-24-131-46-83.hsd1.ga.comcast.net) (Ping timeout: 255 seconds)
14:07:10 × frost quits (~frost@user/frost) (Ping timeout: 252 seconds)
14:07:18 × Ram-Z quits (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) (Ping timeout: 244 seconds)
14:08:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
14:09:46 × ell quits (~ellie@user/ellie) (Quit: Ping timeout (120 seconds))
14:10:05 ell joins (~ellie@user/ellie)
14:12:16 dsrt^ joins (~dsrt@c-24-131-46-83.hsd1.ga.comcast.net)
14:13:27 × ptrcmd quits (~ptrcmd@user/ptrcmd) (Ping timeout: 240 seconds)
14:14:32 motherfsck joins (~motherfsc@user/motherfsck)
14:14:38 ptrcmd joins (~ptrcmd@user/ptrcmd)
14:14:50 × mrd quits (~mrd@user/mrd) (Ping timeout: 260 seconds)
14:26:48 × dsrt^ quits (~dsrt@c-24-131-46-83.hsd1.ga.comcast.net) (Remote host closed the connection)
14:42:57 × _73 quits (~user@pool-173-76-102-248.bstnma.fios.verizon.net) (Remote host closed the connection)
14:43:41 whatsupdoc_ joins (uid509081@id-509081.hampstead.irccloud.com)
14:44:10 Pickchea joins (~private@user/pickchea)
14:47:28 Sgeo joins (~Sgeo@user/sgeo)
15:01:25 slack1256 joins (~slack1256@191.126.99.72)
15:02:52 yosef`` joins (~user@2409:8955:61c:4510:bc38:4f13:2f21:ed8c)
15:03:52 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e)
15:04:30 × yosef` quits (~user@user/yosef/x-2947716) (Ping timeout: 276 seconds)
15:05:09 × dzdcnfzd quits (~dzdcnfzd@pool-108-54-250-165.nycmny.fios.verizon.net) (Quit: Client closed)
15:09:17 Ram-Z joins (~Ram-Z@li1814-254.members.linode.com)
15:11:04 CiaoSen joins (~Jura@p5dcc0172.dip0.t-ipconnect.de)
15:15:59 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 258 seconds)
15:16:51 × CiaoSen quits (~Jura@p5dcc0172.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
15:18:18 × noteness quits (~noteness@user/noteness) (Remote host closed the connection)
15:20:41 noteness joins (~noteness@user/noteness)
15:23:35 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:77b3:5a9d:c274:ac8) (Quit: WeeChat 2.8)
15:27:16 _73 joins (~user@pool-173-76-102-248.bstnma.fios.verizon.net)
15:28:41 yrlnry joins (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net)
15:31:12 sebastiandb_ joins (~sebastian@pool-108-18-101-17.washdc.fios.verizon.net)
15:34:40 <yrlnry> Is there a standard jargon term for a variable that holds a value, as opposed to a type variable? People don't say "value variable", do they?
15:35:40 <geekosaur> generally it's just "variable"
15:35:45 <c_wraith> not that I can recall hearing. I think it's just the assumption if you say "variable" without providing further context to suggest you mean a type variable.
15:35:50 <geekosaur> sometimes "value-level variable"
15:36:26 <yrlnry> Thanks. I recently had to say to someone "It's a little unfortunate that your example uses s1 as the name of a value variable when my question used it as the name of a type variable." Is there a more elegant way to express this?
15:37:14 <maerwald> kind-level variable
15:37:29 <kuribas> I say "value level variable".
15:37:31 <c_wraith> in that context, it sounds perfectly fine
15:37:34 <maerwald> wasn't there something after kinds?
15:37:40 <c_wraith> sorts
15:37:42 <maerwald> right
15:37:45 <c_wraith> but it all got collapsed
15:38:04 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
15:38:27 × raym quits (~raym@user/raym) (Quit: rebooting... nvidia driver update!)
15:38:29 <yrlnry> I used to hang out here a lot, but it has been many years. I would like to avoid faux pas. Is there something I should read? I found https://wiki.haskell.org/IRC_channel .
15:38:46 <geekosaur> I don't think there's anything more recent than that
15:39:33 <yrlnry> It just says to be nice, which is what I remember from last time. I can do that!
15:39:35 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
15:40:42 raym joins (~raym@user/raym)
15:41:47 <geekosaur> someone will remind you nicely, anyway. we're moderators, not imperators
15:42:23 <yrlnry> The Report calls them "tyvar" and "varid", which does not seem perspicuous.
15:43:21 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
15:43:59 <yrlnry> I mean, it's fine in the context of the Report, but wouldn't have worked well in my context."
15:46:44 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
15:51:19 azimut joins (~azimut@gateway/tor-sasl/azimut)
15:51:24 Kaiepi joins (~Kaiepi@156.34.47.253)
15:52:02 × odnes_ quits (~odnes@5-203-158-63.pat.nym.cosmote.net) (Ping timeout: 260 seconds)
15:54:44 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
15:55:03 × yrlnry quits (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Remote host closed the connection)
15:56:11 odnes joins (~odnes@5-203-158-63.pat.nym.cosmote.net)
15:58:39 × Pickchea quits (~private@user/pickchea) (Ping timeout: 240 seconds)
16:06:44 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
16:06:58 <tomsmeding> tyvar I could see used as an abbreviation in other contexts, but varid is super specific to the report
16:07:04 gdown joins (~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net)
16:07:07 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
16:07:09 [_] is now known as [itchyjunk]
16:07:35 <tomsmeding> also the word "identifier" in "VARiable IDentifier" is really compiler jargon; a programmer thinks in terms of variables, not identifiers
16:07:41 <geekosaur> varid is to distinguish from conid; neither is real useful without context
16:08:19 <geekosaur> (CONstructor IDentifier)
16:09:30 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e) (Remote host closed the connection)
16:09:37 <tomsmeding> also it's a lexical term, whereas "variable" is a semantic thing
16:09:47 × titibandit quits (~titibandi@2a00:8a60:c000:1:8a13:bf74:b2:8d47) (Quit: Leaving.)
16:09:52 <tomsmeding> I would bet there is also tyvarid
16:10:19 <tomsmeding> ah no
16:10:27 <tomsmeding> oh but 'tyvar -> varid' lol
16:10:36 <tomsmeding> so varid is actually the wrong term here
16:11:20 <geekosaur> yeh, I don't think the Report distinguishes beyond that because in Report Haskell tyvars and regular vars live in distinct worlds
16:11:45 yrlnry joins (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net)
16:13:14 wonko joins (~wjc@2a0e:1c80:2::130)
16:15:37 × slack1256 quits (~slack1256@191.126.99.72) (Remote host closed the connection)
16:23:50 Midjak joins (~Midjak@82.66.147.146)
16:30:05 nate3 joins (~nate@98.45.169.16)
16:30:23 Pickchea joins (~private@user/pickchea)
16:32:29 whatsupdoc_ is now known as whatsupdoc
16:33:47 × acidjnk_new quits (~acidjnk@p200300d0c7068b7031de7ac5fad117ed.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
16:34:47 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
16:36:05 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e)
16:45:04 <raehik> I'm playing around with barbies (the lib) a bit. There's functionality to essentially go from Identity a -> a for every field in a type. In general, does that sort of function "get deleted"/have zero cost at runtime?
16:45:57 <raehik> maybe clearer, does stripping off or putting on a newtype wrapper ever cost anything?
16:46:30 <geekosaur> there's a corner case where it does, but you can use Data.Coerce.coerce to get around it
16:46:40 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.5)
16:46:52 <geekosaur> but that said, isn't that kind of stripping normlaly done with a type family such that the wrapper disappears completely?
16:47:45 <raehik> that's right, barbies does that. I have some similar work that uses type families to avoid ever even using a wrapper, and thinking about how to reconcile it with barbies
16:47:45 <geekosaur> *normally
16:49:09 <raehik> I think I'll have 2 "identity" functors which can have their wrappers stripped, so there would be a lot of `map getX` going around -- wanted assurance that I wouldn't be smashing my performance xd
16:49:15 <geekosaur> (the corner case I mentioned is that ghc isn't smart enough to recognize that something like mapM on a list/Foldable that removes such wrapper does nothing, and iterates doing id)
16:49:57 <raehik> ahhh interesting thank you. will that happen for regular map? don't think monadic map will be so common
16:50:21 <geekosaur> still happens for regular map, yes
16:50:45 <geekosaur> or fold, etc. but in those cases it's more likely to actually be doing something useful instead of id
16:50:53 <raehik> thanks, I'll keep that in mind
16:51:17 <raehik> oh and coerce is type safe isn't it
16:51:22 <geekosaur> yes
16:51:27 <geekosaur> enforced by the typechecker
16:51:37 <raehik> course, that might help. thanks
16:51:45 × wonko quits (~wjc@2a0e:1c80:2::130) (Ping timeout: 260 seconds)
16:53:44 <yrlnry> Suppose I have a function fn that does something with an `f a`, where `f` is a functor and `a` is an Ord. I want to make a version of fn that "does the same but in reverse".
16:54:10 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
16:54:18 <yrlnry> Hold that thought.
16:56:17 <yrlnry> Right, so I thought maybe I could write `backwards = getDown . fn . fmap Down`. The idea is that `fmap Down` will produce an `f b` where `b` is still an Ord, so `fn` ought to work on it.
16:58:14 <geekosaur> I think that'll work, yes
16:58:15 <yrlnry> But GHC says that `fn` must have the type `(f0 (Down a) -> Down c) -> (f0 a -> c)`
16:58:48 <geekosaur> mm, right
16:58:50 <yrlnry> Oh, that's okay though, I can still pass a function with a more general type `(f0 a -> c)`.
17:00:24 <geekosaur> mrrr. should still be a Functor
17:00:54 <yrlnry> Something still not quite right though. GHC will compile it if I declare the type of `backwards` as `(f b -> f b) -> (f a -> f a)` but not if I declare it as `(f a -> f a) -> (f a -> f a)`
17:00:55 <brettgilio> https://joy.swlkr.com/
17:01:26 <yrlnry> But there's some sort of constraint in the types that isn't reflected in that declaration, which is that `rev fn` actually has the same type as `fn` did.
17:01:34 <brettgilio> woops
17:01:35 <brettgilio> wrong channel
17:02:21 <geekosaur> yrlnry, that smells like an extra Functor constraint
17:03:31 <yrlnry> I was wrong about the `(f b -> f b) -> (f a -> f a)` working; I had rthe declaration commented out when I ran the compiler :(
17:04:02 <geekosaur> ok, so much for that
17:04:15 wonko joins (~wjc@2a0e:1c80:11::50)
17:04:43 Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net)
17:06:42 <telser_> Does anyone know where stack puts the source when it clones an extra dep specified via git
17:07:51 <[Leary]> @let backwards f = fmap getDown . f . fmap Down
17:07:52 <lambdabot> /sandbox/tmp/.L.hs:160:1: error: [-Woverlapping-patterns, -Werror=overlappin...
17:07:53 <lambdabot> Pattern match is redundant
17:07:53 <lambdabot> In an equation for ‘backwards’: backwards f = ...
17:08:00 <[Leary]> err
17:08:04 <[Leary]> @undef
17:08:04 <lambdabot> Undefined.
17:08:07 <[Leary]> @let backwards f = fmap getDown . f . fmap Down
17:08:08 <lambdabot> Defined.
17:08:16 <[Leary]> > sort `L.backwards` [1..10]
17:08:18 <lambdabot> [10,9,8,7,6,5,4,3,2,1]
17:08:40 <yrlnry> Oh, geez. Thanks!
17:08:43 <[Leary]> yrlnry: You just missed the fmap on getDown.
17:08:48 <yrlnry> Yep.
17:10:55 <yrlnry> Can you get lambdabot to tell me the type it inferred for `backwards`?
17:11:25 <[Leary]> :t L.backwards
17:11:26 <lambdabot> (Functor f1, Functor f2) => (f2 (Down a) -> f1 (Down b)) -> f2 a -> f1 b
17:12:26 <yrlnry> :t backwards
17:12:27 <lambdabot> error:
17:12:27 <lambdabot> Ambiguous occurrence ‘backwards’
17:12:28 <lambdabot> It could refer to
17:12:34 <yrlnry> :t L.backwards
17:12:35 <lambdabot> (Functor f1, Functor f2) => (f2 (Down a) -> f1 (Down b)) -> f2 a -> f1 b
17:13:06 <yrlnry> :t sort
17:13:08 <lambdabot> Ord a => [a] -> [a]
17:14:09 <geekosaur> fwiw I got a more general one locally once I got it to work
17:14:14 <geekosaur> backwards :: (Functor f, Ord a) => (forall g b. (Functor g, Ord b) => g b -> g b) -> f a -> f a
17:14:29 <yrlnry> I think that's what I was groping for,
17:14:40 <geekosaur> requires RankNTypes
17:15:19 <yrlnry> It seemed funny to me that the type should have `Down` in it, but I couldn't think of how to say why.
17:15:38 <geekosaur> hm, no, doesn't match
17:15:59 <geekosaur> so I'm still doing it wrong
17:17:51 <geekosaur> right, problem is the forall means `bqackwards` specifies the type, except it doesn't
17:18:04 <[Leary]> Maybe you want this one? (Functor f, Ord a) => (forall b. Ord b => f b -> f b) -> f a -> f a
17:18:14 <geekosaur> maybe
17:18:20 <[Leary]> backwards does specify it as Down a.
17:18:26 <geekosaur> I was having a problem that turned out to be a missing fmap
17:19:02 <yrlnry> Where does `sort` come from? I tried importing `Data.Sort` but GHC says can not find,.
17:19:11 econo joins (uid147250@user/econo)
17:19:23 <geekosaur> Data.List
17:19:26 <geekosaur> or:
17:19:29 <geekosaur> @index sort
17:19:29 <lambdabot> GHC.OldList, Data.List, Data.ByteString, Data.ByteString.Char8, Data.Sequence
17:19:39 <yrlnry> geekosaur++
17:20:05 <geekosaur> (you can also ask hoogle.haskell.org)
17:21:01 <yrlnry> I think backwards :: (Functor f, Ord a) => (forall b. (Ord b) => f b -> f b) -> f a -> f a is it.
17:21:14 <darkling> The last few times I've tried asking Hoogle, it gave me no results, for any search.
17:21:34 <geekosaur> that's the one I ended up with, yes
17:21:54 <yrlnry> Thanks all, you've been very helpful.
17:22:20 <geekosaur> https://paste.tomsmeding.com/peRvoRLu
17:22:37 <geekosaur> with some extraneous imports as I hunted for Down, whoops :)
17:22:49 <geekosaur> sadly ghci doesn't have @index
17:25:04 <telser_> That would be a super useful feature though
17:25:40 × yosef`` quits (~user@2409:8955:61c:4510:bc38:4f13:2f21:ed8c) (Ping timeout: 250 seconds)
17:27:05 telser_ is now known as telser
17:30:00 <geekosaur[m]> Back in the day there was a way to hook lambdabot into ghcup. It's sadly bitrotted
17:30:38 <maerwald> what?
17:32:01 <geekosaur[m]> @hackage goa
17:32:02 <lambdabot> https://hackage.haskell.org/package/goa
17:35:04 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e) (Remote host closed the connection)
17:36:39 <geekosaur> oops I meant ghci. phone's learning autocompletion wrong :/
17:37:42 <geekosaur> (yes, I've said "ghcup" enough that it's now offered as an autocompletion)
17:39:45 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
17:39:51 zebrag joins (~chris@user/zebrag)
17:39:55 <monochrom> That speaks to the success of ghcup. :)
17:44:54 slack1256 joins (~slack1256@191.125.99.72)
17:47:33 nate3 joins (~nate@98.45.169.16)
17:50:27 <slack1256> I have been reading about copatterns for codata, mind bending stuff. I do wonder, if we had access on a functional language to co-data declarations, would composition of co-data and data (either in data structures or pipelines) work out OK? I ask here because lazy evaluation gives us "guarded recursion", so it can be seen as a way to treat co-recursively some data structures without having separated syntax and types for data and co-data. But I wonder i
17:50:28 <slack1256> f apart from ergonomics, there is a semantic challenge combining the two polarities of data on a single programming language that promotes composition.
17:50:31 × remedan quits (~remedan@octo.cafe) (Quit: Bye!)
17:50:56 <slack1256> It came out sightly longer than expected, but I think I had to give context to my question. Sorry about that.
17:51:45 <dolio> data and codata cannot really be distinguished in languages with general recursion.
17:52:25 × alp quits (~alp@user/alp) (Ping timeout: 260 seconds)
17:53:42 justsomeguy joins (~justsomeg@user/justsomeguy)
17:54:02 <lyxia> I don't think "lazy evaluation gives us guarded recursion"
17:54:04 zincy joins (~zincy@2a01:cb18:82de:bf00:545d:42c6:141c:ed13)
17:54:29 <lyxia> guarded recursion is a mechanism to ensure that functions are total
17:54:36 <dolio> Even in a total language, the distinction between those two things is somewhat unrelated to syntactic ways of presenting functions.
17:55:06 <lyxia> and lazy evaluation doesn't care whether your language is total or partial
17:55:38 <dolio> Agda has (still) a system for codata that looks like data, and you can use copattern matching on records that aren't coinductive.
17:56:50 <lyxia> copatterns is a nice syntax for defining records, it wouldn't be too hard to have it in Haskell too.
17:58:27 <dolio> Or, for instance, there is a nice way of presenting size-indexed lists via copattern matching, where `head` and `tail` need only be defined for lists of size greater than 0.
17:59:09 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
17:59:18 <dolio> You could force people to make such lists 'coinductive' to do that, but every value is actually finite.
17:59:25 remedan joins (~remedan@octo.cafe)
18:01:05 × mbuf quits (~Shakthi@223.190.216.42) (Quit: Leaving)
18:06:12 <__monty__> darkling: Maybe you were looking for things that aren't in Stackage? Hoogle's index is based on that, IIRC. (With Nix it's easy to get a local Hoogle instance with an index for all your local dependencies.)
18:07:34 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
18:10:46 azimut joins (~azimut@gateway/tor-sasl/azimut)
18:10:46 alp joins (~alp@user/alp)
18:12:40 × califax quits (~califax@user/califx) (Remote host closed the connection)
18:12:42 <slack1256> lyxia: I don't think guarded recursion is related to the notion that functions can be total. I think you mean 'structural recursion' which guarrantees that functions are total.
18:13:12 <slack1256> guarded recursion can be seen as one of the ingredients that you can use to prove that function on co-data are 'productive'.
18:14:48 califax joins (~califax@user/califx)
18:15:14 tomsmeding prefers to think in Haskell, where the question is moot because we have general recursive types :p
18:15:19 <slack1256> dolio: Can you expand on the statement that "data and codata cannot be distinguished on languages with general recursion"?
18:17:07 <dolio> It means that such systems have "limit-colimit coincidence." Initial F-algebras are the same as final F-coalgebras.
18:17:23 <tomsmeding> I think Haskell is a reference example of how to combine data and codata -- haskell's data types generalise both
18:18:02 <tomsmeding> due to laziness
18:18:06 <dolio> The least fixed point of F is the greatest fixed point, and vice versa. It's now up to F whether that looks like the total-data on the analogue of F, or total-codata.
18:18:36 <dolio> And which way it ends up is intertwined with the evaluation order.
18:20:36 <dolio> So, in Haskell, there is: `data ENat = Zero | Suc ENat` which seems similar to the total, coinductive extended naturals, and `data Nat = Zero | Suc !Nat` which looks like the total, inductive naturals.
18:21:06 <slack1256> I have not read much about F-(co)algebras yet. I know their definition (endofunctor with a carrier etc), but I have not related them to common data definitions on haskell, specially the co-algebras. A link or reference with the full treatment would be appreciated.
18:21:48 jakalx joins (~jakalx@base.jakalx.net)
18:21:56 <dolio> The 'shape' of the first is `data EN x = Zero | Suc x` and the second is `data N x = Zero | Suc !x`, and those are different functors in Haskell.
18:22:38 <dolio> And the data declarations are both the inductive and coinductive fixed-points of their respective, distinct functors.
18:24:04 <dolio> The same is true for, say, ML, but the notation is different. N looks like EN there, and EN needs to be written by delaying with `() -> x`.
18:26:47 <tomsmeding> maybe the `() -> x` version is equivalent in some semantic fashion, but I'd consider the more appropriate version with `Lazy x` or whatever the notation was
18:26:59 <tomsmeding> (i.e. call-by-need laziness instead of call-by-name)
18:28:19 <dolio> Well, yeah, this is only about the denotational semantics.
18:30:36 Guest27 joins (~Guest27@2601:281:d47f:1590::59a2)
18:32:57 agumonkey joins (~user@2a01:e0a:8f9:d3e0:b117:81a8:33f6:93e7)
18:35:17 <Guest27> How do I splice a name into a foreign import in TH?
18:35:18 <Guest27> '''
18:35:18 <Guest27> [d| foreign import capi "myheader.h MYCONST" myCConst :: Int |]
18:35:19 <Guest27> '''
18:35:19 <Guest27> If I try to replace myCConst with $something or $(something...) I get a parse error on the $.
18:35:20 <Guest27> I'd like to substitute in a Name created with mkName so I can automatically generate imports for a list of #define'd constants and not end up with myCConst_23 or whatnot
18:35:29 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e)
18:37:23 <tomsmeding> Guest27: perhaps you can create your own ForeignD?
18:38:04 <tomsmeding> a trick if you want to know what a quote returns: $(LitE . StringL . show <$> [d| foreign import capi "myheader.h MYCONST" myCConst :: Int |])
18:38:06 <Guest27> tomsmeding That's going to be my last resort. Curious if there's a cleaner/less error-prone way
18:39:04 <tomsmeding> if you get a parse error in that position I'm afraid the GHC parser just wasn't written to expect a slice there, and you're going to have no alternative than writing your own ForeignD :p
18:39:33 <Guest27> Ah man! Well thanks for the help
18:39:47 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e) (Ping timeout: 255 seconds)
18:39:52 <tomsmeding> Guest27: please do look at that LitE.StringL.show thing I posted, because the "myheader.h MYCONST" string seems to get changed in the process
18:40:17 <Guest27> @tomsmen
18:40:17 <lambdabot> Unknown command, try @list
18:40:23 <tomsmeding> (I don't know anything about the FFI so no idea if that change is semantically relevant or not)
18:40:30 <Guest27> Woops. Anyways I'll be sure to
18:40:54 <tomsmeding> (most irc clients allow tab-completion if you start with a nick at the beginning of a message)
18:41:37 <Guest27> My enter finger happened to beat my tab finger at the race that time :P
18:41:41 <tomsmeding> :D
18:41:47 × shapr quits (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
18:42:41 kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr)
18:45:51 jmct_ joins (sid160793@id-160793.tinside.irccloud.com)
18:45:53 mcfilib_ joins (sid302703@user/mcfilib)
18:45:53 teehemkay__ joins (sid14792@id-14792.lymington.irccloud.com)
18:45:53 sa1_ joins (sid7690@id-7690.ilkley.irccloud.com)
18:46:17 iphy_ joins (sid67735@id-67735.lymington.irccloud.com)
18:46:22 p3n joins (~p3n@217.198.124.246)
18:46:26 jackdk_ joins (sid373013@cssa/jackdk)
18:46:30 defanor_ joins (~defanor@tart.uberspace.net)
18:46:32 kevinsjoberg_ joins (sid499516@id-499516.lymington.irccloud.com)
18:46:32 dsal_ joins (sid13060@id-13060.lymington.irccloud.com)
18:46:39 maerwald_ joins (~maerwald@mail.hasufell.de)
18:46:40 elvishjerricco_ joins (sid237756@id-237756.helmsley.irccloud.com)
18:46:47 dunj3_ joins (~dunj3@kingdread.de)
18:46:49 idnar_ joins (sid12240@debian/mithrandi)
18:46:50 pepeiborra_ joins (sid443799@id-443799.ilkley.irccloud.com)
18:46:55 nrr____ joins (sid20938@id-20938.lymington.irccloud.com)
18:46:56 caubert_ joins (~caubert@136.244.111.235)
18:46:56 lexi-lambda_ joins (sid92601@id-92601.hampstead.irccloud.com)
18:46:57 SrPx_ joins (sid108780@id-108780.uxbridge.irccloud.com)
18:47:01 PotatoGim_ joins (sid99505@id-99505.lymington.irccloud.com)
18:47:11 jonrh_ joins (sid5185@id-5185.ilkley.irccloud.com)
18:47:24 NiKaN_ joins (sid385034@id-385034.helmsley.irccloud.com)
18:47:28 anderson_ joins (~ande@user/anderson)
18:48:08 Arsen_ joins (arsen@managarm/dev/Arsen)
18:48:23 energizer_ joins (~energizer@user/energizer)
18:49:28 w1gz_ joins (~weechat@2a03:b0c0:1:d0::1123:1)
18:49:28 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds)
18:50:33 systemfault_ joins (sid267009@id-267009.uxbridge.irccloud.com)
18:50:43 × mcfilib quits (sid302703@user/mcfilib) (Ping timeout: 248 seconds)
18:50:43 × sa1 quits (sid7690@id-7690.ilkley.irccloud.com) (Ping timeout: 248 seconds)
18:50:43 × jmct quits (sid160793@id-160793.tinside.irccloud.com) (Ping timeout: 248 seconds)
18:50:43 × flupe quits (~baboum@radon.sbi.re) (Ping timeout: 248 seconds)
18:50:43 × dsal quits (sid13060@id-13060.lymington.irccloud.com) (Ping timeout: 248 seconds)
18:50:43 × teehemkay quits (sid14792@id-14792.lymington.irccloud.com) (Ping timeout: 248 seconds)
18:50:43 × PotatoGim quits (sid99505@id-99505.lymington.irccloud.com) (Ping timeout: 248 seconds)
18:50:43 × jackdk quits (sid373013@cssa/jackdk) (Ping timeout: 248 seconds)
18:50:43 × defanor quits (~defanor@tart.uberspace.net) (Ping timeout: 248 seconds)
18:50:43 × p3n_ quits (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Ping timeout: 248 seconds)
18:50:43 × kevinsjoberg quits (sid499516@id-499516.lymington.irccloud.com) (Ping timeout: 248 seconds)
18:50:43 × systemfault quits (sid267009@id-267009.uxbridge.irccloud.com) (Ping timeout: 248 seconds)
18:50:43 × elvishjerricco quits (sid237756@id-237756.helmsley.irccloud.com) (Ping timeout: 248 seconds)
18:50:44 × marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Ping timeout: 248 seconds)
18:50:44 × Ash[m] quits (~signal-wa@2001:470:69fc:105::1:2318) (Ping timeout: 248 seconds)
18:50:44 × w1gz quits (~weechat@2a03:b0c0:1:d0::1123:1) (Ping timeout: 248 seconds)
18:50:44 × SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 248 seconds)
18:50:44 × iphy quits (sid67735@id-67735.lymington.irccloud.com) (Ping timeout: 248 seconds)
18:50:44 × nrr___ quits (sid20938@id-20938.lymington.irccloud.com) (Ping timeout: 248 seconds)
18:50:44 × Putonlalla quits (~sapekiis@it-cyan.it.jyu.fi) (Ping timeout: 248 seconds)
18:50:44 × zwro[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Ping timeout: 248 seconds)
18:50:44 × romes[m] quits (~romesmatr@2001:470:69fc:105::2:1660) (Ping timeout: 248 seconds)
18:50:44 × Zach[m] quits (~zoglesby@user/zoglesby) (Ping timeout: 248 seconds)
18:50:44 × anderson quits (~ande@user/anderson) (Ping timeout: 248 seconds)
18:50:44 × NiKaN quits (sid385034@id-385034.helmsley.irccloud.com) (Ping timeout: 248 seconds)
18:50:44 × dunj3 quits (~dunj3@kingdread.de) (Ping timeout: 248 seconds)
18:50:44 × pepeiborra quits (sid443799@id-443799.ilkley.irccloud.com) (Ping timeout: 248 seconds)
18:50:44 × idnar quits (sid12240@debian/mithrandi) (Ping timeout: 248 seconds)
18:50:44 jmct_ is now known as jmct
18:50:44 sa1_ is now known as sa1
18:50:44 × maerwald quits (~maerwald@user/maerwald) (Ping timeout: 248 seconds)
18:50:44 × energizer quits (~energizer@user/energizer) (Ping timeout: 248 seconds)
18:50:45 × caubert quits (~caubert@136.244.111.235) (Ping timeout: 248 seconds)
18:50:45 × mrkajetanp quits (~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88) (Ping timeout: 248 seconds)
18:50:45 × Arsen quits (arsen@managarm/dev/Arsen) (Ping timeout: 248 seconds)
18:50:45 × lexi-lambda quits (sid92601@id-92601.hampstead.irccloud.com) (Ping timeout: 248 seconds)
18:50:45 × jonrh quits (sid5185@id-5185.ilkley.irccloud.com) (Ping timeout: 248 seconds)
18:50:45 dsal_ is now known as dsal
18:50:45 teehemkay__ is now known as teehemkay
18:50:45 jackdk_ is now known as jackdk
18:50:45 anderson_ is now known as anderson
18:50:45 lexi-lambda_ is now known as lexi-lambda
18:50:45 kevinsjoberg_ is now known as kevinsjoberg
18:50:45 jonrh_ is now known as jonrh
18:50:45 elvishjerricco_ is now known as elvishjerricco
18:50:45 mcfilib_ is now known as mcfilib
18:50:45 systemfault_ is now known as systemfault
18:50:45 iphy_ is now known as iphy
18:50:45 PotatoGim_ is now known as PotatoGim
18:50:45 pepeiborra_ is now known as pepeiborra
18:50:45 idnar_ is now known as idnar
18:50:45 SrPx_ is now known as SrPx
18:50:49 NiKaN_ is now known as NiKaN
18:50:51 Tuplanolla joins (~Tuplanoll@91-159-69-1.elisa-laajakaista.fi)
18:50:55 mrkajetanp_ joins (~mrkajetan@88.98.245.28)
18:51:20 × Arsen_ quits (arsen@managarm/dev/Arsen) (Client Quit)
18:51:23 flupe joins (~baboum@radon.sbi.re)
18:51:23 zwro[m] joins (~zwromatri@2001:470:69fc:105::1d4)
18:51:24 pavonia joins (~user@user/siracusa)
18:51:35 romes[m] joins (~romesmatr@2001:470:69fc:105::2:1660)
18:51:54 maerwald_ is now known as maerwald
18:51:58 Arsen joins (arsen@managarm/dev/Arsen)
18:52:06 × maerwald quits (~maerwald@mail.hasufell.de) (Changing host)
18:52:06 maerwald joins (~maerwald@user/maerwald)
18:52:07 dunj3_ is now known as dunj3
18:52:50 × qwedfg quits (~qwedfg@user/qwedfg) (Ping timeout: 240 seconds)
18:52:53 Ash[m] joins (~signal-wa@2001:470:69fc:105::1:2318)
18:52:54 Zach[m] joins (~zoglesby@user/zoglesby)
18:54:18 × yrlnry quits (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Remote host closed the connection)
18:54:31 qwedfg joins (~qwedfg@user/qwedfg)
18:54:50 × inversed quits (~inversed@176.248.27.211) (Ping timeout: 260 seconds)
18:54:55 yrlnry joins (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net)
18:56:05 jonathanx joins (~jonathan@94.234.52.133)
18:57:11 × jonathanx quits (~jonathan@94.234.52.133) (Read error: Connection reset by peer)
18:57:58 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 250 seconds)
18:58:05 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
18:59:02 inversed joins (~inversed@176.248.27.211)
18:59:10 × yrlnry quits (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Ping timeout: 240 seconds)
19:00:39 Putonlalla joins (~sapekiis@it-cyan.it.jyu.fi)
19:02:35 marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8)
19:03:26 × pie__ quits (~pie_bnc@user/pie/x-2818909) ()
19:04:04 pie_ joins (~pie_bnc@user/pie/x-2818909)
19:09:23 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
19:10:12 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 276 seconds)
19:10:35 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 258 seconds)
19:13:42 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
19:14:29 × AlexNoo quits (~AlexNoo@178.34.150.134) (Read error: Connection reset by peer)
19:14:39 × kenaryn quits (~aurele@89-88-44-27.abo.bbox.fr) (Quit: leaving)
19:15:33 AlexNoo joins (~AlexNoo@178.34.150.134)
19:18:37 yrlnry joins (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net)
19:19:50 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 255 seconds)
19:20:11 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e)
19:25:56 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a48b:5f36:2f4:7e9e) (Remote host closed the connection)
19:28:24 × yrlnry quits (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Remote host closed the connection)
19:28:43 acidjnk_new joins (~acidjnk@p200300d0c7068b7038b60eba3c0a34f2.dip0.t-ipconnect.de)
19:29:46 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
19:37:54 P1RATEZ joins (piratez@user/p1ratez)
19:41:39 shapr joins (~user@pool-173-73-44-186.washdc.fios.verizon.net)
19:45:57 <Guest27> tomsmeding It turns out combining `capi "myheader.h value MYCONST"` with TH results in a ghc panic on 8.6.5 :P
19:45:58 <Guest27> By this point I could've copy+pasted the C constants into Haskell and run a text editor macro over them 100 times XD
19:46:10 <tomsmeding> ._.
19:46:26 <tomsmeding> 8.6.5 only?
19:46:45 <Guest27> Currently installing ghcup to test that lol
19:46:57 <tomsmeding> yay
19:48:12 <tomsmeding> question: is there a library on hackage that implements HTTP basic authentication from the server side? (i.e. the WWW-Authenticate and Authorization headers)
19:48:37 <tomsmeding> I'm using snap but I can't find anything in the snap libraries that handles this...
19:48:53 × agumonkey quits (~user@2a01:e0a:8f9:d3e0:b117:81a8:33f6:93e7) (Remote host closed the connection)
19:48:57 <ManofLetters[m]> I'm having CRLF issues when cloning ghc: "The file will have its original line endings in your working directory" and I can't checkout branches; I think `.gitattributes` forces some conversion; I'm on LInux and my git is rather old (2.7.4), but it's way newer than what GHC docs require (1.7.8) --- did anybody have this problem? help?
19:49:31 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
19:50:38 <tomsmeding> ManofLetters[m]: what exactly is the error that you get? this sounds super weird, and also something that may be fixed by a newer git version
19:51:13 <tomsmeding> I would not be surprised if the "minimum git version" is not something that is meticulously kept up-to-date :p
19:51:59 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Max SendQ exceeded)
19:53:00 <ManofLetters[m]> ~/r/ghc$ git checkout ghc-9.2
19:53:00 <ManofLetters[m]> error: Your local changes to the following files would be overwritten by checkout:
19:53:00 <ManofLetters[m]> testsuite/tests/indexed-types/should_compile/T14164.hs
19:53:17 <ManofLetters[m]> and I can't get rid of the local changes --- they seem to be somehow autogenerated
19:53:17 <tomsmeding> but `git status` gives no changes?
19:53:40 <ManofLetters[m]> git gives changes and lots of warnings about line endings
19:53:47 <ManofLetters[m]> *git status
19:53:58 <ManofLetters[m]> `git stash` nor `git checkout --` get rid of the changes
19:54:28 <ManofLetters[m]> I think you may be right a newer git is required
19:54:38 <tomsmeding> ManofLetters[m]: no idea if this is going to work, but as a workaround you can perhaps try `git checkout -b newbranch; git reset --soft ghc-9.2; git checkout -- .`
19:54:59 <tomsmeding> also, those autogenerated changes, what are they?
19:56:43 <ManofLetters[m]> they are void, so I think they are indeed line endings
19:56:46 <ManofLetters[m]> hah, it worked
19:56:52 <ManofLetters[m]> the trick you gave
19:57:19 <ManofLetters[m]> still lots of changes, but now I'm at the correct branch
19:57:33 <tomsmeding> no guarantee that ghc tests successfully with the line ending changes though
19:57:50 <tomsmeding> don't know if the golden tests stuff that they use can handle inconsistent line endings
19:57:54 <tomsmeding> but you can try :)
19:58:24 <EvanR> hmm programming language where line endings are significant and there are multiple kinds to choose from
19:58:25 <ManofLetters[m]> I will only be running my perf regressions, after I manage to merge in a MR
19:58:27 <ManofLetters[m]> so I should be fine
19:58:29 <ManofLetters[m]> thanks you again
19:58:40 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
19:58:40 <tomsmeding> ManofLetters[m]: my trick is a huge hack, if you know what that means it's fine, if you have no idea what it means then please say so, I can explain what state your repo is now in :p
19:58:48 <EvanR> I think whitespace doesn't exploit this?
19:59:04 <tomsmeding> EvanR: no whitespace is just space/tab/newline
19:59:31 <EvanR> \r\n vs \n vs something else, would be hellish
19:59:42 <geekosaur> macs used to use \r
19:59:49 <tomsmeding> makes me think of https://esolangs.org/wiki/Folders for some reason
19:59:51 <geekosaur> telnet used to use \r\r\n
20:00:54 <ManofLetters[m]> tomsmeding: please tell me, in what horrible state is my repo now?
20:00:58 <mrianbloom> Can you use a type family as if it's a functor, as in if there is a function of type x -> f x can f be a type family?
20:02:30 <tomsmeding> ManofLetters[m]: :p it's not that bad. You're currently on a new, local-only branch that happens to point to the same commit as the ghc-9.2 branch. So if you pull now, git will think that you want to pull 'newbranch', which isn't going to do anything. You'll need to `git fetch --all`, and do the `reset` and `checkout` shuffle again
20:02:51 <tomsmeding> mrianbloom: unfortunately no
20:03:13 <ManofLetters[m]> tomsmeding: phew, thanks, I can work with that :)
20:03:16 yrlnry joins (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net)
20:03:17 <tomsmeding> if you mean unifying the type of `foo :: a -> f a` with `a -> F a` where F is a type family
20:03:33 <mrianbloom> What would be the alternative design to make something like this toy compile: https://replit.com/@IanBloom/TestTypeFamilyGADT?v=1
20:03:48 <EvanR> or was the question, can you have a function a -> F a where F is a type family
20:04:16 <EvanR> (but what does that have to do with functors)
20:04:25 <mrianbloom> EvanR, yes but I'd like to define a function where F is polymorphic.
20:04:37 <EvanR> "any type family" ?
20:04:38 × Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
20:04:46 <mrianbloom> Yes.
20:05:38 <mrianbloom> The background is I'm trying to define some higher order functions that map over different knds of GADT expressions.
20:06:01 <EvanR> you could use polykinds to speak of any * -> *
20:06:24 <tomsmeding> EvanR: that doesn't allow you to put a type family there
20:06:28 <EvanR> I figured
20:06:36 × zeenk quits (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) (Quit: Konversation terminated!)
20:06:43 <EvanR> (so what's the kind of a corresponding type family F)
20:07:05 <tomsmeding> a type family is not a type, and hence does not have a kind
20:07:07 <EvanR> or is it purely syntactic
20:07:13 <mrianbloom> I think it's just Type -> Type
20:07:18 <EvanR> nah
20:07:20 <tomsmeding> a type family applied to all its arguments has a kind
20:08:14 <EvanR> no partially applied type families or type synonyms
20:08:19 <mrianbloom> If you take a look at the Replit, baasically I used headF in place of say mapExpression. https://replit.com/@IanBloom/TestTypeFamilyGADT?v=1
20:08:36 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
20:10:10 <Guest27> Even GHC 9.2.3 panics due to "values not supported yet" (╯°□°)╯︵ ┻━┻
20:10:33 <tomsmeding> rip
20:10:43 × zincy quits (~zincy@2a01:cb18:82de:bf00:545d:42c6:141c:ed13) (Remote host closed the connection)
20:10:56 <dsal> no values
20:11:02 <tomsmeding> types only
20:11:13 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Max SendQ exceeded)
20:11:18 <Guest27> Hand over the values SPJ
20:11:33 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:b5bc:25b:5256:1595)
20:12:01 <tomsmeding> mrianbloom: I'm not quite clear on the higher goal that you're trying to accomplish, so not sure what to recommend. Abstracting over type families like you tried is not going to work, in any case (though it would be useful if that was possible)
20:12:15 <dsal> None of these people in their ivory towers have any values that mean something to us commoners.
20:12:44 <tomsmeding> they're solitary types
20:12:47 <Guest27> They dare disrespect my blue-collar `#define`s?
20:15:14 <mrianbloom> tomsmeding: So I built a much more complicated Expression type where the different operations are specific GADTs, I'm hoping to write polymorphic mapping functions that might only change one node in the expression.
20:15:56 <mrianbloom> I boiled this down to just a list of GADTs for the purpose of trying to understand the problem.
20:17:03 <mrianbloom> In reality headF would be a function like, map over an expression and visit every binary operation.
20:17:45 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds)
20:19:29 Maxdamantus joins (~Maxdamant@user/maxdamantus)
20:19:46 <tomsmeding> mrianbloom: and where do the type families come in?
20:20:02 <tomsmeding> oh the mapping functions have dependent types, right
20:20:10 <tomsmeding> or, like, that isn't the right term
20:23:33 × cosimone quits (~user@93-44-186-171.ip98.fastwebnet.it) (Remote host closed the connection)
20:23:40 <mrianbloom> Well if I try to map from one type of expression to it's descendent type I've rapped it in a type Family that lets me specify the new structure. For example the old expression might include Ints and Strings but the descendent only has Strings.
20:23:52 <tomsmeding> yeah I see
20:24:20 abiss27 joins (~abiss27@user/abiss)
20:26:59 <tomsmeding> mrianbloom: even if you could instantiate `f` to a type family in `headF`, it still wouldn't work because you require `forall x . x -> f x`, but `fooChar :: Bar t -> Foo (Bar t)`
20:27:16 × lyle quits (~lyle@104.246.145.85) (Quit: WeeChat 3.5)
20:27:32 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
20:27:45 <tomsmeding> I maybe perhaps have a workaround using a type class with an associated type family, but I run into this :p
20:28:42 <mrianbloom> Right, so the assumption is that f handles every case of a GADT, hence the forall x.
20:28:58 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
20:30:44 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
20:31:24 stackdroid18 joins (14094@user/stackdroid)
20:33:01 <tomsmeding> > main \n 34 \n fff3456
20:33:24 <tomsmeding> mrianbloom: warning hacks https://play-haskell.tomsmeding.com/play/paste/eaPHW0eI/1
20:33:28 <tomsmeding> note I changed Foo
20:33:46 <tomsmeding> `f` is the GADT
20:34:21 <tomsmeding> the `Mapper` dictionary is kind of the way in which I pass _both_ the function _and_ the associated type family into headF
20:34:48 <mrianbloom> Is see, the it's functioning like a wrapper type.
20:36:43 <mrianbloom> I need to study the proxy library.
20:36:51 <tomsmeding> Data.Proxy?
20:36:59 <tomsmeding> there is nothing to study there
20:37:06 <tomsmeding> `data Proxy a = Proxy`
20:37:20 <tomsmeding> you can achieve the same thing using TypeApplications
20:37:26 <mrianbloom> I see.
20:37:43 <tomsmeding> using a Proxy is just a way to not have to use AllowAmbiguousTypes
20:38:31 <tomsmeding> the only funny extra thing with Proxy is that it's kind-polymorphic, i.e. it's really `data Proxy (a :: k) = Proxy`
20:38:54 <tdammers> You can literally define Proxy in your own module if you want, there really isn't more to it than that one line. The main reason we have it in a library is so that we have a "canonical" Proxy type that everyone should be using, so that we don't have to generalize proxy code over an arbitrary proxy type (which is also possible, but can obfuscate type errors quite a bit)
20:38:54 <mrianbloom> I see. AmbiguousTypes is the bane of my existence. I always know that when I add it to the top of a file, I'm opening up the gates of hell.
20:38:56 <tomsmeding> (though that's not really all that special, you can get the same with your own types just by enabling PolyKinds)
20:39:42 <tomsmeding> mrianbloom: I concur lol. Well, not necessarily gates of hell, it's just liable to get much more finicky to get all the types right
20:40:07 <tomsmeding> without AllowAmbiguousTypes, at least you know that if the types of all the arguments to a function as well as the type of its result are known, then the function is fully determined
20:40:39 <tomsmeding> this is very useful if you're already in the weeds with getting the type checker to do what you want :p
20:40:40 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 258 seconds)
20:41:27 <tomsmeding> tdammers: actually there are a bunch of functions (in Data.Proxy, even) that generalise over a `proxy` type :p
20:42:41 × coot quits (~coot@213.134.190.95) (Quit: coot)
20:43:11 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer)
20:44:11 <tdammers> tomsmeding: haha, yeah, I know. but experience tells me that's not always a great idea
20:44:41 <tomsmeding> had to look twice at those types the first time I saw them
20:44:58 <tomsmeding> "how can `f a` be a type that successfully unifies with anything -- oh wait"
20:45:15 <mrianbloom> I'm experimenting with an injective type family as well: type family ETy (r :: * -> *) (t :: *) = (x :: *) | x -> r t
20:47:00 zebrag joins (~chris@user/zebrag)
20:47:24 <Bulby[m]> \o/ thank you tom for that breakthrough of stack and heap
20:48:03 <Bulby[m]> stack and heap perfectly represents static scope without running a resolver
20:49:00 <Bulby[m]> I need to learn how to experiement in haskell and find solutions
20:49:45 coot joins (~coot@213.134.190.95)
20:50:42 <tomsmeding> Bulby[m]: yay :)
20:51:13 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
20:51:28 <Bulby[m]> and the REPL works by making the interpreter return its stack, and storing the stack in a State effect
20:51:29 jgeerds joins (~jgeerds@55d45f48.access.ecotel.net)
20:54:40 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Max SendQ exceeded)
20:59:33 × slack1256 quits (~slack1256@191.125.99.72) (Read error: Connection reset by peer)
20:59:39 slac74904 joins (~slack1256@186.11.84.227)
21:00:00 Flonk joins (~Flonk@vps-zap441517-1.zap-srv.com)
21:00:33 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
21:04:06 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
21:04:28 × coot quits (~coot@213.134.190.95) (Quit: coot)
21:04:34 × Guest27 quits (~Guest27@2601:281:d47f:1590::59a2) (Quit: Client closed)
21:12:12 × yrlnry quits (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Remote host closed the connection)
21:12:49 yrlnry joins (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net)
21:13:08 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 252 seconds)
21:14:04 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
21:15:28 <tomsmeding> Bulby[m]: which is similar to how a block of statements is executed, except we need to ask the user for the next statement each time
21:16:28 <Bulby[m]> recursion is magic
21:16:53 <tomsmeding> turtles all the way down
21:17:40 × yrlnry quits (~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Ping timeout: 272 seconds)
21:17:51 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Read error: Connection reset by peer)
21:19:35 <tomsmeding> mrianbloom: I just realised, my thing doesn't need a type class at all, an open type family can achieve the same thing. The essential thing is the tag type that essentially allows you to put lots of type families into one
21:20:28 <tomsmeding> you don't really get something like normal polymorphism this way, but you get something that's flexible enough I think
21:22:12 × abiss27 quits (~abiss27@user/abiss) (Quit: hasta la vista... tchau!)
21:27:57 × odnes quits (~odnes@5-203-158-63.pat.nym.cosmote.net) (Quit: Leaving)
21:28:19 <mrianbloom> tomsmeding: I think that's the direction I'm going. trying to use an open type family and different tag types to marshall the selection of type equations.
21:28:20 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
21:34:36 <Bulby[m]> how does one do multiple local calls for different locals
21:34:41 <Bulby[m]> different readers*
21:35:55 <geekosaur> If you were using mtl you would use lift to reach others than the first
21:36:31 <Bulby[m]> polysemy is magic in that local can refer to any reader in the effect stack
21:36:49 <Bulby[m]> so I can use type annotations to specify
21:38:58 <Bulby[m]> oh, like `local f (local f sem)`
21:41:14 <Bulby[m]> hmm, should fun closures be stored like the stack or the heap...
21:41:23 <Bulby[m]> I think heap because it's tied to the value
21:45:48 cosimone joins (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81)
21:57:38 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:59:17 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:00:54 <Bulby[m]> stack/heap together with an auxilary closure heap has the effect of no recurse definitions
22:03:46 jmdaemon joins (~jmdaemon@user/jmdaemon)
22:05:35 × urdh quits (~urdh@user/urdh) (Ping timeout: 260 seconds)
22:06:33 × sebastiandb_ quits (~sebastian@pool-108-18-101-17.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
22:09:07 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
22:10:23 × acidjnk_new quits (~acidjnk@p200300d0c7068b7038b60eba3c0a34f2.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
22:16:12 vicfred_ joins (~vicfred@user/vicfred)
22:17:03 etra0 joins (~quassel@186-78-135-23.baf.movistar.cl)
22:18:56 × vicfred quits (~vicfred@user/vicfred) (Ping timeout: 255 seconds)
22:19:11 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
22:20:28 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
22:22:07 littlebo1eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
22:24:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
22:25:40 × chomwitt quits (~chomwitt@2a02:587:dc1f:5600:c2b2:8e31:c818:61b1) (Ping timeout: 248 seconds)
22:30:30 × vicfred_ quits (~vicfred@user/vicfred) (Ping timeout: 272 seconds)
22:32:05 × cheater quits (~Username@user/cheater) (Ping timeout: 244 seconds)
22:34:34 × noteness quits (~noteness@user/noteness) (Ping timeout: 240 seconds)
22:35:11 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 244 seconds)
22:35:33 noteness joins (~noteness@user/noteness)
22:35:43 cheater joins (~Username@user/cheater)
22:36:34 × littlebo1eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
22:38:37 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
22:40:33 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:45:31 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 244 seconds)
22:46:01 nate3 joins (~nate@98.45.169.16)
22:49:17 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
22:50:58 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Client Quit)
22:51:19 × nate3 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
22:51:20 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
22:54:22 × alp quits (~alp@user/alp) (Remote host closed the connection)
22:54:41 alp joins (~alp@user/alp)
22:54:42 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
22:55:19 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Client Quit)
22:55:26 × jgeerds quits (~jgeerds@55d45f48.access.ecotel.net) (Ping timeout: 252 seconds)
22:55:34 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
22:57:25 × alp quits (~alp@user/alp) (Remote host closed the connection)
22:57:45 alp joins (~alp@user/alp)
23:00:45 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
23:04:27 cyanide4dinner joins (~cyanide4d@171.48.43.17)
23:04:52 × alp quits (~alp@user/alp) (Ping timeout: 260 seconds)
23:10:20 × cosimone quits (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81) (Remote host closed the connection)
23:11:02 cosimone joins (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81)
23:20:18 × mestre quits (~mestre@191.177.181.194) (Quit: Lost terminal)
23:27:09 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:32:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
23:33:24 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds)
23:35:29 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
23:38:18 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
23:40:01 calleum_ joins (~calleum@user/calleum)
23:42:31 × etra0 quits (~quassel@186-78-135-23.baf.movistar.cl) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
23:44:15 × cyanide4dinner quits (~cyanide4d@171.48.43.17) (Quit: cyanide4dinner)
23:52:12 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 272 seconds)
23:53:16 × calleum_ quits (~calleum@user/calleum) (Ping timeout: 246 seconds)
23:54:48 urdh joins (~urdh@user/urdh)
23:57:41 <Bulby[m]> that rewrite was much more painless than I expected
23:58:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)

All times are in UTC on 2022-06-07.