2022/05/02

2022-05-02 00:00:13 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com)
2022-05-02 00:03:31 +0200romesrf(~romes@185.5.8.134) (Quit: WeeChat 3.4.1)
2022-05-02 00:04:08 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 248 seconds)
2022-05-02 00:07:02 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-05-02 00:08:00 +0200king_gs(~Thunderbi@187.201.77.157) (Read error: Connection reset by peer)
2022-05-02 00:09:56 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-05-02 00:10:21 +0200king_gs(~Thunderbi@2806:103e:29:1f3f:8da7:e5:2a3:824d)
2022-05-02 00:12:59 +0200nicbk(~nicbk@user/nicbk)
2022-05-02 00:13:07 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 240 seconds)
2022-05-02 00:16:31 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com) (Quit: Leaving)
2022-05-02 00:17:07 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-05-02 00:17:55 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2022-05-02 00:21:47 +0200epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-05-02 00:24:19 +0200acidjnk(~acidjnk@p200300d0c73b4550c5e3a1b7598c6b95.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-05-02 00:30:40 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-05-02 00:34:25 +0200tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Remote host closed the connection)
2022-05-02 00:34:32 +0200nut(~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 248 seconds)
2022-05-02 00:34:42 +0200tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
2022-05-02 00:41:22 +0200anomal(~anomal@87.227.196.109) (Remote host closed the connection)
2022-05-02 00:41:27 +0200ec(~ec@gateway/tor-sasl/ec)
2022-05-02 00:42:40 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-05-02 00:45:48 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-05-02 00:49:00 +0200AkechiShiro(~licht@user/akechishiro) (Ping timeout: 240 seconds)
2022-05-02 00:49:02 +0200tswett(~androirc@72.138.180.115)
2022-05-02 00:50:08 +0200AkechiShiro(~licht@user/akechishiro)
2022-05-02 00:50:40 +0200 <tswett> Hey everyone. Are there any guidelines or documentation for how to implement showsPrec?
2022-05-02 00:52:42 +0200 <hpc> mostly just "don't"
2022-05-02 00:52:56 +0200 <tswett> That's one option :D
2022-05-02 00:53:06 +0200 <hpc> use deriving if you can
2022-05-02 00:53:21 +0200 <hpc> or some more suitable mechanism if you're going to be outputting json or whatever
2022-05-02 00:54:03 +0200 <hpc> you can try looking at existing instances in base
2022-05-02 00:54:13 +0200 <hpc> there might be something there
2022-05-02 00:54:59 +0200Teacup(~teacup@user/teacup) (Quit: Teacup)
2022-05-02 00:55:22 +0200 <tswett> Aha, I
2022-05-02 00:55:30 +0200 <jackdk> Show should be considered debugging information IMHO, so `deriving Show` is fine for almost everything. If you're showing something unshowable, you're gonna generate nonsense anyway so I don't worry about `showsPrec` in such instances
2022-05-02 00:55:41 +0200Teacup(~teacup@user/teacup)
2022-05-02 00:55:55 +0200 <tswett> *I just noticed that the documentation for showsPrec does in fact contain an example that seems pretty informative.
2022-05-02 00:56:23 +0200Teacup(~teacup@user/teacup) (Client Quit)
2022-05-02 00:56:48 +0200Teacup(~teacup@user/teacup)
2022-05-02 00:57:12 +0200 <tswett> That said, I'm implementing the SKI combinator calculus, and I'd like a function which produces output like "S (K S)" instead of "Apply (EAtom S) (Apply (EAtom K) (EAtom S))".
2022-05-02 00:57:32 +0200 <tswett> Maybe using that function as my Show instance is not a good idea.
2022-05-02 00:59:08 +0200 <jackdk> I generally call those functions `renderFoo :: Foo -> Text`
2022-05-02 01:00:01 +0200 <EvanR> make a pretty printer
2022-05-02 01:00:25 +0200 <EvanR> ghci may have a way to use your pretty printer instead of show?
2022-05-02 01:01:03 +0200 <geekosaur> https://downloads.haskell.org/ghc/9.0.2/docs/html/users_guide/ghci.html#using-a-custom-interactive…
2022-05-02 01:01:08 +0200 <jackdk> Though you may need to write something like showsPrec if you want minimal bracketing. Gonzales has a neat trick for making simple pretty printers that get parentheses right: https://www.haskellforall.com/2020/11/pretty-print-syntax-trees-with-this-one.html
2022-05-02 01:02:19 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-05-02 01:02:24 +0200 <tswett> By the way, I haven't been in #haskell much since around 2004. Are emoji discouraged in this channel?
2022-05-02 01:02:55 +0200king_gs(~Thunderbi@2806:103e:29:1f3f:8da7:e5:2a3:824d) (Remote host closed the connection)
2022-05-02 01:04:53 +0200 <monochrom> No, feel free to use emojis
2022-05-02 01:05:15 +0200king_gs(~Thunderbi@187.201.77.157)
2022-05-02 01:06:04 +0200 <EvanR> emoji's a lot different now than in 2004, for instance we have :success_baby:, various animated rainbow memes, and that frog guy
2022-05-02 01:06:21 +0200 <EvanR> oops that's discord
2022-05-02 01:06:52 +0200 <tswett> 👍
2022-05-02 01:08:22 +0200 <jackdk> I don't particularly like 'em, but I'm in the minority and there's no official rule against them or anything. Besides, I'm just one guy.
2022-05-02 01:15:25 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-05-02 01:16:22 +0200xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-05-02 01:21:56 +0200 <tswett> In any case, thanks for the help, talk to y'all later 👋
2022-05-02 01:24:58 +0200king_gs1(~Thunderbi@2806:103e:29:1f3f:8da7:e5:2a3:824d)
2022-05-02 01:24:58 +0200king_gs(~Thunderbi@187.201.77.157) (Read error: Connection reset by peer)
2022-05-02 01:24:58 +0200king_gs1king_gs
2022-05-02 01:25:05 +0200 <exarkun> is it still an emoji if you just type out :slightly_smiling_face:
2022-05-02 01:26:43 +0200 <jackdk> Doesn't render that way for me, though other chat services seem to do taht
2022-05-02 01:28:03 +0200zeenk(~zeenk@2a02:2f04:a004:9b00:1efc:c1cf:378d:8b3d) (Quit: Konversation terminated!)
2022-05-02 01:30:53 +0200 <monochrom> I guess I should have said "yes we discourage it".
2022-05-02 01:32:35 +0200 <monochrom> People take "not discouraged" to mean "use as much as possible" as opposed to "when it makes sense".
2022-05-02 01:36:06 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 272 seconds)
2022-05-02 01:36:57 +0200xaotuk(~sasha@2a06:5b00:15fe:9b00::3) (Ping timeout: 248 seconds)
2022-05-02 01:39:27 +0200alp_(~alp@user/alp) (Ping timeout: 240 seconds)
2022-05-02 01:41:52 +0200 <dons> morning all
2022-05-02 01:42:00 +0200 <EvanR> is it still an emoji, ask wittgenstein
2022-05-02 01:42:06 +0200 <dons> i note ghc 9.4.x is ready for testing. exciting
2022-05-02 01:42:34 +0200 <jackdk> I look forward to taking my work repo beyond 8.10.7 one day
2022-05-02 01:42:56 +0200 <geekosaur> exciting unless you're a little tired of getting whipsawed by new releases (then again 9.4 doesn't seem to have much new)
2022-05-02 01:43:11 +0200 <abastro[m]> Will 9.4.x be more stable than 9.2.x
2022-05-02 01:43:34 +0200 <geekosaur> it shoukld be on windows in particular
2022-05-02 01:44:23 +0200 <abastro[m]> Ah, I wanted general stability :/
2022-05-02 01:44:38 +0200 <abastro[m]> Perhaps the bug I am experiencing might magically fix itself
2022-05-02 01:46:53 +0200king_gs(~Thunderbi@2806:103e:29:1f3f:8da7:e5:2a3:824d) (Remote host closed the connection)
2022-05-02 01:48:12 +0200king_gs(~Thunderbi@187.201.77.157)
2022-05-02 01:52:07 +0200 <EvanR> is the opposite of general stability colonel panic
2022-05-02 01:53:23 +0200 <dons> yeah i'm pondering using 9.4.x as the step off 8.10.7
2022-05-02 01:54:24 +0200 <Axman6> time to rip the bandaid off
2022-05-02 01:54:36 +0200irfan(~irfan@user/irfan)
2022-05-02 01:57:34 +0200 <abastro[m]> Anyway high hopes for 9.4.x :D
2022-05-02 01:59:32 +0200eggplantade(~Eggplanta@108.201.191.115) (Remote host closed the connection)
2022-05-02 01:59:40 +0200gpncarl(~gpncarl@120.244.220.254)
2022-05-02 02:03:05 +0200modnar(~modnar@shell.sonic.net)
2022-05-02 02:04:36 +0200king_gs(~Thunderbi@187.201.77.157) (Ping timeout: 272 seconds)
2022-05-02 02:04:46 +0200Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-05-02 02:04:48 +0200gpncarl(~gpncarl@120.244.220.254) (Ping timeout: 276 seconds)
2022-05-02 02:05:34 +0200tswett(~androirc@72.138.180.115) (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com ))
2022-05-02 02:05:44 +0200king_gs(~Thunderbi@187.201.77.157)
2022-05-02 02:07:06 +0200mmhat(~mmh@2001:4090:a242:802a:ee08:6bff:fe09:5315) (Quit: WeeChat 3.5)
2022-05-02 02:08:57 +0200Guest41(~Guest41@2607:f140:800:1::15b)
2022-05-02 02:09:13 +0200nicbk(~nicbk@user/nicbk) (Quit: nicbk)
2022-05-02 02:09:48 +0200deadmarshal_(~deadmarsh@95.38.117.99)
2022-05-02 02:12:34 +0200xff0x_(~xff0x@om126234061065.16.openmobile.ne.jp)
2022-05-02 02:13:59 +0200deadmarshal_(~deadmarsh@95.38.117.99) (Ping timeout: 240 seconds)
2022-05-02 02:17:07 +0200zebrag(~chris@user/zebrag)
2022-05-02 02:17:55 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-05-02 02:21:25 +0200yauhsien(~yauhsien@61-231-62-54.dynamic-ip.hinet.net)
2022-05-02 02:22:24 +0200neceve(~quassel@2.29.116.221) (Ping timeout: 246 seconds)
2022-05-02 02:24:32 +0200kimjetwav(~user@2607:fea8:2362:b400:32f6:ad39:28b3:1653) (Remote host closed the connection)
2022-05-02 02:24:49 +0200kimjetwav(~user@2607:fea8:2362:b400:5938:b414:69d0:3de2)
2022-05-02 02:25:54 +0200yauhsien(~yauhsien@61-231-62-54.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2022-05-02 02:32:28 +0200 <sm> who's having trouble with 9.2 ? I haven't hit any yet
2022-05-02 02:32:45 +0200gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 276 seconds)
2022-05-02 02:34:12 +0200Guest41(~Guest41@2607:f140:800:1::15b) (Ping timeout: 252 seconds)
2022-05-02 02:35:19 +0200king_gs(~Thunderbi@187.201.77.157) (Read error: Connection reset by peer)
2022-05-02 02:36:28 +0200kannon(~kannon@74-95-14-193-SFBA.hfc.comcastbusiness.net)
2022-05-02 02:38:31 +0200king_gs(~Thunderbi@187.201.77.157)
2022-05-02 02:38:42 +0200kannon(~kannon@74-95-14-193-SFBA.hfc.comcastbusiness.net) (Client Quit)
2022-05-02 02:39:33 +0200frost(~frost@user/frost)
2022-05-02 02:43:21 +0200ellieell
2022-05-02 02:44:20 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-05-02 02:44:20 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-05-02 02:44:20 +0200wroathe(~wroathe@user/wroathe)
2022-05-02 02:46:33 +0200 <Bulby[m]> nvim lsp is being mean; it says "no man entry for foo"
2022-05-02 02:50:06 +0200 <abastro[m]> sm: I am having mysterious crashes
2022-05-02 02:52:50 +0200 <sm> on windows ? doing what ? is there an open issue ?
2022-05-02 02:55:42 +0200drakonis(~drakonis@user/drakonis)
2022-05-02 02:59:30 +0200king_gs1(~Thunderbi@2806:103e:29:1f3f:8da7:e5:2a3:824d)
2022-05-02 02:59:31 +0200king_gs(~Thunderbi@187.201.77.157) (Read error: Connection reset by peer)
2022-05-02 02:59:32 +0200king_gs1king_gs
2022-05-02 03:00:18 +0200eggplantade(~Eggplanta@108.201.191.115)
2022-05-02 03:03:28 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-05-02 03:05:24 +0200eggplantade(~Eggplanta@108.201.191.115) (Ping timeout: 272 seconds)
2022-05-02 03:05:42 +0200bogart(~e43921@167.224.152.242)
2022-05-02 03:06:48 +0200kimjetwav(~user@2607:fea8:2362:b400:5938:b414:69d0:3de2) (Remote host closed the connection)
2022-05-02 03:07:05 +0200kimjetwav(~user@2607:fea8:2362:b400:7bd6:bcaf:2d52:3bbf)
2022-05-02 03:08:13 +0200stackdroid18(14094@user/stackdroid) (Quit: hasta la vista... tchau!)
2022-05-02 03:08:24 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 250 seconds)
2022-05-02 03:08:40 +0200stackdroid18(14094@user/stackdroid)
2022-05-02 03:08:49 +0200stackdroid18(14094@user/stackdroid) (Client Quit)
2022-05-02 03:10:36 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-05-02 03:11:11 +0200stackdroid18(14094@user/stackdroid)
2022-05-02 03:11:13 +0200stackdroid18(14094@user/stackdroid) (Client Quit)
2022-05-02 03:13:51 +0200bogart(~e43921@167.224.152.242) (Ping timeout: 246 seconds)
2022-05-02 03:16:43 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-05-02 03:17:09 +0200eggplantade(~Eggplanta@108.201.191.115)
2022-05-02 03:25:50 +0200kannon(~NK@76.243.126.210)
2022-05-02 03:26:14 +0200 <kannon> hello is this an active channel?
2022-05-02 03:27:05 +0200echelon(~echelon@gateway/tor-sasl/steerpike)
2022-05-02 03:30:01 +0200echelon(~echelon@gateway/tor-sasl/steerpike) ()
2022-05-02 03:30:18 +0200 <jackdk> Yes.
2022-05-02 03:30:22 +0200 <EvanR> :cricket:
2022-05-02 03:30:38 +0200 <jackdk> howzat!
2022-05-02 03:34:14 +0200 <abastro[m]> sm: No, on linux.
2022-05-02 03:34:29 +0200 <abastro[m]> sm: it is mysterious and hard to reproduce :/
2022-05-02 03:37:24 +0200wroathe(~wroathe@user/wroathe) (Read error: Connection reset by peer)
2022-05-02 03:40:18 +0200andrey__(~andrey@p200300dbcf06ad00ac6ace76fcaf9f34.dip0.t-ipconnect.de)
2022-05-02 03:42:27 +0200andrey_(~andrey@p200300dbcf3c2800a83cd0cefcf2e84d.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-05-02 03:43:02 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2022-05-02 03:45:41 +0200bogart(~e43921@167.224.152.242)
2022-05-02 03:46:28 +0200 <Axman6> kannon: it's as active as any IRC channel ever is - activity comes in fits and spurts
2022-05-02 03:52:00 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-05-02 03:52:17 +0200img(~img@user/img)
2022-05-02 03:52:23 +0200 <kannon> thank you Axman6
2022-05-02 03:52:39 +0200 <kannon> https://paste.tomsmeding.com/KpdkO4K6
2022-05-02 03:53:05 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-05-02 03:53:05 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-05-02 03:53:05 +0200wroathe(~wroathe@user/wroathe)
2022-05-02 03:53:52 +0200 <kannon> I do not understand the logic in the rule on the last line. also if it can be applied to return a boolean value.
2022-05-02 03:54:05 +0200bogart(~e43921@167.224.152.242) (Ping timeout: 256 seconds)
2022-05-02 03:54:22 +0200 <kannon> it compiles
2022-05-02 03:54:43 +0200EvanRmentally inserts rule :: U Bool -> Bool
2022-05-02 03:54:48 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2022-05-02 03:55:14 +0200 <Axman6> looks pretty arbitrary to me, what don;'t you understand about the rule?
2022-05-02 03:55:42 +0200 <EvanR> rule is just looking at 3 bools
2022-05-02 03:56:06 +0200 <EvanR> when combined with Comonad maybe we can see some sparks fly
2022-05-02 03:56:40 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-05-02 03:58:16 +0200 <kannon> can we apply the rule in ghci , to return a boolean?
2022-05-02 03:59:23 +0200 <EvanR> it looks to me it has type U Bool -> Bool, so you need a U Bool to apply it
2022-05-02 04:01:18 +0200 <EvanR> given Ham -> Eggs, you could have some Eggs, if you had some Ham
2022-05-02 04:02:07 +0200 <kannon> thank you maybe we could pick this up later I have to go. cheers very appreciative.
2022-05-02 04:02:27 +0200 <EvanR> \o/
2022-05-02 04:03:12 +0200hololeap(~hololeap@user/hololeap)
2022-05-02 04:03:55 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-05-02 04:07:03 +0200kannon(~NK@76.243.126.210) (Ping timeout: 246 seconds)
2022-05-02 04:09:43 +0200ajb(~ajb@mimas.whatbox.ca)
2022-05-02 04:13:50 +0200[_](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 250 seconds)
2022-05-02 04:17:41 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-05-02 04:17:41 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-05-02 04:17:41 +0200finn_elijaFinnElija
2022-05-02 04:17:44 +0200[_](~itchyjunk@user/itchyjunk/x-7353470)
2022-05-02 04:19:08 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-05-02 04:23:24 +0200yauhsien(~yauhsien@61-231-62-54.dynamic-ip.hinet.net)
2022-05-02 04:26:58 +0200AlexNoo_(~AlexNoo@178.34.162.108)
2022-05-02 04:30:19 +0200Alex_test(~al_test@178.34.160.71) (Ping timeout: 240 seconds)
2022-05-02 04:30:19 +0200AlexZenon(~alzenon@178.34.160.71) (Ping timeout: 240 seconds)
2022-05-02 04:30:21 +0200AlexNoo(~AlexNoo@178.34.160.71) (Ping timeout: 256 seconds)
2022-05-02 04:30:40 +0200meinside(uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-05-02 04:30:54 +0200yauhsien(~yauhsien@61-231-62-54.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-05-02 04:33:43 +0200kannon(~NK@135-180-218-226.fiber.dynamic.sonic.net)
2022-05-02 04:34:29 +0200Alex_test(~al_test@178.34.162.108)
2022-05-02 04:34:39 +0200AlexZenon(~alzenon@178.34.162.108)
2022-05-02 04:39:25 +0200 <kannon> cojoin gg . rule
2022-05-02 04:39:39 +0200 <kannon> oh sorry
2022-05-02 04:40:41 +0200 <hololeap> cojoin? is that a comonad thing?
2022-05-02 04:41:23 +0200 <kannon> yes I think it's like unfold
2022-05-02 04:41:51 +0200 <kannon> trying to get this : http://blog.sigfpe.com/2006/12/evaluating-cellular-automata-is.html hololeap
2022-05-02 04:42:06 +0200dsrt^(~dsrt@50.227.69.228) (Ping timeout: 276 seconds)
2022-05-02 04:42:38 +0200 <hololeap> it's called 'duplicate' in the comonad package
2022-05-02 04:42:50 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-05-02 04:43:09 +0200dsrt^(~dsrt@50.227.69.228)
2022-05-02 04:45:39 +0200 <kannon> hmm
2022-05-02 04:46:42 +0200 <hololeap> basically the dual of 'join', so instead of collapsing 'm (m a) -> m a', it does "the opposite": 'm a -> m (m a)'
2022-05-02 04:47:37 +0200 <hololeap> it's fairly abstract but pretty fun when you grasp it. there are examples of people writing conway's game of life using the Store comonad floating around
2022-05-02 04:49:04 +0200 <kannon> hololeap: hey you see this rule at the bottom of my paste? https://paste.tomsmeding.com/KpdkO4K6
2022-05-02 04:49:12 +0200king_gs(~Thunderbi@2806:103e:29:1f3f:8da7:e5:2a3:824d) (Remote host closed the connection)
2022-05-02 04:49:31 +0200king_gs(~Thunderbi@2806:103e:29:1f3f:8da7:e5:2a3:824d)
2022-05-02 04:49:40 +0200 <kannon> someone said to get it to work by using U (Bool) -> Bool
2022-05-02 04:49:52 +0200 <kannon> but what does it look like?
2022-05-02 04:50:00 +0200 <systemfault> Would be nice if someone would write a nice comonad tutorial/example for dumb people like me.
2022-05-02 04:50:36 +0200 <kannon> I don't understand the type U (Bool)
2022-05-02 04:50:55 +0200 <EvanR> rule has type U Bool -> Bool, a function type
2022-05-02 04:51:06 +0200 <systemfault> Knowing that it's the dual of a monad doesn't give me any intuition of when I should use them
2022-05-02 04:51:18 +0200 <EvanR> U Bool is a type, simply by taking U x you defined earlier and saying x = Bool
2022-05-02 04:51:33 +0200 <EvanR> systemfault, probably never, unless it's advent of code and you want to flex
2022-05-02 04:52:05 +0200 <hololeap> just like how you can string together functions in the form of (a -> m b) with monads, you can string together functions in the form of (m a -> b) with comonads
2022-05-02 04:52:06 +0200 <systemfault> I see, so there are cases when they can be useful but it's not something I will often use in day to day code
2022-05-02 04:52:27 +0200 <systemfault> s/when/where
2022-05-02 04:52:39 +0200 <EvanR> even in cases where it's useful, it's more like "why did I need this category theory"
2022-05-02 04:53:18 +0200 <EvanR> the monad library on the other hand is much more useful
2022-05-02 04:53:24 +0200 <EvanR> comonad barely has a library
2022-05-02 04:53:25 +0200 <kannon> I thought shifting the universes where the "focus" moved by one to left or right, was interesting
2022-05-02 04:53:32 +0200 <hololeap> what it is saying is that you have your little universe and a reference point which is what U represents, and from it you can look around and create a value... in this case Bool
2022-05-02 04:54:13 +0200 <hololeap> however, every you can construct a different U for every value in your original U, which will essentially be a copy but with a different reference point
2022-05-02 04:54:28 +0200 <hololeap> s/every you/you/
2022-05-02 04:54:51 +0200 <systemfault> Which is why the Game of Life is a good case for showing comonad?
2022-05-02 04:54:59 +0200 <hololeap> so you have a U that focuses on 0, a U that focuses on 1, etc
2022-05-02 04:55:32 +0200 <hololeap> depending on which value U is focusing on determines what the Bool output of 'rule' will be
2022-05-02 04:55:52 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Quit: Leaving)
2022-05-02 04:56:07 +0200 <kannon> so I don't get the use of the rule. what is the data structure U Bool ?
2022-05-02 04:56:53 +0200 <hololeap> so, cojoin essentially creates a new universe for every value, which allows you to apply 'rule' to it, and in the end you get 'U Bool' which is the result of 'rule' for every value
2022-05-02 04:57:46 +0200 <hololeap> each new universe that cojoin creates is focused on the original value and should have the "neighborhood" you would expect.
2022-05-02 04:58:47 +0200td_(~td@94.134.91.69) (Ping timeout: 240 seconds)
2022-05-02 04:59:20 +0200 <hololeap> so for cellular automata, like conway's game of life, cojoin would create a new grid for every cell that is focused on that respective cell. this allows you to make a calculation for every cell that takes into account that cell's unique perspective. for instance, how many of its neighbors are alive
2022-05-02 04:59:59 +0200 <kannon> apologies hololeap , what would you type in ghci to implement rule at bottom of paste? https://paste.tomsmeding.com/KpdkO4K6
2022-05-02 05:00:46 +0200td_(~td@94.134.91.43)
2022-05-02 05:01:10 +0200 <hololeap> oh, it would be '(uni =>> rule) :: U Bool'
2022-05-02 05:02:45 +0200 <hololeap> not quite, actually, because uni is 'U Int', and rule seems to want 'U Bool'
2022-05-02 05:03:12 +0200cyphase(~cyphase@user/cyphase) (Ping timeout: 272 seconds)
2022-05-02 05:03:46 +0200 <kannon> :t (gg =>> rule)
2022-05-02 05:03:47 +0200 <lambdabot> error:
2022-05-02 05:03:47 +0200 <lambdabot> • Variable not in scope: gg
2022-05-02 05:03:48 +0200 <lambdabot> • Perhaps you meant ‘g’ (imported from Debug.SimpleReflect)
2022-05-02 05:04:14 +0200 <hololeap> lambdabot doesn't know any of those definitions
2022-05-02 05:04:26 +0200 <kannon> sorry using irssi . looks just like the interpreter!
2022-05-02 05:05:30 +0200 <kannon> I understand the program, but the rule is confusing me
2022-05-02 05:06:11 +0200 <hololeap> you could write out a logic table for it
2022-05-02 05:07:31 +0200cyphase(~cyphase@user/cyphase)
2022-05-02 05:07:41 +0200 <kannon> thanks yeah; can you run it or should I comment out the rule ?
2022-05-02 05:08:10 +0200xff0x_(~xff0x@om126234061065.16.openmobile.ne.jp) (Read error: Connection reset by peer)
2022-05-02 05:08:24 +0200 <hololeap> not sure what you mean
2022-05-02 05:09:30 +0200 <Axman6> you might find something like this useful: let s b = if b then "T" else " "; putStrLn $ unlines [unwords [s a, s b, s c,"=>", show rule a b c | a <- [False, True], b <- [False, True], c <- [False, True]]
2022-05-02 05:09:47 +0200 <hololeap> the rule seems pretty arbitrary. for instance, giving it (a=True, b=True, c=False) would yield True, as would (a=True, b=True, c=True) and (a=False, b=False, c=False)
2022-05-02 05:10:21 +0200 <hololeap> so it seems like just some rule that was made up for the sake of it
2022-05-02 05:10:53 +0200 <Axman6> % let rule a b c = not (a && b && not c || (a==b)); s b = if b then "T" else " "; in putStrLn $ unlines [unwords [s a, s b, s c,"=>", show rule a b c | a <- [False, True], b <- [False, True], c <- [False, True]]
2022-05-02 05:11:12 +0200 <Axman6> oh no, no yahb!
2022-05-02 05:11:51 +0200 <jackdk> @botsnack at least we still have lambdabot
2022-05-02 05:11:51 +0200 <lambdabot> :)
2022-05-02 05:12:32 +0200 <hololeap> I used comonads to solve this: https://www.hackerrank.com/challenges/the-tree-of-life/problem
2022-05-02 05:12:39 +0200 <Axman6> > let rule a b c = not (a && b && not c || (a==b)); s b = if b then "T" else " " in text $ unlines [unwords [s a, s b, s c,"=>", show (rule a b c) | a <- [False, True], b <- [False, True], c <- [False, True]]
2022-05-02 05:12:40 +0200 <lambdabot> <hint>:1:148: error: parse error on input ‘|’
2022-05-02 05:12:55 +0200 <Axman6> > let rule a b c = not (a && b && not c || (a==b)); s b = if b then "T" else " " in text $ unlines [unwords [s a, s b, s c,"=>", show (rule a b c)] | a <- [False, True], b <- [False, True], c <- [False, True]]
2022-05-02 05:12:56 +0200 <lambdabot> => False
2022-05-02 05:12:56 +0200 <lambdabot> T => False
2022-05-02 05:12:56 +0200 <lambdabot> T => True
2022-05-02 05:13:54 +0200mbuf(~Shakthi@171.61.201.63)
2022-05-02 05:13:57 +0200 <kannon> man that is tough. at least I get the cellular automata idea
2022-05-02 05:14:19 +0200cyphase(~cyphase@user/cyphase) (Ping timeout: 240 seconds)
2022-05-02 05:17:14 +0200tommd(~tommd@97-120-41-123.ptld.qwest.net)
2022-05-02 05:17:34 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-05-02 05:19:27 +0200cyphase(~cyphase@user/cyphase)
2022-05-02 05:20:12 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-05-02 05:24:12 +0200xff0x_(~xff0x@om126234061065.16.openmobile.ne.jp)
2022-05-02 05:31:07 +0200Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2022-05-02 05:31:24 +0200Feuermagier(~Feuermagi@user/feuermagier)
2022-05-02 05:34:33 +0200julian(~julian@20.83.116.49) (Killed (NickServ (GHOST command used by tos9_!~tos9@python/site-packages/Julian)))
2022-05-02 05:37:10 +0200frost(~frost@user/frost) (Ping timeout: 252 seconds)
2022-05-02 05:37:12 +0200xff0x_(~xff0x@om126234061065.16.openmobile.ne.jp) (Read error: Connection reset by peer)
2022-05-02 05:40:14 +0200 <kannon> thanks for helping everyone
2022-05-02 05:41:53 +0200bogart(~e43921@167.224.152.242)
2022-05-02 05:46:06 +0200bogart(~e43921@167.224.152.242) (Ping timeout: 246 seconds)
2022-05-02 05:53:13 +0200deadmarshal_(~deadmarsh@95.38.117.99)
2022-05-02 06:04:00 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
2022-05-02 06:04:49 +0200uncomfy(~uncomfy@103.164.146.133)
2022-05-02 06:07:39 +0200kritzefitz(~kritzefit@debian/kritzefitz) (Ping timeout: 240 seconds)
2022-05-02 06:08:34 +0200kritzefitz(~kritzefit@debian/kritzefitz)
2022-05-02 06:09:59 +0200[Leary](~Leary]@122-58-228-205-vdsl.sparkbb.co.nz) (Remote host closed the connection)
2022-05-02 06:13:56 +0200Buggys(~Buggys@185.149.90.52) ()
2022-05-02 06:14:46 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2022-05-02 06:14:59 +0200cyphase(~cyphase@user/cyphase) (Ping timeout: 240 seconds)
2022-05-02 06:17:10 +0200kannon(~NK@135-180-218-226.fiber.dynamic.sonic.net) (Quit: leaving)
2022-05-02 06:20:16 +0200cyphase(~cyphase@user/cyphase)
2022-05-02 06:25:00 +0200lawt(~lawt@2601:200:8200:6870:dea6:32ff:fea1:adf9) (*.net *.split)
2022-05-02 06:25:00 +0200Tisoxin(~ikosit@user/ikosit) (*.net *.split)
2022-05-02 06:25:00 +0200lagooned(~lagooned@108-208-149-42.lightspeed.hstntx.sbcglobal.net) (*.net *.split)
2022-05-02 06:25:00 +0200mrkajetanp(~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88) (*.net *.split)
2022-05-02 06:25:00 +0200iphy(sid67735@id-67735.lymington.irccloud.com) (*.net *.split)
2022-05-02 06:25:00 +0200carbolymer(~carbolyme@dropacid.net) (*.net *.split)
2022-05-02 06:25:00 +0200piele(~piele@tbonesteak.creativeserver.net) (*.net *.split)
2022-05-02 06:25:00 +0200Clint(~Clint@user/clint) (*.net *.split)
2022-05-02 06:25:00 +0200barrucadu(~barrucadu@carcosa.barrucadu.co.uk) (*.net *.split)
2022-05-02 06:25:00 +0200Vq(~vq@90-227-195-41-no77.tbcn.telia.com) (*.net *.split)
2022-05-02 06:25:00 +0200dagit(~dagit@c-24-21-226-72.hsd1.or.comcast.net) (*.net *.split)
2022-05-02 06:25:00 +0200kitzman(~kitzman@user/dekenevs) (*.net *.split)
2022-05-02 06:25:00 +0200Sqaure(~a@user/square) (*.net *.split)
2022-05-02 06:25:00 +0200xerox(~edi@user/edi) (*.net *.split)
2022-05-02 06:25:00 +0200Patternmaster(~georg@li1192-118.members.linode.com) (*.net *.split)
2022-05-02 06:25:07 +0200Clint(~Clint@user/clint)
2022-05-02 06:25:12 +0200piele(~piele@tbonesteak.creativeserver.net)
2022-05-02 06:25:12 +0200Patternmaster(~georg@li1192-118.members.linode.com)
2022-05-02 06:25:13 +0200carbolymer(~carbolyme@dropacid.net)
2022-05-02 06:25:15 +0200iphy(sid67735@id-67735.lymington.irccloud.com)
2022-05-02 06:25:15 +0200xerox(~edi@user/edi)
2022-05-02 06:25:22 +0200lagooned(~lagooned@108-208-149-42.lightspeed.hstntx.sbcglobal.net)
2022-05-02 06:25:24 +0200Vq(~vq@90-227-195-41-no77.tbcn.telia.com)
2022-05-02 06:25:24 +0200barrucadu(~barrucadu@carcosa.barrucadu.co.uk)
2022-05-02 06:25:33 +0200Square(~a@user/square)
2022-05-02 06:25:34 +0200mrkajetanp(~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88)
2022-05-02 06:25:40 +0200lawt(~lawt@2601:200:8200:6870:dea6:32ff:fea1:adf9)
2022-05-02 06:26:14 +0200Tisoxin(~ikosit@user/ikosit)
2022-05-02 06:26:51 +0200kitzman(~kitzman@user/dekenevs)
2022-05-02 06:28:28 +0200Deide(~deide@user/deide) (*.net *.split)
2022-05-02 06:28:28 +0200ishaan[m](~ishaanvma@2001:470:69fc:105::1:fb72) (*.net *.split)
2022-05-02 06:28:28 +0200ozataman[m](~ozatamanm@2001:470:69fc:105::1:faa0) (*.net *.split)
2022-05-02 06:28:28 +0200vestige[m](~vestigema@2001:470:69fc:105::1:f9dd) (*.net *.split)
2022-05-02 06:28:28 +0200Andy[m]12(~anparrama@2001:470:69fc:105::1:6826) (*.net *.split)
2022-05-02 06:28:28 +0200Jon(jon@dow.land) (*.net *.split)
2022-05-02 06:28:29 +0200hendi(sid489601@id-489601.lymington.irccloud.com) (*.net *.split)
2022-05-02 06:28:29 +0200alanz(sid110616@id-110616.uxbridge.irccloud.com) (*.net *.split)
2022-05-02 06:28:29 +0200sclv(sid39734@haskell/developer/sclv) (*.net *.split)
2022-05-02 06:28:29 +0200chessai(sid225296@id-225296.lymington.irccloud.com) (*.net *.split)
2022-05-02 06:28:29 +0200dyniec(~dyniec@mail.dybiec.info) (*.net *.split)
2022-05-02 06:28:29 +0200robertm(robertm@lattice.rojoma.com) (*.net *.split)
2022-05-02 06:28:29 +0200Unhammer(~Unhammer@user/unhammer) (*.net *.split)
2022-05-02 06:28:29 +0200megeve(sid523379@id-523379.hampstead.irccloud.com) (*.net *.split)
2022-05-02 06:28:29 +0200hook54321(sid149355@user/hook54321) (*.net *.split)
2022-05-02 06:28:29 +0200Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8) (*.net *.split)
2022-05-02 06:28:29 +0200Matthew|m(~arathorn@2001:470:69fc:105::1f) (*.net *.split)
2022-05-02 06:28:29 +0200jmcantrell(~jmcantrel@user/jmcantrell) (*.net *.split)
2022-05-02 06:28:29 +0200geoduck(~X@71.182.184.253) (*.net *.split)
2022-05-02 06:28:29 +0200bcmiller(~bm3719@66.42.95.185) (*.net *.split)
2022-05-02 06:28:29 +0200df(~ben@justworks.xyz) (*.net *.split)
2022-05-02 06:28:29 +0200dragestil(~znc@user/dragestil) (*.net *.split)
2022-05-02 06:28:29 +0200marienz__(~marienz@libera/staff/marienz) (*.net *.split)
2022-05-02 06:28:29 +0200tristanC(~tristanC@user/tristanc) (*.net *.split)
2022-05-02 06:28:29 +0200relrod(~relrod@redhat/ansible.staff.relrod) (*.net *.split)
2022-05-02 06:28:29 +0200mht-wtf(~mht@2a03:b0c0:3:e0::1e2:c001) (*.net *.split)
2022-05-02 06:28:39 +0200Jon(jon@dow.land)
2022-05-02 06:28:39 +0200bcmiller(~bm3719@66.42.95.185)
2022-05-02 06:28:41 +0200sclv(sid39734@haskell/developer/sclv)
2022-05-02 06:28:41 +0200df(~ben@justworks.xyz)
2022-05-02 06:28:42 +0200relrod(~relrod@redhat/ansible.staff.relrod)
2022-05-02 06:28:43 +0200marienz_(marienz@libera/staff/marienz)
2022-05-02 06:28:45 +0200dyniec(~dyniec@mail.dybiec.info)
2022-05-02 06:28:46 +0200megeve(sid523379@id-523379.hampstead.irccloud.com)
2022-05-02 06:28:46 +0200chessai(sid225296@id-225296.lymington.irccloud.com)
2022-05-02 06:28:46 +0200alanz(sid110616@id-110616.uxbridge.irccloud.com)
2022-05-02 06:28:48 +0200hendi(sid489601@id-489601.lymington.irccloud.com)
2022-05-02 06:28:51 +0200geoduck(~X@71.182.184.253)
2022-05-02 06:28:59 +0200tristanC(~tristanC@user/tristanc)
2022-05-02 06:29:00 +0200robertm(robertm@lattice.rojoma.com)
2022-05-02 06:29:01 +0200Unhammer(~Unhammer@user/unhammer)
2022-05-02 06:29:05 +0200mht-wtf(~mht@2a03:b0c0:3:e0::1e2:c001)
2022-05-02 06:29:19 +0200dragestil(~znc@user/dragestil)
2022-05-02 06:29:51 +0200hook54321(sid149355@user/hook54321)
2022-05-02 06:30:47 +0200king_gs(~Thunderbi@2806:103e:29:1f3f:8da7:e5:2a3:824d) (Ping timeout: 240 seconds)
2022-05-02 06:30:51 +0200jmcantrell(~jmcantrel@user/jmcantrell)
2022-05-02 06:31:01 +0200Matthew|m(~arathorn@2001:470:69fc:105::1f)
2022-05-02 06:31:02 +0200Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8)
2022-05-02 06:31:57 +0200Andy[m]12(~anparrama@2001:470:69fc:105::1:6826)
2022-05-02 06:32:44 +0200uncomfy(~uncomfy@103.164.146.133) (Quit: uncomfy)
2022-05-02 06:33:02 +0200[Leary](~Leary]@122-58-228-205-vdsl.sparkbb.co.nz)
2022-05-02 06:33:44 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-05-02 06:34:12 +0200vestige[m](~vestigema@2001:470:69fc:105::1:f9dd)
2022-05-02 06:34:23 +0200ishaan[m](~ishaanvma@2001:470:69fc:105::1:fb72)
2022-05-02 06:34:32 +0200ozataman[m](~ozatamanm@2001:470:69fc:105::1:faa0)
2022-05-02 06:34:59 +0200Deide(~deide@user/deide)
2022-05-02 06:35:28 +0200cdman(~dcm@27.2.217.184)
2022-05-02 06:35:28 +0200cdman(~dcm@27.2.217.184) (Changing host)
2022-05-02 06:35:28 +0200cdman(~dcm@user/dmc/x-4369397)
2022-05-02 06:37:21 +0200coot(~coot@213.134.190.95)
2022-05-02 06:39:16 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-05-02 06:45:26 +0200benin(~benin@183.82.204.110)
2022-05-02 06:50:42 +0200mvk(~mvk@2607:fea8:5ce3:8500::aa1d) (Ping timeout: 250 seconds)
2022-05-02 06:57:20 +0200jargon(~jargon@174-22-206-112.phnx.qwest.net) (Remote host closed the connection)
2022-05-02 06:59:04 +0200nut(~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-05-02 07:02:07 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-05-02 07:05:19 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-05-02 07:05:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-05-02 07:06:12 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 240 seconds)
2022-05-02 07:07:18 +0200king_gs(~Thunderbi@187.201.77.157)
2022-05-02 07:08:02 +0200gentauro(~gentauro@user/gentauro)
2022-05-02 07:15:53 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-05-02 07:27:58 +0200king_gs(~Thunderbi@187.201.77.157) (Read error: Connection reset by peer)
2022-05-02 07:28:53 +0200king_gs(~Thunderbi@2806:103e:29:1f3f:8da7:e5:2a3:824d)
2022-05-02 07:29:40 +0200king_gs(~Thunderbi@2806:103e:29:1f3f:8da7:e5:2a3:824d) (Client Quit)
2022-05-02 07:31:51 +0200michalz(~michalz@185.246.204.126)
2022-05-02 07:33:27 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-05-02 07:38:36 +0200gpncarl(~gpncarl@120.244.220.74)
2022-05-02 07:43:56 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-05-02 07:47:09 +0200julian(~julian@20.83.116.49)
2022-05-02 07:51:03 +0200 <juhp[m]> Can anyone give me some clues about this cabal build failure: https://download.copr.fedorainfracloud.org/results/petersen/cabal-install/fedora-rawhide-x86_64/04… (5kB)? It's been driving me round the bend...
2022-05-02 07:52:01 +0200 <juhp[m]> Basically I am trying to build cabal-install (with cabal-install) and it keeps failing silently on resolv during configure apparently (I can't reproduce it locally)
2022-05-02 07:52:33 +0200 <juhp[m]> I may try with a newer cabal-install version...
2022-05-02 07:54:57 +0200 <juhp[m]> Actually trying again now locally it fails on network for me...
2022-05-02 07:55:23 +0200 <juhp[m]> cabal: Failed to build network-3.1.2.7 (which is required by exe:cabal ...
2022-05-02 07:57:13 +0200 <juhp[m]> What does error 77 mean?
2022-05-02 08:02:03 +0200noiobeforebed(~noiobefor@2001:470:69fc:105::1:3c2d) (Quit: Reconnecting)
2022-05-02 08:02:17 +0200noiobeforebed(~noiobefor@2001:470:69fc:105::1:3c2d)
2022-05-02 08:05:05 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-05-02 08:09:32 +0200inversed(~inversed@94.13.111.159) (Quit: Connection error?!)
2022-05-02 08:13:20 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds)
2022-05-02 08:15:57 +0200gpncarl(~gpncarl@120.244.220.74) (Ping timeout: 276 seconds)
2022-05-02 08:16:23 +0200inversed(~inversed@94.13.111.159)
2022-05-02 08:16:25 +0200gpncarl(~gpncarl@120.244.220.74)
2022-05-02 08:20:55 +0200gpncarl(~gpncarl@120.244.220.74) (Ping timeout: 260 seconds)
2022-05-02 08:32:02 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-05-02 08:37:36 +0200 <[exa]> juhp[m]: the error message is the same when it fails for network?
2022-05-02 08:37:58 +0200 <[exa]> I'm a bit scared by the mention of RPM there
2022-05-02 08:38:38 +0200 <juhp[m]> yes basically the same
2022-05-02 08:39:13 +0200 <juhp[m]> The failure occurred during the configure step. The build process terminated with exit code 77
2022-05-02 08:39:16 +0200 <[exa]> are there any leftover logs or environment?
2022-05-02 08:39:28 +0200nut(~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 250 seconds)
2022-05-02 08:39:32 +0200 <[exa]> would be nice to see what's the python thing doing there
2022-05-02 08:39:43 +0200[_](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-05-02 08:39:57 +0200 <juhp[m]> Even with cabal install -v not much of interest
2022-05-02 08:41:03 +0200mmhat(~mmh@2001:4090:a242:802a:ee08:6bff:fe09:5315)
2022-05-02 08:41:15 +0200 <[exa]> does 'resolv' build when you try to source it and install it from standalone source? (there you might have better chances to find the offending piece of code)
2022-05-02 08:41:43 +0200 <juhp[m]> Well I think the final python error from mock (that is the chroot tool Fedora uses for building) can be ignored it allows appears when there is a failure - it doesn't provide interesting info :-)
2022-05-02 08:41:55 +0200 <juhp[m]> s/allows/always/
2022-05-02 08:42:17 +0200 <[exa]> ._. pythons
2022-05-02 08:42:25 +0200 <juhp[m]> Yeah let me try a bit more...
2022-05-02 08:42:53 +0200 <juhp[m]> I just thought maybe someone had run into this before - but not so common perhaps
2022-05-02 08:43:04 +0200 <[exa]> cabal get resolv; cd resolv-...; cabal configure; cabal build
2022-05-02 08:43:18 +0200 <[exa]> I'm not on fedora and it builds awright
2022-05-02 08:44:17 +0200 <juhp[m]> same here on Fedora
2022-05-02 08:45:25 +0200 <[exa]> grep 77 errno.h ---> #define EBADFD 77 /* File descriptor in bad state */
2022-05-02 08:45:26 +0200 <juhp[m]> I don't think the problem is with resolv or network but some kind of build environment issue
2022-05-02 08:45:45 +0200 <juhp[m]> Let me try with Fedora 35
2022-05-02 08:45:56 +0200 <juhp[m]> Yea I since found that too
2022-05-02 08:46:07 +0200acidjnk(~acidjnk@p200300d0c7033b32307b3d9e83ffd4d4.dip0.t-ipconnect.de)
2022-05-02 08:46:27 +0200 <juhp[m]> Appreciate the help :-)
2022-05-02 08:47:00 +0200 <[exa]> how's your /tmp mounted?
2022-05-02 08:48:22 +0200 <[exa]> ah that's by the mock thing
2022-05-02 08:49:28 +0200raym(~raym@user/raym) (Ping timeout: 248 seconds)
2022-05-02 08:50:08 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:aa56:2922:80a8:95ed)
2022-05-02 08:50:18 +0200 <[exa]> btw recovering config.log would help a lot I guess
2022-05-02 08:50:56 +0200 <[exa]> from what's in the configure script, I guess you might either have "C compiler can't make executables" or "can't compute sizeof(struct __res_state)"
2022-05-02 08:55:06 +0200gpncarl(~gpncarl@120.244.220.74)
2022-05-02 08:56:24 +0200drdo(~drdo@roach0.drdo.eu) (Quit: Ping timeout (120 seconds))
2022-05-02 08:56:30 +0200raoul(~raoul@95.179.203.88) (Quit: Ping timeout (120 seconds))
2022-05-02 08:56:32 +0200bbear(~znc@21212.s.t4vps.eu) (Quit: ZNC 1.7.4 - https://znc.in)
2022-05-02 08:56:35 +0200drdo(~drdo@roach0.drdo.eu)
2022-05-02 08:56:47 +0200bbear(~znc@21212.s.t4vps.eu)
2022-05-02 08:56:51 +0200raoul(~raoul@95.179.203.88)
2022-05-02 08:57:33 +0200thaumavorio(~thaumavor@thaumavor.io) (Quit: ZNC 1.8.2 - https://znc.in)
2022-05-02 08:57:33 +0200alp_(~alp@user/alp)
2022-05-02 08:58:22 +0200thaumavorio(~thaumavor@thaumavor.io)
2022-05-02 08:59:00 +0200tchakka(~tchakkazu@static-47-180-28-65.lsan.ca.frontiernet.net) (Ping timeout: 240 seconds)
2022-05-02 08:59:24 +0200df(~ben@justworks.xyz) (Ping timeout: 240 seconds)
2022-05-02 08:59:24 +0200Logio(em@kapsi.fi) (Ping timeout: 240 seconds)
2022-05-02 08:59:33 +0200Logio(em@kapsi.fi)
2022-05-02 08:59:37 +0200df(~ben@justworks.xyz)
2022-05-02 09:01:06 +0200chele(~chele@user/chele)
2022-05-02 09:02:37 +0200abastro(~abab9579@192.249.26.201)
2022-05-02 09:08:55 +0200jakalx(~jakalx@base.jakalx.net) ()
2022-05-02 09:10:20 +0200jakalx(~jakalx@base.jakalx.net)
2022-05-02 09:16:16 +0200Pickchea(~private@user/pickchea)
2022-05-02 09:19:45 +0200mncheck(~mncheck@193.224.205.254)
2022-05-02 09:22:19 +0200ccntrq(~Thunderbi@2a01:e34:eccb:b060:2d0b:56d2:55c6:6429)
2022-05-02 09:27:38 +0200gehmehgeh(~user@user/gehmehgeh)
2022-05-02 09:29:45 +0200Pickchea(~private@user/pickchea) (Ping timeout: 260 seconds)
2022-05-02 09:30:39 +0200joeyh(joeyh@kitenet.net) (Ping timeout: 260 seconds)
2022-05-02 09:30:46 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-05-02 09:33:56 +0200abastro(~abab9579@192.249.26.201) (Remote host closed the connection)
2022-05-02 09:35:57 +0200raym(~raym@user/raym)
2022-05-02 09:37:42 +0200coot(~coot@213.134.190.95)
2022-05-02 09:39:09 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-05-02 09:40:39 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-05-02 09:41:00 +0200raym(~raym@user/raym) (Remote host closed the connection)
2022-05-02 09:47:47 +0200machinedgod(~machinedg@24.105.81.50)
2022-05-02 09:50:43 +0200sphynx(~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288) (Ping timeout: 260 seconds)
2022-05-02 09:52:25 +0200 <hgolden> the haskell wiki is down. i am working on fixing its configuration.
2022-05-02 09:55:57 +0200sphynx(~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288)
2022-05-02 09:56:22 +0200raym(~raym@user/raym)
2022-05-02 09:58:20 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 272 seconds)
2022-05-02 10:00:33 +0200raym(~raym@user/raym) (Ping timeout: 246 seconds)
2022-05-02 10:01:07 +0200sprout(~quassel@2a02-a467-ccd6-1-c813-76d4-6151-9389.fixed6.kpn.net) (Ping timeout: 240 seconds)
2022-05-02 10:01:30 +0200sprout(~quassel@2a02-a467-ccd6-1-c813-76d4-6151-9389.fixed6.kpn.net)
2022-05-02 10:05:29 +0200mmhat(~mmh@2001:4090:a242:802a:ee08:6bff:fe09:5315) (Quit: WeeChat 3.5)
2022-05-02 10:05:43 +0200neceve(~quassel@2.29.116.221)
2022-05-02 10:05:48 +0200tommd(~tommd@97-120-41-123.ptld.qwest.net) (Ping timeout: 276 seconds)
2022-05-02 10:06:34 +0200sprout(~quassel@2a02-a467-ccd6-1-c813-76d4-6151-9389.fixed6.kpn.net) (Ping timeout: 250 seconds)
2022-05-02 10:08:10 +0200mmhat(~mmh@2001:4090:a242:802a:ee08:6bff:fe09:5315)
2022-05-02 10:11:10 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 260 seconds)
2022-05-02 10:11:18 +0200abastro(~abab9579@192.249.26.201)
2022-05-02 10:11:45 +0200raym(~raym@user/raym)
2022-05-02 10:12:30 +0200epolanski(uid312403@id-312403.helmsley.irccloud.com)
2022-05-02 10:14:12 +0200nut(~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-05-02 10:15:18 +0200Pickchea(~private@user/pickchea)
2022-05-02 10:19:19 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2022-05-02 10:20:48 +0200gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
2022-05-02 10:21:40 +0200abastro(~abab9579@192.249.26.201) (Remote host closed the connection)
2022-05-02 10:23:53 +0200[Leary](~Leary]@122-58-228-205-vdsl.sparkbb.co.nz) (Remote host closed the connection)
2022-05-02 10:24:45 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1)
2022-05-02 10:24:59 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 240 seconds)
2022-05-02 10:27:17 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-05-02 10:28:05 +0200jgeerds(~jgeerds@d53604b0.access.ecotel.net)
2022-05-02 10:31:06 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-05-02 10:31:28 +0200[Leary](~Leary]@122-58-228-205-vdsl.sparkbb.co.nz)
2022-05-02 10:34:38 +0200nschoe(~quassel@178.251.84.79)
2022-05-02 10:35:01 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1)
2022-05-02 10:35:04 +0200Zemyla(~ec2-user@ec2-54-80-174-150.compute-1.amazonaws.com) (Ping timeout: 248 seconds)
2022-05-02 10:35:12 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-05-02 10:38:40 +0200eggplantade(~Eggplanta@108.201.191.115) (Remote host closed the connection)
2022-05-02 10:40:27 +0200shriekingnoise(~shrieking@201.231.16.156) (Quit: Quit)
2022-05-02 10:41:58 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-05-02 10:42:18 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-05-02 10:42:45 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1)
2022-05-02 10:43:13 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-05-02 10:46:11 +0200 <juhp[m]> [exa] right - I got it to build fine on current Fedora 35 - my suspicion is somehow it might be running out of FDs on Fedora 36... hmm
2022-05-02 10:46:33 +0200 <juhp[m]> good point
2022-05-02 10:47:23 +0200 <juhp[m]> anyway ya looks like this is a Fedora issue :(
2022-05-02 10:48:10 +0200zeenk(~zeenk@2a02:2f04:a004:9b00:1efc:c1cf:378d:8b3d)
2022-05-02 10:49:26 +0200mastarija(~mastarija@2a05:4f46:e04:6000:b03f:f8ad:9bc1:4a97)
2022-05-02 10:50:38 +0200 <mastarija> is there a way to load module in repl as qualified?
2022-05-02 10:50:48 +0200 <mastarija> e.g. :m + Data.Map as M
2022-05-02 10:52:00 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds)
2022-05-02 10:52:08 +0200frost(~frost@user/frost)
2022-05-02 10:53:05 +0200 <Taneb> mastarija: you can use "import qualified Data.Map as M" in the repl
2022-05-02 10:53:15 +0200 <mastarija> oh...
2022-05-02 10:53:28 +0200 <juhp[m]> [exa]: you are right: checking whether the C compiler works... no
2022-05-02 10:53:32 +0200 <mastarija> I've never tried that
2022-05-02 10:53:46 +0200 <Taneb> mastarija: it didn't use to be the case so if you're using an old guide it might not suggest it
2022-05-02 10:57:43 +0200hrdl(~hrdl@mail.hrdl.eu) (Quit: leaving)
2022-05-02 10:58:29 +0200 <juhp[m]> juhp: Likely something to do with gcc12
2022-05-02 11:02:20 +0200hrdl(~hrdl@mail.hrdl.eu)
2022-05-02 11:05:52 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-05-02 11:06:14 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-05-02 11:08:28 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-05-02 11:08:40 +0200ajb(~ajb@mimas.whatbox.ca) (Remote host closed the connection)
2022-05-02 11:12:48 +0200xff0x_(~xff0x@om126234061065.16.openmobile.ne.jp)
2022-05-02 11:15:03 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-05-02 11:17:57 +0200gpncarl(~gpncarl@120.244.220.74) (Ping timeout: 276 seconds)
2022-05-02 11:18:37 +0200gpncarl(~gpncarl@120.244.220.74)
2022-05-02 11:19:08 +0200cfricke(~cfricke@user/cfricke)
2022-05-02 11:20:49 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-05-02 11:22:16 +0200 <juhp[m]> Ah I think it worked it out - some new toolkit stuff in F36
2022-05-02 11:22:17 +0200 <juhp[m]> toolchain
2022-05-02 11:22:53 +0200 <juhp[m]> probably LTO
2022-05-02 11:23:04 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-05-02 11:23:26 +0200 <juhp[m]> actually dunno what
2022-05-02 11:24:29 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-05-02 11:24:45 +0200anomal(~anomal@87.227.196.109)
2022-05-02 11:24:49 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:aa56:2922:80a8:95ed) (Quit: WeeChat 2.8)
2022-05-02 11:25:56 +0200gpncarl(~gpncarl@120.244.220.74) (Ping timeout: 248 seconds)
2022-05-02 11:26:00 +0200gpncarl_(~gpncarl@120.244.220.74)
2022-05-02 11:27:32 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.5)
2022-05-02 11:28:20 +0200__monty__(~toonn@user/toonn)
2022-05-02 11:29:55 +0200acidjnk(~acidjnk@p200300d0c7033b32307b3d9e83ffd4d4.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-05-02 11:35:30 +0200jespada(~jespada@194.37.96.110) (Ping timeout: 276 seconds)
2022-05-02 11:35:50 +0200jespada(~jespada@146.70.119.87)
2022-05-02 11:39:22 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-05-02 11:43:42 +0200MajorBiscuit(~MajorBisc@145.94.235.5)
2022-05-02 11:43:51 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-05-02 11:46:00 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds)
2022-05-02 11:46:40 +0200ridcully(~ridcully@pd951f433.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2022-05-02 11:51:30 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-05-02 11:53:03 +0200gpncarl_(~gpncarl@120.244.220.74) (Ping timeout: 276 seconds)
2022-05-02 11:53:24 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2022-05-02 11:54:35 +0200ridcully(~ridcully@p57b52a1f.dip0.t-ipconnect.de)
2022-05-02 11:56:55 +0200meinside(uid24933@id-24933.helmsley.irccloud.com)
2022-05-02 11:57:06 +0200coot(~coot@213.134.190.95)
2022-05-02 11:57:26 +0200 <gurkenglas> How annoying that ~ I have only one neuron for the concept of negation, so I have to split any statement involving multiple negations into parts before I can understand it.
2022-05-02 12:00:13 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-05-02 12:03:27 +0200 <gurkenglas> also that "exists forall" is different from "forall exists", so I can't just run pattern recognition on the bag of words in a statement. I think what I do instead is pattern recognition against both of those quoted phrases in parallel, is there some better way? Perhaps a language that replaces them with two separate words.
2022-05-02 12:05:24 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 248 seconds)
2022-05-02 12:05:49 +0200 <gurkenglas> i think the desire to do bag-of-words also underlies being drawn towards pointless style
2022-05-02 12:07:19 +0200 <gurkenglas> yeah probably what you do in general is, any time the same bag of words can be assembled into two different things, you name those two things to distinguish them.
2022-05-02 12:08:27 +0200 <gurkenglas> what are some examples of lines of code that can be rearranged for a different meaning?
2022-05-02 12:09:41 +0200 <int-e> natural languages already have the property that order matters
2022-05-02 12:10:18 +0200 <int-e> love triangle (drama). triangle love (nerdy).
2022-05-02 12:10:45 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-05-02 12:11:20 +0200 <gurkenglas> natural languages aren't intelligently designed, they descend gradients
2022-05-02 12:11:58 +0200 <int-e> yoda funny also because this of
2022-05-02 12:12:26 +0200 <gurkenglas> and yet understandable because we can pattern-match by bag-of-words
2022-05-02 12:12:50 +0200 <int-e> well, order-dependence isn't a sign of absence of intelligent design
2022-05-02 12:12:52 +0200int-eshrugs
2022-05-02 12:13:15 +0200 <gurkenglas> jsut as you can raed tihs setnence wihtout too mcuh toruble
2022-05-02 12:13:47 +0200 <tdammers> there's a lot more to natural language than just packing quantifyable objective information into a data stream
2022-05-02 12:14:12 +0200Midjak(~Midjak@82.66.147.146)
2022-05-02 12:14:39 +0200 <gurkenglas> I'm gonna venture a guess that dyslexics are those who are too far in bag-of-words mode
2022-05-02 12:15:00 +0200 <int-e> aside... if you had the power to process two negations that would be enough for arbitrary boolean circuits...
2022-05-02 12:15:13 +0200 <tdammers> Also: order dependence varies between languages. Word order matters a lot more in English than it does in Latin, for example.
2022-05-02 12:15:24 +0200 <gurkenglas> int-e: I responded with the intelligent-design line because it sounded that you were arguing that order-dependence is good because it is natural
2022-05-02 12:16:38 +0200 <int-e> gurkenglas: I wasn't judging. I'm saying it's not very hard to comprehend because of that... well, assuming your native tongue does that.
2022-05-02 12:17:00 +0200 <int-e> "it" being order-dependence
2022-05-02 12:17:05 +0200 <gurkenglas> I wonder how hard sentences become to understand if we sort their words alphabetically
2022-05-02 12:17:15 +0200 <int-e> (comprehending "it" is hard... I should use "it" less)
2022-05-02 12:17:15 +0200efertone(~efertone@user/efertone) (Ping timeout: 260 seconds)
2022-05-02 12:17:26 +0200 <gurkenglas> pointfree style! :)
2022-05-02 12:18:45 +0200 <gurkenglas> I agree that brains manage to overcome order-dependence, and argue that we may have a much easier time if we made the need rarer
2022-05-02 12:20:11 +0200 <gurkenglas> Contrived example: (*2) . (+1) vs (+1) . (*2). Are there ones outside arithmetic?
2022-05-02 12:20:23 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-05-02 12:20:24 +0200 <int-e> I don't think you can do that with logic. Supporting evidence comes in the form of Ehrenfeucht-Fraisse games, where, obviously, reordering the moves by the different players can easily change the status (winning or losing) of the game.
2022-05-02 12:20:53 +0200 <gurkenglas> I remember that Ehrenfeucht-Fraisse games suck and you try to hide them behind lemmata like with unsafePerformIO
2022-05-02 12:20:58 +0200 <gurkenglas> Perhaps for that reason
2022-05-02 12:21:42 +0200mastarija(~mastarija@2a05:4f46:e04:6000:b03f:f8ad:9bc1:4a97) (Quit: Leaving)
2022-05-02 12:22:00 +0200 <int-e> I suppose you can do silly things like roman numerals (which /could/ be order-independent except for the weird convention of writing IV for IIII (and IX, XL, etc.)
2022-05-02 12:23:03 +0200 <gurkenglas> I imagine that's because you need to match against IIII in parallel to matching against III in any case, so the IIII might as well be IV
2022-05-02 12:23:16 +0200 <tdammers> You can trivially turn anything into an order-independent representation by assigning an ordinal to every order-dependent step, and then pairing them up
2022-05-02 12:23:43 +0200 <gurkenglas> tdammers: that may well be how brains solve the issue
2022-05-02 12:23:57 +0200 <int-e> Fascinating as this may be, what does this have to do with Haskell anyway?
2022-05-02 12:24:32 +0200 <gurkenglas> The initial despair is one I expect to pop up a lot in the kind of people who code Haskell!
2022-05-02 12:24:39 +0200 <gurkenglas> Boolean blindness is a concept I encountered here
2022-05-02 12:25:00 +0200 <int-e> Haskell is *very* order-dependent.
2022-05-02 12:25:00 +0200xff0x_(~xff0x@om126234061065.16.openmobile.ne.jp) (Read error: Connection reset by peer)
2022-05-02 12:25:12 +0200 <int-e> > ((-) 1 2, (-) 2 1)
2022-05-02 12:25:13 +0200 <gurkenglas> Do you have an example less contrived than my arithmetic one?
2022-05-02 12:25:14 +0200 <lambdabot> (-1,1)
2022-05-02 12:25:49 +0200 <gurkenglas> Maybe it'll turn out that non-contrived examples tend to instantiate the words at different types in different orders, so that you can do bag-of-words so long as you equip each word with its type
2022-05-02 12:26:26 +0200 <gurkenglas> which sounds better than ordinals because you don't have to keep repeating it for every offset to call 0
2022-05-02 12:26:28 +0200 <int-e> Even for composition... f . g != g . f is the normal case, not the exception
2022-05-02 12:27:17 +0200 <gurkenglas> Yes, give some example of that please. I can see reverse . (0:) but that still feels somewhat contrived (though less than the arithmetic one)
2022-05-02 12:27:18 +0200 <int-e> (in many cases where f . g works, g . f isn't even well-typed)
2022-05-02 12:27:24 +0200 <__monty__> Or the difference between `id const` and `const id`.
2022-05-02 12:27:32 +0200abastro(~abab9579@192.249.26.201)
2022-05-02 12:27:33 +0200 <gurkenglas> That's fine, if one isn't well-typed it won't match the bag
2022-05-02 12:28:11 +0200 <gurkenglas> __monty__: even that I would call fine, because `id const` is just `id` so you wouldn't write it except perhaps to trick someone into seeing `const id` :D
2022-05-02 12:28:40 +0200 <__monty__> id const = const /= id
2022-05-02 12:29:11 +0200 <gurkenglas> um, right, yes. shame on me except at least i saw correctly that it's trivially reducible
2022-05-02 12:29:13 +0200 <__monty__> As your bag of words gets bigger there'll be more and more well typed possible configurations.
2022-05-02 12:29:55 +0200 <gurkenglas> __monty__: I think so too! And yet I can't actually think of a nice small example, which may be a hint that those tend to get names
2022-05-02 12:30:37 +0200 <gurkenglas> And if those tend to get names that you use to reduce larger bags, maybe a good place for the language to be is when every reduced bag has one well-typed configuration
2022-05-02 12:31:15 +0200 <int-e> gurkenglas: https://paste.debian.net/1239661/
2022-05-02 12:31:24 +0200 <gurkenglas> Compare to associativity, which is a really good property because it lets us do sequence-of-words instead of tree-of-words
2022-05-02 12:31:40 +0200 <int-e> (I was too lazy to tokenize properly, so some small parts are actually intact)
2022-05-02 12:32:29 +0200yauhsien(~yauhsien@61-231-62-54.dynamic-ip.hinet.net)
2022-05-02 12:32:54 +0200 <gurkenglas> int-e: that sure has a lot of points!
2022-05-02 12:33:48 +0200 <gurkenglas> What is this example trying to show?
2022-05-02 12:34:11 +0200 <int-e> what you get when you treat Haskell as a bag of words
2022-05-02 12:34:21 +0200sprout(~quassel@2a02-a45f-f170-1-ec22-a3b5-d794-656b.fixed6.kpn.net)
2022-05-02 12:34:33 +0200 <gurkenglas> Oh yeah dangit I just now noticed the similarity to "sort alphabetically"
2022-05-02 12:34:51 +0200 <int-e> it's safe to say that all meaning is lost (except maybe, that it's something with decimal representations of numbers)
2022-05-02 12:35:18 +0200 <gurkenglas> you should have preserved the parenthesis-bubbles
2022-05-02 12:35:25 +0200deadmarshal_(~deadmarsh@95.38.117.99) (Ping timeout: 256 seconds)
2022-05-02 12:35:41 +0200 <gurkenglas> you're allowed to move a parentheses-subterm around inside its parent, and its children inside it, but nothing crosses in or out
2022-05-02 12:35:42 +0200 <int-e> so... now you want an unordered tree instead?
2022-05-02 12:35:53 +0200sprout(~quassel@2a02-a45f-f170-1-ec22-a3b5-d794-656b.fixed6.kpn.net) (Client Quit)
2022-05-02 12:36:06 +0200 <gurkenglas> you can flatten it into a single bag but then you should remove all the parentheses
2022-05-02 12:36:08 +0200 <int-e> anyway, I think I've humored this enough... /me out
2022-05-02 12:37:24 +0200yauhsien(~yauhsien@61-231-62-54.dynamic-ip.hinet.net) (Ping timeout: 248 seconds)
2022-05-02 12:37:40 +0200 <gurkenglas> While trying to parse your paste at one point I thought you were using some sort of unusual-fix notation :D
2022-05-02 12:38:11 +0200 <int-e> All I did was putStrLn . unwords . sort . words =<< readFile "Foo.hs"
2022-05-02 12:38:45 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 260 seconds)
2022-05-02 12:39:16 +0200 <int-e> incidentally, sort . unwords . words would have produced an entirely different result
2022-05-02 12:39:17 +0200 <gurkenglas> makes sense, not your fault words has no special treatment for parentheses
2022-05-02 12:39:40 +0200 <gurkenglas> int-e: yes but fortunately unwords . words is reducible
2022-05-02 12:39:53 +0200 <gurkenglas> (except for that it actually isn't :( )
2022-05-02 12:40:33 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-05-02 12:40:37 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-05-02 12:42:56 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-05-02 12:43:34 +0200 <gurkenglas> I concede that list manipulation is order-dependent, much like lists. I can only go "lists considered harmful" about it :P
2022-05-02 12:45:42 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 276 seconds)
2022-05-02 12:45:45 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-05-02 12:45:46 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-05-02 12:46:21 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 276 seconds)
2022-05-02 12:46:29 +0200 <gurkenglas> (related: language models based on the transformer architecture are an order-independent approach with position-information tacked on! :) )
2022-05-02 12:47:37 +0200 <gurkenglas> one example of the kind of order-dependence that might be less bad if you tack on type-information: fmap fmap vs. fmap fmap
2022-05-02 12:48:27 +0200Lord_of_Life_Lord_of_Life
2022-05-02 12:51:18 +0200frost(~frost@user/frost) (Quit: Ping timeout (120 seconds))
2022-05-02 12:51:35 +0200frost(~frost@user/frost)
2022-05-02 12:56:45 +0200zyklotomic(~ethan@res380d-128-61-87-118.res.gatech.edu) (Ping timeout: 276 seconds)
2022-05-02 12:57:57 +0200zyklotomic(~ethan@res380d-128-61-86-31.res.gatech.edu)
2022-05-02 13:01:35 +0200abastro(~abab9579@192.249.26.201) (Remote host closed the connection)
2022-05-02 13:06:00 +0200kimjetwav(~user@2607:fea8:2362:b400:7bd6:bcaf:2d52:3bbf) (Remote host closed the connection)
2022-05-02 13:08:27 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Read error: Connection reset by peer)
2022-05-02 13:08:54 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-05-02 13:09:14 +0200deadmarshal_(~deadmarsh@95.38.117.99)
2022-05-02 13:09:57 +0200 <Bulby[m]> What is the correct way to allow opt in deriving of a class?
2022-05-02 13:10:10 +0200Bulby[m]sent a code block: https://libera.ems.host/_matrix/media/r0/download/libera.chat/636336d321caccde299f06b79cef9525bf0d…
2022-05-02 13:11:34 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-05-02 13:11:49 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-05-02 13:13:27 +0200ajb(~ajb@mimas.whatbox.ca)
2022-05-02 13:15:30 +0200phma(~phma@host-67-44-208-94.hnremote.net) (Read error: Connection reset by peer)
2022-05-02 13:16:29 +0200phma(~phma@2001:5b0:211f:ee08:b696:84bd:7df8:f65)
2022-05-02 13:20:49 +0200gpncarl_(~gpncarl@120.244.220.74)
2022-05-02 13:21:00 +0200kaph(~kaph@net-2-42-128-205.cust.vodafonedsl.it)
2022-05-02 13:24:48 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-05-02 13:24:58 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:aa56:2922:80a8:95ed)
2022-05-02 13:28:41 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-05-02 13:28:47 +0200gpncarl(~gpncarl@120.244.220.74)
2022-05-02 13:30:14 +0200gpncarl_(~gpncarl@120.244.220.74) (Ping timeout: 250 seconds)
2022-05-02 13:33:09 +0200jgeerds(~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 276 seconds)
2022-05-02 13:36:03 +0200lbseale(~quassel@user/ep1ctetus) (Ping timeout: 256 seconds)
2022-05-02 13:36:11 +0200pretty_d1(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-05-02 13:36:17 +0200arjun(~arjun@user/arjun)
2022-05-02 13:37:48 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 240 seconds)
2022-05-02 13:38:58 +0200pretty_d1(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2022-05-02 13:44:44 +0200lbseale(~quassel@user/ep1ctetus)
2022-05-02 13:45:33 +0200notzmv(~zmv@user/notzmv)
2022-05-02 13:46:19 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Read error: Connection reset by peer)
2022-05-02 13:49:31 +0200abastro(~abab9579@192.249.26.201)
2022-05-02 13:52:12 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-05-02 13:52:40 +0200Simon75(~Simon@2001:4ca0:0:f237:81a2:7019:2075:ce94)
2022-05-02 13:58:37 +0200Pickchea(~private@user/pickchea)
2022-05-02 14:01:20 +0200frost(~frost@user/frost) (Ping timeout: 252 seconds)
2022-05-02 14:03:31 +0200odnes(~odnes@5-203-165-110.pat.nym.cosmote.net)
2022-05-02 14:03:42 +0200lbseale(~quassel@user/ep1ctetus) (Ping timeout: 276 seconds)
2022-05-02 14:04:14 +0200lbseale(~quassel@user/ep1ctetus)
2022-05-02 14:06:44 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-05-02 14:12:00 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-05-02 14:12:19 +0200lbseale(~quassel@user/ep1ctetus) (Ping timeout: 256 seconds)
2022-05-02 14:13:34 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-05-02 14:17:26 +0200lbseale(~quassel@user/ep1ctetus)
2022-05-02 14:17:53 +0200joeyh(joeyh@kitenet.net)
2022-05-02 14:19:44 +0200Guest64(~Guest64@176.89.159.137)
2022-05-02 14:20:25 +0200acidjnk(~acidjnk@p200300d0c7033b32b80f7c05aa7bf5a6.dip0.t-ipconnect.de)
2022-05-02 14:20:32 +0200Guest64(~Guest64@176.89.159.137) (Client Quit)
2022-05-02 14:20:59 +0200xaotuk(~sasha@2a06:5b00:15fe:9b00::3)
2022-05-02 14:22:15 +0200Simon75(~Simon@2001:4ca0:0:f237:81a2:7019:2075:ce94) (Quit: Client closed)
2022-05-02 14:25:24 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-05-02 14:26:50 +0200oxide(~lambda@user/oxide)
2022-05-02 14:27:00 +0200lbseale(~quassel@user/ep1ctetus) (Ping timeout: 250 seconds)
2022-05-02 14:28:40 +0200gpncarl_(~gpncarl@120.244.220.74)
2022-05-02 14:29:24 +0200gpncarl(~gpncarl@120.244.220.74) (Ping timeout: 248 seconds)
2022-05-02 14:31:24 +0200AlexNoo_AlexNoo
2022-05-02 14:35:54 +0200lbseale(~quassel@user/ep1ctetus)
2022-05-02 14:36:56 +0200abastro(~abab9579@192.249.26.201) (Remote host closed the connection)
2022-05-02 14:37:28 +0200frost(~frost@user/frost)
2022-05-02 14:37:42 +0200abastro(~abab9579@192.249.26.201)
2022-05-02 14:41:08 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-05-02 14:42:13 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-05-02 14:42:39 +0200arjun(~arjun@user/arjun) (Remote host closed the connection)
2022-05-02 14:45:11 +0200abastro(~abab9579@192.249.26.201) (Remote host closed the connection)
2022-05-02 14:45:47 +0200abastro(~abab9579@192.249.26.201)
2022-05-02 14:47:05 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2022-05-02 14:47:14 +0200zebrag(~chris@user/zebrag)
2022-05-02 14:48:59 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-05-02 14:49:32 +0200coot(~coot@213.134.190.95)
2022-05-02 14:50:30 +0200perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 276 seconds)
2022-05-02 15:03:34 +0200mbuf(~Shakthi@171.61.201.63) (Quit: Leaving)
2022-05-02 15:03:59 +0200frost(~frost@user/frost) (Quit: Ping timeout (120 seconds))
2022-05-02 15:05:42 +0200abastro(~abab9579@192.249.26.201) (Remote host closed the connection)
2022-05-02 15:13:44 +0200gpncarl(~gpncarl@120.244.220.74)
2022-05-02 15:14:09 +0200gpncarl_(~gpncarl@120.244.220.74) (Ping timeout: 246 seconds)
2022-05-02 15:18:18 +0200epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-05-02 15:18:20 +0200acidjnk(~acidjnk@p200300d0c7033b32b80f7c05aa7bf5a6.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-05-02 15:19:45 +0200Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2022-05-02 15:22:07 +0200vicfred(~vicfred@user/vicfred)
2022-05-02 15:24:50 +0200jgeerds(~jgeerds@d53604b0.access.ecotel.net)
2022-05-02 15:26:24 +0200vicfred(~vicfred@user/vicfred) (Ping timeout: 246 seconds)
2022-05-02 15:27:39 +0200lbseale(~quassel@user/ep1ctetus) (Ping timeout: 260 seconds)
2022-05-02 15:29:40 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2022-05-02 15:34:58 +0200Zemyla(~ec2-user@ec2-54-80-174-150.compute-1.amazonaws.com)
2022-05-02 15:35:14 +0200lbseale(~quassel@user/ep1ctetus)
2022-05-02 15:41:09 +0200bogart(~bogart@167.224.152.242)
2022-05-02 15:42:08 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-05-02 15:44:15 +0200gpncarl(~gpncarl@120.244.220.74) (Ping timeout: 260 seconds)
2022-05-02 15:44:15 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-05-02 15:45:40 +0200bogart(~bogart@167.224.152.242) (Ping timeout: 248 seconds)
2022-05-02 15:46:08 +0200gpncarl(~gpncarl@120.244.220.74)
2022-05-02 15:47:45 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds)
2022-05-02 15:47:54 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-05-02 15:48:24 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-05-02 15:48:24 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-05-02 15:48:24 +0200wroathe(~wroathe@user/wroathe)
2022-05-02 15:48:55 +0200lbseale(~quassel@user/ep1ctetus) (Ping timeout: 260 seconds)
2022-05-02 15:49:22 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-05-02 15:49:30 +0200alp_(~alp@user/alp) (Ping timeout: 260 seconds)
2022-05-02 15:51:12 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-05-02 15:51:41 +0200Guest38(~Guest38@188.147.98.147.nat.umts.dynamic.t-mobile.pl)
2022-05-02 15:52:36 +0200Guest38(~Guest38@188.147.98.147.nat.umts.dynamic.t-mobile.pl) (Client Quit)
2022-05-02 15:55:22 +0200lbseale(~quassel@user/ep1ctetus)
2022-05-02 15:57:31 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-05-02 15:58:28 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-05-02 15:58:47 +0200abastro(~abab9579@192.249.26.201)
2022-05-02 16:00:42 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 246 seconds)
2022-05-02 16:01:08 +0200lbseale(~quassel@user/ep1ctetus) (Ping timeout: 248 seconds)
2022-05-02 16:01:48 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-05-02 16:02:48 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-05-02 16:02:49 +0200odnes(~odnes@5-203-165-110.pat.nym.cosmote.net) (Quit: Leaving)
2022-05-02 16:03:22 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-05-02 16:05:01 +0200zer0bitz(~zer0bitz@2001:2003:f444:8f00:b5b8:3c41:5641:4dcb) (Read error: Connection reset by peer)
2022-05-02 16:11:22 +0200lbseale(~quassel@user/ep1ctetus)
2022-05-02 16:13:38 +0200julian(~julian@20.83.116.49) (Killed (NickServ (GHOST command used by tos9_!~tos9@python/site-packages/Julian)))
2022-05-02 16:17:34 +0200Sgeo(~Sgeo@user/sgeo)
2022-05-02 16:20:09 +0200stevenxl(~stevenxl@c-73-72-2-81.hsd1.il.comcast.net)
2022-05-02 16:21:26 +0200xff0x_(~xff0x@om126234061065.16.openmobile.ne.jp)
2022-05-02 16:24:05 +0200KingoftheHomeles(~Kingofthe@89-233-195-143.cust.bredband2.com)
2022-05-02 16:26:14 +0200sander(~sander@user/sander) (Remote host closed the connection)
2022-05-02 16:28:33 +0200sander(~sander@user/sander)
2022-05-02 16:29:00 +0200shriekingnoise(~shrieking@201.231.16.156)
2022-05-02 16:30:54 +0200 <KingoftheHomeles> I'm having woes involving type families and equality constraints, some regression introduced in GHC 9.2: it's essentially the question of being able to deduce `R ~ e ': some_tail` from the constraint `(R ~ e ': F R)` where R, F are type families. The inability to do this has caused a library of mine to break:
2022-05-02 16:30:55 +0200 <KingoftheHomeles> https://github.com/KingoftheHomeless/in-other-words/issues/18 . The funny thing is that introducing the seemingly redundant constraint `r ~ R` allows deduction! I don't want to use that workaround though because introducing a type variable in the contexts my library is working in would require changing the API. My main question is: does anyone
2022-05-02 16:30:55 +0200 <KingoftheHomeles> recognize this bug?
2022-05-02 16:30:56 +0200romesrf(~romes@185.5.8.134)
2022-05-02 16:32:19 +0200 <KingoftheHomeles> Minimal reproducer:
2022-05-02 16:32:19 +0200 <KingoftheHomeles> ```
2022-05-02 16:32:20 +0200 <KingoftheHomeles> data Dict (c :: Constraint) where
2022-05-02 16:32:20 +0200 <KingoftheHomeles>   Dict :: c => Dict c
2022-05-02 16:32:21 +0200 <KingoftheHomeles> class Foo (e :: Type) (r :: [Type])
2022-05-02 16:32:21 +0200 <KingoftheHomeles> instance Foo e (e ': r)
2022-05-02 16:32:22 +0200 <KingoftheHomeles> type family R :: [Type]
2022-05-02 16:32:22 +0200 <KingoftheHomeles> type family F (a :: [Type]) :: [Type]
2022-05-02 16:32:23 +0200 <KingoftheHomeles> compiles :: (R ~ Int ': F R, r ~ R)
2022-05-02 16:32:23 +0200 <KingoftheHomeles>          => Dict (Foo Int R)
2022-05-02 16:32:24 +0200 <KingoftheHomeles> compiles = Dict
2022-05-02 16:32:24 +0200 <KingoftheHomeles> errors :: (R ~ Int ': F R)
2022-05-02 16:32:25 +0200 <KingoftheHomeles>        => Dict (Foo Int R)
2022-05-02 16:32:25 +0200 <KingoftheHomeles> errors = Dict
2022-05-02 16:32:26 +0200 <KingoftheHomeles> ```
2022-05-02 16:32:28 +0200 <KingoftheHomeles> Oh, no code blocks. Oh well.
2022-05-02 16:32:33 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2022-05-02 16:33:17 +0200 <[exa]> KingoftheHomeles: can you pastebin pls? (IRC really doesn't work well for anything more than ~3 lines, and people get frowny)
2022-05-02 16:33:28 +0200ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2022-05-02 16:33:40 +0200 <[exa]> btw if I get it right, it worked before 9.2?
2022-05-02 16:34:15 +0200 <KingoftheHomeles> Sure thing: https://pastebin.com/48BtadYw
2022-05-02 16:34:20 +0200 <KingoftheHomeles> Yes, it works with 9.0.2
2022-05-02 16:34:24 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-05-02 16:34:36 +0200 <KingoftheHomeles> _wow_ pastebin has garbage haskell highlighting
2022-05-02 16:35:02 +0200 <merijn> Use the one from topic :p
2022-05-02 16:35:03 +0200 <[exa]> it's not very happy about the ' magicks, yes
2022-05-02 16:35:23 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-05-02 16:35:23 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-05-02 16:35:35 +0200 <[exa]> KingoftheHomeles: btw you sure that r~R doesn't place any additional constraints on R?
2022-05-02 16:35:47 +0200 <KingoftheHomeles> I haven't tested the reproducer on 9.0.2 admittedly, it just exhibits the same kind of behavior as the constraints in my library.
2022-05-02 16:36:06 +0200 <KingoftheHomeles> Nnno, it shouldn't.
2022-05-02 16:36:26 +0200 <KingoftheHomeles> Notably, there is no PolyKinds involved, which I know the type checker can get tripped up on.
2022-05-02 16:43:21 +0200 <[exa]> ok wow
2022-05-02 16:43:55 +0200Pickchea(~private@user/pickchea)
2022-05-02 16:45:18 +0200cosimone(~user@2001:b07:ae5:db26:81ac:79ad:125a:4a01)
2022-05-02 16:46:28 +0200abastro(~abab9579@192.249.26.201) (Ping timeout: 248 seconds)
2022-05-02 16:47:34 +0200 <abastro[m]> ...
2022-05-02 16:48:04 +0200 <KingoftheHomeles> Can confirm the reproducer works on GHC 9.0.2
2022-05-02 16:48:05 +0200 <abastro[m]> Meh matrix bug.. :/
2022-05-02 16:50:35 +0200 <janus> KingoftheHomeles: default language is GHC2021 now, this means PolyKinds is enabled when you think it isn't
2022-05-02 16:50:41 +0200 <[exa]> KingoftheHomeles: maybe the out-of-scope note here would match the problem? https://downloads.haskell.org/ghc/latest/docs/html/users_guide/9.2.1-notes.html#language
2022-05-02 16:51:11 +0200 <KingoftheHomeles> janus PolyKinds being enabled or not doesn't matter in this case. All kinds involved are monomorphic.
2022-05-02 16:51:12 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-05-02 16:51:23 +0200abiss27(~abiss27@user/abiss)
2022-05-02 16:51:32 +0200 <KingoftheHomeles> Which is why I say it isn't involved.
2022-05-02 16:51:44 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-05-02 16:54:28 +0200stackdroid18(~stackdroi@user/stackdroid)
2022-05-02 16:54:31 +0200 <KingoftheHomeles> Remade the reproducer with complete imports and extensions on that better pastebin: https://paste.tomsmeding.com/Zcpe15sL
2022-05-02 16:54:34 +0200 <janus> ooh ok, i understand
2022-05-02 16:54:55 +0200 <janus> i thought you referred to PolyKinds as in the extension
2022-05-02 16:56:12 +0200 <KingoftheHomeles> Unless they addressed the type issues the type checker had with PolyKinds by the way I'm surprised it became enabled by default in GHC2021
2022-05-02 16:57:24 +0200 <abastro[m]> discharging to `r` hmm
2022-05-02 16:59:16 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2022-05-02 17:00:44 +0200 <KingoftheHomeles> [exa] I don't see how it would apply.
2022-05-02 17:01:49 +0200 <janus> KingoftheHomeles: i was not aware of those issues, do you know where i can read more?
2022-05-02 17:02:28 +0200worldhelloworld1(uid543174@id-543174.helmsley.irccloud.com)
2022-05-02 17:03:44 +0200abiss27(~abiss27@user/abiss) (Quit: hasta la vista... tchau!)
2022-05-02 17:03:52 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 250 seconds)
2022-05-02 17:04:11 +0200 <janus> KingoftheHomeles: it seems stupid, but have you tried giving kind signatures? because this resolved an issue in swagger2: https://github.com/GetShopTV/swagger2/pull/232/files
2022-05-02 17:04:16 +0200 <KingoftheHomeles> The PolyKinds issue? It's more something I've experience of encountering . You can get fun stuff like "couldn't deduce 'A b' from the context 'A b'" from it. Let me see if I can cook up an example real quick.
2022-05-02 17:04:46 +0200 <KingoftheHomeles> janus The reproducer uses kind signatures liberally, or are you talking about polykinds again?
2022-05-02 17:05:30 +0200 <janus> well i am just still worried about whether PolyKinds includes something that isn't actually strictly for poly-kinds
2022-05-02 17:05:46 +0200 <janus> but i guess since the Reproducer fails even with -XNoPolyKinds, that shouldn't be the case
2022-05-02 17:06:39 +0200 <janus> i am way outta my dept :O looking forward to reading the ghc bug report though :)
2022-05-02 17:07:11 +0200 <KingoftheHomeles> The PolyKinds issues I've had are indeed solved through kind signatures. My issue with it is that it gives rise to extremely weird error messages that give you no direction what to do, like  "couldn't deduce 'A b' from the context 'A b'". But yeah, those are not related to *this* issue.
2022-05-02 17:07:58 +0200 <janus> right, ok
2022-05-02 17:08:15 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds)
2022-05-02 17:09:46 +0200epolanski(uid312403@id-312403.helmsley.irccloud.com)
2022-05-02 17:12:05 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2022-05-02 17:14:12 +0200neceve(~quassel@2.29.116.221) (Ping timeout: 246 seconds)
2022-05-02 17:15:15 +0200gpncarl(~gpncarl@120.244.220.74) (Ping timeout: 260 seconds)
2022-05-02 17:15:33 +0200Patternmaster(~georg@li1192-118.members.linode.com) (Changing host)
2022-05-02 17:15:33 +0200Patternmaster(~georg@user/Patternmaster)
2022-05-02 17:15:39 +0200gpncarl(~gpncarl@120.244.220.74)
2022-05-02 17:16:45 +0200xkuru(~xkuru@user/xkuru)
2022-05-02 17:17:45 +0200xkuru(~xkuru@user/xkuru) (Remote host closed the connection)
2022-05-02 17:18:09 +0200xkuru(~xkuru@user/xkuru)
2022-05-02 17:20:04 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-05-02 17:22:59 +0200hololeap(~hololeap@user/hololeap)
2022-05-02 17:24:02 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (Quit: Lost terminal)
2022-05-02 17:24:21 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 246 seconds)
2022-05-02 17:25:34 +0200 <abastro[m]> Instead of monadic effect handling, there could have been categorical effect handling right?
2022-05-02 17:26:32 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2022-05-02 17:26:50 +0200 <dolio> What does that mean?
2022-05-02 17:26:58 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:aa56:2922:80a8:95ed) (Quit: WeeChat 2.8)
2022-05-02 17:26:58 +0200coot(~coot@213.134.190.95)
2022-05-02 17:28:44 +0200 <abastro[m]> Using Kleisli category instead of Monad
2022-05-02 17:30:03 +0200alp_(~alp@user/alp)
2022-05-02 17:31:38 +0200SquareSqaure
2022-05-02 17:32:18 +0200 <dolio> That doesn't seem like it significantly changes anything.
2022-05-02 17:32:34 +0200 <c_wraith> it doesn't change anything, because we have <=<
2022-05-02 17:33:40 +0200 <abastro[m]> Well, by using general categories one could generalize it for many stuffs
2022-05-02 17:34:11 +0200 <abastro[m]> Alike arrows without `arr`
2022-05-02 17:35:23 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-05-02 17:36:00 +0200yauhsien(~yauhsien@61-231-62-54.dynamic-ip.hinet.net)
2022-05-02 17:37:13 +0200 <abastro[m]> `{ from :: a -> IO b, to :: b -> IO a }` could be one such category
2022-05-02 17:38:14 +0200 <c_wraith> If you make categories the primary interface, you do have the issue that you're basically requiring everything to be done point-free
2022-05-02 17:38:27 +0200Guest38(~Guest38@188.147.101.242.nat.umts.dynamic.t-mobile.pl)
2022-05-02 17:39:04 +0200Guest38(~Guest38@188.147.101.242.nat.umts.dynamic.t-mobile.pl) ()
2022-05-02 17:41:06 +0200ec(~ec@gateway/tor-sasl/ec)
2022-05-02 17:41:12 +0200 <abastro[m]> I think one might introduce points as syntax sugar/convenience feature
2022-05-02 17:41:30 +0200Pickchea(~private@user/pickchea) (Ping timeout: 246 seconds)
2022-05-02 17:41:47 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-05-02 17:42:00 +0200anomal(~anomal@87.227.196.109) (Remote host closed the connection)
2022-05-02 17:42:17 +0200 <c_wraith> depending on how you do that, you're either inventing something like proc notation, or restricting your interface to be only Kleisli categories
2022-05-02 17:42:30 +0200 <c_wraith> and proc notation is a nightmare
2022-05-02 17:42:59 +0200cdman(~dcm@user/dmc/x-4369397) (Quit: Leaving)
2022-05-02 17:43:27 +0200 <dolio> There's no point in introducing such syntax for arbitrary categories, because they have almost no structure.
2022-05-02 17:43:42 +0200 <dolio> All there is is composition of arrows.
2022-05-02 17:43:53 +0200dvdrw(~dvdrw@user/dvdrw)
2022-05-02 17:44:15 +0200 <c_wraith> like, at least Kleisli arrows guarantee you've got a function of some sort
2022-05-02 17:44:16 +0200 <abastro[m]> Oh, arbitrary category might indeed be too simple
2022-05-02 17:44:43 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-05-02 17:44:54 +0200 <abastro[m]> I think e.g. Choice arrow and Product arrow exists for reason
2022-05-02 17:45:17 +0200 <KingoftheHomeles> Created the GHC issue: https://gitlab.haskell.org/ghc/ghc/-/issues/21473
2022-05-02 17:45:17 +0200 <c_wraith> it really does seem like you're trying to reinvent Arrow and proc notation, and there's a reason that those are nearly unused
2022-05-02 17:45:21 +0200econo(uid147250@user/econo)
2022-05-02 17:45:49 +0200 <abastro[m]> Arrow notation is nightmare, isn't it
2022-05-02 17:46:06 +0200 <abastro[m]> I think one could do state bookkeeping tho
2022-05-02 17:46:07 +0200 <geekosaur> the notation is fine, arr is the nightmare
2022-05-02 17:46:29 +0200 <abastro[m]> Oh, is the notation fine?
2022-05-02 17:47:07 +0200 <geekosaur> some people want cdhanges to it, but my understanding is that's mostly generalizing it
2022-05-02 17:47:13 +0200 <geekosaur> (talk to Cale)
2022-05-02 17:47:39 +0200geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca)
2022-05-02 17:47:45 +0200 <geekosaur> but having arr as a "backdoor" kills its usefulness
2022-05-02 17:48:02 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-05-02 17:49:30 +0200 <abastro[m]> Indeed, I can not think of good arrow usage with `arr`
2022-05-02 17:49:45 +0200 <abastro[m]> If you have `arr`, it would already be too powerful
2022-05-02 17:49:59 +0200benin(~benin@183.82.204.110) (Quit: The Lounge - https://thelounge.chat)
2022-05-02 17:50:17 +0200 <geekosaur> actually arr weakens it. arr is most uesful when you can inspect an arrow, but arr injects black boxes
2022-05-02 17:50:30 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-05-02 17:51:02 +0200chele(~chele@user/chele) (Remote host closed the connection)
2022-05-02 17:51:13 +0200 <abastro[m]> Right, I mean it depends on perspective
2022-05-02 17:51:57 +0200 <abastro[m]> Too powerful for users, too weak for implementors (hard to implement)
2022-05-02 17:52:15 +0200cosimone(~user@2001:b07:ae5:db26:81ac:79ad:125a:4a01) (Remote host closed the connection)
2022-05-02 17:52:43 +0200KingoftheHomeles(~Kingofthe@89-233-195-143.cust.bredband2.com) (Quit: Client closed)
2022-05-02 17:53:44 +0200xff0x_(~xff0x@om126234061065.16.openmobile.ne.jp) (Read error: Connection reset by peer)
2022-05-02 17:55:52 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Read error: Connection reset by peer)
2022-05-02 17:56:22 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-05-02 17:57:01 +0200 <albet70> what's an "arrow"?
2022-05-02 17:58:22 +0200 <geekosaur> which part of that conversation do you mean? Arrows in the Haskell sense are defined by Control.Arrow
2022-05-02 17:58:37 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-05-02 17:58:50 +0200 <geekosaur> there was also a mention of categorical arrows, which… being categorical, are somewhat difficult to characterize :)
2022-05-02 17:59:27 +0200jakalx(~jakalx@base.jakalx.net)
2022-05-02 17:59:32 +0200 <albet70> Control.Arrow
2022-05-02 17:59:53 +0200 <albet70> what's its purpose?
2022-05-02 18:00:18 +0200 <geekosaur> you could say it's an abstraction looking for a purpose :)
2022-05-02 18:00:49 +0200 <geekosaur> but as designed… like c_wraith said above, there's a reason it's nearly unused
2022-05-02 18:01:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-05-02 18:01:05 +0200 <Rembane> It has been looking for a very long time now, and every time there seems to be a good fit something else that actually works well shows up.
2022-05-02 18:03:22 +0200 <Cale> abastro[m], geekosaur: It's not so much the existence of arr, but the reliance on it in order to route results around between computations which makes it so bad. If you add in some other bits, then arr can *mostly* be avoided (except when you really do want to do some arbitrary computation), and that tends to be good enough.
2022-05-02 18:04:20 +0200 <Cale> Though, it really does belong in its own class. The rest of the stuff in Arrow is basically the setup for a symmetric monoidal category (with (,) as the product on objects).
2022-05-02 18:04:31 +0200 <geekosaur> ^ albet70 here's who you really want to talk to if you want to know about Arrows
2022-05-02 18:04:35 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-05-02 18:04:49 +0200 <Cale> There are better realizations of that idea on Hackage now, though the proc/do syntax never got updated to work with any of them.
2022-05-02 18:06:21 +0200Sinbad(~Sinbad@user/sinbad)
2022-05-02 18:06:27 +0200tromp(~textual@77.249.230.40)
2022-05-02 18:09:02 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-05-02 18:10:06 +0200 <abastro[m]> Is bookkeeping intermediate "state" an option
2022-05-02 18:10:12 +0200raym(~raym@user/raym) (Ping timeout: 248 seconds)
2022-05-02 18:11:09 +0200 <Cale> You mean in the same sense as the State monad?
2022-05-02 18:11:16 +0200 <Cale> (then yes)
2022-05-02 18:11:26 +0200mvk(~mvk@2607:fea8:5ce3:8500::aa1d)
2022-05-02 18:11:42 +0200 <abastro[m]> Similar as State monad, yea
2022-05-02 18:11:59 +0200 <abastro[m]> But instead it is categorical
2022-05-02 18:12:01 +0200 <Cale> Though, I would want Arrow to have laws which would forbid that instance :)
2022-05-02 18:12:19 +0200 <Cale> (but it explicitly doesn't)
2022-05-02 18:12:53 +0200 <abastro[m]> Like composing... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/8ede47d8f4f464ddccbcac3cea6c141e0fe0…)
2022-05-02 18:12:57 +0200 <Cale> Specifically, it's fairly essential for being able to reason about what's going on in an Arrow computation that (f >>> g) *** (h >>> k) = (f *** h) >>> (g *** k)
2022-05-02 18:13:02 +0200 <abastro[m]> Each `si` serves as an intermediate state
2022-05-02 18:13:33 +0200 <Cale> newtype StateA s a b = StateA { runStateA :: (s,a) -> (s,b) }
2022-05-02 18:13:48 +0200 <abastro[m]> Oh I do not mean StateA
2022-05-02 18:14:12 +0200 <abastro[m]> (Tho I guess it is sad how StateA is unlawful)
2022-05-02 18:15:39 +0200 <abastro[m]> I was thinking of how to use categories more ergonomically
2022-05-02 18:15:48 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 250 seconds)
2022-05-02 18:17:32 +0200arjun(~arjun@user/arjun)
2022-05-02 18:18:32 +0200 <Cale> Oh, yeah... the best experiment I've seen in that direction is Conal's "concat"
2022-05-02 18:18:57 +0200 <Cale> https://github.com/conal/concat
2022-05-02 18:19:18 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 246 seconds)
2022-05-02 18:19:48 +0200nut(~haskellfi@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.5)
2022-05-02 18:20:21 +0200 <Cale> Where you can basically write Haskell code (lambdas, etc.) and have it translated into code that works in an arbitrary category that satisfies a bunch of constraints that depend on what features you used.
2022-05-02 18:20:32 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2022-05-02 18:23:54 +0200 <abastro[m]> Hmm, sounds quite ambitious
2022-05-02 18:24:24 +0200 <abastro[m]> I wonder if it would work well
2022-05-02 18:24:43 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-05-02 18:25:02 +0200 <Cale> Yeah, I wouldn't be comfortable trying to put it into production yet, but the idea seems quite solid.
2022-05-02 18:25:19 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-05-02 18:25:54 +0200 <EvanR> you got your code, which is simply a sentence in a language. Then you got your interpretation. In programming you don't immediately learn that they are different xD
2022-05-02 18:26:09 +0200 <EvanR> and can even be mixed and matched
2022-05-02 18:27:10 +0200eternalforms(~obsrwr@46.101.168.131)
2022-05-02 18:27:47 +0200jgeerds(~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 240 seconds)
2022-05-02 18:28:41 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 248 seconds)
2022-05-02 18:30:50 +0200raym(~raym@user/raym)
2022-05-02 18:31:10 +0200MajorBiscuit(~MajorBisc@145.94.235.5) (Quit: WeeChat 3.4)
2022-05-02 18:32:24 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-05-02 18:32:25 +0200Sinbad(~Sinbad@user/sinbad) (Ping timeout: 256 seconds)
2022-05-02 18:34:45 +0200coot(~coot@213.134.190.95)
2022-05-02 18:38:45 +0200neceve(~quassel@2.29.116.221)
2022-05-02 18:39:25 +0200x_kuru(~xkuru@user/xkuru)
2022-05-02 18:42:45 +0200xkuru(~xkuru@user/xkuru) (Ping timeout: 260 seconds)
2022-05-02 18:43:11 +0200alp_(~alp@user/alp) (Ping timeout: 260 seconds)
2022-05-02 18:47:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-05-02 18:47:25 +0200Sinbad(~Sinbad@user/sinbad)
2022-05-02 18:47:34 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2022-05-02 18:51:47 +0200x_kuru(~xkuru@user/xkuru) (Ping timeout: 240 seconds)
2022-05-02 18:52:50 +0200Tuplanolla(~Tuplanoll@91-159-68-39.elisa-laajakaista.fi)
2022-05-02 18:56:16 +0200 <Bulby[m]> how do you debug where an app crashed
2022-05-02 18:56:52 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-05-02 18:58:36 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 260 seconds)
2022-05-02 19:00:18 +0200mvk(~mvk@2607:fea8:5ce3:8500::aa1d) (Ping timeout: 260 seconds)
2022-05-02 19:02:03 +0200 <Bulby[m]> i see the people on discord use "dumpcore"
2022-05-02 19:05:34 +0200werneta(~werneta@137.79.197.49)
2022-05-02 19:05:46 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-05-02 19:08:26 +0200 <EvanR> in its purest form, you read the message printed out during the crash
2022-05-02 19:08:33 +0200 <EvanR> if any
2022-05-02 19:08:44 +0200 <Bulby[m]> there is no message
2022-05-02 19:08:59 +0200 <EvanR> my sympathies
2022-05-02 19:12:33 +0200 <EvanR> as a pessimistic programmer I'm hyper paranoid about stuff like that, so any place I intentionally cause a crash, I put a message.
2022-05-02 19:12:59 +0200 <Bulby[m]> right
2022-05-02 19:13:00 +0200Bulby[m]sent a code block: https://libera.ems.host/_matrix/media/r0/download/libera.chat/90a36f3a354783143c8487b37d9d7207778c…
2022-05-02 19:13:18 +0200 <EvanR> for code I didn't write, a review what kind of exceptions it can throw, or even check for flagrant non totalities
2022-05-02 19:13:19 +0200 <Bulby[m]> i should use pactl, not pamixer
2022-05-02 19:17:58 +0200 <Bulby[m]> are there regexs for haskell
2022-05-02 19:18:10 +0200 <Bulby[m]> output of pactl is not nice
2022-05-02 19:18:29 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-05-02 19:18:29 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-05-02 19:18:29 +0200wroathe(~wroathe@user/wroathe)
2022-05-02 19:18:37 +0200 <Rembane> Bulby[m]: There are regexen for Haskell, but we prefer parser combinators
2022-05-02 19:19:00 +0200 <Bulby[m]> that's what I figured
2022-05-02 19:19:11 +0200 <dminuoso> If you're curious, the least offending regexp library I have found so far is pcre-heavy
2022-05-02 19:19:47 +0200 <dminuoso> While parser combinators are certainly far more robust and feature rich, sometimes its convenient to just have a one-liner do "the morally right thing"
2022-05-02 19:19:51 +0200 <Bulby[m]> well i already know how to write parser combinator stuff
2022-05-02 19:20:08 +0200 <Bulby[m]> the morally right thing?
2022-05-02 19:20:46 +0200 <gabriel_sevecek> Hey, I'm experimenting with twain and I'm wondering what do you haskellers use for auto rebuild of the dev server?
2022-05-02 19:21:11 +0200 <dminuoso> Well, it's certainly convenient to quickly cook up a regular expression. It takes a few seconds to write, might have some rare-or-will-never-trigger edge case, will probably perform not as nicely, backtracking introduces certain DoS angles - but honestly most of the time these are just philosophical issues.
2022-05-02 19:21:20 +0200x88x88x(~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) (Remote host closed the connection)
2022-05-02 19:21:41 +0200 <dminuoso> gabriel_sevecek: You can trivially use ghcid to that effect.
2022-05-02 19:21:44 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-05-02 19:22:02 +0200 <dminuoso> Note, you will have to go a bit further than the default (which just compiles it with ghci)
2022-05-02 19:22:59 +0200 <dminuoso> I think this is one of the things that prevents adoption of Haskell - the lack of general tools to do simple and common tasks easily.
2022-05-02 19:23:09 +0200 <gabriel_sevecek> I tried 'ghcid --command "cabal run thething"', that did not work
2022-05-02 19:23:22 +0200 <gabriel_sevecek> But I will investigate more
2022-05-02 19:23:25 +0200 <gabriel_sevecek> Thanks dminuoso
2022-05-02 19:23:30 +0200 <dminuoso> gabriel_sevecek: https://binarin.ru/post/auto-reload-threepenny-gui/
2022-05-02 19:23:34 +0200 <dminuoso> Might give you some helpful pointers
2022-05-02 19:24:23 +0200 <gabriel_sevecek> Cool
2022-05-02 19:25:51 +0200 <dminuoso> In Python, you are exposed to simple tools to just do data crunching. Cooking up a program to take some text encoded data, and extract/process it, takes way less effort than in Haskell. I mean yes, to some degree it's not scalable and more brittle
2022-05-02 19:25:58 +0200 <dminuoso> But sometimes that's perfectly fine
2022-05-02 19:27:38 +0200x88x88x(~x88x88x@149.28.53.172)
2022-05-02 19:32:24 +0200tromp(~textual@77.249.230.40) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-05-02 19:35:15 +0200 <Bulby[m]> solution to that issue: don't change code, just install pamixer 😄
2022-05-02 19:35:50 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-05-02 19:36:05 +0200 <Bulby[m]> wait my wireless isn't down
2022-05-02 19:36:11 +0200ccntrq(~Thunderbi@2a01:e34:eccb:b060:2d0b:56d2:55c6:6429) (Remote host closed the connection)
2022-05-02 19:36:45 +0200pgib(~textual@173.38.117.66)
2022-05-02 19:39:06 +0200 <gabriel_sevecek> dminuoso: Was pretty easy with the link you've posted, thanks again
2022-05-02 19:45:36 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 276 seconds)
2022-05-02 19:49:36 +0200Frinasa[m]Frikraaa[m]
2022-05-02 19:49:37 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2022-05-02 19:51:38 +0200worldhelloworld1(uid543174@id-543174.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-05-02 19:51:39 +0200acidjnk(~acidjnk@p200300d0c7033b32e85f61ca0273fe05.dip0.t-ipconnect.de)
2022-05-02 19:53:11 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-05-02 19:53:32 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-05-02 19:55:34 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-05-02 19:58:00 +0200irfan(~irfan@user/irfan) (Quit: leaving)
2022-05-02 19:58:21 +0200hololeap(~hololeap@user/hololeap)
2022-05-02 19:59:47 +0200 <danso> is there a conventional way to get a 3-bit integer, like a data type (an enum) with 8 constructors?
2022-05-02 20:00:42 +0200 <dminuoso> You can use just that, a data type with 8 constructors.
2022-05-02 20:01:12 +0200 <dminuoso> And that's the idiomatic way as well.
2022-05-02 20:01:30 +0200 <dminuoso> Or a newtype hidden Word8 with smart constructors
2022-05-02 20:01:38 +0200 <dminuoso> Depends a bit on what you want to do with it
2022-05-02 20:02:37 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-05-02 20:04:47 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 256 seconds)
2022-05-02 20:07:10 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2022-05-02 20:07:28 +0200coot(~coot@213.134.190.95)
2022-05-02 20:07:51 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-05-02 20:08:17 +0200Sinbad(~Sinbad@user/sinbad) (Quit: WeeChat 3.5)
2022-05-02 20:13:20 +0200jgeerds(~jgeerds@d53604b0.access.ecotel.net)
2022-05-02 20:17:05 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-05-02 20:18:07 +0200 <EvanR> also, Three Bool xD
2022-05-02 20:18:21 +0200alp_(~alp@user/alp)
2022-05-02 20:19:38 +0200Pickchea(~private@user/pickchea)
2022-05-02 20:19:46 +0200 <EvanR> also Maybe (Maybe (Maybe (Maybe (Maybe (Maybe (Maybe ()))))))
2022-05-02 20:20:04 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-05-02 20:20:08 +0200 <monochrom> Unfortunately, for now 3 bools take up 8*3 bytes.
2022-05-02 20:20:36 +0200 <exarkun> at least it's not 28*3 bytes
2022-05-02 20:20:38 +0200 <EvanR> that's an improvement
2022-05-02 20:21:07 +0200 <EvanR> GHC 10 will make 3 bools = 3 bits
2022-05-02 20:21:14 +0200 <EvanR> GHC 11 will make 3 bools = 2 bits
2022-05-02 20:21:28 +0200 <exarkun> Can't wait for GHC 12 then
2022-05-02 20:21:34 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
2022-05-02 20:21:43 +0200 <monochrom> onoes
2022-05-02 20:22:08 +0200 <monochrom> GHC 12 will do quantum computing by the holographic principle, I guess.
2022-05-02 20:22:28 +0200 <monochrom> And GHC 13 will prove P=NP.
2022-05-02 20:22:28 +0200 <EvanR> compression tech can't go beyond 2 bits, sorry
2022-05-02 20:22:39 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 276 seconds)
2022-05-02 20:22:39 +0200 <exarkun> _Current_ compression tech, EvanR
2022-05-02 20:22:58 +0200 <monochrom> Yeah understood, it stops at the holographic principle >:)
2022-05-02 20:23:19 +0200 <EvanR> GHC 13 runs on a black hole
2022-05-02 20:23:37 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-05-02 20:24:51 +0200hololeap(~hololeap@user/hololeap)
2022-05-02 20:25:54 +0200 <monochrom> 3bools1bit --- like 3blue1brown but computer science >:)
2022-05-02 20:27:14 +0200 <monochrom> "here is a visual analogy of the curry-howard isomorphism"
2022-05-02 20:30:42 +0200 <Bulby[m]> 3 bool?
2022-05-02 20:30:52 +0200 <Bulby[m]> Three Bool
2022-05-02 20:31:36 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2022-05-02 20:33:13 +0200mvk(~mvk@2607:fea8:5ce3:8500::aa1d)
2022-05-02 20:40:50 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-05-02 20:45:29 +0200arjun(~arjun@user/arjun) (Remote host closed the connection)
2022-05-02 20:52:21 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-05-02 20:58:20 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-05-02 20:58:50 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-05-02 21:00:17 +0200neceve(~quassel@2.29.116.221) (Remote host closed the connection)
2022-05-02 21:02:16 +0200jakalx(~jakalx@base.jakalx.net) ()
2022-05-02 21:03:56 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-05-02 21:04:35 +0200jakalx(~jakalx@base.jakalx.net)
2022-05-02 21:11:34 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-05-02 21:14:23 +0200hololeap(~hololeap@user/hololeap)
2022-05-02 21:14:51 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-05-02 21:17:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-05-02 21:18:51 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-05-02 21:19:28 +0200julian(~julian@20.83.116.49)
2022-05-02 21:19:54 +0200 <seydar> decoding images seems... kinda tough
2022-05-02 21:22:04 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-05-02 21:22:53 +0200 <seydar> i'm gonna use the juicy pixels library -- is that the crowd favorite?
2022-05-02 21:25:00 +0200 <EvanR> juicy pixels is great
2022-05-02 21:25:07 +0200gpncarl(~gpncarl@120.244.220.74) (Ping timeout: 260 seconds)
2022-05-02 21:25:37 +0200hololeap(~hololeap@user/hololeap)
2022-05-02 21:25:53 +0200gpncarl(~gpncarl@120.244.220.74)
2022-05-02 21:26:32 +0200 <EvanR> it hits a sweet spot where the type system is guiding you without being over the top
2022-05-02 21:27:36 +0200 <Bulby[m]> I LOVE THE TYPE SYSTEM
2022-05-02 21:28:35 +0200janus(janus@anubis.0x90.dk) ()
2022-05-02 21:30:21 +0200gpncarl(~gpncarl@120.244.220.74) (Ping timeout: 256 seconds)
2022-05-02 21:34:15 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-05-02 21:34:37 +0200 <seydar> i suppose i shouldn't be shocked at how complex it is to read an image
2022-05-02 21:34:44 +0200 <seydar> these formats are not for the faint of heart
2022-05-02 21:35:02 +0200 <dolio> bmp is probably easy, right?
2022-05-02 21:40:20 +0200 <dolio> Oh no, ppm is the easy one.
2022-05-02 21:41:24 +0200ss4(~wootehfoo@user/wootehfoot)
2022-05-02 21:41:25 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-05-02 21:42:12 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-05-02 21:42:14 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2022-05-02 21:42:39 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 246 seconds)
2022-05-02 21:42:39 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-05-02 21:42:58 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Remote host closed the connection)
2022-05-02 21:43:06 +0200metabulation(~wootehfoo@user/wootehfoot)
2022-05-02 21:43:52 +0200 <EvanR> truevision targa for life xD
2022-05-02 21:44:50 +0200 <dolio> That one looks more complicated.
2022-05-02 21:45:35 +0200 <seydar> I'm trying to do a DCT on an image (implementing blurhash as an exercise), but i'm kinda... stuck, type-wise. I get `Either String DynamicImage`, but I'm unable to figure out how to get a DynamicImage into a CArray for use with the FFT library
2022-05-02 21:45:55 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2022-05-02 21:46:11 +0200 <EvanR> case analysis on DynamicImage to recover the true data, which you may find to be impossible because it's not in your expected format
2022-05-02 21:46:41 +0200 <EvanR> react accordingly
2022-05-02 21:47:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-05-02 21:47:05 +0200ss4(~wootehfoo@user/wootehfoot) (Ping timeout: 260 seconds)
2022-05-02 21:47:23 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-05-02 21:48:57 +0200 <EvanR> once you have the vector of encoded pixels you'll probably have to copy them into the structure needed by FFT, types unlikely to exactly match
2022-05-02 21:51:12 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-05-02 21:56:56 +0200 <seydar> EvanR: ah! i found convertRGBA16! this feels like step one
2022-05-02 21:57:21 +0200 <seydar> that gets me out of DyanmicImage, and hopefully i can use the `toListOf imagePixels` curried function
2022-05-02 21:57:46 +0200 <EvanR> conversion? I guess
2022-05-02 21:57:58 +0200 <EvanR> list? I'm pretty skeptical
2022-05-02 21:58:35 +0200 <EvanR> like I said the basic way to consume a DynamicImage is with case analysis
2022-05-02 21:58:35 +0200anomal(~anomal@87.227.196.109)
2022-05-02 21:58:47 +0200 <seydar> https://github.com/phadej/JuicyPixels-scale-dct/blob/6ea69ac4baf4777f1129dbb7e5a7d8e3739dae4e/src/…
2022-05-02 22:00:23 +0200dsrt^(~dsrt@50.227.69.228) (Ping timeout: 256 seconds)
2022-05-02 22:00:38 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-05-02 22:01:57 +0200 <danso> i'm using Parsec on a ByteString stream. is it weird that the Stream instance reads the bytestring Char-by-Char instead of Word8-by-Word8 ? i feel like you might get surprising results with binary data.
2022-05-02 22:02:34 +0200 <danso> for now i'm changing my Stream type to [Word8] and passing in a `ByteString.unpack`ed version instead
2022-05-02 22:02:48 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-05-02 22:05:00 +0200alp_(~alp@user/alp) (Ping timeout: 240 seconds)
2022-05-02 22:05:15 +0200 <EvanR> it just depends what reading Chars from a bytestring means
2022-05-02 22:05:56 +0200 <EvanR> if it's binary data, it sounds wrong regardless xD
2022-05-02 22:06:12 +0200 <tomsmeding> danso: have you considered using attoparsec
2022-05-02 22:07:04 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-05-02 22:07:14 +0200 <tomsmeding> it's like parsec, but on bytestrings :p
2022-05-02 22:08:48 +0200 <seydar> EvanR: okay turns out `toListOf` is a function from that file i linked that is based on lenses and i could not possibly derive it myself
2022-05-02 22:09:28 +0200deadmarshal_(~deadmarsh@95.38.117.99) (Ping timeout: 260 seconds)
2022-05-02 22:10:18 +0200hololeap(~hololeap@user/hololeap)
2022-05-02 22:11:16 +0200alp_(~alp@user/alp)
2022-05-02 22:12:06 +0200 <danso> i will now tomsmeding, thanks. i have heard of it before but didn't realize it was basically made for my use-case
2022-05-02 22:13:23 +0200 <EvanR> seydar, the payloads of the various DynamicImage results contain vectors, which are arrays of pixels. Which sounds like what you need
2022-05-02 22:13:34 +0200 <EvanR> as well as image width and height
2022-05-02 22:13:42 +0200yauhsien(~yauhsien@61-231-62-54.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-05-02 22:13:48 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-05-02 22:14:29 +0200yauhsien(~yauhsien@61-231-62-54.dynamic-ip.hinet.net)
2022-05-02 22:16:05 +0200 <seydar> EvanR: yep yep, seeing that now. granted, they're packed lines, so i'm trying to decide the best way to grapple with them. given that i'm ultimately seeking a CArray, and I don't want to use the lens stuff that the sample code is using, i'm looking for more intuitive and less efficient ways to get the pixels into a CArray
2022-05-02 22:16:20 +0200anomal(~anomal@87.227.196.109) (Ping timeout: 252 seconds)
2022-05-02 22:16:51 +0200 <EvanR> what's a CArray
2022-05-02 22:17:03 +0200 <EvanR> other than the obvious
2022-05-02 22:18:18 +0200epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-05-02 22:18:29 +0200 <tomsmeding> seydar: can't you use pixelAt https://hackage.haskell.org/package/JuicyPixels-3.3.7/docs/Codec-Picture.html#v:pixelAt
2022-05-02 22:18:57 +0200 <tomsmeding> convertRGB16 gives you an 'Image PixelRGB16'
2022-05-02 22:18:58 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-05-02 22:19:00 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 276 seconds)
2022-05-02 22:19:15 +0200yauhsien(~yauhsien@61-231-62-54.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2022-05-02 22:20:40 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-05-02 22:21:03 +0200 <tomsmeding> and PixelRGB16 implements that Pixel class
2022-05-02 22:21:06 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-05-02 22:21:44 +0200 <EvanR> or just convert the array directly
2022-05-02 22:21:54 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-05-02 22:22:08 +0200 <EvanR> whatever CArray is, it probably has a thing to load raw data
2022-05-02 22:22:29 +0200 <tomsmeding> EvanR: I think seydar means 'Ptr Char'
2022-05-02 22:22:49 +0200 <EvanR> no no nonoono
2022-05-02 22:23:22 +0200 <tomsmeding> ah no it seems to be this thing https://hackage.haskell.org/package/carray-0.1.6.8/docs/Data-Array-CArray-Base.html#t:CArray
2022-05-02 22:23:39 +0200 <EvanR> nicer
2022-05-02 22:23:49 +0200 <tomsmeding> so 'ForeignPtr (Complex r)', not too far off :p
2022-05-02 22:23:54 +0200 <tomsmeding> https://hackage.haskell.org/package/fft-0.1.8.7/docs/Math-FFT.html
2022-05-02 22:24:38 +0200 <EvanR> fastest fourier transform in the west. China has something better?
2022-05-02 22:25:42 +0200 <tomsmeding> presumably what seydar wants is to undo the row padding that juicypixels probably adds
2022-05-02 22:25:59 +0200 <tomsmeding> but 'fft' is not super clear on its input format, and I'm too lazy to look up the fftw docs again :p
2022-05-02 22:26:23 +0200 <seydar> EvanR, tomsmeding: i'm a simple man: just trying to use this https://hackage.haskell.org/package/fft-0.1.8.7/docs/Math-FFT.html
2022-05-02 22:26:37 +0200 <tomsmeding> seydar: so I guessed correctly
2022-05-02 22:27:56 +0200 <seydar> tomsmeding: whoops, missed it. yes, you did
2022-05-02 22:28:14 +0200segfaultfizzbuzz(~segfaultf@135-180-12-202.fiber.dynamic.sonic.net)
2022-05-02 22:28:48 +0200 <segfaultfizzbuzz> okay, theory-ish question here:
2022-05-02 22:28:48 +0200 <EvanR> I have not noticed juicy pixels adding any row padding
2022-05-02 22:29:05 +0200 <EvanR> if anything it would unadd row padding if that is what the file format uses
2022-05-02 22:29:10 +0200 <segfaultfizzbuzz> is it "hard" to (automatically) prove the equivalence of functions?
2022-05-02 22:29:11 +0200 <seydar> "Internally pixel data is stored as consecutively packed lines from top to bottom, scanned from left to right within individual lines, from first to last color component within each pixel."
2022-05-02 22:29:23 +0200dsrt^(~dsrt@50.227.69.228)
2022-05-02 22:30:05 +0200 <EvanR> it's a 1D array expressing a 2D grid of pixels
2022-05-02 22:30:06 +0200 <segfaultfizzbuzz> so i have function f, and somebody hands me function g. the question is, can f and g be interchanged. if you like we can talk about pure functions to keep things simpler to begin with
2022-05-02 22:30:23 +0200 <tomsmeding> seydar: looking at the definition of pixelAt for PixelRGBA16 (and PixelRGB16, too) it seems the pixel data is just packed tightly as one would expect: row-major order, two bytes r, two bytes g, two bytes b, two bytes a, next pixel etc.
2022-05-02 22:30:24 +0200 <seydar> okay, so I was afraid of the word "packed" for no good reason
2022-05-02 22:30:49 +0200 <tomsmeding> so I mean you could hand-write the conversion to Complex if you don't like to use pixelAt for some reason
2022-05-02 22:31:26 +0200 <tomsmeding> segfaultfizzbuzz: in general impossible, if we may assume nothing about the domain and codomain types of the functions
2022-05-02 22:31:57 +0200 <dminuoso> segfaultfizzbuzz: Intrinsic or extrinsic equivalence?
2022-05-02 22:31:58 +0200 <tomsmeding> in fact the 'functional extensionality' axiom describes the ability to do just that, and it's usually _not_ assumed (but sometimes is)
2022-05-02 22:32:04 +0200 <tomsmeding> but yes that
2022-05-02 22:32:06 +0200 <dminuoso> The former is trivial, but not necessarily useful
2022-05-02 22:32:19 +0200 <segfaultfizzbuzz> i don't know the difference between intrinsic and extrinsic equivalence
2022-05-02 22:32:27 +0200 <EvanR> prove equivalence... decide equivalence... ?
2022-05-02 22:32:28 +0200 <tomsmeding> black boxes or do you have the implementation
2022-05-02 22:32:35 +0200 <dminuoso> intrinsic equivalence is about the internals, whether the implementation is the same.
2022-05-02 22:33:00 +0200 <segfaultfizzbuzz> i suppose i am interested in both questions
2022-05-02 22:33:24 +0200 <EvanR> if someone hands you two concrete functions you maybe can prove something, another question is if a program could take two functions as input and spit out a proof
2022-05-02 22:33:34 +0200 <dminuoso> extrinsitic equivalence can of course be tested, in case of a finite domain this is easy, in case of an infinite domain you can only hope to find a counter example.
2022-05-02 22:33:42 +0200x88x88x(~x88x88x@149.28.53.172) (Remote host closed the connection)
2022-05-02 22:33:46 +0200 <tomsmeding> I mean, are 'return 42' and 'if collatzCounterExampleExists then return 42 else return 10' equal :p
2022-05-02 22:33:49 +0200 <segfaultfizzbuzz> that being said i would probably be interested in "reasonable" restrictions. for example, we may assume a finite number of bits are involved (and a fixed maximum if necessary)
2022-05-02 22:34:00 +0200 <dminuoso> Then you can simply try them all out.
2022-05-02 22:34:08 +0200 <segfaultfizzbuzz> right but age of universe blah blah
2022-05-02 22:34:21 +0200 <EvanR> the size of the function isn't as important as the size of the input space
2022-05-02 22:34:43 +0200 <tomsmeding> there is some wonkyness even with infinite types though: http://math.andrej.com/2007/09/28/seemingly-impossible-functional-programs/
2022-05-02 22:34:44 +0200 <segfaultfizzbuzz> right, we can bound the size of the input (and output) space in number of bits
2022-05-02 22:35:01 +0200 <tomsmeding> if the input type is [Bool], then you can _still_ decide equality, IF you assume that your functions are total
2022-05-02 22:35:07 +0200 <EvanR> this question is getting more and more contrived xD
2022-05-02 22:35:22 +0200 <EvanR> let's say the functions can only operate on C ints
2022-05-02 22:35:27 +0200 <geekosaur> you pretty much have to contrive it to say anything about it
2022-05-02 22:35:28 +0200 <EvanR> on a pentium 2
2022-05-02 22:35:32 +0200 <geekosaur> other than "mu"
2022-05-02 22:35:50 +0200 <[exa]> segfaultfizzbuzz: in the infinite memory case, rice theorem shows the incomparability pretty well. In the finite case you often get a testing time very exponential in the size of available storage, which gets prohibitive (note that for testing all of 256bit storage you need to burn all electrons in observable universe)
2022-05-02 22:36:12 +0200 <dminuoso> tomsmeding: of course, but thats getting into manual labor territory now.
2022-05-02 22:36:17 +0200 <segfaultfizzbuzz> by storage you mean the number of input bits to the function is 256 bits?
2022-05-02 22:36:18 +0200 <tomsmeding> :p
2022-05-02 22:36:48 +0200 <dminuoso> I recall a haskell library giving us equality on functions over finite domains
2022-05-02 22:36:48 +0200 <EvanR> are we headed for classical logic or finitism, can't tell
2022-05-02 22:36:51 +0200 <dminuoso> What was that library called?
2022-05-02 22:36:52 +0200brooke2k(~brooke2k@128.226.162.210)
2022-05-02 22:36:55 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-05-02 22:37:05 +0200 <[exa]> segfaultfizzbuzz: no, literally all available storage (you need to track internal state to see whether the function has diverged or not)
2022-05-02 22:37:22 +0200 <geekosaur> @hackage universe
2022-05-02 22:37:22 +0200 <lambdabot> https://hackage.haskell.org/package/universe
2022-05-02 22:37:30 +0200 <dminuoso> That's the one, cheers geekosaur
2022-05-02 22:37:53 +0200 <segfaultfizzbuzz> okay here is another way of looking at this question:
2022-05-02 22:38:23 +0200 <EvanR> so that package answers segfaultfizzbuzz's question directly
2022-05-02 22:38:24 +0200 <segfaultfizzbuzz> are there "reasonable restrictions" on f and g such that we can prove equivalence (in a reasonable amount of time, such as an hour or a day on a ~$1000 computer)
2022-05-02 22:38:51 +0200 <[exa]> segfaultfizzbuzz: yes, many. For example the simply typed subset of lambda calculus
2022-05-02 22:38:54 +0200 <segfaultfizzbuzz> for example, f maps 64 bits to 64 bits, as does g, and we have access to their definitions
2022-05-02 22:39:32 +0200 <segfaultfizzbuzz> "simply typed" ?
2022-05-02 22:39:49 +0200 <[exa]> precisely as in https://en.wikipedia.org/wiki/Simply_typed_lambda_calculus
2022-05-02 22:40:08 +0200Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-05-02 22:40:48 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-05-02 22:41:49 +0200y04nn(~y04nn@2001:ac8:28:93::a15e)
2022-05-02 22:42:01 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-05-02 22:42:35 +0200x88x88x(~x88x88x@149.28.53.172)
2022-05-02 22:43:19 +0200riatre(~quassel@2001:310:6000:f::5198:1) (Ping timeout: 240 seconds)
2022-05-02 22:43:23 +0200 <[exa]> (actually, wait, the STLC allows you to dodge infinity problems, but you can still encode numbers in it, allowing the programs to take exponential time to compute)
2022-05-02 22:43:23 +0200 <tomsmeding> segfaultfizzbuzz: no, let f () = 'if collatzCounterExampleExists then return 1 else return 0'
2022-05-02 22:43:27 +0200 <tomsmeding> f :: () -> Bit
2022-05-02 22:43:29 +0200riatre(~quassel@2001:310:6000:f::5198:1)
2022-05-02 22:44:11 +0200 <tomsmeding> okay that one is not STLC, so use collatzCounterExampleExistsBelowN with some arbitrarily large number, takes arbitrarily long time (probably)
2022-05-02 22:44:31 +0200 <[exa]> +1 ^
2022-05-02 22:44:59 +0200 <EvanR> what is this finitist nonsense
2022-05-02 22:45:00 +0200dsrt^(~dsrt@50.227.69.228) (Ping timeout: 276 seconds)
2022-05-02 22:45:15 +0200brooke2k(~brooke2k@128.226.162.210) (Quit: Client closed)
2022-05-02 22:45:21 +0200dsrt^(~dsrt@50.227.69.228)
2022-05-02 22:45:21 +0200 <dminuoso> segfaultfizzbuzz: By the way, without restrictions, this problem is equivalent to the halting problem. A general algorithm that determines the extrinsic equivalent for any two functions cannot exist.
2022-05-02 22:45:22 +0200 <EvanR> you're ruining my theoretical purity
2022-05-02 22:45:44 +0200 <dminuoso> (See rice's theorem)
2022-05-02 22:45:48 +0200 <[exa]> EvanR: no worries our finitism is infinitely extensible
2022-05-02 22:45:58 +0200 <EvanR> ok good
2022-05-02 22:46:34 +0200 <dminuoso> Is there tooling to quickly list all licenses of a dependency closure?
2022-05-02 22:46:56 +0200 <dminuoso> Or does cabal have some mechanisms to validate whether a given license is compatible with dependencies?
2022-05-02 22:47:25 +0200 <geekosaur> https://hackage.haskell.org/package/licensor ?
2022-05-02 22:47:39 +0200 <tomsmeding> sounds not too hard to use cabal-plan to get transitive dependency tree, 'ghc-pkg describe' to get the fields, and get the license identifier from there
2022-05-02 22:47:51 +0200 <geekosaur> cabal itself does not. I don't think SPDX considers license compatibility
2022-05-02 22:48:02 +0200 <segfaultfizzbuzz> ah equivalence to halting is interesting
2022-05-02 22:48:45 +0200 <dminuoso> Ahh thanks
2022-05-02 22:49:02 +0200 <dminuoso> geekosaur: That link let me to some more links, and then some. Then I found a note that cabal-plan can do this.
2022-05-02 22:49:14 +0200 <segfaultfizzbuzz> so then we might add the restriction that f and g are both known to be total
2022-05-02 22:49:15 +0200 <dminuoso> With flag license-report it has the command license-report
2022-05-02 22:49:31 +0200 <dminuoso> cabal-dependency-licenses also appears to exist.
2022-05-02 22:49:52 +0200 <geekosaur> but seemed somewhat old and I think pre-SPDX which should simplify things
2022-05-02 22:49:52 +0200 <dminuoso> But given that I have cabal-plan everywhere anyway, I guess Ill just rebuild that with that flag
2022-05-02 22:50:14 +0200 <[exa]> segfaultfizzbuzz: totality only gives you a certain, but basically unrestricted upper bound on how long the check takes
2022-05-02 22:50:43 +0200 <tomsmeding> [exa]: doesn't it only give you the upper bound of "not infinite"
2022-05-02 22:50:46 +0200 <geekosaur> ackermann function is total, but for most inputs takes longer than the lifetime of the universe
2022-05-02 22:51:02 +0200 <tomsmeding> which is not a particularly useful bound in practice :p
2022-05-02 22:51:11 +0200 <[exa]> tomsmeding: yes
2022-05-02 22:51:33 +0200 <segfaultfizzbuzz> hmm, so f and g have fixed wallclock maximum execution time?
2022-05-02 22:51:34 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-05-02 22:51:35 +0200MoY(~MoY@139.59.225.128)
2022-05-02 22:51:40 +0200 <[exa]> segfaultfizzbuzz: in short, general programs are evil.
2022-05-02 22:52:04 +0200 <segfaultfizzbuzz> is there a more uh "strict" restriction than totality?
2022-05-02 22:52:33 +0200 <tomsmeding> why are you asking? :p
2022-05-02 22:53:02 +0200 <dminuoso> EvanR | this question is getting more and more contrived xD
2022-05-02 22:53:10 +0200 <segfaultfizzbuzz> so i can understand what a function is. but i can stop polluting the room if you like
2022-05-02 22:53:21 +0200 <[exa]> segfaultfizzbuzz: any smaller complexity classes help, e.g. just PSPACE (usually simple to reach for many algorithms) restricts your program to NP-like running time
2022-05-02 22:53:31 +0200 <tomsmeding> segfaultfizzbuzz: a mathematical function or a Haskell program?
2022-05-02 22:53:43 +0200 <[exa]> ( segfaultfizzbuzz: we can migrate to #-offtopic if required )
2022-05-02 22:53:48 +0200 <dminuoso> We can also talk about intrinsic equivalence, because even that has shades of grey.
2022-05-02 22:54:02 +0200 <dminuoso> We can have equivalence up to any number of isomorphisms.
2022-05-02 22:54:19 +0200 <EvanR> the goal post is taking the form of an atomic orbital
2022-05-02 22:54:36 +0200hololeap(~hololeap@user/hololeap)
2022-05-02 22:55:01 +0200 <sclv> there's a beautiful branch of math known as recursion theory and a whole collection of hierarchies of strength
2022-05-02 22:55:13 +0200 <segfaultfizzbuzz> if you want a better question, here is my attempt: "what are the minimal (known?) restrictions on f and g such that my computer can probably prove they are equivalent?"
2022-05-02 22:55:16 +0200 <sclv> one of the most basic places to start is primitive recursive functions https://en.wikipedia.org/wiki/Primitive_recursive_function
2022-05-02 22:55:24 +0200 <dminuoso> "probably"?
2022-05-02 22:55:42 +0200anomal(~anomal@87.227.196.109)
2022-05-02 22:55:46 +0200 <EvanR> greater than 50 50 chance
2022-05-02 22:55:58 +0200 <dminuoso> Oh, so now we want a probability algorithm?
2022-05-02 22:56:05 +0200 <dminuoso> I cant fathom how we got here
2022-05-02 22:56:23 +0200 <segfaultfizzbuzz> ok, sounds like the room is unhappy, i will move to offtopic. thanks for indulging folks
2022-05-02 22:56:46 +0200 <[exa]> I guess we meant "provably" ?
2022-05-02 22:57:19 +0200 <segfaultfizzbuzz> see #haskell-offtopic, thanks folks
2022-05-02 22:57:40 +0200 <EvanR> probability does come up in some examples of non computable numbers, functions
2022-05-02 22:57:51 +0200 <EvanR> somehow
2022-05-02 22:57:55 +0200 <dminuoso> If we just want a probalistic algorithm, I can give you one
2022-05-02 22:58:05 +0200 <dminuoso> equivalent f g = False
2022-05-02 22:58:21 +0200 <dminuoso> I guarantee, for a truly random choice of `f` and `g`, this will most of the time be right.
2022-05-02 22:58:27 +0200MoY(~MoY@139.59.225.128) (Quit: Client closed)
2022-05-02 22:58:27 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-05-02 23:02:07 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-05-02 23:03:18 +0200abrantesasf(~abrantesa@179.217.49.34)
2022-05-02 23:03:57 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-05-02 23:06:23 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-05-02 23:06:47 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-05-02 23:16:17 +0200romesrf(~romes@185.5.8.134) (Quit: WeeChat 3.4.1)
2022-05-02 23:18:04 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-05-02 23:18:16 +0200vicfred(~vicfred@user/vicfred)
2022-05-02 23:19:08 +0200michalz(~michalz@185.246.204.126) (Remote host closed the connection)
2022-05-02 23:21:00 +0200hololeap(~hololeap@user/hololeap)
2022-05-02 23:25:23 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-05-02 23:25:33 +0200stevenxl(~stevenxl@c-73-72-2-81.hsd1.il.comcast.net) (Ping timeout: 246 seconds)
2022-05-02 23:30:04 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-05-02 23:34:17 +0200hololeap(~hololeap@user/hololeap)
2022-05-02 23:34:36 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds)
2022-05-02 23:36:12 +0200 <tdammers> given that there are infinitely many functions out there, for a truly random choice, it will *always* be right
2022-05-02 23:36:36 +0200 <tdammers> (fsvo of "infinite", "truly", "random", "choice", and "always")
2022-05-02 23:36:53 +0200deadmarshal_(~deadmarsh@95.38.228.138)
2022-05-02 23:37:10 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-05-02 23:37:32 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-05-02 23:39:04 +0200mmhat(~mmh@2001:4090:a242:802a:ee08:6bff:fe09:5315) (Quit: WeeChat 3.5)
2022-05-02 23:41:25 +0200deadmarshal_(~deadmarsh@95.38.228.138) (Ping timeout: 260 seconds)
2022-05-02 23:43:19 +0200 <dminuoso> Ill let Cantor sort out the details.
2022-05-02 23:44:10 +0200 <dminuoso> tdammers: Since this is Haskell code, and the universe inside the cosmic horizon is finite in terms of matter that we can use to build a computer from, there's only a finite number of functions we can represent and thus test.
2022-05-02 23:44:37 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-05-02 23:45:58 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1)
2022-05-02 23:46:17 +0200 <monochrom> I might just run Quickcheck for probable checks.
2022-05-02 23:47:15 +0200 <monochrom> I think I understand the meaning and motivation of the original question, but it was worded poorly.
2022-05-02 23:47:57 +0200 <monochrom> But there is a pun opportunity for s/I think I/I probably/ heh
2022-05-02 23:51:12 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-05-02 23:56:54 +0200stackdroid18(~stackdroi@user/stackdroid) (Quit: hasta la vista... tchau!)
2022-05-02 23:58:48 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)