Home freenode/#haskell: Logs Calendar

Logs on 2020-10-17 (freenode/#haskell)

00:00:02 × netsoundW1 quits (~netsoundW@84.39.116.180) ()
00:01:18 × karanlikmadde quits (~karanlikm@2a01:c23:6037:1800:955:6189:d72:9daf) (Quit: karanlikmadde)
00:04:38 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 260 seconds)
00:08:08 × unlink2 quits (~unlink2@p57b852f3.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
00:08:20 ephemera_ joins (~E@122.34.1.187)
00:09:57 hackage minio-hs 1.5.3 - A MinIO Haskell Library for Amazon S3 compatible cloudstorage. https://hackage.haskell.org/package/minio-hs-1.5.3 (AdityaManthramurthy)
00:11:55 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 258 seconds)
00:15:11 <larou> hmm, it seems like it works!
00:15:19 <larou> thats quite interesting
00:15:27 <larou> i didnt think constraints at type level would work
00:15:37 <larou> but apparently this is a workaround! woop!
00:15:56 <larou> https://pastebin.com/raw/R1YH9J7e
00:16:20 <larou> so apparently, you can provide constraints at type level using smart constructors
00:17:00 <larou> this gives the "place in syntax" where the constraint goes, since it would be an error if it appeared in a kind...
00:17:17 <larou> i think... unless some recent extension like standalone kind signatures enables this
00:17:20 × mirrorbird quits (~psutcliff@m83-187-163-53.cust.tele2.se) (Quit: Leaving)
00:17:28 <larou> anyone know if it does?
00:19:07 × Aquazi quits (uid312403@gateway/web/irccloud.com/x-vrmickywrfnlobks) (Quit: Connection closed for inactivity)
00:20:15 halogenandtoast joins (~halogenan@072-176-116-031.res.spectrum.com)
00:20:31 <halogenandtoast> If I have an instance like this deriving anyclass instance (IsInvestigator investigator) => HasModifiersFor env investigator Asset is there anyway to have another instance with a different constraint?
00:20:44 jedws joins (~jedws@121.209.161.98)
00:21:00 <halogenandtoast> Just changing the constraint will give a duplicate instance error.
00:22:35 × isovector1 quits (~isovector@172.103.216.166.cable.tpia.cipherkey.com) (Remote host closed the connection)
00:23:39 polyrain joins (~polyrain@130.102.13.188)
00:26:36 conal joins (~conal@64.71.133.70)
00:27:03 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
00:27:37 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
00:28:00 × perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
00:29:51 elliott__ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
00:31:00 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:32:58 thir joins (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de)
00:33:38 <larou> halogenandtoast: would it be possible to provide an extra parameter that could "label" these instances?
00:34:14 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
00:34:24 <larou> your essentially trying to match on constraints
00:37:52 × thir quits (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
00:37:53 × dmwit quits (~dmwit@pool-108-18-228-100.washdc.fios.verizon.net) (Read error: Connection reset by peer)
00:39:58 × klardotsh quits (~klardotsh@c-71-231-242-112.hsd1.wa.comcast.net) (Quit: WeeChat 2.8)
00:40:56 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 272 seconds)
00:41:37 dmwit joins (~dmwit@pool-108-18-228-100.washdc.fios.verizon.net)
00:43:44 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
00:44:26 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:45:06 <halogenandtoast> larou: ooh interesting, the answer is assuredly yes, I could
00:45:31 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
00:45:31 <larou> i think thats the best way to do that
00:46:07 conal joins (~conal@64.71.133.70)
00:46:38 × conal quits (~conal@64.71.133.70) (Client Quit)
00:46:56 <halogenandtoast> larou: thanks, I may try that if my current route (just removing the polymorphism) doesn't work out for me.
00:47:48 <larou> if you do, you can create a sum datatype with constructors that dont take arguments (like Bool)
00:48:09 <larou> with one of each of these "labels" to disambiguate the instances
00:48:25 × alp_ quits (~alp@2a01:e0a:58b:4920:8c10:5fbc:1459:e068) (Ping timeout: 272 seconds)
00:49:00 klardotsh joins (~klardotsh@c-71-231-242-112.hsd1.wa.comcast.net)
00:49:51 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
00:49:57 conal joins (~conal@64.71.133.70)
00:50:18 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:c99f:20b5:4775:2afa)
00:52:28 × slack1256 quits (~slack1256@181.203.95.77) (Ping timeout: 260 seconds)
00:54:33 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:c99f:20b5:4775:2afa) (Client Quit)
00:55:14 slack1256 joins (~slack1256@191.125.41.183)
00:55:38 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
00:57:10 conal joins (~conal@64.71.133.70)
00:57:33 × conal quits (~conal@64.71.133.70) (Client Quit)
00:58:32 <monochrom> Today I begin to learn the Yoneda lemma. Interesting.
00:59:01 conal joins (~conal@64.71.133.70)
00:59:07 × conal quits (~conal@64.71.133.70) (Client Quit)
00:59:56 <monochrom> It currently feels like setting up a lot of machinery to conclude very little. But I haven't applied it to really interesting things.
01:01:26 × polyrain quits (~polyrain@130.102.13.188) (Quit: Textual IRC Client: www.textualapp.com)
01:01:29 <monochrom> (Namely, I have only tried applying it to forgetful functors. Yeah I know, lame, heh.)
01:01:30 conal joins (~conal@64.71.133.70)
01:01:30 × conal quits (~conal@64.71.133.70) (Client Quit)
01:01:39 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
01:01:54 <koz_> monochrom: Or, should we say, _forgettable_? :P
01:02:48 <monochrom> Unfortunately forgetful functors are needed to define "free", so one must not forget them.
01:03:13 <EvanR> category theory: a lot of machinery to conclude very little
01:04:34 <monochrom> I think it feels limiting because Yoneda lemma's premise is "you can pick your category C, but you must pick a functor F from C to Set". The "to Set" part is a bit disappointing. It's why I could only thought up forgetful functors for now.
01:04:38 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
01:04:40 <dolio> There are probably dozens of examples where some discipline has a 'cool theorem' that is the Yoneda lemma applied to a relevant category.
01:05:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
01:05:17 × acidjnk_new2 quits (~acidjnk@p200300d0c723787058597087ca157dd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
01:05:23 <monochrom> However! I see that if F is a homset functor, you can get some really useful theorems.
01:06:30 acidjnk_new2 joins (~acidjnk@p200300d0c7237854351719f4ac22c63a.dip0.t-ipconnect.de)
01:06:31 <dolio> It doesn't have to be Set. The reason Set is special is because all ordinary categories are constructed out of sets.
01:06:54 <dolio> When you do V-enriched category theory, then V is special instead.
01:08:36 <dolio> Or specifically, it's because categories have hom-sets.
01:09:37 kipras joins (~Kipras@78-56-235-39.static.zebra.lt)
01:09:55 Swing_Couple joins (~Swing_Cou@88.230.101.23)
01:10:25 × perdent quits (~blah@101.175.98.122) (Ping timeout: 264 seconds)
01:10:36 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
01:10:38 ComaGrayce[m] joins (commagrays@gateway/shell/matrix.org/x-judmpjaakotiswoi)
01:10:39 <monochrom> For example, let G be an endofunctor so you can talk about G-algebras. (No further restriction on G.) Then Yoneda's lemma gives you the natural isomorphism between algebras GA->A and polymorphic functions "forall t. (t->A) -> (G t -> A)"
01:11:07 × jedws quits (~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:11:20 × carlomagno1 quits (~cararell@inet-hqmc02-o.oracle.com) (Ping timeout: 272 seconds)
01:11:55 × xff0x quits (~fox@2001:1a81:5391:7900:1d93:24cf:d0e0:8889) (Ping timeout: 240 seconds)
01:12:04 ephemera_ joins (~E@122.34.1.187)
01:12:18 drbean joins (~drbean@TC210-63-209-162.static.apol.com.tw)
01:12:48 <monochrom> I learned this today when I read again the Hinze paper I mentioned earlier today. Hinze gave a proof specific to that statement about GA->A, but he also mentioned how to use the Yoneda lemma on a suitable homset functor to get the same conclusion in two steps.
01:13:06 × Swing_Couple quits (~Swing_Cou@88.230.101.23) (Remote host closed the connection)
01:13:12 xff0x joins (~fox@2001:1a81:5391:7900:9543:bc08:f6aa:e535)
01:14:18 carlomagno joins (~cararell@inet-hqmc01-o.oracle.com)
01:16:17 × nineonine quits (~nineonine@50.216.62.2) (Remote host closed the connection)
01:17:22 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
01:20:35 iqubic joins (~user@2601:602:9500:4870:dc23:22a3:8a0d:b5e6)
01:21:20 <dolio> For instance, if you consider proposition 'enriched' categories where every arrow has an inverse, then C -> Prop is special instead; predicates on C.
01:21:53 DeadComaGrayce[m joins (commagra1@gateway/shell/matrix.org/x-mbzrorwyrzsyvzxq)
01:22:55 <dolio> Then the Yoneda lemma says that P(x) ≃ (x ≃ y) → P(y), so it's telling you about Leibniz' notion of equality.
01:25:52 × dmwit quits (~dmwit@pool-108-18-228-100.washdc.fios.verizon.net) (Read error: Connection reset by peer)
01:26:17 × m0rphism quits (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 258 seconds)
01:27:45 × delYsid quits (~user@84-115-55-45.cable.dynamic.surfer.at) (Remote host closed the connection)
01:27:55 chris joins (~chris@81.96.113.213)
01:28:19 chris is now known as Guest85855
01:28:19 mirrorbird joins (~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1)
01:30:03 jedws joins (~jedws@121.209.161.98)
01:31:28 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 246 seconds)
01:32:20 Tario joins (~Tario@201.192.165.173)
01:32:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:32:54 ephemera_ joins (~E@122.34.1.187)
01:33:25 <larou> dolio: how do you read that line in spoken words?
01:37:58 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
01:39:19 Stanley00 joins (~stanley00@unaffiliated/stanley00)
01:42:22 nbloomf joins (~nbloomf@104-183-67-6.lightspeed.fyvlar.sbcglobal.net)
01:44:23 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
01:45:25 <sshine> Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn
01:45:39 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 256 seconds)
01:45:41 <koz_> sshine: I see you too have found Nyarlathotep, our lord and saviour.
01:46:03 ephemera_ joins (~E@122.34.1.187)
01:46:13 × Zus quits (~Zushauque@d67-193-170-251.home3.cgocable.net) (Read error: Connection reset by peer)
01:47:48 × Guest85855 quits (~chris@81.96.113.213) (Remote host closed the connection)
01:48:30 nineonine joins (~nineonine@50.216.62.2)
01:48:45 × jchia quits (~jchia@58.32.34.43) (Read error: No route to host)
01:50:27 jchia joins (~jchia@45.32.62.73)
01:51:29 × jchia quits (~jchia@45.32.62.73) (Remote host closed the connection)
01:51:40 clmg joins (~clmg@2601:1c2:200:720:4114:54ca:ed6a:7bde)
01:52:22 machinedgod joins (~machinedg@24.105.81.50)
01:52:24 jchia joins (~jchia@45.32.62.73)
01:52:59 <clmg> How can I add a heading to the bibliography section of my Hakyll blog? I'm generating it this way: https://pastebin.com/6L58eAPU
01:53:43 × elliott__ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
01:54:44 × jchia quits (~jchia@45.32.62.73) (Remote host closed the connection)
01:55:03 jchia joins (~jchia@58.32.34.43)
01:58:15 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
01:59:15 × sw1nn quits (~sw1nn@host86-173-104-87.range86-173.btcentralplus.com) (Ping timeout: 256 seconds)
01:59:33 × solonarv quits (~solonarv@anancy-651-1-202-101.w109-217.abo.wanadoo.fr) (Ping timeout: 260 seconds)
02:01:15 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
02:02:58 dmwit joins (~dmwit@pool-108-18-228-100.washdc.fios.verizon.net)
02:02:58 × carlomagno quits (~cararell@inet-hqmc01-o.oracle.com) (Remote host closed the connection)
02:03:09 × xff0x quits (~fox@2001:1a81:5391:7900:9543:bc08:f6aa:e535) (Ping timeout: 272 seconds)
02:03:54 carlomagno joins (~cararell@inet-hqmc02-o.oracle.com)
02:04:26 xff0x joins (~fox@2001:1a81:53c5:c200:9543:bc08:f6aa:e535)
02:06:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:11:15 fragamus joins (~michaelgo@73.93.154.229)
02:12:13 gnumonik joins (~gnumonik@c-73-170-91-210.hsd1.ca.comcast.net)
02:13:39 sw1nn joins (~sw1nn@2a00:23c6:2385:3a00:842c:7584:d43a:6b01)
02:21:28 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
02:22:34 × theDon quits (~td@muedsl-82-207-238-153.citykom.de) (Ping timeout: 260 seconds)
02:22:45 falafel joins (~falafel@ip70-173-59-40.lv.lv.cox.net)
02:24:08 theDon joins (~td@muedsl-82-207-238-039.citykom.de)
02:24:38 × anik quits (~anik@103.23.207.151) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
02:25:25 <ddellacosta> can anyone help me understand the definition for forever? It's hurting my brain
02:25:27 <ddellacosta> forever a = let a' = a *> a' in a'
02:25:44 <koz_> :t forever
02:25:45 <lambdabot> Applicative f => f a -> f b
02:25:57 <koz_> The key is that forever doesn't actually return a value at any point.
02:25:57 <ghoulguy> ddellacosta: Is something about it confusing in particular?
02:26:02 <koz_> It just repeats the effect over and over.
02:26:11 <c_wraith> ddellacosta: would you be comfortable with the definition forever a = a *> forever a ?
02:26:17 <ddellacosta> ghoulguy: I think I'm having trouble understanding the order of evaluation
02:26:26 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
02:26:31 <ddellacosta> koz_: yeah that's what's hurting my brain lol
02:26:42 <ddellacosta> c_wraith: processing
02:27:04 <ddellacosta> c_wraith: okay yes actually now I see the order
02:27:20 <ddellacosta> so it just executes a's effect and calls itself again
02:27:34 <c_wraith> ok. the definition you quoted does the same thing, but with a knot-tying trick in order to reduce potential overhead
02:27:49 <monochrom> "forever" is most useful if you use it for IO and go something like "forever (putStrLn "Your PC is stoned")"
02:28:19 <ddellacosta> c_wraith: okay! I get it! Thank you so much
02:28:20 ephemera_ joins (~E@122.34.1.187)
02:28:34 <monochrom> It is clearly useless if you try "forever Nothing" or "forever (Just 4)"
02:28:37 <c_wraith> you're welcome
02:29:05 <ddellacosta> monochrom: yeah, actually I have used it a bunch but all of a sudden realized I didn't know how it was defined, so then I went to take a look and got confused
02:29:26 Tario joins (~Tario@201.192.165.173)
02:29:54 <c_wraith> > forever Nothing
02:29:57 <lambdabot> Nothing
02:30:03 <c_wraith> that hardly took forever at all!
02:30:04 <monochrom> So now you're ready for "fix f = let x = f x in x", too. TEE HEE HEE
02:30:13 <iqubic> > forever (Just 4)
02:30:17 <lambdabot> *Exception: <<loop>>
02:30:22 lagothrix is now known as Guest94488
02:30:30 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
02:30:30 HarveyPwca joins (~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net)
02:30:45 chris joins (~chris@81.96.113.213)
02:30:46 <ddellacosta> monochrom: you're making me remember when I spent a week learning recursion schemes, and I have mostly forgetten them at this point
02:30:48 <iqubic> Oh, that's just "Just (Just (Just (Just (Just (Just ...)))))" With a 4 at the bottom of the infinite stack.
02:30:49 <ddellacosta> forgotten
02:31:02 <ddellacosta> _sigh_
02:31:08 <c_wraith> iqubic: actually it isn't.
02:31:08 chris is now known as Guest78718
02:31:15 <ddellacosta> I need to figure out how to retain all the haskell I've forgotten
02:31:18 <iqubic> Oh? How come?
02:31:32 <c_wraith> iqubic: it's Just 4 *> (Just 4 *> (Just 4 *> ...
02:31:36 <monochrom> Age of Empires Infinity: The Forgotton Recursions: Definitive Edition
02:31:52 <c_wraith> iqubic: Just 4 *> Just 3
02:32:01 × Guest78718 quits (~chris@81.96.113.213) (Remote host closed the connection)
02:32:02 <iqubic> Right, but what does (*>) do for Maybe?
02:32:05 <larou> % Just 4 *> Just 3
02:32:06 <yahb> larou: Just 3
02:32:08 <c_wraith> > Just 4 *> Just 3
02:32:10 <lambdabot> Just 3
02:32:33 <c_wraith> :t (*>)
02:32:33 <iqubic> @src (*>)
02:32:34 <lambdabot> (*>) = liftA2 (const id)
02:32:35 <lambdabot> Applicative f => f a -> f b -> f b
02:32:57 <c_wraith> Notably, it doesn't add a layer of f
02:33:00 <ddellacosta> monochrom: that definitely sounds like a game that would suck up a lot of time
02:33:09 <iqubic> I'm so confused by that definition?
02:33:11 <monochrom> It took me about 3 re-learnings to retain catamorphisms, so don't worry.
02:33:23 × Guest94488 quits (~lagothrix@unaffiliated/lagothrix) (Ping timeout: 260 seconds)
02:33:45 <larou> oh, i had a fun thing
02:33:50 <monochrom> But buy one get one free, retaining catamorphisms implies retaining anamorphisms.
02:34:10 <monochrom> After that, I simply declared that the rest of recursion schemes are not worth my time.
02:34:17 <larou> a list of maybe Int, where the Int points to the location of another Int somewhere else in the list
02:34:18 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 272 seconds)
02:34:28 <larou> and you have to constrain it so the ints "point to each other"
02:34:36 thir joins (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de)
02:34:42 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 260 seconds)
02:34:42 <monochrom> Instead, Ralf Hinze's "adjoint folds and unfolds" are actually elegant and not ad hoc.
02:34:51 <c_wraith> iqubic: fa *> fb = (\_ y -> y) <$> fa <*> fb -- is this more comfortable of a definition?
02:34:57 <ddellacosta> I mean, I think folds are really cool and fundamental and I love how it like turns them inside out
02:35:00 ephemera_ joins (~E@122.34.1.187)
02:35:08 <ddellacosta> monochrom: oh, I'll check it out, thanks
02:35:23 × clmg quits (~clmg@2601:1c2:200:720:4114:54ca:ed6a:7bde) (Quit: Leaving)
02:35:26 <iqubic> :t const
02:35:27 <lambdabot> a -> b -> a
02:36:02 <iqubic> Wait a minute...? Isn't "const id" just the same as "flip const"
02:36:08 <ddellacosta> haha "Or: Scything Through the Thicket of Morphisms"
02:36:59 <iqubic> If my last statement is true, then I fully understand how "liftA2 (const id)" works.
02:37:38 × noctux quits (~noctux@unaffiliated/noctux) (Ping timeout: 256 seconds)
02:37:54 <iqubic> Wait... no, not really. Where does the loop get introduced? What causes the infinite recursion there.
02:38:28 <c_wraith> which "there" do you mean?
02:39:30 <iqubic> "liftA2 (const id)" creates what is the equivalent of an infinite loop. How does that function introduce infinite recursion?
02:39:31 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Read error: Connection reset by peer)
02:39:52 <c_wraith> I think you've mixed things up. (*>) doesn't introduce recursion, forever does
02:40:09 <iqubic> Oh. I see.
02:40:38 <iqubic> "liftA2 (const id)" is the default implementation of (*>). That clears things up.
02:41:06 <iqubic> Now, does "const id" do the same thing as "flip const"?
02:41:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
02:41:12 <iqubic> :t const id
02:41:14 <lambdabot> b -> a -> a
02:41:19 <iqubic> :t flip const
02:41:20 <lambdabot> b -> c -> c
02:41:25 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 240 seconds)
02:43:02 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
02:43:03 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:43:11 ephemera_ joins (~E@122.34.1.187)
02:43:31 <iqubic> From those very generic and unconstrained type signatures being the same, I conclude that they two different implementations of the same function.
02:43:42 <sshine> :t liftA2 (const id)
02:43:43 <lambdabot> Applicative f => f b -> f c -> f c
02:43:58 <sshine> :t liftA2 (\a b -> b)
02:44:00 <lambdabot> Applicative f => f a -> f c -> f c
02:44:22 <sshine> :t (*>)
02:44:23 <lambdabot> Applicative f => f a -> f b -> f b
02:44:42 <iqubic> :t liftA2 (flip const)
02:44:44 <lambdabot> Applicative f => f b -> f c -> f c
02:44:55 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Quit: Leaving)
02:45:35 albertus11 joins (~seb@x4db49541.dyn.telefonica.de)
02:48:52 × albertus1 quits (~seb@x4db5a1e1.dyn.telefonica.de) (Ping timeout: 272 seconds)
02:49:43 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Ping timeout: 260 seconds)
02:51:06 carlomagno joins (~cararell@inet-hqmc02-o.oracle.com)
02:55:11 noctux joins (~noctux@unaffiliated/noctux)
02:55:25 × djellemah quits (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 244 seconds)
02:55:40 <sshine> const id = (\b c -> b) (\a -> a) = (\c -> (\a -> a)) = (\c a -> a)
02:55:59 <sshine> flip const = (\f y x -> f x y) (\b c -> b) = (\y x -> (\b c -> b) x y) = (\y x -> x)
02:56:10 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 260 seconds)
02:56:56 × Stanley00 quits (~stanley00@unaffiliated/stanley00) (Read error: Connection reset by peer)
02:56:58 × ericsagnes quits (~ericsagne@2405:6580:0:5100:2c71:50df:a168:e256) (Ping timeout: 244 seconds)
02:57:00 Stanley|00 joins (~stanley00@unaffiliated/stanley00)
02:57:17 ephemera_ joins (~E@122.34.1.187)
02:57:47 crestfallen joins (~jvw@135-180-15-188.fiber.dynamic.sonic.net)
02:59:55 × thir quits (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
03:00:18 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 256 seconds)
03:00:33 <crestfallen> hi re: lines 27-28, are c and d equivalent because of referential transparency? (If they are equivalent, they must return the same (b -> a) , correct?
03:00:37 <crestfallen> https://github.com/varreli/haskell/blob/master/handEval/unify_f_g_h.txt
03:00:56 <fragamus> howdy
03:01:15 nineonin_ joins (~nineonine@216-19-190-182.dyn.novuscom.net)
03:02:06 <iqubic> If c and d truely are the same, then you've got a function of the type c -> c, which can only be id.
03:02:15 chris joins (~chris@81.96.113.213)
03:02:39 chris is now known as Guest93478
03:02:39 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Remote host closed the connection)
03:03:32 × Guest93478 quits (~chris@81.96.113.213) (Remote host closed the connection)
03:03:34 × darjeeli1 quits (~darjeelin@122.245.216.36) (Ping timeout: 265 seconds)
03:03:36 <iqubic> So, yeah, if can prove that c and d are the same type, then you've also proven that g is id.
03:04:04 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 272 seconds)
03:04:06 carlomagno joins (~cararell@inet-hqmc02-o.oracle.com)
03:04:06 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Remote host closed the connection)
03:04:48 × nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 258 seconds)
03:05:55 ephemera_ joins (~E@122.34.1.187)
03:06:32 × Gurkenglas_ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds)
03:06:37 × acidjnk_new2 quits (~acidjnk@p200300d0c7237854351719f4ac22c63a.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
03:07:23 <crestfallen> iqubic so you would back track, by saying both g's were (c -> c) By backtracking I mean naming them both c .. and then substituting (b -> c) for the id on line 28?
03:07:25 carlomagno joins (~cararell@inet-hqmc02-o.oracle.com)
03:09:20 ericsagnes joins (~ericsagne@2405:6580:0:5100:1942:718:5977:178d)
03:11:07 <crestfallen> iqubic: I mean, if you have c -> (b -> a) and c ~ d, then by the idea of referential transparency, both g's must return (b -> a)
03:11:34 × pera quits (~pera@unaffiliated/pera) (Ping timeout: 256 seconds)
03:11:57 wrunt[m] joins (wruntmatri@gateway/shell/matrix.org/x-lgxhuyewbpjmhgno)
03:13:43 × mrchampion quits (~mrchampio@216-211-57-41.dynamic.tbaytel.net) (Ping timeout: 265 seconds)
03:14:23 fragamus_ joins (~michaelgo@73.93.154.229)
03:14:28 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
03:14:49 <koz_> fragamus: Yo.
03:15:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:15:55 × fragamus quits (~michaelgo@73.93.154.229) (Ping timeout: 258 seconds)
03:16:24 darjeeli1 joins (~darjeelin@122.245.211.155)
03:16:25 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Remote host closed the connection)
03:17:48 carlomagno joins (~cararell@inet-hqmc02-o.oracle.com)
03:18:20 <crestfallen> iqubic: thanks only now saw your post at 20:03:58
03:20:31 × irc_user quits (uid423822@gateway/web/irccloud.com/x-juqawwjwttxnnpia) (Quit: Connection closed for inactivity)
03:20:58 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
03:22:01 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
03:22:53 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
03:26:07 acidjnk_new2 joins (~acidjnk@p200300d0c7237854351719f4ac22c63a.dip0.t-ipconnect.de)
03:29:05 × falafel quits (~falafel@ip70-173-59-40.lv.lv.cox.net) (Ping timeout: 240 seconds)
03:29:45 × slack1256 quits (~slack1256@191.125.41.183) (Ping timeout: 240 seconds)
03:30:49 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 246 seconds)
03:32:10 × renzhi quits (~renzhi@modemcable070.17-177-173.mc.videotron.ca) (Quit: WeeChat 2.3)
03:33:34 ephemera_ joins (~E@122.34.1.187)
03:45:32 × crestfallen quits (~jvw@135-180-15-188.fiber.dynamic.sonic.net) (Quit: Lost terminal)
03:48:55 × xff0x quits (~fox@2001:1a81:53c5:c200:9543:bc08:f6aa:e535) (Ping timeout: 272 seconds)
03:49:40 xff0x joins (~fox@2001:1a81:53c5:c200:b9db:1021:8997:304)
03:52:01 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:52:39 chris joins (~chris@81.96.113.213)
03:53:03 chris is now known as Guest72057
03:53:25 × ddellacosta quits (~dd@86.106.121.168) (Ping timeout: 240 seconds)
03:53:59 × polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 272 seconds)
03:54:35 × pjb quits (~t@2a01cb04063ec50091a4fa1f69281349.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
03:55:01 pera joins (~pera@unaffiliated/pera)
03:55:34 × nbloomf quits (~nbloomf@104-183-67-6.lightspeed.fyvlar.sbcglobal.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:56:16 Guest47631 joins (~ccallahan@84.39.117.57)
03:57:10 anik joins (~anik@103.23.207.148)
03:57:55 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds)
03:58:28 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 258 seconds)
03:59:39 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:a405:7897:267b:514b)
04:06:41 × pera quits (~pera@unaffiliated/pera) (Quit: leaving)
04:07:24 × shafox quits (~shafox@106.51.234.111) (Remote host closed the connection)
04:10:25 × fragamus_ quits (~michaelgo@73.93.154.229) (Ping timeout: 264 seconds)
04:12:01 fragamus joins (~michaelgo@73.93.155.61)
04:15:03 mrchampion joins (~mrchampio@216-211-57-41.dynamic.tbaytel.net)
04:15:10 × acidjnk_new2 quits (~acidjnk@p200300d0c7237854351719f4ac22c63a.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
04:16:02 × skami quits (~user@24.225.186.176) (Remote host closed the connection)
04:16:57 × fragamus quits (~michaelgo@73.93.155.61) (Ping timeout: 256 seconds)
04:18:38 fragamus joins (~michaelgo@c-24-7-31-19.hsd1.ca.comcast.net)
04:19:28 × Guest72057 quits (~chris@81.96.113.213) (Remote host closed the connection)
04:20:52 × howdoi quits (uid224@gateway/web/irccloud.com/x-vzqpthvuyxsqigap) (Quit: Connection closed for inactivity)
04:21:29 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 256 seconds)
04:23:57 ephemera_ joins (~E@122.34.1.187)
04:26:04 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
04:26:37 Saukk joins (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
04:28:04 <gnumonik> Hello. I am trying to write an interpreted DSL that "compiles" to Haskell (i.e. parses to haskell expressions). I would like to implement composable record accessors/setters in the DSL, so I've been trying to marshal strings into Setters/Getters from Control.Lens. I've been at it a month and there seems to be no way to get it to work (without impredicative polymorphism...) Has anyone ever tried to successfully do something like
04:28:05 <gnumonik> this?
04:28:25 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 240 seconds)
04:29:47 <larou> where do you encounter impredictive polymorphism?
04:30:38 ephemera_ joins (~E@122.34.1.187)
04:31:14 slack1256 joins (~slack1256@191.125.41.183)
04:38:48 × fragamus quits (~michaelgo@c-24-7-31-19.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
04:38:52 <koz_> larou: When you try to combine . with runST, for example.
04:39:15 <koz_> With lenses, there's a nested forall in the representation.
04:39:37 <larou> can you write that down?
04:39:39 <koz_> That's why (I think) we have Lens and ALens.
04:40:09 <koz_> larou: type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t
04:40:09 <larou> how does that fit in with the question about the DSL?
04:40:16 <koz_> Now try passing that as an argument.
04:40:26 <koz_> You hit impredicativity issues _very_ fast.
04:40:32 <larou> ah, ok
04:40:59 <larou> isnt there the option of using a different representation of lenses?
04:41:49 <koz_> larou: If by 'different' you mean 'profunctor optics', then I think the issue remains, though I'm not sure.
04:41:55 <larou> i thought you could exhaustively enumerate Traversables
04:42:02 <koz_> larou: What does that even _mean_?
04:42:25 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 240 seconds)
04:42:25 <koz_> (also, probbo not, since we have type Lens s t a b = forall p. Strong p => Optic p s t a b)
04:42:40 <larou> isnt there soemthing halfway towards the lenses setup?
04:43:08 <larou> that instead of abstracting over Traversals, just systematically represents them?
04:43:33 <larou> im not sure if that would solve the issue
04:43:44 ephemera_ joins (~E@122.34.1.187)
04:43:46 shatriff joins (~vitaliish@176.52.219.10)
04:43:59 <koz_> larou: The specifics of the question don't mention Traversals.
04:44:28 <larou> i cant quite remember how it goes, but it was something to do with biplate
04:45:03 <larou> i think you can do all the lens stuff when you have arbitrary Traversal instances
04:45:04 <koz_> larou: You'd have to give me a more specific reference, because nothing like this comes to mind, and I don't think I get it in the abstract.
04:45:17 <koz_> Traversal? Or Traversable?
04:45:36 <larou> you avoid Traversal, but enumerating instances of Traversable
04:45:56 <larou> this gives you the modifiers and insertion/deletion operations
04:46:09 <koz_> Yeah, I'm not sure I follow. 'Enumerating instances of Traversable' doesn't make much sense to me.
04:46:23 <larou> i just approach it in terms of Get & Set instances
04:46:34 <larou> with abstractions to account for "structure"
04:46:51 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
04:47:01 <larou> i think these can basically be formulated into monadic Get/Set varients
04:47:08 day_ joins (~Unknown@unaffiliated/day)
04:47:18 <larou> where the monad is sufficient to capture structure information
04:47:41 <larou> if its true, that everything Traversable is...
04:47:49 <larou> oh no, wait, then you get scanners
04:48:01 <larou> because you cant do monadic traversal properly
04:48:26 <larou> i think geti&seti get there for the pure varients
04:48:44 <larou> but the nested states are difficult
04:48:51 <larou> for the unfolding therof
04:49:18 <larou> like, imagine trying to unfold a list of lists, you need a depth 2 nested state for the unfold
04:49:46 <larou> and if your trying to capture all possible Traversal instance, you need a systematic framework for the nested States and Costates
04:49:56 <larou> for the unfolds and folds respectively
04:50:04 <MarcelineVQ> bleep borp
04:50:11 <larou> so the geti&seti setup isnt quite suffiencet
04:50:28 × day quits (~Unknown@unaffiliated/day) (Ping timeout: 260 seconds)
04:50:29 day_ is now known as day
04:50:37 fragamus joins (~michaelgo@73.93.153.121)
04:51:54 <gnumonik> The problem (as far as I can tell) is that in order to cross the bridge from string land to lens land in a way that lets you compose, you a function with a type like :: forall a c. (forall b. Lens' a b -> c) -> String -> c. I think anyway. This is my first real haskell program so I might be wrong
04:51:59 <larou> idk if it solves your impredictive polymorphism problem...
04:52:02 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
04:52:07 <gnumonik> And that's an impossible function
04:52:15 Tario joins (~Tario@201.192.165.173)
04:52:44 <larou> seems like an ambitious first program!
04:53:04 cole-h_ joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
04:53:07 <larou> i cant really follow sorry, idk lenses, but thanks for explaining
04:53:41 <larou> i have never really seen anything that enamoured me towards them - let alone the documentation!
04:54:43 <gnumonik> I wrote the rest of it on the assumption that there'd be some easy way to parse strings into lenses... I don't want to give up but right now my best idea for how to make it work is "rewrite the whole thing in clojure"
04:55:20 × fragamus quits (~michaelgo@73.93.153.121) (Ping timeout: 256 seconds)
04:55:35 fragamus joins (~michaelgo@73.93.153.97)
04:55:38 <larou> does that have impredictive polymorphism?
04:56:07 <gnumonik> No but I'm pretty sure I could make this work in an impure dynamic language
04:56:33 <larou> hmm, intersting.
04:56:37 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
04:56:57 <gnumonik> It's either that, or write a type system capable of supporting profunctor optics for a dsl that is (aside from the record accessing stuff) about as a complicated as a calculator
04:57:34 gioyik joins (~gioyik@190.67.155.46)
04:58:02 <larou> ah, your making me wish i knew what you mean
04:58:15 <larou> the siren song of lenses!
04:59:06 <larou> i thought your whole problem was writing DSLs in the first place!
04:59:11 <larou> seems like a catch 22
04:59:28 × Stanley|00 quits (~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
05:00:03 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:01:06 <gnumonik> Well I read that haskell was a good language for embedding a dsl and was like "oh this will be a good first project", but that is apparently only true if you want to use the features of haskell that don't involve higher rank types. Which is kinda disappointing I guess.
05:01:28 × Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
05:02:03 <larou> im still not convinced that its inexpressible in this language
05:02:39 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
05:02:40 <larou> either your lens problem is totally profound, or its just a limitation of trying to use that machinery
05:02:59 × anik quits (~anik@103.23.207.148) (Quit: Textual IRC Client: www.textualapp.com)
05:03:05 <larou> can you tell if its a revelation or a limitation of lenses?
05:03:19 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
05:04:38 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
05:04:45 × Tops2 quits (~Tobias@dyndsl-091-249-082-055.ewe-ip-backbone.de) (Read error: Connection reset by peer)
05:05:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
05:06:09 ephemera_ joins (~E@122.34.1.187)
05:06:11 × Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
05:06:26 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:06:27 <gnumonik> as far as i can tell it's a limit of the type system. I mean there is a way to make it work. Actually, there are 2 ways: One is to package the program with Hint (makes the binary 10x as large and isn't suitable for my application cuz it needs to be run as root), and use that as a 100mb parser for the lenses. The other is to write a super rich type system for what amounts to a calculator. I'm probably not smart enough to do the
05:06:27 <gnumonik> latter :-(
05:07:28 <davean> gnumonik: do you mean the 'hint' package?
05:08:24 <gnumonik> yeah
05:08:30 <davean> ... why would you run that as root?
05:08:44 anik joins (~anik@103.23.207.140)
05:09:08 <gnumonik> You wouldn't. But my DSL is for packet capturing, so you need superuser, so although hint solves the "parse some lenses" problem, it's not suitable
05:09:18 <davean> No you don't?
05:09:24 <davean> You can packet capture without root
05:09:31 <davean> thats what capabilities are for
05:09:49 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
05:10:30 <davean> Also, lenses have composition rules
05:10:36 <davean> so if you just map strings to the lens objects
05:10:45 <davean> and combine them with the operators, you don't need to use something like 'hint'
05:10:55 <davean> Haskell is a functional language
05:11:02 × slack1256 quits (~slack1256@191.125.41.183) (Remote host closed the connection)
05:11:23 jud joins (~jud@cpe-70-113-106-222.austin.res.rr.com)
05:11:23 × jud quits (~jud@cpe-70-113-106-222.austin.res.rr.com) (Changing host)
05:11:23 jud joins (~jud@unaffiliated/jud)
05:11:33 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
05:12:05 toorevitimirp joins (~tooreviti@117.182.180.0)
05:12:44 <gnumonik> Yeah you can write a function from "foo" to foo (where foo without quotes is a lens), but as far as I can tell you can't write a function from a string to any given lens for a data type
05:13:21 <davean> No, you have to enumerate the lenses that exist
05:13:21 <dsal> You should also be able to test packet capture mechanisms offline.
05:13:30 <davean> yes, thats what tcpdump helps with
05:13:35 <davean> or libpcap
05:13:42 <larou> ah, its to do with matching on record accessor names
05:13:45 <davean> But you can capture online without root
05:14:03 <larou> all my datatypes are just like HLists or whatever
05:14:05 <davean> gnumonik: you can code-gen the tables of names to lenses also
05:14:19 × toorevitimirp quits (~tooreviti@117.182.180.0) (Client Quit)
05:14:22 <larou> so you have "positional" data other than "record names"
05:14:40 <larou> i guess thats actually a pretty serious limitation for most practical uses
05:14:43 <larou> damn...
05:14:45 <gnumonik> You can kind of use type classes and higher rank types to pass another function to the String -> Lens function, but to get composition I'm pretty sure you need something like, (again) forall a c. (forall b. Lens' a b -> c) -> String -> c. If I'm wrong about that let me know but I can't think of anything
05:15:38 <larou> wait, isnt that what the template haskell machinery for autoderiving lesnes is for?
05:15:45 <gnumonik> And yeah I know about capabilities and was glossing over that, but anyway there has to be something better than lugging around most of GHCI to parse...record selectors
05:16:18 <davean> I'm confused why you're talking about doing the lenses the way you are - can you restate the problem? Because that signature doesn't make sense for what I understand you want
05:16:19 toorevitimirp joins (~tooreviti@117.182.180.0)
05:16:39 <larou> well, i was doing it for scientific computations, where "locality" on a manifold is basically the end goal
05:16:45 <dsal> If you're using lens for "record selectors" then that might be the wrong tool for the job, especially if the job is an interactive runtime that behaves like haskell, but isn't haskell.
05:16:45 <larou> you just have structured access paterns
05:17:15 <larou> all the data is selected relative to some position, so all this string names stuff just never arises
05:17:49 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 258 seconds)
05:17:56 <larou> trying to enumerate all the different names would just be totally pointless!
05:18:08 × codedmart quits (~codedmart@149.28.9.205) (Quit: ZNC 1.7.5 - https://znc.in)
05:18:09 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
05:18:13 <gnumonik> Well they're not actually just record selectors, and technically I need prisms too so talking about lenses is a bit wrong (is the general term for lens-ey things 'optics'?). Lemme try to restate the problem, gimme a min
05:18:25 codedmart joins (~codedmart@149.28.9.205)
05:18:31 <larou> i guess i quotient away all the isomorphisms by record renaming as an equivalence class
05:18:51 <davean> Yah, optics
05:18:57 × anik quits (~anik@103.23.207.140) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
05:19:16 <larou> so isnt it just about the "shape" at the end of the day?
05:20:13 pjb joins (~t@2a01cb04063ec50040327e18e003ea94.ipv6.abo.wanadoo.fr)
05:20:45 <larou> and then the logis is something like, lists are good. and then you Fix them and hopefully get graphs at some point
05:21:04 <larou> again, something to do with isomorphisms
05:21:30 ephemera_ joins (~E@122.34.1.187)
05:21:38 <larou> and then with type hetroginaity you get the most general structure thats isomorphic to everything else
05:21:55 <larou> ah, that was the problem, the nested states were unfolding type hetroginous things
05:22:03 <larou> horror
05:22:41 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
05:22:59 zoran119 joins (~zoran119@124-169-31-193.dyn.iinet.net.au)
05:23:24 <larou> i guess thats the point about product base functors
05:23:40 <gnumonik> So I have a DSL. Just for elaboration, the DSL is some pretty simple syntactical sugar over Edward KMett's "Machines" library, and the point is to allow for generation/modification/performing side effects with streams of network packets. I wrote the DSL on the assumption that there'd be some way to translate strings into optics in such a way that, if, e.g., _Foo is a prism and bar is a lens, you could type "Foo . bar" in the dsl
05:23:40 <gnumonik> to access the bar field of a product type inside a sum type "Foo." But.. I can't figure out how to go from string to the optics in a way that lets them compose.
05:24:03 <gnumonik> Again this is my first real haskell program ever, so I dunno if that was a horrid idea or if there's some obviously better approach
05:24:37 <davean> mmm, I see
05:25:01 <larou> wait, i thought lenses composed good
05:25:23 <davean> larou: he needs to match the type, but he's at runtime, so he has to prove he only composes correct ones ever
05:25:24 bifunc2 joins (bifunc2@gateway/vpn/protonvpn/bifunc2)
05:25:31 <davean> Which is doable
05:25:33 <gnumonik> they do. as a *library* everything would work fine. but i wanted this to be used by people who won't install ghc
05:25:45 <gnumonik> er usable at least
05:25:55 <larou> whaaaat!?
05:26:01 <bifunc2> Can an integration test be done within an HUnit testCase, or are there more usual ways to do integration tests?
05:26:03 <davean> A) Thats not what lenses are for, B) I can see how to do it, but I'm not sure how much you'd like it
05:26:04 <larou> why throw away the compiler!?
05:26:24 <davean> gnumonik: You'd want a Map for every starting type, and return the result type with it
05:26:38 <larou> i thought DSLs were supposed to *leverage* the typechecker into their own type systems
05:26:40 <davean> it'll compose, you can fold them together
05:26:51 <davean> larou: depends on how deeply embeded they are, for example
05:27:11 <larou> hmmm
05:27:32 <larou> like, if they are supposed to do something the haskell typesystem cant?
05:28:14 <davean> I mean thats exactly one case
05:28:14 <gnumonik> Wait a Data.Map map? I'm a little confused on how that would work if the data types don't contain fields of all the same type. (Do heteogenous maps exist?) I might not be understanding you
05:28:31 <larou> in which case wouldnt it be better to compile it to a subset of haskell that *is* expressive enough?
05:29:04 <gnumonik> Yeah, I was a little ambitious in thinking that "Oh hey lenses are really neat, lemme throw them in my DSL as expressions". Or I didn't know enough to know that that wasn't a good idea
05:29:08 unlink2 joins (~unlink2@p200300ebcf17c500f1cd4c5efbdddd1e.dip0.t-ipconnect.de)
05:29:22 <larou> not really sure how Map is implemented tbh... can you emulate it using list?
05:29:34 <davean> gnumonik: You can make them hetrogenious, or dependent. I was suggesting sometihng like (data OpticMap s = OMap (Map String (forall r . (Optic s r, r)))
05:30:11 <larou> and that impredictive right?
05:30:19 <larou> thats*
05:30:30 <davean> gnumonik: if you store the tag, you can look up the correct map next time ... etc
05:30:44 <davean> gnumonik: it'll get ugly, but you can make it work. I'm not sure you want to.
05:30:59 <larou> is the issue that a HList with a pair with an accessor index would be slow to lookup?
05:31:19 <davean> gnumonik: to be clear, I hate this approach
05:31:21 <gnumonik> I've been trying to solve this problem for a month out of sheer anger that I couldn't do it, I don't really care if it's ugly at this point :p
05:31:24 <larou> i mean, maybe you could use some kind of tree based thing thats faster..
05:31:42 <davean> I'm pretty sure it'll work
05:32:17 × stree quits (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
05:32:25 <larou> i cant tell if vinyl would be helpful...
05:32:34 stree joins (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net)
05:33:27 <larou> runtime typechecking sounds off though... never seen that
05:33:31 <davean> you know the result type because you get a token and look up the next in the map that starts with that by having a top level map like Map 'r (forall s . Map String (forall r . (Optic s r, r))
05:33:59 <davean> So your'e chaining through the connecting type
05:34:01 <davean> but ugh
05:34:06 <davean> Its *basicly* a type checker
05:34:14 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
05:34:32 <davean> Just linear chaining
05:34:54 <davean> er
05:35:00 <larou> what about parallel?
05:35:04 <davean> I mixed up an r and s above
05:35:08 <larou> like zipwith
05:35:11 <gnumonik> ohhhh I see now. That might work. That might not even be that bad. I have some template haskell that generates type for a data type and its subtypes (I know they aren't real subtypes, components I guess) until it reaches a "primitive" type (relative to the DSL)
05:35:18 <gnumonik> that I could probably use
05:35:24 <larou> im sure some mix of those two should be arbitrarily expressive
05:35:51 <larou> hmm, maybe its the difference between successive flat layers and a lattice like partial order for an arbitrary graph
05:36:06 <larou> the good thing about layers is they are obviously ordered
05:36:13 <davean> gnumonik: At least I gave you something to consider.
05:36:54 <zoran119> is anyone using vscode + haskell-language-server (with haskell.haskell plugin in vscode)? got to definition should work there, right? it doesn't seem to be able to find definition of my modules in other source files (only current source file)...
05:37:17 <larou> i really wanted something that could represent modern computing architectures so you could compile to bitcode for the virtual version and run it on regular hardware
05:37:24 <gnumonik> I appreciate it! I've been smashing my face against this for so long that any way of making it work is relieving
05:37:56 <larou> its the realisation thats the obstacle
05:38:36 <gnumonik> Though, actually, running into this problem made me dive deep into TH/Generics.SOP and really figure out the lens library at some depth, so I suppose it was a good problem to run into.
05:38:48 <larou> something about emulating concurrency
05:38:53 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
05:39:02 <gnumonik> None of those helped me solve it but oh well :p
05:39:24 <davean> gnumonik: I know how that feels. I do think you more want like a query engine but ... Hey, I'm not here to tell you what to code, just answer questions :)
05:39:38 <davean> A good problem is very educational
05:39:51 ensyde joins (~ensyde@2600:1702:2e30:1a40:584e:1c7e:e97b:16d2)
05:40:15 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:40:35 <larou> modifiable programs represented as scanner nets, anybody?
05:40:49 Stanley00 joins (~stanley00@unaffiliated/stanley00)
05:41:08 <larou> with structured access for implementation on virtual FPGAs...
05:41:12 <larou> *sigh*
05:41:38 <larou> autodeploys to skynet...
05:42:43 <larou> implements nets based on virtual market signal processing. subsumes the finance sector, brings about the rapture...
05:43:02 <larou> now with 50% more functions! free!
05:43:06 <davean> gnumonik: Also, if you don't like capabilities, sudo tcpdump and pipe that into your program? Or drop privileges
05:43:28 × larou quits (5201f2b7@gateway/web/cgi-irc/kiwiirc.com/ip.82.1.242.183) (Quit: Connection closed)
05:44:11 <justsomeguy> zoran119: I tried it out just now on a stack project, and it gave a warning message about some config file called hie.yaml. Maybe that file needs to be populated so hie can find stuff.
05:44:36 <justsomeguy> https://github.com/mpickering/hie-bios#hie-bios
05:44:42 × ensyde quits (~ensyde@2600:1702:2e30:1a40:584e:1c7e:e97b:16d2) (Ping timeout: 260 seconds)
05:47:04 <zoran119> justsomeguy: thanks for trying it out, i just found this (seems like a new issue): https://github.com/haskell/haskell-language-server/issues/486
05:48:46 Sanchayan joins (~Sanchayan@171.76.92.241)
05:49:05 × gioyik quits (~gioyik@190.67.155.46) (Read error: Connection reset by peer)
05:49:31 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
05:49:57 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
05:50:08 gioyik joins (~gioyik@190.67.155.46)
05:52:48 × Saukk quits (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
05:52:48 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:a405:7897:267b:514b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:53:21 × Mathnerd314 quits (uid442749@supertux/Mathnerd314) (Quit: Connection closed for inactivity)
05:53:23 × Sanchayan quits (~Sanchayan@171.76.92.241) (Remote host closed the connection)
05:54:02 chris joins (~chris@81.96.113.213)
05:54:26 chris is now known as Guest37509
05:54:37 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
05:55:48 Sanchayan joins (~Sanchayan@171.76.92.241)
05:56:58 falafel joins (~falafel@ip70-173-59-40.lv.lv.cox.net)
05:58:39 × jneira_ quits (~jneira@80.30.100.250) (Ping timeout: 260 seconds)
05:58:57 jneira_ joins (~jneira@80.30.100.250)
06:00:02 × Guest47631 quits (~ccallahan@84.39.117.57) ()
06:03:23 × jneira_ quits (~jneira@80.30.100.250) (Ping timeout: 260 seconds)
06:03:47 jneira_ joins (~jneira@80.30.100.250)
06:05:41 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
06:09:26 × gioyik quits (~gioyik@190.67.155.46) (Quit: WeeChat 2.9)
06:09:30 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
06:10:02 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
06:10:04 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
06:13:35 × falafel quits (~falafel@ip70-173-59-40.lv.lv.cox.net) (Ping timeout: 260 seconds)
06:14:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
06:17:52 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 272 seconds)
06:18:09 Tario joins (~Tario@201.192.165.173)
06:19:09 agrajag` joins (~agrajag`@104.254.90.195)
06:22:56 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
06:24:48 × sfvm quits (~sfvm@37.228.215.148) (Quit: off to the basement, mixing up the medicine)
06:26:38 coot joins (~coot@37.30.35.208.nat.umts.dynamic.t-mobile.pl)
06:27:48 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-ukzmbdoxywbjiwys) (Quit: Connection closed for inactivity)
06:30:27 <proofofme> can cassava be used for csv parsing without a filepath? like can you just give it a string and it yields a list of elements instead?
06:31:48 <c_wraith> that... sure seems like what decode does
06:32:04 <koz_> http://hackage.haskell.org/package/cassava-0.5.2.0/docs/Data-Csv.html#v:decode
06:32:14 <koz_> Well, aside from it being given a ByteString.
06:32:55 × andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
06:35:00 lucid_0x80 joins (~lucid_0x8@188.253.235.213)
06:35:06 × Guest37509 quits (~chris@81.96.113.213) (Remote host closed the connection)
06:35:38 × lucid_0x80 quits (~lucid_0x8@188.253.235.213) (Client Quit)
06:35:59 lucid_0x80 joins (~lucid_0x8@188.253.235.213)
06:36:06 andreas303 joins (~andreas@gateway/tor-sasl/andreas303)
06:36:38 <proofofme> how to convert something like "a,b,c" to a bytestring?
06:37:07 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
06:41:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:41:56 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
06:42:05 <dsal> proofofme: One way is to have it always be a bytestring so you don't have to convert it.
06:42:21 <proofofme> it's being read from a database where it comes that way
06:42:42 <dsal> The database doesn't return a ByteString? It probably has one.
06:43:01 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
06:43:10 <dsal> What database interface is this?
06:43:27 <proofofme> mysql
06:43:47 <dsal> AFAIK, that's not an interfae.
06:44:20 ephemera_ joins (~E@122.34.1.187)
06:44:22 <dsal> I guess there is one named that. It looks fairly old, though.
06:44:24 avdb joins (~avdb@ip-83-134-26-198.dsl.scarlet.be)
06:44:40 <proofofme> Database.MySQL.Base
06:46:07 <dsal> Ah, stackage has docs. It says it returns ByteString. How did you convert it from ByteString? Maybe do the opposite of that. :)
06:47:00 iqubic parts (~user@2601:602:9500:4870:dc23:22a3:8a0d:b5e6) ("ERC (IRC client for Emacs 28.0.50)")
06:47:38 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
06:48:34 chris joins (~chris@81.96.113.213)
06:48:57 chris is now known as Guest34058
06:50:13 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
06:56:07 × Kaeipi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
06:57:01 thir joins (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de)
06:59:36 × mirrorbird quits (~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1) (Quit: Leaving)
07:01:42 × thir quits (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
07:02:52 × avdb quits (~avdb@ip-83-134-26-198.dsl.scarlet.be) (Quit: WeeChat 2.9)
07:08:16 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
07:11:13 × Guest34058 quits (~chris@81.96.113.213) (Remote host closed the connection)
07:12:25 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
07:13:26 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
07:13:57 avdb joins (~avdb@ip-83-134-26-198.dsl.scarlet.be)
07:16:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:17:27 hackage Z-Data 0.1.7.2 - Array, vector and text https://hackage.haskell.org/package/Z-Data-0.1.7.2 (winterland)
07:18:42 × cole-h_ quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
07:24:28 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
07:26:10 × bitmapper quits (uid464869@gateway/web/irccloud.com/x-vecxpakzwaisvdlf) (Quit: Connection closed for inactivity)
07:28:45 alp_ joins (~alp@2a01:e0a:58b:4920:7959:9b61:1d77:4ea5)
07:28:47 LKoen joins (~LKoen@81.255.219.130)
07:28:55 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
07:30:52 thir joins (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de)
07:40:01 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
07:42:37 × alp_ quits (~alp@2a01:e0a:58b:4920:7959:9b61:1d77:4ea5) (Ping timeout: 272 seconds)
07:43:24 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
07:43:55 falafel joins (~falafel@ip70-173-59-40.lv.lv.cox.net)
07:44:29 × DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
07:44:53 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
07:47:12 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
07:47:28 supercoven joins (~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi)
07:48:27 ephemera_ joins (~E@122.34.1.187)
07:49:15 chris joins (~chris@81.96.113.213)
07:49:39 chris is now known as Guest12530
07:50:48 × avdb quits (~avdb@ip-83-134-26-198.dsl.scarlet.be) (Quit: WeeChat 2.9)
07:51:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
07:51:21 Guest91452 joins (~samuel@223.166.32.19)
07:52:19 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
07:56:50 avdb_ joins (~avdb@ip-83-134-26-198.dsl.scarlet.be)
07:57:03 × Guest91452 quits (~samuel@223.166.32.19) (Quit: Leaving)
07:58:18 × falafel quits (~falafel@ip70-173-59-40.lv.lv.cox.net) (Ping timeout: 260 seconds)
08:00:12 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:00:49 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
08:04:15 _ashbreeze_ joins (~mark@72-161-252-240.dyn.centurytel.net)
08:04:58 hackage Z-IO 0.1.6.0 - Simple and high performance IO toolkit for Haskell https://hackage.haskell.org/package/Z-IO-0.1.6.0 (winterland)
08:05:40 × ashbreeze quits (~mark@72-161-252-240.dyn.centurytel.net) (Ping timeout: 256 seconds)
08:05:58 hackage stm-queue 0.1.2.1 - An implementation of a real-time concurrent queue https://hackage.haskell.org/package/stm-queue-0.1.2.1 (sgschlesinger)
08:08:52 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
08:10:08 ephemera_ joins (~E@122.34.1.187)
08:11:08 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
08:11:11 × avdb_ quits (~avdb@ip-83-134-26-198.dsl.scarlet.be) (Quit: WeeChat 2.9)
08:12:36 lep-delete is now known as Guest88073
08:15:56 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
08:17:46 × Stanley00 quits (~stanley00@unaffiliated/stanley00) ()
08:18:35 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
08:19:58 cdepillabout joins (~cdepillab@pl35600.ag1001.nttpc.ne.jp)
08:23:19 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 260 seconds)
08:23:21 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
08:23:38 ephemera_ joins (~E@122.34.1.187)
08:28:58 × jneira_ quits (~jneira@80.30.100.250) (Ping timeout: 272 seconds)
08:29:23 × fragamus quits (~michaelgo@73.93.153.97) (Read error: Connection reset by peer)
08:30:29 SanchayanM joins (~Sanchayan@136.185.169.16)
08:30:58 × Sanchayan quits (~Sanchayan@171.76.92.241) (Ping timeout: 260 seconds)
08:31:35 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
08:32:12 jneira_ joins (~jneira@80.30.100.250)
08:33:26 avdb joins (~avdb@ip-83-134-26-198.dsl.scarlet.be)
08:34:01 × thir quits (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
08:34:14 fragamus joins (~michaelgo@73.93.153.97)
08:38:29 Guest88073 is now known as lep-delete
08:42:35 chaosmasttter joins (~chaosmast@p200300c4a710fa0165702c806d7b3e40.dip0.t-ipconnect.de)
08:43:01 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) ()
08:43:03 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
08:47:37 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
08:50:26 <tomsmeding> why does ghc, when giving me an error about an ambiguous type variable, not tell me where that type variable occurs?
08:50:46 <tomsmeding> if that happens in a large expression it's less than helpful :p
08:52:28 × drbean quits (~drbean@TC210-63-209-162.static.apol.com.tw) (Ping timeout: 246 seconds)
08:56:28 hackage numhask-space 0.6.1 - numerical spaces https://hackage.haskell.org/package/numhask-space-0.6.1 (tonyday567)
08:56:45 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
08:57:03 <Rembane> tomsmeding: Doesn't it? Do you have an example? :)
08:57:06 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
08:57:19 <tomsmeding> well I have a huge one :p
08:57:48 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 256 seconds)
08:59:02 <tomsmeding> Rembane: https://paste.tomsmeding.com/oKOtSj3l
08:59:56 <Rembane> tomsmeding: Yeah, that's not small, what would GHC say if you had your way?
09:00:01 × agrajag` quits (~agrajag`@104.254.90.195) ()
09:00:21 <tomsmeding> well presumably it's trying to help me by saying "the constraint (Elt x00)"
09:01:05 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
09:01:09 <tomsmeding> if the x00 would occur somewhere else in a larger type too, then I'd like it to print the entire type (just "Elt x00" tells me nothing about where this x00 comes from)
09:01:17 <tomsmeding> but now I realise that perhaps it _only_ occurs in this constraint
09:02:09 <Rembane> I think it only exists in this constraint
09:02:35 <tomsmeding> but in that case it would be nice if it said that this type variable occurs _only_ in a constraint -- because that particular situation is something you never want anyway, I think
09:02:45 <tomsmeding> also that would be weird
09:02:53 <tomsmeding> given the code, let me see if I can distill a smaller case
09:03:10 <Rembane> Sounds like a good approach
09:03:28 hackage hw-json 1.3.2.2 - Memory efficient JSON parser https://hackage.haskell.org/package/hw-json-1.3.2.2 (haskellworks)
09:05:00 <nshepperd> arising from a use of zipWith? is this some sort of nontraditional exotic zipWith? not the list one
09:05:31 <tomsmeding> it certainly is :)
09:06:17 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
09:06:30 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
09:06:40 <nshepperd> i think you'll find that type variable occurs in the type of your exotic zipWith
09:06:48 <nshepperd> in that case
09:07:23 tito_04 joins (~taurux@net-93-144-13-212.cust.vodafonedsl.it)
09:07:26 × taurux quits (~taurux@net-93-144-64-237.cust.vodafonedsl.it) (Ping timeout: 256 seconds)
09:07:38 <tomsmeding> nshepperd: true enough, but it has three Elt constraints: https://hackage.haskell.org/package/accelerate-1.3.0.0/docs/Data-Array-Accelerate.html#v:zipWith
09:07:49 ephemera_ joins (~E@122.34.1.187)
09:07:49 <tomsmeding> so basically my point is: constraint "Elt x00", okay, _WHICH_ Elt :p
09:10:02 <tomsmeding> ah there is a different case, look at this: https://paste.tomsmeding.com/b8b4SRuW
09:10:08 × jneira_ quits (~jneira@80.30.100.250) (Ping timeout: 272 seconds)
09:10:34 <tomsmeding> look at it giving a _different_ binding than what the problematic type variable occurs in, showing that indeed the variable occurs outside of the constraint
09:10:42 jneira_ joins (~jneira@111.red-176-83-68.dynamicip.rima-tde.net)
09:10:44 <tomsmeding> (note a40f != a40)
09:11:35 <tomsmeding> now I guess I'd like to see the type of a40f with that type variable x10 shown where it occurs (because it must; a40 is defined fairly trivially in terms of a40f)
09:12:28 <tomsmeding> (indeed now I know it's that particular tuple element, I know how to solve it :p)
09:13:23 <nshepperd> yeah i guess it would be nice if it printed the type signature of zipWith with the ambiguous variable highlighted or something
09:13:46 <Rembane> I wonder if there's an issue on the GHC bug tracker about this, or if it's worth posting one.
09:13:55 <tomsmeding> precisely (though highlighting is not even the primary concern :p)
09:14:17 plast1k_ joins (~plast1k_@196.207.181.246)
09:14:20 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
09:18:51 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
09:20:36 <Rembane> Yeah, it's an x/y one. :)
09:23:22 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 256 seconds)
09:24:57 invaser joins (~Thunderbi@31.148.23.125)
09:25:46 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
09:26:19 × thunderrd quits (~thunderrd@183.182.110.178) (Remote host closed the connection)
09:26:21 <tomsmeding> okay this is a more minimal case: https://paste.tomsmeding.com/jvWCizUj
09:26:26 jespada joins (~jespada@90.254.245.15)
09:26:31 <tomsmeding> no deps
09:26:59 <tomsmeding> do people agree that error is uninformative?
09:27:38 × jespada quits (~jespada@90.254.245.15) (Client Quit)
09:28:24 thir joins (~thir@pd9e1b01f.dip0.t-ipconnect.de)
09:28:39 <tomsmeding> in particular: there are two Elt constraints around: one on map' and one on constant'. It's not indicating which is the problem; in this case it doesn't really matter, but in a more complex scenario that may be useful information
09:29:04 × lemmih quits (~lemmih@2406:3003:2072:44:70c9:d5cf:dc27:2e6a) (Remote host closed the connection)
09:29:26 <tomsmeding> "a40f = map' (constant' 2.0)" is a better replacement of the last two lines, no need for the "id" indirection
09:29:29 lemmih joins (~lemmih@2406:3003:2072:44:70c9:d5cf:dc27:2e6a)
09:30:18 × Randy quits (randy@freebsd/user/randy) (Quit: Out)
09:30:34 Randy joins (randy@freebsd/user/randy)
09:32:51 kenran joins (~maier@87.123.205.246)
09:34:41 <Rembane> tomsmeding: In this case I can manage because I can see everything that creates this error, but in your earlier case I would've loved to have some more help from the compiler.
09:35:32 <Rembane> tomsmeding: This all boils down to, post in on the issue tracker please. :)
09:36:02 zebrag joins (~inkbottle@aaubervilliers-654-1-98-110.w86-212.abo.wanadoo.fr)
09:36:53 × inkbottle quits (~inkbottle@aaubervilliers-654-1-104-11.w86-212.abo.wanadoo.fr) (Ping timeout: 260 seconds)
09:38:39 <tomsmeding> I can post it; I feel uncertain whether there is an existing issue about it, given that there are 4k+ issues open :p
09:38:50 knupfer joins (~Thunderbi@87.123.206.163)
09:40:15 ensyde joins (~ensyde@2600:1702:2e30:1a40:584e:1c7e:e97b:16d2)
09:40:15 <tomsmeding> this is a feature_request, isn't it?
09:40:31 wei2912 joins (~wei2912@unaffiliated/wei2912)
09:40:32 × jneira_ quits (~jneira@111.red-176-83-68.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
09:41:20 jneira_ joins (~jneira@80.30.100.250)
09:41:42 <Rembane> tomsmeding: I think it is, blame me if it isn't. :)
09:41:58 dcoutts_ joins (~duncan@33.14.75.194.dyn.plus.net)
09:42:42 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-wfqfiwhdaazevkgj) (Quit: Connection closed for inactivity)
09:44:09 <phadej> doesn't that error happen because 2.0 is arbitrary Fractional a => a
09:44:23 <phadej> if you do (2.0 :: Double) it will "go away", or at least say Elt Double cosntraint?
09:45:11 <phadej> I don't think its uninformative, it's a literal gotcha
09:45:28 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
09:45:29 × ensyde quits (~ensyde@2600:1702:2e30:1a40:584e:1c7e:e97b:16d2) (Ping timeout: 272 seconds)
09:45:36 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 272 seconds)
09:46:50 <phadej> in the minimal example, it's the same `Elt a` which is unsatisfied, i.e. it could come from either map' or constant'
09:47:07 <phadej> as `a`s are unified
09:47:21 × wei2912 quits (~wei2912@unaffiliated/wei2912) (Quit: leaving)
09:47:24 <tomsmeding> phadej: true, it's about the literal, but it could equally be a variable with type Fractional a => a
09:47:45 <phadej> tomsmeding: more concretely, what you think GHC should say
09:48:02 <tomsmeding> the point is: what if there were a number of such literals, and most could be inferred based on external information except one. Which one is it? The error message doesn't tell.
09:48:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
09:48:30 × invaser quits (~Thunderbi@31.148.23.125) (Quit: invaser)
09:49:16 <tomsmeding> phadej: for errors reading "... (mentions type variable a0) ... arising from a use of ‘myFunction’, ...", I'd like to see the type of myFunction, that includes a0
09:49:32 <tomsmeding> because presumably a0 is in there :p
09:49:59 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
09:50:05 × kenran quits (~maier@87.123.205.246) (Ping timeout: 240 seconds)
09:50:47 invaser joins (~Thunderbi@31.148.23.125)
09:53:14 <phadej> arising from a use of ‘a40f’ at type 'a40f :: (Elt a0, Fractional a0) => (Exp a0 -> Exp a0) -> ()'
09:53:17 <phadej> ?
09:53:45 <phadej> yes, that could be reasonable feature request
09:54:25 <tomsmeding> yes that; I'll see if I can make a more compelling example
09:54:28 <phadej> this example is a bit too minimal, as `a40f` has only one variable
09:56:08 mterwoord joins (~mterwoord@178.162.204.238)
09:56:28 <phadej> something with (Integral a, Integral b) => ...
09:56:33 <phadej> and used so you flip arguments
09:56:43 <phadej> so you aren't sure anymore whether a0 was actually b
09:57:17 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
09:58:52 <phadej> except integral will be defaulted :(
09:59:46 <tomsmeding> that can be fixed with a custom class :p
10:00:12 <tomsmeding> I had an example where the variable got an obscure name from somewhere, let me see if I can resurrect that one
10:00:52 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
10:02:33 × tito_04 quits (~taurux@net-93-144-13-212.cust.vodafonedsl.it) (Read error: Connection reset by peer)
10:02:43 <phadej> https://gist.github.com/phadej/7b95d1876dd085d28f49bf4ebf349663
10:03:02 × jneira_ quits (~jneira@80.30.100.250) (Ping timeout: 256 seconds)
10:03:05 <phadej> here it's unclear is "MyIntegral b1" is from 1 or 2
10:03:29 taurux joins (~taurux@net-188-216-43-120.cust.vodafonedsl.it)
10:03:41 jneira_ joins (~jneira@111.red-176-83-68.dynamicip.rima-tde.net)
10:03:46 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
10:03:47 <phadej> in fact, type of plus2 is
10:03:48 <phadej> plus2 :: (MyIntegral b1, MyIntegral b2) => b2 -> b1 -> b1
10:03:55 <tomsmeding> yes that's a neat one
10:04:19 <phadej> tomsmeding: I have to admit, I have sometimes scratched my head what's wrong in similar-ish examples
10:04:26 <phadej> and had to add extra type-signatures to figure out what
10:04:32 × xerox_ quits (~xerox@unaffiliated/xerox) (Quit: leaving)
10:04:43 <phadej> as here. The obvious solution is to add a type-signature to plus2
10:04:52 <phadej> (with better type-variables)
10:05:10 <phadej> but if you open an issue you have to argue why you cannot or don't want do that in non-minimal example :)
10:05:14 ephemera_ joins (~E@122.34.1.187)
10:05:46 <phadej> I guess saying that "annotating every auxiliary bindingin in accelerate code isn't acceptable, adds too much noise"
10:06:26 <tomsmeding> that latter statement is certainly the case
10:06:33 <phadej> in my case, when there are type-variables brought into the scope by pattern matching on GADTs, it was in fact very tricky to just add a type-signatures
10:06:47 × Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
10:06:58 <phadej> as one had to re-arrange code to get this type-variables
10:08:36 <phadej> (https://github.com/ghc-proposals/ghc-proposals/pull/126 would solve it, but I have no idea if anyone is working on it)
10:09:51 <phadej> you concinced me there is a problem worth fixing :)
10:10:01 × hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
10:10:02 <phadej> go ahead, open an issue!
10:10:19 <tomsmeding> :D
10:10:41 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 258 seconds)
10:11:47 ephemera_ joins (~E@122.34.1.187)
10:13:25 × plast1k_ quits (~plast1k_@196.207.181.246) (Ping timeout: 264 seconds)
10:13:35 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
10:13:40 × cdepillabout quits (~cdepillab@pl35600.ag1001.nttpc.ne.jp) (Ping timeout: 246 seconds)
10:13:49 thunderrd joins (~thunderrd@183.182.110.178)
10:14:01 xerox_ joins (~xerox@unaffiliated/xerox)
10:15:17 <tomsmeding> phadej: https://gitlab.haskell.org/ghc/ghc/-/issues/18860
10:15:42 <tomsmeding> probably could be worded better, so if you want to re-word stuff / tell me to re-word stuff, go ahead :p
10:16:24 <phadej> +1
10:16:34 <phadej> IMO it's fine
10:16:41 <phadej> let see if others see the problem :)
10:18:39 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
10:19:10 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 272 seconds)
10:19:58 ephemera_ joins (~E@122.34.1.187)
10:22:19 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
10:22:28 Rudd0^ joins (~Rudd0@185.189.115.98)
10:24:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:24:51 × Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 265 seconds)
10:25:04 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: Textual IRC Client: www.textualapp.com)
10:25:18 × rprije quits (~rprije@203-219-208-42.static.tpgi.com.au) (Ping timeout: 260 seconds)
10:26:23 plast1k_ joins (~plast1k_@196.207.181.246)
10:26:40 × plast1k_ quits (~plast1k_@196.207.181.246) (Max SendQ exceeded)
10:29:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
10:29:58 × knupfer quits (~Thunderbi@87.123.206.163) (Ping timeout: 260 seconds)
10:32:03 utopic_int0x80 joins (~lucid_0x8@188.253.235.213)
10:32:07 × DavidEichmann quits (~david@43.240.198.146.dyn.plus.net) (Remote host closed the connection)
10:32:31 DavidEichmann joins (~david@43.240.198.146.dyn.plus.net)
10:32:35 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
10:33:19 × utopic_int0x80 quits (~lucid_0x8@188.253.235.213) (Read error: Connection reset by peer)
10:33:25 × lucid_0x80 quits (~lucid_0x8@188.253.235.213) (Ping timeout: 240 seconds)
10:33:45 utopic_int0x80 joins (~lucid_0x8@188.253.235.213)
10:34:01 × utopic_int0x80 quits (~lucid_0x8@188.253.235.213) (Max SendQ exceeded)
10:34:40 gopher---- joins (~gopher@2a03:1b20:3:f011::4d)
10:34:42 <gopher----> hi
10:34:47 <gopher----> is anyone a dev in here?
10:34:47 utopic_int0x80 joins (~lucid_0x8@188.253.235.213)
10:35:01 × utopic_int0x80 quits (~lucid_0x8@188.253.235.213) (Max SendQ exceeded)
10:35:41 utopic_int0x80 joins (~lucid_0x8@188.253.235.213)
10:35:45 <gopher----> btw
10:35:53 <gopher----> haskell is absolute gobshite
10:35:57 × utopic_int0x80 quits (~lucid_0x8@188.253.235.213) (Max SendQ exceeded)
10:37:26 zariuq joins (~zar@fw1.ciirc.cvut.cz)
10:37:33 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
10:37:52 <Axman6> gopher----: yeah it is
10:38:00 <gopher----> yep
10:38:07 <gopher----> its horribal
10:38:15 dhil joins (~dhil@195.213.192.122)
10:38:47 <[exa]> ...but isn't that the fundament of the existence?
10:38:59 <gopher----> haskell is massive shit
10:39:02 <Axman6> we are all but gobshite
10:39:14 fendor joins (~fendor@046124068105.public.t-mobile.at)
10:39:38 <Axman6> gopher----: trolling works better if you make some arguments, and not just whinge because you're doing badly in a university assignment
10:39:55 <gopher----> haskell is mega bs
10:40:16 × Gerula quits (~Gerula@unaffiliated/gerula) (Quit: Leaving)
10:40:24 <Axman6> GHC is definitely several hungres megabytes, so it might even be giga bs!
10:40:29 <Axman6> hundred*
10:40:41 <gopher----> niga
10:40:55 <Axman6> come on mate, try harder, this is embarassing
10:41:02 <no-n> gopher----: which language do you prefer?
10:41:11 <gopher----> a non blm supported lang
10:41:16 plast1k_ joins (~plast1k_@196.207.181.246)
10:41:28 <no-n> oof
10:41:32 × avdb quits (~avdb@ip-83-134-26-198.dsl.scarlet.be) (Quit: WeeChat 2.9)
10:41:38 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
10:41:59 <Axman6> damn, I knew we should have voted against -XBlackLivesMatter
10:42:21 <gopher----> yes
10:42:28 <gopher----> dem cotton pickers
10:42:44 __monty__ joins (~toonn@unaffiliated/toonn)
10:42:48 × Guest12530 quits (~chris@81.96.113.213) (Remote host closed the connection)
10:43:22 × xff0x quits (~fox@2001:1a81:53c5:c200:b9db:1021:8997:304) (Ping timeout: 260 seconds)
10:43:30 <gopher----> yup
10:43:34 <Axman6> I reckon PHP might not be a BLM supported language, maybe you should try that? It's not very supported at all these days
10:44:00 <gopher----> php ss on every major website
10:44:01 <gopher----> is
10:44:02 × jneira_ quits (~jneira@111.red-176-83-68.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
10:44:13 jneira_ joins (~jneira@80.30.100.250)
10:44:36 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
10:44:43 <Axman6> is it tho???
10:45:21 <gopher----> yup
10:45:30 <gopher----> on most commercial grade apps
10:45:34 <gopher----> banking sites
10:45:47 ChanServ sets mode +o dibblego
10:45:51 dibblego sets mode +b *!*@2a03:1b20:3:f011::4d
10:45:51 <Axman6> I think you're misspelling ASP.Net
10:45:53 gopher---- is kicked by dibblego (gopher----)
10:45:56 ChanServ sets mode -o dibblego
10:46:13 <Axman6> dibblego: Sorry mate, things were quiet =)
10:46:19 × ephemera_ quits (~E@122.34.1.187) (Quit: No Ping reply in 180 seconds.)
10:46:35 <dibblego> :)
10:46:39 ephemera_ joins (~E@122.34.1.187)
10:48:56 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 256 seconds)
10:50:00 <jophish> nh2: How are things going with static haskell nix?
10:50:23 × jneira_ quits (~jneira@80.30.100.250) (Ping timeout: 260 seconds)
10:50:58 jneira_ joins (~jneira@111.red-176-83-68.dynamicip.rima-tde.net)
10:53:25 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
10:53:42 Gerula joins (~Gerula@unaffiliated/gerula)
10:54:49 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 264 seconds)
10:55:07 ephemera_ joins (~E@122.34.1.187)
10:57:58 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 260 seconds)
10:58:07 xff0x joins (~fox@2001:1a81:53c5:c200:980e:44c6:52dd:fd04)
10:59:52 avdb joins (~avdb@ip-83-134-26-198.dsl.scarlet.be)
11:00:52 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
11:01:26 berberman joins (~berberman@unaffiliated/berberman)
11:03:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:04:03 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
11:05:43 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:07:11 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
11:07:13 mananamenos joins (~mananamen@84.122.202.215.dyn.user.ono.com)
11:08:19 m0rphism joins (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de)
11:08:57 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
11:12:05 lnlsn joins (~lnlsn@189.100.212.150)
11:12:12 × jneira_ quits (~jneira@111.red-176-83-68.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
11:12:21 jneira_ joins (~jneira@80.30.100.250)
11:18:13 × lnlsn quits (~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
11:18:14 kish joins (~oracle@unaffiliated/oracle)
11:19:53 solonarv joins (~solonarv@anancy-651-1-202-101.w109-217.abo.wanadoo.fr)
11:20:20 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
11:22:23 × chaosmasttter quits (~chaosmast@p200300c4a710fa0165702c806d7b3e40.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
11:24:16 hiroaki joins (~hiroaki@2a02:908:4b18:e20::a362)
11:25:02 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
11:26:17 <tomjaguarpaw> jophish: How are things going with dynamic python windows installer?
11:29:52 knupfer joins (~Thunderbi@200116b82cc5f50010341dfffe74c338.dip.versatel-1u1.de)
11:29:52 × knupfer quits (~Thunderbi@200116b82cc5f50010341dfffe74c338.dip.versatel-1u1.de) (Remote host closed the connection)
11:30:05 knupfer joins (~Thunderbi@200116b82cc5f500182db56019d06096.dip.versatel-1u1.de)
11:30:36 Nahra joins (~Nahra@unaffiliated/nahra)
11:31:19 kuribas joins (~user@ptr-25vy0i8tzgojz6gquv5.18120a2.ip6.access.telenet.be)
11:31:45 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
11:32:33 <jophish> dynamic python windows installer? tomjaguarpaw
11:33:09 <jophish> sounds pretty horrible all round
11:33:19 lnlsn joins (~lnlsn@189.100.212.150)
11:33:31 × thir quits (~thir@pd9e1b01f.dip0.t-ipconnect.de) (Remote host closed the connection)
11:34:24 alp_ joins (~alp@2a01:e0a:58b:4920:e85b:6e33:d06d:4253)
11:34:34 karanlikmadde joins (~karanlikm@2a01:c23:641c:2200:c88d:7d7e:c962:437f)
11:35:52 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
11:36:05 <jophish> Ah, I understand!
11:36:13 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 264 seconds)
11:36:45 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
11:36:45 <jophish> tomjaguarpaw: poorly enough that I'm looking forward to the alternative!
11:37:58 thir joins (~thir@p200300f27f2f01007c5b769b7a26171f.dip0.t-ipconnect.de)
11:38:09 × thir quits (~thir@p200300f27f2f01007c5b769b7a26171f.dip0.t-ipconnect.de) (Client Quit)
11:39:32 × jneira_ quits (~jneira@80.30.100.250) (Ping timeout: 256 seconds)
11:40:05 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
11:40:32 × xff0x quits (~fox@2001:1a81:53c5:c200:980e:44c6:52dd:fd04) (Ping timeout: 260 seconds)
11:41:10 jneira_ joins (~jneira@111.red-176-83-68.dynamicip.rima-tde.net)
11:41:25 xff0x joins (~fox@2001:1a81:53c5:c200:800e:b588:fbcf:aa74)
11:41:31 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds)
11:49:18 × lnlsn quits (~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
11:49:40 cdepillabout joins (~cdepillab@pl35600.ag1001.nttpc.ne.jp)
11:52:30 × hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Remote host closed the connection)
11:54:09 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
11:55:20 × dhil quits (~dhil@195.213.192.122) (Ping timeout: 258 seconds)
11:57:44 <arahael> ANd that alternative is: "Anything else!" ;)
12:00:02 × mterwoord quits (~mterwoord@178.162.204.238) ()
12:00:03 × jneira_ quits (~jneira@111.red-176-83-68.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
12:03:25 lnlsn joins (~lnlsn@189.100.212.150)
12:03:55 <tomjaguarpaw> jophish: We should play a game some time
12:04:59 drbean joins (~drbean@TC210-63-209-144.static.apol.com.tw)
12:06:57 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
12:08:10 × jud quits (~jud@unaffiliated/jud) (Quit: Leaving)
12:08:48 fragamus_ joins (~michaelgo@73.93.152.141)
12:10:06 × lnlsn quits (~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
12:10:49 lnlsn joins (~lnlsn@189.100.212.150)
12:11:25 × knupfer quits (~Thunderbi@200116b82cc5f500182db56019d06096.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
12:11:28 × fragamus quits (~michaelgo@73.93.153.97) (Ping timeout: 260 seconds)
12:11:47 × alp_ quits (~alp@2a01:e0a:58b:4920:e85b:6e33:d06d:4253) (Ping timeout: 272 seconds)
12:12:03 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
12:12:15 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:13:44 Amras joins (~Amras@unaffiliated/amras0000)
12:15:10 × Buntspecht quits (~user@unaffiliated/siracusa) (Quit: Bye!)
12:15:10 jpcooper joins (~user@unaffiliated/jpcooper)
12:15:41 <jpcooper> Hello. The documentation for ShowS (https://hackage.haskell.org/package/base-4.14.0.0/docs/Prelude.html#t:ShowS) mentions constant time concatenation of Strings. How does this work if Strings are just [Char]?
12:17:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
12:17:43 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
12:18:28 × invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 256 seconds)
12:19:31 <Cheery> jpcooper: it's how it is accessed.
12:19:35 <jophish> tomjaguarpaw: I would like that very much
12:19:51 <jpcooper> Cheery: Yes good point. Thanks. Should have worked it out in my head
12:20:16 supercoven_ joins (~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi)
12:20:23 <jophish> tomjaguarpaw: I've been taking photos recently, if you'd like to look at an album: https://photos.app.goo.gl/yUVCPMRnks8cP4fHA
12:20:26 dyeplexer joins (~lol@unaffiliated/terpin)
12:21:05 jud joins (~jud@cpe-70-113-106-222.austin.res.rr.com)
12:21:05 × jud quits (~jud@cpe-70-113-106-222.austin.res.rr.com) (Changing host)
12:21:05 jud joins (~jud@unaffiliated/jud)
12:21:08 <Cheery> jpcooper: you only need the first value when the structure is being accessed.
12:21:55 Icewing joins (~Icewing@unaffiliated/icewing)
12:22:13 <phadej> jpcooper: https://wiki.haskell.org/Difference_list
12:22:25 × supercoven quits (~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi) (Ping timeout: 240 seconds)
12:22:40 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 272 seconds)
12:23:02 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
12:23:12 × daGrevis quits (~daGrevis@unaffiliated/dagrevis) (Quit: daGrevis)
12:23:47 <jpcooper> Makes sense. Thanks
12:24:07 × Gerula quits (~Gerula@unaffiliated/gerula) (Read error: Connection reset by peer)
12:24:18 <phadej> https://www.cs.tufts.edu/~nr/cs257/archive/john-hughes/lists.pdf
12:24:21 <phadej> very old idea :)
12:24:25 <Cheery> for x ++ y, if x=(z:xs), then x ++ y = z:xs++y.
12:24:39 daGrevis joins (~daGrevis@unaffiliated/dagrevis)
12:24:57 hackage polysemy-video 0.1.1.0 - https://hackage.haskell.org/package/polysemy-video-0.1.1.0 (locallycompact)
12:26:51 × lnlsn quits (~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
12:27:32 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
12:28:06 × dmiles quits (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 265 seconds)
12:29:15 × SanchayanM quits (~Sanchayan@136.185.169.16) (Quit: leaving)
12:32:46 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Remote host closed the connection)
12:37:03 × fendor quits (~fendor@046124068105.public.t-mobile.at) (Remote host closed the connection)
12:38:06 geekosaur joins (ac3a8c49@172.58.140.73)
12:38:45 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
12:40:32 lnlsn joins (~lnlsn@189.100.212.150)
12:43:25 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
12:44:02 alp_ joins (~alp@2a01:e0a:58b:4920:8da2:3041:1462:f42)
12:46:58 Achylles joins (~Achylles@179.111.113.1)
12:46:59 × lnlsn quits (~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
12:47:33 invaser joins (~Thunderbi@31.148.23.125)
12:48:05 × gawen_ quits (~gawen@movzbl.root.sx) (Quit: cya)
12:48:28 gawen joins (~gawen@movzbl.root.sx)
12:48:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:48:50 machinedgod joins (~machinedg@24.105.81.50)
12:50:08 revtintin joins (~revtintin@158.140.144.34)
12:54:04 dhil joins (~dhil@195.213.192.122)
12:54:36 lnlsn joins (~lnlsn@189.100.212.150)
12:54:40 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
12:55:09 × untseac quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
12:55:14 polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
12:55:25 Dragavnir joins (~Dragavnir@217.146.82.202)
12:55:38 untseac joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
12:59:43 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
13:00:09 isBEKaml joins (~~.~@unaffiliated/isbekaml)
13:05:37 × alp_ quits (~alp@2a01:e0a:58b:4920:8da2:3041:1462:f42) (Ping timeout: 272 seconds)
13:09:16 × avdb quits (~avdb@ip-83-134-26-198.dsl.scarlet.be) (Quit: WeeChat 2.9)
13:10:19 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 260 seconds)
13:11:47 ephemera_ joins (~E@122.34.1.187)
13:12:27 JordiGH joins (jordi@octave/developer/JordiGH)
13:12:51 <JordiGH> take 100 $ [fib_0*fib_3 - fib_1*fib_2 | fib_0:fib_1:fib_2:fib_3:_ <- tails fibs] where fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
13:12:57 <JordiGH> Why is that a syntax error?
13:13:11 <JordiGH> Is it because I need newlines?
13:13:20 <JordiGH> I don't understand where I can use `where`.
13:13:20 moy joins (a4b11321@static-csq-cds-019033.business.bouyguestelecom.com)
13:13:45 moy is now known as Guest29616
13:13:55 perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
13:13:56 <ski> JordiGH : `where' attaches to definition, not expressions
13:13:58 <geekosaur> `where` is part of declaration syntax, not something you can attach to just any expression
13:14:12 carlomagno joins (~cararell@inet-hqmc01-o.oracle.com)
13:14:45 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
13:15:10 <ski> you could use `let fibs = ... in take 100 [...]'
13:15:25 <JordiGH> Is that because I can use = with let but not with where?
13:15:35 <JordiGH> Is that a definition or an expression?
13:15:47 <ski> `let ... in ...' is an expression
13:15:51 <Guest29616> Hello. Since i added sockaddr as a dependency of my stack project, stack build is displayid me an error saying i need to add a line on extra-deps field. But when i do, then it say that extra-deps field is not recognized. I dont get it :/ Herer is the error and my package.yaml :
13:15:52 <Guest29616> https://pastebin.com/68kGhcKJhttps://pastebin.com/68kGhcKJhttps://pastebin.com/68kGhcKJhttps://pastebin.com/68kGhcKJ
13:15:54 <JordiGH> But there's an =
13:15:58 <JordiGH> An = is not a definition?
13:16:11 <Guest29616> https://pastebin.com/68kGhcKJ sorry
13:16:15 <ski> yes, the part between the `let' and the `in' can contain defining equations
13:16:27 <ski> but the whole thing is still an expression
13:16:35 <JordiGH> So expressions can contain definitions?
13:16:47 <JordiGH> I can't write an expression that contains a where definition?
13:16:55 <ski> (cf the expression `(let ((fibs ...)) ..fibs..)' in the Lisps)
13:16:58 hackage nix-thunk 0.2.0.0 - Lightweight dependency management with Nix https://hackage.haskell.org/package/nix-thunk-0.2.0.0 (RyanTrinkle)
13:17:23 <ski> you can, but then that `where' have to be attached to a defining equation (or a `case' branch), inside that expression
13:17:40 <ski> you can go `let foo = ..x.. where x = ... in ..foo..'
13:17:52 <JordiGH> Haskell doesn't distinguish statements from expressions, does it?
13:18:06 <ski> (you can also do `case ... of x:xs -> ..x..xs..y.. where y = ..x..xs..')
13:18:11 <JordiGH> Definitions seem like statements, sort of.
13:18:30 <ski> definitions are not commands
13:18:43 <ski> (commands are what you write after `do')
13:18:44 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:a405:7897:267b:514b)
13:19:06 <JordiGH> Hm, okay.
13:19:34 <ski> (statements, i'd say, is what you write in Prolog. like `mother(bob,eliza).')
13:19:38 JordiGH = https://www.youtube.com/watch?v=KdxEAt91D7k
13:19:55 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
13:20:29 <ski> (statements of fact, and conditional statements like "Mothers are parents.", `parent(Person,Mother) :- mother(Person,Mother).')
13:22:04 <JordiGH> I think I'm trying to picture Haskell syntax as sexps and failing.
13:22:15 × Guest29616 quits (a4b11321@static-csq-cds-019033.business.bouyguestelecom.com) (Remote host closed the connection)
13:22:57 <JordiGH> And I thought "do" wasn't a real thing, just some kind of sugar for something else.
13:23:08 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
13:23:27 <JordiGH> Like, you could translate every "do" into something else that didn't require, uh, "commands".
13:23:33 <geekosaur> it is sugar. I would have described it more that the inside of a do pretends to be commands
13:23:39 <JordiGH> So, do is just a reader macro.
13:23:53 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
13:24:00 <geekosaur> but trying to shoehorn haskell into scheme syntax won't get you very far, I think
13:24:26 ephemera_ joins (~E@122.34.1.187)
13:24:41 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:25:00 <geekosaur> I mean,in some sense typeclasses are also sugar, but you can't do it with a reader macro
13:25:35 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
13:25:40 <ski> `do ...' itself is an expression, yes
13:26:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:28:08 <ski> (there has been `do'-macros defined in Scheme, fwiw ..)
13:28:52 × lnlsn quits (~lnlsn@189.100.212.150) (Ping timeout: 258 seconds)
13:30:01 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
13:30:31 × Dragavnir quits (~Dragavnir@217.146.82.202) (Remote host closed the connection)
13:30:38 × brisbin quits (~patrick@pool-173-49-158-4.phlapa.fios.verizon.net) (Quit: WeeChat 2.9)
13:31:47 lnlsn joins (~lnlsn@2804:14c:2b:891d::1007)
13:32:09 whald joins (~trem@2a02:810a:8100:11a6:6d28:5eff:640c:9eda)
13:33:41 × lep-delete quits (~lep@94.31.82.44) (Read error: Connection reset by peer)
13:33:59 lep-delete joins (~lep@94.31.82.44)
13:36:50 <JordiGH> I'm identifying so hard right now with that kid who can't subtract.
13:38:59 × ephemera_ quits (~E@122.34.1.187) (Read error: Connection reset by peer)
13:39:19 nyd joins (~lpy@unaffiliated/elysian)
13:39:54 ephemera_ joins (~E@122.34.1.187)
13:40:04 neefany joins (4d283e9e@77.40.62.158)
13:40:09 <ski> the syntax ?
13:40:17 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
13:40:36 ensyde joins (~ensyde@2600:1702:2e30:1a40:584e:1c7e:e97b:16d2)
13:42:28 × Icewing quits (~Icewing@unaffiliated/icewing) (Ping timeout: 272 seconds)
13:44:55 × ensyde quits (~ensyde@2600:1702:2e30:1a40:584e:1c7e:e97b:16d2) (Ping timeout: 240 seconds)
13:46:53 × geekosaur quits (ac3a8c49@172.58.140.73) (Remote host closed the connection)
13:47:05 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
13:47:29 × neefany quits (4d283e9e@77.40.62.158) (Remote host closed the connection)
13:50:40 × Rudd0^ quits (~Rudd0@185.189.115.98) (Ping timeout: 246 seconds)
13:51:23 × reallymemorable quits (~quassel@ip68-9-215-56.ri.ri.cox.net) (Ping timeout: 260 seconds)
13:51:32 <bifunc2> Is it appropriate to put an integration test into an HUnit testCase?
13:52:13 × nyd quits (~lpy@unaffiliated/elysian) (Quit: nyd)
13:53:03 × cdepillabout quits (~cdepillab@pl35600.ag1001.nttpc.ne.jp) (Quit: Leaving)
13:55:06 fendor joins (~fendor@046124068105.public.t-mobile.at)
13:55:31 × drbean quits (~drbean@TC210-63-209-144.static.apol.com.tw) (Ping timeout: 256 seconds)
13:55:49 × Nahra quits (~Nahra@unaffiliated/nahra) (Quit: leaving)
13:57:14 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:57:36 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:a405:7897:267b:514b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:00:50 petersen joins (~petersen@redhat/juhp)
14:00:57 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
14:01:52 gnrp1 joins (~gnrp@84.39.117.57)
14:06:46 × bifunc2 quits (bifunc2@gateway/vpn/protonvpn/bifunc2) (Ping timeout: 246 seconds)
14:07:30 Sheilong joins (uid293653@gateway/web/irccloud.com/x-mfevbueuacsxobra)
14:15:20 kotrcka joins (~kotrcka@ip-94-112-194-11.net.upcbroadband.cz)
14:16:14 howdoi joins (uid224@gateway/web/irccloud.com/x-ingbgflergmrjqkw)
14:16:30 djellemah joins (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
14:16:35 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:fc2b:b27d:96e3:a54e)
14:17:50 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:fc2b:b27d:96e3:a54e) (Client Quit)
14:21:06 × dwt quits (~dwt@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 272 seconds)
14:30:41 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:31:17 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
14:31:17 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
14:31:17 GyroW joins (~GyroW@unaffiliated/gyrow)
14:31:52 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 272 seconds)
14:32:25 × ericsagnes quits (~ericsagne@2405:6580:0:5100:1942:718:5977:178d) (Ping timeout: 240 seconds)
14:33:47 × xff0x quits (~fox@2001:1a81:53c5:c200:800e:b588:fbcf:aa74) (Ping timeout: 260 seconds)
14:33:59 <zincy__> Is it correct to refer to the parameter in Maybe's type constructor as a polymorphic type variable?
14:34:38 xff0x joins (~fox@2001:1a81:53c5:c200:3161:a29a:3186:4358)
14:34:45 <L29Ah> s/polymorphic//
14:35:15 <zincy__> Does that mean delete the word?
14:35:28 urodna joins (~urodna@unaffiliated/urodna)
14:35:33 × lnlsn quits (~lnlsn@2804:14c:2b:891d::1007) (Ping timeout: 272 seconds)
14:35:35 × kotrcka quits (~kotrcka@ip-94-112-194-11.net.upcbroadband.cz) (Quit: kotrcka)
14:35:49 <L29Ah> yes
14:36:14 conal joins (~conal@64.71.133.70)
14:36:18 × invaser quits (~Thunderbi@31.148.23.125) (Quit: invaser)
14:36:44 invaser joins (~Thunderbi@31.148.23.125)
14:36:51 <zincy__> Ok thanks
14:37:54 dwt joins (~dwt@c-98-200-58-177.hsd1.tx.comcast.net)
14:37:57 bitmapper joins (uid464869@gateway/web/irccloud.com/x-nisutrzlzcwlcitv)
14:38:48 <ski> zincy__ : not polymorphic
14:39:03 × dhil quits (~dhil@195.213.192.122) (Ping timeout: 260 seconds)
14:39:33 Tops2 joins (~Tobias@dyndsl-095-033-019-139.ewe-ip-backbone.de)
14:39:57 <zincy__> ski: Maybe I dont understand what polymorphism is but when I see a type variable I just think oh look polymorphic
14:40:02 <zincy__> Is that misguided?
14:40:03 <ski> (parametric types begets polymorphic operations on such types. so there is a relation)
14:40:45 <ski> `length' is polymorphic. its type `[a] -> Int' is not polymorphic (nor is the type variable `a', in that type, polymorphic)
14:41:15 <zincy__> Oh so polymorphism refers to operations on values of different types
14:41:41 <zincy__> Whereas type variable is just about representation
14:41:48 <ski> the explicit type of `length' is `forall a. [a] -> Int'. Haskell allows you to leave out the `forall' in source, and it'll be inserted implicitly by the language. but it's always, conceptually, there
14:42:12 <ski> a value is polymorphic if and only if it has a type of general shape `forall a. ..a..'
14:42:24 <zincy__> Ah thanks!
14:42:47 <ski> just like a value is a list if and only if it has a type of general shape `[...]'. or is a function if and only if it has a type of general shape `... -> ...'
14:42:54 <zincy__> So just functions can be polymorphic?
14:43:10 × Tops2 quits (~Tobias@dyndsl-095-033-019-139.ewe-ip-backbone.de) (Client Quit)
14:43:15 <ski> no. e.g. `Nothing' is not a function, but is still polymorphic. has type `forall a. Maybe a'
14:43:56 <zincy__> Is Nothing not a data constructor and data constructors are functions?
14:44:07 <ski> not all deata constructors are functions, no
14:44:25 <ski> `Nothing' doesn't have a type that looks like `... -> ...'. hence it's not a function
14:45:06 <zincy__> So only data constructors which are parameterised by at least one other value are functions?
14:45:10 × jpcooper quits (~user@unaffiliated/jpcooper) (Ping timeout: 272 seconds)
14:45:13 <ski> in fact, strictly speaking, `Just' isn't a function, either. it has type `forall a. a -> Maybe a'. it's a "polymorphic value (that when specialized, will become a function)"
14:45:14 ericsagnes joins (~ericsagne@2405:6580:0:5100:54da:6b21:e514:b8a2)
14:45:18 × fragamus_ quits (~michaelgo@73.93.152.141) (Read error: Connection reset by peer)
14:45:38 <ski> yes, data constructors which take arguments, which "pack data fields", are functions
14:46:07 <ski> (or, in this case, "polymorphic functions", meaning "polymorphic value, that when specialized, will become a function")
14:46:24 <zincy__> So forall a. id :: a -> a isn't a function?
14:46:33 <zincy__> Until you parameterise the `a`?
14:46:45 × Katarushisu quits (~Katarushi@82.30.254.24) (Quit: The Lounge - https://thelounge.chat)
14:47:18 <ski> strictly speaking, it's not a function. but if we take `id :: forall a. a -> a', and specialize this, replacing `a' by `Bool' say, we get `id :: Bool -> Bool', which is a function
14:47:51 <zincy__> Thanks, I have upgraded my thinking
14:47:55 × unlink2 quits (~unlink2@p200300ebcf17c500f1cd4c5efbdddd1e.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
14:48:02 <ski> one perhaps confusing part here is that the specializing of a polymorphic value is written as nothing, in the syntax. we still write `id'. but conceptually, it's an operation
14:48:07 <zincy__> And to think I understood data constructors and Maybe :D
14:48:21 <ski> (with a language extension, you can actually write `id @Bool' for this)
14:49:00 <zincy__> Yeah so the polymorphic value becomes a function at some point during run time
14:49:44 <ski> you can think of it as being a kind of expression node, in the abstract syntax tree in the implementation. it's just that it's (usually) written as nothing, in the source code
14:50:00 cole-h_ joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
14:50:25 fragamus joins (~michaelgo@73.93.152.141)
14:50:26 <zincy__> Ah thanks
14:51:28 hackage path-io 1.6.1 - Interface to ‘directory’ package for users of ‘path’ https://hackage.haskell.org/package/path-io-1.6.1 (mrkkrp)
14:51:47 × isBEKaml quits (~~.~@unaffiliated/isbekaml) (Quit: Leaving)
14:52:00 jneira_ joins (~jneira@111.red-176-83-68.dynamicip.rima-tde.net)
14:52:11 <ski> something like `data Exp | Var Ident | Con Ident | App Exp Exp | Spec Exp Typ | ...' with `data Typ = TyVar Ident | TyCon Ident | Fun Typ Typ | Forall Ident Typ | ...'
14:52:14 <zincy__> So is the general shape the same for parametric and adhoc polymorphism?
14:52:29 <zincy__> Or is the difference there just the behaviour of the operation
14:53:25 <ski> you could represent an expression like `not (id False)', using this AST, as `App (Var "not") (App (Spec (Var "id") (TyCon "Bool")) (Con "False"))'
14:53:54 <ski> zincy__ : the difference is that the latter also involve type class constraints
14:54:08 <zincy__> Ok gotcha
14:54:34 <ski> `sort :: forall a. Ord a => [a] -> [a]' means `sort :: forall a. ((Ord a) => ([a] -> [a]))'
14:54:45 <zincy__> So will that AST be reqritten when the `a` is specialised?
14:54:59 <zincy__> And when would the rewriting occur?
14:55:01 <ski> `... => ...' is a separate operation on types. you could call it the type of overloaded operations, i suppose
14:55:56 <zincy__> Interesting
14:57:08 <ski> well, in that example, `Var "id"' would be classified as having the type (namely `forall a. a -> a') expressed by `Forall "a" (Fun (TyVar "a") (TyVar "a"))'
14:57:40 knupfer joins (~Thunderbi@200116b82cc5f5003098c64aed4ab9ee.dip.versatel-1u1.de)
14:58:02 alp_ joins (~alp@2a01:e0a:58b:4920:417:348e:da6e:d990)
14:58:37 <ski> specializing that to `Bool', we have that `Spec (Var "id")' is classified by `Fun (TyCon "Bool") (TyCon "Bool")'
14:59:32 × hiroaki quits (~hiroaki@2a02:908:4b18:e20::a362) (Ping timeout: 246 seconds)
15:00:01 × gnrp1 quits (~gnrp@84.39.117.57) ()
15:00:11 <ski> i'm not sure if the rewriting you have in mind would correspond to reducing/evaluating expressions .. or maybe you were thinking of the substitution (in the type, replacing the type variable with some other type) when specializing a polymorphic value
15:00:24 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:01:43 <zincy__> The latter
15:02:01 unlink2 joins (~unlink2@p200300ebcf3c540084d3be2f13d23449.dip0.t-ipconnect.de)
15:02:17 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:02:50 <ski> that substitution (in the type) happens during type-checking
15:03:06 <zincy__> So a nullary data/type constructor shouldn't be thought of as a function but just a plain value/type
15:03:17 <zincy__> Ah ok
15:03:54 <zincy__> Because I used to think of nullary constructors as functions of 0 parameters
15:03:58 <ski> (you could imagine a corresponding substitution, in the implementation of e.g. `sort', that would be happening (conceptually) at run-time. it's just that with a type-erasing implementation, this would corresponds to a no-op)
15:04:17 <ski> yea, all functions take exactly one argument, in Haskell
15:04:31 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
15:04:38 <ski> if a value doesn't have a type that looks like `... -> ...', it's not a function
15:04:47 <zincy__> Ah great thanks
15:05:41 Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas)
15:05:47 <ski> it's another thing that, because of Haskell's non-strict semantics, you can define a value, like e.g. with `ones = 1 : ones', whose computation won't happen yet, until its result is demanded
15:06:47 <ski> in a strict language, the only way to delay a computation like this, tends to be to define a function. but that's not the case in Haskell
15:07:47 Buntspecht joins (~user@unaffiliated/siracusa)
15:07:47 × jneira_ quits (~jneira@111.red-176-83-68.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
15:08:14 <ski> if you want to, you could say that general values, in Haskell, can be implemented by a procedure, that, when executed/followed, will produce the demanded result (typically a data constructor, to be matched on)
15:08:35 <ski> but that's an implementation detail, not a property of Haskell itself
15:08:48 jneira_ joins (~jneira@80.30.100.250)
15:09:10 <ski> (but sometimes people try to express this, by saying that "everything in Haskell is a function", or something like that)
15:10:01 × invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 265 seconds)
15:10:37 <zincy__> So values with lazy semantics are represented by procedures which yield a value
15:10:59 <zincy__> But functions are concrete values which are yielded by such procedures
15:11:38 <zincy__> As in functions are specific values but in the first line I was talking about general values
15:11:55 <ski> (careful to distinguish values at the level of the language, from .. i suppose, let's call them "tokens" .. at the level of the implementation)
15:12:11 hiroaki joins (~hiroaki@2a02:908:4b18:e20::dd5c)
15:12:55 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:13:31 × jneira_ quits (~jneira@80.30.100.250) (Ping timeout: 260 seconds)
15:16:51 <zincy__> Yeah
15:17:30 lightwave joins (uid469838@gateway/web/irccloud.com/x-senxbphlukrorlpa)
15:19:03 <lightwave> Hello everyone. Newbie here. Going down the Haskell highway without wearing a seat belt.
15:19:05 danvet_ joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
15:19:23 <ski> hello lightwave
15:19:57 <lightwave> hi ski
15:20:31 × alp_ quits (~alp@2a01:e0a:58b:4920:417:348e:da6e:d990) (Ping timeout: 272 seconds)
15:20:37 <lightwave> Any Doom Emacs user here?
15:20:38 <ski> do you have any questions, so far ?
15:21:13 × petersen quits (~petersen@redhat/juhp) (Ping timeout: 264 seconds)
15:21:40 <lightwave> ski, I'm trying to get my Doom Emacs Haskell LSP module setup but having a confusion in Haskell-language-server installation.
15:22:04 ski hasn't tried getting LSP working
15:22:33 <lightwave> It seems Haskell-langauge-server can be installed with ghcup but I came across some advice against using ghcup. Is there a way to install Haskell-language-server with Stack?
15:22:37 <ski> (if you wait a bit, perhaps someone else who's tried that could give some advice)
15:22:41 × unlink2 quits (~unlink2@p200300ebcf3c540084d3be2f13d23449.dip0.t-ipconnect.de) (Remote host closed the connection)
15:22:49 <lightwave> ski, what do you use? Dante?
15:22:54 unlink2 joins (~unlink2@p200300ebcf3c54001b9e8be0a8d0c9c4.dip0.t-ipconnect.de)
15:23:22 Katarushisu joins (~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net)
15:23:31 <maerwald> lightwave: what was that advice?
15:23:44 <maerwald> (against using ghcup, that is)
15:24:42 ski just uses basic `haskell-mode'
15:25:38 <lightwave> maerwald, here is the link. https://mail.haskell.org/pipermail/haskell-community/2015-September/000014.html
15:26:34 <maerwald> I don't see ghcup discussed there
15:26:51 × kuribas quits (~user@ptr-25vy0i8tzgojz6gquv5.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
15:26:56 <maerwald> that's a post from 2015
15:27:01 renzhi joins (~renzhi@modemcable070.17-177-173.mc.videotron.ca)
15:27:03 <lightwave> maerwald, is ghcup not the same as 'Haskell Platform'?
15:27:05 <maerwald> no
15:27:35 <lightwave> So, ghcup doesn't install a global ghc and packages along with it?
15:27:37 <maerwald> I don't even know what haskell platform is these days
15:27:51 <maerwald> lightwave: it installs ghc and cabal into ~/.ghcup
15:27:55 <maerwald> nothing else
15:28:04 <lightwave> Haskell.org points Haskell Platform to ghcup.
15:28:16 <lightwave> Very confusing for newbie. :-)
15:28:17 <maerwald> yes, it's a mess of page redirections and confusion
15:28:26 <maerwald> I raised that several times, there's no action
15:28:52 × dwt quits (~dwt@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 265 seconds)
15:29:47 <maerwald> https://github.com/haskell-infra/www.haskell.org/issues/12
15:30:19 <lightwave> Are those libraries/packages in ~/.ghcup/ghc/8.8.4/lib/ghc-8.8.4 not going to cause potential conflicts down the road for me?
15:30:39 <maerwald> no, those are always shipped with GHC, no matter how you install
15:30:49 jneira_ joins (~jneira@111.red-176-83-68.dynamicip.rima-tde.net)
15:31:13 <lightwave> I feel less stressed now. 🙂
15:31:17 <maerwald> :D
15:32:32 <lightwave> It drives me nut when I don't know if I'm potentially shooting myself in the foot especially when there is some voice in the Internet warning me loudly in my head.
15:32:43 × fendor quits (~fendor@046124068105.public.t-mobile.at) (Ping timeout: 260 seconds)
15:32:52 <maerwald> Paranoia is a virtue
15:34:16 Slava_ joins (~textual@2a02:8308:89:8a00:2cbe:ab16:cb7a:e0ed)
15:34:16 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
15:34:17 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
15:34:38 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
15:40:16 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 272 seconds)
15:40:35 jpcooper joins (~user@unaffiliated/jpcooper)
15:42:24 × MattMareo quits (~mattl@unaffiliated/mattmareo) (Ping timeout: 256 seconds)
15:42:57 MattMareo joins (~mattl@unaffiliated/mattmareo)
15:42:58 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:6096:8e01:2935:dbba)
15:44:22 × djellemah quits (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 260 seconds)
15:44:57 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
15:45:15 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
15:45:16 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
15:45:16 GyroW joins (~GyroW@unaffiliated/gyrow)
15:46:28 hackage req 3.7.0 - Easy-to-use, type-safe, expandable, high-level HTTP client library https://hackage.haskell.org/package/req-3.7.0 (mrkkrp)
15:48:50 djellemah joins (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
15:53:54 Gerula joins (~Gerula@unaffiliated/gerula)
15:55:15 DarTar joins (~DarTar@185.204.1.185)
15:55:26 <monochrom> How could the Internet be in your head?
15:55:34 <maerwald> a terrifying thought
15:56:37 × elliott_ quits (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
15:56:44 <monochrom> "The Phaaaaaaan, tom of the Internet is theeeeeeeere. In siiiiide my mind!"
15:58:32 fendor joins (~fendor@178.165.129.91.wireless.dyn.drei.com)
15:58:33 × jneira_ quits (~jneira@111.red-176-83-68.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
15:58:40 jneira_ joins (~jneira@80.30.100.250)
15:59:01 <monochrom> Haskell Platform is now a historic relic.
16:00:10 fendor_ joins (~fendor@046124068105.public.t-mobile.at)
16:00:22 Rudd0 joins (~Rudd0@185.189.115.98)
16:00:24 jsynacek joins (~jsynacek@ip-185-149-130-112.kmenet.cz)
16:03:57 <MarcelineVQ> It belongs in a museum!
16:04:07 <lightwave> monochrom, my wife says I have a big head.
16:04:17 <maerwald> xd
16:04:22 <monochrom> Megamind
16:05:28 elliott_ joins (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
16:05:33 × elliott_ quits (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Read error: Connection reset by peer)
16:06:21 chris joins (~chris@81.96.113.213)
16:06:45 chris is now known as Guest14237
16:07:57 elliott_ joins (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
16:08:19 × Achylles quits (~Achylles@179.111.113.1) (Quit: Leaving)
16:08:27 tzh joins (~tzh@2601:448:c500:5300::bfca)
16:08:33 × knupfer quits (~Thunderbi@200116b82cc5f5003098c64aed4ab9ee.dip.versatel-1u1.de) (Quit: knupfer)
16:08:47 knupfer joins (~Thunderbi@200116b82cc5f5009c7410757d55ad2f.dip.versatel-1u1.de)
16:14:47 × GyroW quits (~GyroW@unaffiliated/gyrow) (Remote host closed the connection)
16:15:05 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
16:15:06 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
16:15:06 GyroW joins (~GyroW@unaffiliated/gyrow)
16:17:24 × DavidEichmann quits (~david@43.240.198.146.dyn.plus.net) (Remote host closed the connection)
16:17:32 × jneira_ quits (~jneira@80.30.100.250) (Ping timeout: 258 seconds)
16:18:06 ystael joins (~ystael@209.6.50.55)
16:18:27 jneira_ joins (~jneira@111.red-176-83-68.dynamicip.rima-tde.net)
16:18:27 DavidEichmann joins (~david@43.240.198.146.dyn.plus.net)
16:20:02 lawr3nce joins (~lawr3nce@gateway/tor-sasl/lawr3nce)
16:21:11 geekosaur joins (82659a0e@host154-014.vpn.uakron.edu)
16:21:34 × fendor_ quits (~fendor@046124068105.public.t-mobile.at) (Ping timeout: 256 seconds)
16:23:20 × dcoutts_ quits (~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 272 seconds)
16:23:32 alp_ joins (~alp@2a01:e0a:58b:4920:fc9b:d25a:66ec:3629)
16:24:25 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:6096:8e01:2935:dbba) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:28:58 hackage haskell-exp-parser 0.1.4 - Simple parser parser from Haskell to TemplateHaskell expressions https://hackage.haskell.org/package/haskell-exp-parser-0.1.4 (EmilAxelsson)
16:29:13 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 246 seconds)
16:31:37 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
16:31:48 GyroW joins (~GyroW@d54c03e98.access.telenet.be)
16:31:48 × GyroW quits (~GyroW@d54c03e98.access.telenet.be) (Changing host)
16:31:48 GyroW joins (~GyroW@unaffiliated/gyrow)
16:31:52 × Slava_ quits (~textual@2a02:8308:89:8a00:2cbe:ab16:cb7a:e0ed) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:34:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
16:34:13 × toorevitimirp quits (~tooreviti@117.182.180.0) (Quit: Konversation terminated!)
16:34:28 xerox_ joins (~xerox@unaffiliated/xerox)
16:39:59 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:40:05 × jpcooper quits (~user@unaffiliated/jpcooper) (Ping timeout: 240 seconds)
16:42:33 Tops2 joins (~Tobias@dyndsl-095-033-019-139.ewe-ip-backbone.de)
16:44:08 oish joins (~charlie@228.25.169.217.in-addr.arpa)
16:44:58 × oish quits (~charlie@228.25.169.217.in-addr.arpa) (Client Quit)
16:45:11 lnlsn joins (~lnlsn@189.100.212.150)
16:45:56 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 256 seconds)
16:47:14 ephemera_ joins (~E@122.34.1.187)
16:48:07 lep-delete is now known as Guest88073
16:49:28 <maerwald> https://paste.tomsmeding.com/N28qCrM3 is there a more efficient way to write this? (with efficient I mean faster/better optimized, not golfing)e
16:50:38 <opqdonut> looks pretty optimal to me
16:50:43 <phadej> maerwald: chunksOf -- no
16:50:54 <opqdonut> given lists
16:51:14 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:6096:8e01:2935:dbba)
16:51:15 <phadej> https://hackage.haskell.org/package/extra-1.7.8/docs/src/Data.List.Extra.html#chunksOf
16:51:48 <maerwald> that looks pretty much the same, yeah
16:52:25 irc_user joins (uid423822@gateway/web/irccloud.com/x-jycoetfjhrvokwjj)
16:52:52 Guest88073 is now known as lep-delete
16:53:18 × coot quits (~coot@37.30.35.208.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds)
16:54:12 Slava_ joins (~textual@2a02:8308:89:8a00:2cbe:ab16:cb7a:e0ed)
16:56:48 × howdoi quits (uid224@gateway/web/irccloud.com/x-ingbgflergmrjqkw) (Quit: Connection closed for inactivity)
16:56:54 × jneira_ quits (~jneira@111.red-176-83-68.dynamicip.rima-tde.net) (Ping timeout: 272 seconds)
16:58:34 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
16:59:55 ephemera_ joins (~E@122.34.1.187)
17:00:42 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
17:01:31 × lawr3nce quits (~lawr3nce@gateway/tor-sasl/lawr3nce) (Quit: Leaving)
17:04:57 hackage joint 0.1.8 - Trying to compose non-composable https://hackage.haskell.org/package/joint-0.1.8 (iokasimovmt)
17:05:37 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 264 seconds)
17:06:37 × lnlsn quits (~lnlsn@189.100.212.150) (Remote host closed the connection)
17:06:38 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:06:55 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-mfevbueuacsxobra) (Quit: Connection closed for inactivity)
17:10:26 × Guest14237 quits (~chris@81.96.113.213) (Remote host closed the connection)
17:11:59 × alp_ quits (~alp@2a01:e0a:58b:4920:fc9b:d25a:66ec:3629) (Ping timeout: 272 seconds)
17:12:00 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
17:12:55 avdb joins (~avdb@ip-83-134-202-115.dsl.scarlet.be)
17:18:49 × LKoen quits (~LKoen@81.255.219.130) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
17:21:16 × Slava_ quits (~textual@2a02:8308:89:8a00:2cbe:ab16:cb7a:e0ed) (Quit: Textual IRC Client: www.textualapp.com)
17:21:48 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
17:22:06 elliott__ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
17:22:12 × avdb quits (~avdb@ip-83-134-202-115.dsl.scarlet.be) (Quit: WeeChat 2.9)
17:22:14 × elliott_ quits (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
17:22:27 avdb joins (~avdb@ip-83-134-202-115.dsl.scarlet.be)
17:22:34 elliott_ joins (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
17:25:03 Kira_ joins (~Kira@201.192.165.173)
17:25:05 mananamenos_ joins (~mananamen@84.122.202.215.dyn.user.ono.com)
17:25:50 dhil joins (~dhil@195.213.192.122)
17:25:59 × halogenandtoast quits (~halogenan@072-176-116-031.res.spectrum.com) (Quit: WeeChat 2.9)
17:26:58 × avdb quits (~avdb@ip-83-134-202-115.dsl.scarlet.be) (Client Quit)
17:27:05 × mananamenos quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Ping timeout: 240 seconds)
17:27:19 <Kira_> Greetings
17:27:25 <lightwave> Hello Kira
17:27:35 <Kira_> Helloo
17:28:20 Sheilong joins (uid293653@gateway/web/irccloud.com/x-uldwzywipdbtosxt)
17:30:05 <lightwave> newbie question: If one stack install hoogle or something else from one stack project and then stack install hoogle from another stack project. The hoogle binary will be overwritten in ~/.local/bin. If two different stack projects are using two different LTS version and hence two GHC versions, how do you ensure each sandbox project has its own versioned Hoogle binary?
17:30:57 <phadej> version of hoogle binary itself doesn't matter
17:31:28 <phadej> (except I don't know how compatible databases are)
17:31:43 <phadej> but having just one hoogle binary will make your life easier
17:32:33 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
17:32:57 <geekosaur> what should happen is it gets installed in a project-specific exec directpry and then symlinked to ~/local/bin, then use stack exec to run hoogle within each project to ensure its specific hoogle is run. although as phadej says it'll all go easier if you can get away with running one version globally
17:33:49 × oats quits (~hurr@durr/im/a/sheep) (Quit: until later, my friends)
17:34:11 cole-h_ is now known as cole-h
17:34:12 oats joins (~hurr@durr/im/a/sheep)
17:34:39 <Kira_> I've havent organized myself to continuously keep practicing haskell, but little by little I think Im understanding the language. Finally when attempting to finish my tiny dummy login, I attempted to do the following:
17:34:47 <Kira_> https://pastebin.com/0DTLpFrW
17:34:54 × Inoperable quits (~PLAYER_1@fancydata.science) (Remote host closed the connection)
17:35:10 <Kira_> but Im getting the error noted at the end of the pastebin ^:
17:35:40 <Kira_> • Couldn't match type ‘Login’ with ‘HashMap Text Value’
17:35:43 <Kira_> Expected type: Object
17:35:45 <Kira_> Actual type: Login
17:35:47 <Kira_> • In the first argument of ‘(.:)’, namely ‘login’
17:36:42 <Kira_> in Yesod do we obtain the values of keys of a JSON in a different way?
17:37:46 <geekosaur> it's not a json at that point, but a Haskell value
17:39:30 <geekosaur> or at least that's what you have told it with the type `Handler Login`
17:41:16 jkachmar joins (uid226591@gateway/web/irccloud.com/x-veduxhoxxqmbqgpm)
17:42:32 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 256 seconds)
17:42:53 ephemera_ joins (~E@122.34.1.187)
17:45:51 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
17:46:34 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:46:38 a1c3 joins (~a1c3@c-67-175-34-43.hsd1.il.comcast.net)
17:46:49 <a1c3> :t
17:46:55 <Kira_> hmmm
17:47:02 <Kira_> so then I should transform my Handler Login into a
17:47:05 <Kira_> Login
17:47:30 <Kira_> and then, obtain the property email, from this Login
17:47:34 <geekosaur> requireCheckJsonBody presumably did that
17:47:46 <monochrom> You already have your Login.
17:47:49 <geekosaur> so you just want to extract the email field from the resulting Haskell value
17:48:33 × a1c3 quits (~a1c3@c-67-175-34-43.hsd1.il.comcast.net) (Client Quit)
17:49:58 <Kira_> Yup, you guys were right
17:50:19 <Kira_> like this:
17:50:21 <Kira_> postUserLoginR :: Handler Value
17:50:24 <Kira_> postUserLoginR = do
17:50:26 <Kira_> login <- requireCheckJsonBody :: Handler Login
17:50:28 <Kira_> let usermail = email login
17:50:30 <Kira_> sendStatusJSON ok200 (object [ "login" .= usermail ] )
17:50:32 <Kira_> the method compiles
17:50:35 <Kira_> the project *
17:50:55 <Kira_> and then, when performing a POST request, I now get the user email
17:50:59 GyroW_ joins (~GyroW@d54C03E98.access.telenet.be)
17:50:59 × GyroW_ quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
17:50:59 GyroW_ joins (~GyroW@unaffiliated/gyrow)
17:51:23 <Kira_> as {"login": "foo@mail.com"}
17:51:31 <Kira_> Thank you all!
17:52:10 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 256 seconds)
17:57:31 × djellemah quits (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 244 seconds)
17:58:39 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:6096:8e01:2935:dbba) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:59:28 hackage less-arbitrary 0.1.0.0 - Linear time testing with variant of Arbitrary class that always terminates. https://hackage.haskell.org/package/less-arbitrary-0.1.0.0 (MichalGajda)
18:00:02 × DarTar quits (~DarTar@185.204.1.185) ()
18:01:14 × dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection)
18:02:14 alp_ joins (~alp@2a01:e0a:58b:4920:a0a0:4e46:1a7b:c634)
18:02:14 fendor_ joins (~fendor@178.165.130.180.wireless.dyn.drei.com)
18:03:56 chaosmasttter joins (~chaosmast@p200300c4a710fa0165702c806d7b3e40.dip0.t-ipconnect.de)
18:04:42 × fendor quits (~fendor@178.165.129.91.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
18:05:27 hackage less-arbitrary 0.1.0.1 - Linear time testing with variant of Arbitrary class that always terminates. https://hackage.haskell.org/package/less-arbitrary-0.1.0.1 (MichalGajda)
18:07:10 chris joins (~chris@81.96.113.213)
18:07:33 chris is now known as Guest44468
18:09:14 djellemah joins (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
18:09:28 <monochrom> aaarrrggghhh they forgot to include less-arbitray.md
18:09:31 lnlsn joins (~lnlsn@189.100.212.150)
18:10:22 × knupfer quits (~Thunderbi@200116b82cc5f5009c7410757d55ad2f.dip.versatel-1u1.de) (Remote host closed the connection)
18:10:30 knupfer joins (~Thunderbi@200116b82cc5f5003098c64aed4ab9ee.dip.versatel-1u1.de)
18:10:57 <monochrom> OK nevermind, probably intended.
18:11:19 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 260 seconds)
18:11:44 ephemera_ joins (~E@122.34.1.187)
18:11:48 mananamenos__ joins (~mananamen@84.122.202.215.dyn.user.ono.com)
18:11:53 Inoperable joins (~PLAYER_1@fancydata.science)
18:13:13 × stree quits (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
18:13:30 stree joins (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net)
18:15:03 × mananamenos_ quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Ping timeout: 260 seconds)
18:15:18 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
18:17:59 × ephemera_ quits (~E@122.34.1.187) (Read error: Connection reset by peer)
18:17:59 × lnlsn quits (~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
18:18:01 kenran joins (~maier@87.123.205.246)
18:18:41 ephemera_ joins (~E@122.34.1.187)
18:20:23 cosimone_ joins (~cosimone@5.170.241.6)
18:20:56 netsoundW1 joins (~netsoundW@185.204.1.185)
18:22:26 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:23:52 cosimone__ joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
18:23:58 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
18:24:12 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Ping timeout: 260 seconds)
18:24:38 cosimone__ is now known as cosimone
18:25:17 × Guest44468 quits (~chris@81.96.113.213) (Remote host closed the connection)
18:25:40 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
18:26:01 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
18:26:19 × geekosaur quits (82659a0e@host154-014.vpn.uakron.edu) (Ping timeout: 245 seconds)
18:26:50 × cosimone_ quits (~cosimone@5.170.241.6) (Ping timeout: 272 seconds)
18:26:54 brisbin joins (~patrick@pool-173-49-158-4.phlapa.fios.verizon.net)
18:28:01 conal_ joins (~conal@64.71.133.70)
18:29:16 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
18:29:58 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds)
18:31:31 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
18:32:49 ephemera_ joins (~E@122.34.1.187)
18:33:09 × revtintin quits (~revtintin@158.140.144.34) (Quit: WeeChat 2.9)
18:36:52 dcoutts_ joins (~duncan@33.14.75.194.dyn.plus.net)
18:37:55 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
18:39:02 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
18:39:54 ddellacosta joins (~dd@86.106.121.168)
18:41:12 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
18:42:35 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
18:42:52 × ericsagnes quits (~ericsagne@2405:6580:0:5100:54da:6b21:e514:b8a2) (Ping timeout: 260 seconds)
18:43:57 acidjnk_new joins (~acidjnk@p200300d0c72378540964073eddc5c406.dip0.t-ipconnect.de)
18:44:09 MaoZeDong_ joins (~yuri@2a00:1370:8135:ef77:e999:4684:87eb:b717)
18:44:15 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
18:45:12 × kenran quits (~maier@87.123.205.246) (Ping timeout: 272 seconds)
18:47:40 × aenesidemus quits (~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) (Read error: Connection reset by peer)
18:47:51 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
18:49:58 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
18:51:13 geekosaur joins (82659a0e@host154-014.vpn.uakron.edu)
18:53:19 × MaoZeDong_ quits (~yuri@2a00:1370:8135:ef77:e999:4684:87eb:b717) (Ping timeout: 272 seconds)
18:54:59 ericsagnes joins (~ericsagne@2405:6580:0:5100:c46f:cebb:a37a:3cd)
18:56:13 × elliott__ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
19:01:43 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
19:02:19 masamasa joins (~jimmy@2a02:20c8:4124::1d)
19:02:24 <masamasa> haskell is fooking shite
19:03:17 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
19:03:20 × mananamenos__ quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Quit: Leaving)
19:03:22 berberman_ joins (~berberman@unaffiliated/berberman)
19:03:39 mananamenos joins (~mananamen@84.122.202.215.dyn.user.ono.com)
19:05:33 <maerwald> this seems to be a recent meme
19:06:17 Deide joins (~Deide@217.155.19.23)
19:06:22 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 265 seconds)
19:06:24 <maerwald> I wonder if these are the fruits of a failed course
19:06:41 <masamasa> fak u
19:06:48 <geekosaur> or "fruit" singular
19:07:26 <maerwald> masamasa: I respectfully decline
19:07:55 ChanServ sets mode +o monochrom
19:07:58 monochrom sets mode +b *!*@2a02:20c8:4124::1d
19:07:58 masamasa is kicked by monochrom (masamasa)
19:08:06 monochrom sets mode -o monochrom
19:08:38 coot joins (~coot@37.30.52.68.nat.umts.dynamic.t-mobile.pl)
19:10:09 × lemmih quits (~lemmih@2406:3003:2072:44:70c9:d5cf:dc27:2e6a) (Remote host closed the connection)
19:10:26 lemmih joins (~lemmih@2406:3003:2072:44:508f:7862:5b0d:296)
19:11:38 <Rembane> Is the fruit from the appetizer, main course or desert?
19:11:50 <Kira_> wow
19:13:25 × conal_ quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
19:13:55 × djellemah quits (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 240 seconds)
19:14:49 <geekosaur> just desserts?
19:14:55 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:14c3:11ef:29f5:c42)
19:15:22 lucasb joins (uid333435@gateway/web/irccloud.com/x-tkhwugfitzdjoeco)
19:15:37 <Rembane> Seems legit, the spice must flow.
19:16:11 <Rembane> Also, I learned the hard way that you need to walk without rhythm and you won't attract the worm.
19:17:09 × lemmih quits (~lemmih@2406:3003:2072:44:508f:7862:5b0d:296) (Remote host closed the connection)
19:17:37 lemmih joins (~lemmih@2406:3003:2072:44:508f:7862:5b0d:296)
19:17:52 × tzh quits (~tzh@2601:448:c500:5300::bfca) (Ping timeout: 260 seconds)
19:20:07 <tomsmeding> geekosaur: the three that I remember (including this one) were all different IPs, it seems
19:20:39 anik joins (~anik@103.23.207.146)
19:21:08 tzh joins (~tzh@c-73-94-222-143.hsd1.mn.comcast.net)
19:27:12 <monochrom> Can worms tell whether your walk pattern is cryptographically random or not? :)
19:29:23 <Rembane> monochrom: The high level worms with great taste can. :)
19:29:49 geekosaur *eyeroll*
19:31:32 × anik quits (~anik@103.23.207.146) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
19:35:57 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:14c3:11ef:29f5:c42) (Ping timeout: 260 seconds)
19:39:42 × s00pcan quits (~chris@075-133-056-178.res.spectrum.com) (Remote host closed the connection)
19:40:14 Guest_76 joins (49fcca1b@73.252.202.27)
19:41:08 Guest_76 parts (49fcca1b@73.252.202.27) ()
19:41:29 <ddellacosta> wait, did that person leave without anyone converting them into a Haskell fanatic? sad
19:42:22 <koz_> ddellacosta: We only have so much juice.
19:42:26 <[exa]> unbeievable, these difficult times
19:42:38 <ddellacosta> koz_: that's fair
19:42:58 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
19:42:59 <koz_> And honestly, I don't think we're under any obligation to convince bad-faith trolls.
19:43:13 <koz_> It's not usually even possible.
19:43:27 <ddellacosta> koz_: oh not at all, I just always think of that one legendary exchange with the person who came on here trolling and then decided to check Haskell out for real
19:43:44 <koz_> ddellacosta: Well, sometimes, we can work magic, but honestly, in 2020? We're all tired.
19:43:48 × supercoven_ quits (~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi) (Read error: Connection reset by peer)
19:43:54 <ddellacosta> koz_: absolutely, I feel that
19:44:37 <ddellacosta> here we are (homophobic language at the beginning, be warned) https://gist.github.com/quchen/5280339
19:45:49 <koz_> ddellacosta: Yeah, I'm familiar.
19:46:36 <ddellacosta> to be fair, in the example I linked to that person was clearly more receptive
19:46:56 gioyik joins (~gioyik@190.67.155.46)
19:47:02 <maerwald> he only got kicked from bitcoin-dev
19:47:08 <maerwald> that doesn't seem too hard
19:47:13 <ddellacosta> hahaha
19:52:23 hyiltiz joins (~quassel@82.118.227.47)
19:52:23 × hyiltiz quits (~quassel@82.118.227.47) (Changing host)
19:52:23 hyiltiz joins (~quassel@unaffiliated/hyiltiz)
19:53:30 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-vyxxbgdzqophhzrj)
19:55:51 × karanlikmadde quits (~karanlikm@2a01:c23:641c:2200:c88d:7d7e:c962:437f) (Quit: karanlikmadde)
20:01:17 lucid_0x80 joins (~lucid_0x8@188.253.231.133)
20:02:35 × lucid_0x80 quits (~lucid_0x8@188.253.231.133) (Read error: Connection reset by peer)
20:02:48 <tomsmeding> that is an absolute gem
20:02:56 <tomsmeding> though indeed the person seemed more receptive
20:02:58 lucid_0x80 joins (~lucid_0x8@188.253.231.133)
20:03:12 × lucid_0x80 quits (~lucid_0x8@188.253.231.133) (Max SendQ exceeded)
20:03:56 lucid_0x80 joins (~lucid_0x8@188.253.231.133)
20:04:11 × lucid_0x80 quits (~lucid_0x8@188.253.231.133) (Max SendQ exceeded)
20:04:43 lucid_0x80 joins (~lucid_0x8@188.253.231.133)
20:04:56 × lucid_0x80 quits (~lucid_0x8@188.253.231.133) (Max SendQ exceeded)
20:05:28 lucid_0x80 joins (~lucid_0x8@188.253.231.133)
20:05:43 × lucid_0x80 quits (~lucid_0x8@188.253.231.133) (Max SendQ exceeded)
20:07:27 × knupfer quits (~Thunderbi@200116b82cc5f5003098c64aed4ab9ee.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
20:08:20 × fendor_ quits (~fendor@178.165.130.180.wireless.dyn.drei.com) (Remote host closed the connection)
20:09:16 StoneToad joins (~StoneToad@199-167-119-214.ppp.storm.ca)
20:09:53 fendor joins (~fendor@178.165.130.180.wireless.dyn.drei.com)
20:10:03 conal joins (~conal@64.71.133.70)
20:10:31 × fendor quits (~fendor@178.165.130.180.wireless.dyn.drei.com) (Remote host closed the connection)
20:11:34 djellemah joins (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
20:13:19 rprije joins (~rprije@203-219-208-42.static.tpgi.com.au)
20:13:58 × Codaraxis quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Quit: Leaving)
20:16:13 × Tops2 quits (~Tobias@dyndsl-095-033-019-139.ewe-ip-backbone.de) (Ping timeout: 260 seconds)
20:17:17 lnlsn joins (~lnlsn@189.100.212.150)
20:18:05 son0p joins (~son0p@181.136.122.143)
20:18:16 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:21:42 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
20:23:00 ephemera_ joins (~E@122.34.1.187)
20:25:03 × lnlsn quits (~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
20:25:34 karanlikmadde joins (~karanlikm@2a01:c23:641c:2200:c88d:7d7e:c962:437f)
20:26:07 <{abby}> love the lambdabot command to ping all of the ops
20:27:38 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
20:28:38 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 256 seconds)
20:28:52 elliott__ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
20:30:05 ephemera_ joins (~E@122.34.1.187)
20:30:44 × stree quits (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
20:31:01 stree joins (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net)
20:32:04 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 258 seconds)
20:34:31 man joins (4c68d95d@c-76-104-217-93.hsd1.wa.comcast.net)
20:34:39 man is now known as Guest55558
20:34:56 × Guest55558 quits (4c68d95d@c-76-104-217-93.hsd1.wa.comcast.net) (Remote host closed the connection)
20:37:03 × plast1k_ quits (~plast1k_@196.207.181.246) (Ping timeout: 258 seconds)
20:41:18 × geekosaur quits (82659a0e@host154-014.vpn.uakron.edu) (Remote host closed the connection)
20:41:51 abhixec joins (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net)
20:42:31 × ystael quits (~ystael@209.6.50.55) (Ping timeout: 260 seconds)
20:43:17 × untseac quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
20:43:45 untseac joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
20:45:49 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
20:45:54 knupfer joins (~Thunderbi@200116b82cc5f500858f4de08bca2329.dip.versatel-1u1.de)
20:48:49 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
20:50:37 × knupfer quits (~Thunderbi@200116b82cc5f500858f4de08bca2329.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
20:52:48 nbloomf joins (~nbloomf@2600:1700:ad14:3020:fce4:f626:e7a:99f3)
20:56:56 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 272 seconds)
20:57:43 ephemera_ joins (~E@122.34.1.187)
21:00:01 × netsoundW1 quits (~netsoundW@185.204.1.185) ()
21:00:50 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
21:01:28 × untseac quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
21:02:11 untseac joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
21:03:26 × chaosmasttter quits (~chaosmast@p200300c4a710fa0165702c806d7b3e40.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
21:03:42 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
21:06:46 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
21:06:47 hekkaidekapus{ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
21:08:43 × hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
21:10:52 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 272 seconds)
21:11:16 ephemera_ joins (~E@122.34.1.187)
21:11:58 ashbreeze joins (~mark@72-161-252-32.dyn.centurytel.net)
21:12:19 × jsynacek quits (~jsynacek@ip-185-149-130-112.kmenet.cz) (Ping timeout: 258 seconds)
21:12:50 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
21:12:50 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
21:12:50 GyroW joins (~GyroW@unaffiliated/gyrow)
21:13:46 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 246 seconds)
21:14:43 × _ashbreeze_ quits (~mark@72-161-252-240.dyn.centurytel.net) (Ping timeout: 260 seconds)
21:17:51 × carldd102 quits (~carldd@90-224-49-113-no56.tbcn.telia.com) (Quit: The Lounge - https://thelounge.chat)
21:18:14 carldd joins (~carldd@90-224-49-113-no56.tbcn.telia.com)
21:18:59 × danvet_ quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
21:20:28 hackage uniqueness-periods-vector-examples 0.13.0.0 - Usage examples for the uniqueness-periods-vector series of packages https://hackage.haskell.org/package/uniqueness-periods-vector-examples-0.13.0.0 (OleksandrZhabenko)
21:21:31 × dftxbs3e quits (~dftxbs3e@unaffiliated/dftxbs3e) (Ping timeout: 272 seconds)
21:21:34 CodeWeaver joins (49eff865@c-73-239-248-101.hsd1.wa.comcast.net)
21:25:07 _ashbreeze_ joins (~mark@72-161-252-32.dyn.centurytel.net)
21:26:01 fxg joins (~fxg@unaffiliated/fxg)
21:26:22 × ashbreeze quits (~mark@72-161-252-32.dyn.centurytel.net) (Ping timeout: 256 seconds)
21:27:51 × alp_ quits (~alp@2a01:e0a:58b:4920:a0a0:4e46:1a7b:c634) (Ping timeout: 272 seconds)
21:30:39 mananamenos_ joins (~mananamen@84.122.202.215.dyn.user.ono.com)
21:33:07 <CodeWeaver> Got kind of an odd discrepancy in thunk (or maybe seq) behaviour...
21:33:25 <CodeWeaver> for ghci in particular.
21:33:27 <CodeWeaver> https://pastebin.pl/view/b4a4b142
21:34:16 <CodeWeaver> If I run this in the interpreter, in stack ghci, must by asking main to run, q seems to get dethunked once. You can see the delay as it evaluates.
21:34:19 × mananamenos quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Ping timeout: 260 seconds)
21:35:52 × CodeWeaver quits (49eff865@c-73-239-248-101.hsd1.wa.comcast.net) (Remote host closed the connection)
21:36:44 CodeWeaver joins (49eff865@c-73-239-248-101.hsd1.wa.comcast.net)
21:36:48 <CodeWeaver> Stupid disconnect.
21:37:09 <CodeWeaver> If I use foo direction as in foo () in the interpreter, it again dethunks q just once.
21:37:42 × coot quits (~coot@37.30.52.68.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
21:37:43 <CodeWeaver> But if I paste the let clause _from_ foo directly into the interpreter, it seems to dethunk q muiltiple times.
21:37:48 knupfer joins (~Thunderbi@87.123.206.163)
21:39:48 <jil> Hello, working through theexampls of the book programming in haskel, I run into this problem https://paste.debian.net/1167620/
21:39:50 <CodeWeaver> Funny thing is if I paste the entirety of the foo function (with a preceding let) into the interpreter and run _that_, it seems to dethunk q multiple times there too.
21:40:07 <jil> The type signature for myand lacks an accompanying binding
21:40:10 <CodeWeaver> Hoping someone smarter than me knows why the interpreter behaves differently under these circumstances.
21:40:35 ashbreeze joins (~mark@72-161-252-32.dyn.centurytel.net)
21:41:16 <[exa]> CodeWeaver: weird... monomorphism restriction perhaps?
21:41:28 <[exa]> (not sure if it would apply then though)
21:42:13 <[exa]> jil: you need to say the type for the same identifier that you are defining; ie. there you are typing 'myand' and defining '&&'
21:42:45 <[exa]> jil: if you rename it to: True `myand` True = True ... etc, it should work
21:43:04 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:43:08 × _ashbreeze_ quits (~mark@72-161-252-32.dyn.centurytel.net) (Ping timeout: 260 seconds)
21:43:35 <CodeWeaver> jil: Or corresondingly, (&&) True True = True in the second half, so that you can see you're defining a function more obviously.
21:44:26 <jil> ho I see. thank oyou
21:44:31 <CodeWeaver> exa: Maybe, but I'm not quite smart enough to work out if that's the case. There's a subtlety here... loading in that file and evaluating foo (), as opposed to using a let foo _ = ... paste into the interpreter... the distinction eludes me.
21:45:09 <[exa]> CodeWeaver: well, check the types, that should show if you're dreaded by the monomorphism
21:45:39 <CodeWeaver> exa: Okay, there's a way to do that? How would I show the distinction? (My haskell's a bit rusty, and that's above my mental pay grade)
21:45:49 <CodeWeaver> : can use the :t syntax in ghci but I don't know what I"m looking for.
21:45:52 <[exa]> otherwise it's some subtlety in ghci perhaps, I really don't know much about that
21:46:20 <[exa]> CodeWeaver: if it's MR, you will have the type of one binding defaulted, and one with a typeclass
21:46:32 × ephemera_ quits (~E@122.34.1.187) (Read error: Connection reset by peer)
21:46:43 <[exa]> and the typeclass materializes the "invisible" parameter that causes that memoization does not occur
21:47:02 <[exa]> ...or perhaps add explicit type to foo and see
21:47:27 <jil> ho I see. thank you
21:47:29 × gioyik quits (~gioyik@190.67.155.46) (Quit: WeeChat 2.9)
21:47:43 ephemera_ joins (~E@122.34.1.187)
21:47:52 <CodeWeaver> exa: Okay, loaded from file, evaluating foo (), where it behaves right, the type is:
21:47:53 <CodeWeaver> foo :: Num a => p -> [a]
21:47:56 <jil> why don't I nee back quote around && ?
21:48:23 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
21:48:39 <CodeWeaver> jil: because its an operator. You turn normal functions into operators with the `myadd` syntax, and you turn operators into ordinary functions with the (&&) syntax
21:49:07 <CodeWeaver> exa: The type for the directly pasted let foo _ = ... line gives:
21:49:08 <CodeWeaver> foo :: Num a => p -> [a]
21:49:24 <CodeWeaver> So, nothing explicitly revealed from :t
21:50:12 <CodeWeaver> Very odd that the dethunking would simply not happen in one case.
21:50:16 <[exa]> CodeWeaver: o good, try forcing the type to p -> [Int]
21:50:50 <CodeWeaver> exa: will do.
21:51:02 × knupfer quits (~Thunderbi@87.123.206.163) (Ping timeout: 258 seconds)
21:52:15 <[exa]> anyway I think this might be the whole reason for monomorphism restriction; the parameter appears there automagically and there is no way to really memoize something with a parameter
21:52:37 <CodeWeaver> But I'm not memoizing foo.
21:52:42 <CodeWeaver> I'm memoizing q, inside foo.
21:52:46 <jil> Clear. Thank you
21:53:02 <CodeWeaver> q has no relationship to the 'throwaway value' p.
21:53:29 <[exa]> CodeWeaver: that might vary if you start pulling the code out of context
21:53:38 <[exa]> not sure though
21:54:05 <[exa]> if you specialized the code to Ints and nothing happened, it's likely not the monomorphism restriction
21:54:31 <CodeWeaver> Nope, no effect. At least if I got my multiline let syntax in the repl right.
21:55:10 _ashbreeze_ joins (~mark@72-161-252-32.dyn.centurytel.net)
21:55:14 <[exa]> quite likely, it's pretty resistant to weirdness :]
21:55:21 <[exa]> ok nevermind, it was a guess :D
21:55:25 <CodeWeaver> Good guess.
21:55:59 <CodeWeaver> Its more a curiosity, because by the time I'm ready to do something performant, I'm rarely doing direct pastes into the repl like that. But.... it really bugs me not to know. ;)
21:56:23 <CodeWeaver> I mean, I"m literally using the repl in both cases. It's just that in one case it's bein gloaded from a file.
21:56:25 × ashbreeze quits (~mark@72-161-252-32.dyn.centurytel.net) (Ping timeout: 240 seconds)
21:56:28 hackage uniqueness-periods-vector-examples 0.13.1.0 - Usage examples for the uniqueness-periods-vector series of packages https://hackage.haskell.org/package/uniqueness-periods-vector-examples-0.13.1.0 (OleksandrZhabenko)
21:56:40 <dolio> Loaded from a file isn't the same as pasted into the repl.
21:56:48 <CodeWeaver> Okay, that's a fair statement.
21:57:15 <CodeWeaver> But I am still not quite sure why the evaluation would be different in that particular way. The reuslt is the same, obviously, but the dethunking is wildly different.
21:57:56 <dolio> Different defaulting rules are enabled in the repl, so it may be treating the code differently in each case.
21:58:22 <CodeWeaver> Mm.
21:58:22 mirrorbird joins (~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1)
21:58:43 <CodeWeaver> I wonder if I can change that default in the repl just for the sake of this test.
22:00:37 × djellemah quits (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 260 seconds)
22:01:55 <dolio> I wouldn't trust breaking a whole expression into a bunch of separate lines in the REPL, either.
22:02:22 <dolio> Things need to be treated differently when they're expected to work line-by-line.
22:02:25 × rprije quits (~rprije@203-219-208-42.static.tpgi.com.au) (Ping timeout: 240 seconds)
22:02:36 rprije joins (~rprije@110-175-117-18.tpgi.com.au)
22:02:42 <dolio> GHC isn't, like, collecting all the lines you type in, and reconsidering previous ones in light of later ones.
22:03:27 <CodeWeaver> Sure. But in this case the expression I'm evaluating, the type signature aside, is one line, and the dethunking is on a value expressly inside the function in question. That's a pretty odd difference.
22:03:45 <[exa]> CodeWeaver: very roughly, if it's about types, you might just put a typehole everywhere and try to find a difference. But chances are it isn't, esp. if reusing the thunk would eg. depend on optimization
22:03:51 <CodeWeaver> I'm sure there's a reason. Don't get me wrong, I understand the REPL is likely to be a special case... but I'm curious what the special case is on this one.
22:04:23 × ech quits (~user@gateway/tor-sasl/ech) (Ping timeout: 240 seconds)
22:04:25 <CodeWeaver> Okay, sure.
22:04:40 <CodeWeaver> I'll see if I can scare up a plausible reason.
22:05:09 <dolio> It's not super clear exactly what you're doing in each case, either.
22:05:13 <[exa]> perhaps just wait for more people showing up here, or repost on monday morning
22:05:24 × emmanuel_erc quits (~user@2604:2000:1382:ce03:e422:6bdf:36af:752a) (Remote host closed the connection)
22:05:34 <CodeWeaver> Yup, sure. I won't belabour the point much more today. But I do appreciate the time.
22:05:37 emmanuel_erc joins (~user@2604:2000:1382:ce03:c90a:9d9:2f5d:e50)
22:06:12 × emmanuel_erc quits (~user@2604:2000:1382:ce03:c90a:9d9:2f5d:e50) (Remote host closed the connection)
22:06:15 <dolio> Because there are a lot of variables. Like, telling GHC to compile a file and then opening it in the REPL is different from not compiling it first, I think.
22:06:20 emmanuel_erc joins (~user@2604:2000:1382:ce03:c90a:9d9:2f5d:e50)
22:06:55 <CodeWeaver> Well, I'm not telling GHC to compile anything at present. This is all pure repl. Just with a :load instead of a paste.
22:07:02 <CodeWeaver> Which, yes, I realize, is still likely different.
22:07:44 <CodeWeaver> : guess you could argue it's 'internally compiling' by doing a :load, but that too is beyond my immediate ken.
22:09:18 <dolio> Well, maybe. I don't know specifically.
22:10:04 <dolio> I think it compiles it, but it might use different settings than compiling before :load.
22:10:29 chris joins (~chris@81.96.113.213)
22:10:32 <dolio> Also :load is different from import, for instance. :)
22:10:47 <dolio> And I'm unsure what effects that has besides just scoping.
22:10:48 <CodeWeaver> Because that doesn't complicate my life. :D
22:10:52 chris is now known as Guest98505
22:11:29 ensyde joins (~ensyde@2600:1702:2e30:1a40:e1f9:6cbb:4eca:3c84)
22:11:53 × son0p quits (~son0p@181.136.122.143) (Quit: Lost terminal)
22:11:54 ech joins (~user@gateway/tor-sasl/ech)
22:12:03 <CodeWeaver> Reading up on the MR, I can see how this might be the case, but I'd love to be able to prove it somehow, one way or the other.
22:12:32 <CodeWeaver> Fascinating.
22:14:45 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 256 seconds)
22:15:18 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:15:42 <dolio> MR seems like the most likely answer.
22:16:26 <CodeWeaver> The more I read about it, the more I agree.
22:16:42 ephemera_ joins (~E@122.34.1.187)
22:17:05 <CodeWeaver> q isn't just a value in this case. It's a function expecting a type dictionary, bound at each of the use sites, and only because its in the repl.
22:17:09 <CodeWeaver> I _think_.
22:17:51 <CodeWeaver> Its happening for the same reason I use the phony parameter for foo in the first place -- to avoid caching.
22:17:56 <CodeWeaver> Again, I _think_.
22:17:57 <dolio> I think it's off by default in the REPL, yeah.
22:18:10 _deepfire joins (~user@80.92.100.69)
22:18:12 <CodeWeaver> Super fascinating.
22:18:14 <dolio> Because it's much easier to break things with it line-by-line.
22:18:32 <dolio> Default to something is invalid for a later line.
22:18:34 <CodeWeaver> Sure. The fact that it's in one line in my case probably doesn't justify doing it there.
22:19:39 <dolio> Yeah, it's either on or off. It's not going to do a case-by-case analysis of whether or not to do it.
22:20:20 <CodeWeaver> I could see that being a WORSE problem for people trying to figure it out, if it _sometimes_ did it. I mean you could have scoped behaviour in an expression, but that'd be super confusing if you didn't know about it.
22:20:37 <CodeWeaver> Yeah, okay. I;m seeing this now. At least a little.
22:21:20 <_deepfire> Is the TH's Quote monad primarily about hygienic name allocation?
22:23:35 <phadej> yes
22:23:46 <phadej> or in fact, only about that
22:24:08 <_deepfire> thank you! : -)
22:24:54 <phadej> (don't mix Quote and Quasi, latter is "everything")
22:26:26 <CodeWeaver> PROOF (or close enough): Changed expression to: let {q::Integer;q = .... }
22:26:36 <CodeWeaver> Now behaves like the loaded file. MR almost certainly.
22:26:58 <CodeWeaver> You all are magnificent. Thanks, exa, dolio.
22:27:05 GyroW_ joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
22:27:05 × GyroW_ quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
22:27:05 GyroW_ joins (~GyroW@unaffiliated/gyrow)
22:27:19 <dolio> No problem.
22:27:34 <CodeWeaver> I may be dancing around like a maniac now. :)
22:27:34 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 256 seconds)
22:28:04 worc3131 joins (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786)
22:28:37 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
22:29:42 × mananamenos_ quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Quit: Leaving)
22:30:11 mananamenos joins (~mananamen@84.122.202.215.dyn.user.ono.com)
22:31:25 × Kira_ quits (~Kira@201.192.165.173) (Quit: WeeChat 2.9)
22:33:07 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 260 seconds)
22:33:36 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
22:33:53 dirediresalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
22:34:02 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
22:35:04 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
22:35:40 × fxg quits (~fxg@unaffiliated/fxg) (Ping timeout: 246 seconds)
22:35:44 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Ping timeout: 272 seconds)
22:35:44 × fragamus quits (~michaelgo@73.93.152.141) (Ping timeout: 272 seconds)
22:36:22 ephemera_ joins (~E@122.34.1.187)
22:36:41 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
22:37:00 Chef joins (4c68d95d@c-76-104-217-93.hsd1.wa.comcast.net)
22:37:03 × Chef quits (4c68d95d@c-76-104-217-93.hsd1.wa.comcast.net) (Remote host closed the connection)
22:37:18 Guy joins (4c68d95d@c-76-104-217-93.hsd1.wa.comcast.net)
22:38:01 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 264 seconds)
22:38:26 <Guy> Hello :)
22:38:41 <CodeWeaver> Hi.
22:39:21 <[exa]> CodeWeaver: unbelievable how MR hides right. :]
22:40:28 <CodeWeaver> exa: Not something one has to fight with in a lot of other languages, and arguably, something you almost don't have to think about even in this one. Until it bites you.
22:40:58 × jkachmar quits (uid226591@gateway/web/irccloud.com/x-veduxhoxxqmbqgpm) (Quit: Connection closed for inactivity)
22:45:47 × hekkaidekapus{ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
22:46:51 hekkaidekapus{ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
22:46:58 hackage core-program 0.2.5.0 - Opinionated Haskell Interoperability https://hackage.haskell.org/package/core-program-0.2.5.0 (AndrewCowie)
22:47:01 × hiroaki quits (~hiroaki@2a02:908:4b18:e20::dd5c) (Ping timeout: 272 seconds)
22:47:58 hackage unbeliever 0.10.0.7 - Opinionated Haskell Interoperability https://hackage.haskell.org/package/unbeliever-0.10.0.7 (AndrewCowie)
22:49:29 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
22:49:38 × addcninblue quits (~addison@c-73-158-198-149.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
22:49:44 fxg joins (~fxg@unaffiliated/fxg)
22:50:18 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 272 seconds)
22:50:31 Tario joins (~Tario@200.119.184.9)
22:50:47 × emmanuel_erc quits (~user@2604:2000:1382:ce03:c90a:9d9:2f5d:e50) (Ping timeout: 260 seconds)
22:50:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
22:50:56 × fxg quits (~fxg@unaffiliated/fxg) (Client Quit)
22:55:01 alp_ joins (~alp@2a01:e0a:58b:4920:8ddf:af03:d4f2:1b4c)
22:55:25 × ensyde quits (~ensyde@2600:1702:2e30:1a40:e1f9:6cbb:4eca:3c84) (Ping timeout: 240 seconds)
22:56:26 conal joins (~conal@64.71.133.70)
22:58:45 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
22:58:49 acidjnk_new2 joins (~acidjnk@p200300d0c72378290964073eddc5c406.dip0.t-ipconnect.de)
22:58:49 × Guy quits (4c68d95d@c-76-104-217-93.hsd1.wa.comcast.net) (Ping timeout: 245 seconds)
22:58:52 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:00:06 ephemera_ joins (~E@122.34.1.187)
23:00:08 jkachmar joins (uid226591@gateway/web/irccloud.com/x-sjqizjclmhyizvlx)
23:00:13 jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de)
23:01:49 Jonkimi727406120 joins (~Jonkimi@223.213.79.20)
23:01:55 × acidjnk_new quits (~acidjnk@p200300d0c72378540964073eddc5c406.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
23:02:49 djellemah joins (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
23:03:18 Guy joins (4c68d95d@c-76-104-217-93.hsd1.wa.comcast.net)
23:03:41 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
23:04:55 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
23:04:58 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:06:15 ephemera_ joins (~E@122.34.1.187)
23:06:33 × Jonkimi727406120 quits (~Jonkimi@223.213.79.20) (Ping timeout: 260 seconds)
23:06:49 conal joins (~conal@64.71.133.70)
23:06:49 × Tario quits (~Tario@200.119.184.9) (Read error: Connection reset by peer)
23:07:28 × Guest98505 quits (~chris@81.96.113.213) (Remote host closed the connection)
23:07:46 Tario joins (~Tario@201.192.165.173)
23:09:32 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:10:17 × elliott__ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
23:11:13 chris joins (~chris@81.96.113.213)
23:11:36 chris is now known as Guest36918
23:11:38 vicfred joins (~vicfred@unaffiliated/vicfred)
23:13:49 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
23:14:22 jneira joins (501e64fa@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.250)
23:14:47 dwt joins (~dwt@c-98-200-58-177.hsd1.tx.comcast.net)
23:15:14 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
23:18:15 larou joins (5201f2b7@gateway/web/cgi-irc/kiwiirc.com/ip.82.1.242.183)
23:18:24 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:18:26 <larou> i have awesome code!
23:18:43 <larou> look look!
23:18:44 <larou> https://pastebin.com/raw/Yzd5rZsB
23:19:35 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:21:08 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 260 seconds)
23:21:14 × Blkt quits (~Blkt@2a01:4f8:200:2425::adda) (Read error: Connection reset by peer)
23:21:20 fragamus joins (~michaelgo@73.93.155.44)
23:21:27 <larou> this is all supposed to go at type level
23:21:30 Blkt joins (~Blkt@2a01:4f8:200:2425::adda)
23:21:42 <larou> its a container you can only construct to have links
23:22:07 <larou> the term level thing thats supposed to use this, should tie the knot over these links
23:22:11 × elliott_ quits (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
23:22:26 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
23:22:39 <larou> its a list, of Maybe Nats, where they are in pairs
23:22:47 <larou> of Nats pointing to each other
23:22:56 <larou> ie, if a Nat is at some position in the list
23:23:07 <larou> then at the position this Nat corresponds to
23:23:19 <larou> should contain a Nat corresponding to the first position
23:23:31 <larou> ...
23:23:39 <larou> so now there can be a doubly linked list
23:23:44 <larou> *with extra links!*
23:24:03 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
23:24:15 <larou> these are like semicircles underneath the list connecting pairs of elements
23:24:39 <larou> probably i could extend this to having multiple links per node, but for now this is complex enough
23:25:44 <larou> i made a paste yesterday that showed that the constraints at type level work for the smart constructors...
23:25:46 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:26:32 <larou> this being at type level means it has kind level nats...
23:27:17 <larou> and that the smart constructors are basically then doing a kind level computation
23:27:25 <larou> to ensure the types are constructed safely
23:27:28 <larou> cool or what!?
23:27:53 × mirrorbird quits (~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1) (Quit: Leaving)
23:29:46 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:31:53 <larou> idk if that because graphs are traversable
23:32:01 <larou> that establishing cycles over them
23:32:16 <larou> would then collapse down to some kind of extra linked list like this
23:32:55 <larou> i think you might lose some speed from the evaluation order.. cant really tell
23:33:04 <larou> but it would mean its as expressive...
23:33:57 × zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving)
23:34:00 × fragamus quits (~michaelgo@73.93.155.44) (Ping timeout: 272 seconds)
23:34:19 <larou> makes it worthwhile constructing the graphs algebraically to preserve the existence of a traversable implementation
23:34:28 <larou> ie "shaped construction"
23:34:30 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
23:35:38 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
23:36:00 xerox_ joins (~xerox@unaffiliated/xerox)
23:36:10 × larou quits (5201f2b7@gateway/web/cgi-irc/kiwiirc.com/ip.82.1.242.183) (Quit: Connection closed)
23:37:12 Guest11473 joins (~andrea@185.244.214.216)
23:37:48 mega_hater joins (~haterrr@s91904427.blix.com)
23:37:54 mega_hater parts (~haterrr@s91904427.blix.com) ("Leaving")
23:37:58 <justsomeguy> I'm only a noob, so this stuff is beyond my comprehension, but it looks pretty cool.
23:39:51 addcninblue joins (~addison@c-73-158-198-149.hsd1.ca.comcast.net)
23:39:54 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:40:10 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
23:40:26 zaquest joins (~notzaques@5.128.210.178)
23:41:36 × dhil quits (~dhil@195.213.192.122) (Ping timeout: 272 seconds)
23:41:52 × kupi quits (uid212005@gateway/web/irccloud.com/x-uvssjsekmuehxron) (Quit: Connection closed for inactivity)
23:44:28 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
23:44:52 elliott_ joins (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
23:45:24 × dwt quits (~dwt@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 272 seconds)
23:45:40 elliott__ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
23:49:59 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:53:01 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 264 seconds)
23:54:05 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
23:54:10 revprez_anzio joins (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
23:54:50 kupi joins (uid212005@gateway/web/irccloud.com/x-vfsmeyjszxcityxd)
23:55:28 × kish quits (~oracle@unaffiliated/oracle) (Ping timeout: 246 seconds)
23:56:00 kish joins (~oracle@unaffiliated/oracle)
23:57:32 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:fce4:f626:e7a:99f3) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:57:44 fragamus joins (~michaelgo@73.93.155.52)
23:59:21 nbloomf joins (~nbloomf@2600:1700:ad14:3020:fce4:f626:e7a:99f3)
23:59:34 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)

All times are in UTC on 2020-10-17.