Home freenode/#haskell: Logs Calendar

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

00:00:02 × schwuk quits (~schwuk@178.162.209.171) ()
00:01:12 addcninblue parts (~addison@c-73-158-198-149.hsd1.ca.comcast.net) ("WeeChat 2.9")
00:02:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:02:25 × day quits (~Unknown@unaffiliated/day) (Ping timeout: 240 seconds)
00:02:25 day_ is now known as day
00:02:40 <dsal> is `count` just `replicateM`?
00:02:47 × karanlikmadde quits (~karanlikm@2a01:c22:3472:9400:2911:7597:97b9:174f) (Quit: karanlikmadde)
00:02:57 <koz_> :t count
00:02:59 <lambdabot> error:
00:02:59 <lambdabot> • Variable not in scope: count
00:02:59 <lambdabot> • Perhaps you meant one of these:
00:07:05 isovector1 joins (~isovector@172.103.216.166)
00:08:01 × natechan quits (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
00:08:33 natechan joins (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
00:08:57 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
00:11:41 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
00:11:50 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
00:20:21 × mirrorbird quits (~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1) (Ping timeout: 272 seconds)
00:21:16 × polyrain quits (~polyrain@2001:8003:e501:6901:5438:7f7:706e:c9b0) (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:21:23 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
00:22:22 I440r joins (~I440r@195.206.169.184)
00:24:37 × Unhammer quits (~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection)
00:24:59 Deide joins (~Deide@217.155.19.23)
00:25:01 × stree quits (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
00:25:18 stree joins (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net)
00:26:36 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Remote host closed the connection)
00:29:26 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Remote host closed the connection)
00:30:07 carlomagno joins (~cararell@inet-hqmc01-o.oracle.com)
00:30:07 jedws joins (~jedws@121.209.161.98)
00:31:08 addcninblue joins (~addison@c-73-158-198-149.hsd1.ca.comcast.net)
00:31:17 GyroW_ joins (~GyroW@d54C03E98.access.telenet.be)
00:31:17 × GyroW_ quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
00:31:17 GyroW_ joins (~GyroW@unaffiliated/gyrow)
00:31:43 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
00:32:11 × jespada quits (~jespada@90.254.245.15) (Ping timeout: 260 seconds)
00:33:01 inkbottle joins (~inkbottle@aaubervilliers-654-1-104-11.w86-212.abo.wanadoo.fr)
00:34:12 × zebrag quits (~inkbottle@aaubervilliers-654-1-5-60.w83-200.abo.wanadoo.fr) (Ping timeout: 256 seconds)
00:34:35 jespada joins (~jespada@90.254.245.15)
00:36:18 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
00:39:36 Unhammer joins (~Unhammer@gateway/tor-sasl/unhammer)
00:42:27 hackage refinery 0.3.0.0 - Toolkit for building proof automation systems https://hackage.haskell.org/package/refinery-0.3.0.0 (ReedMullanix)
00:42:55 oxide joins (~lambda@unaffiliated/mclaren)
00:43:56 elliott_ joins (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
00:46:22 × unlink2 quits (~unlink2@p200300ebcf17c500f1cd4c5efbdddd1e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
00:48:29 thir joins (~thir@p200300f27f025800e5e58f362e8b888e.dip0.t-ipconnect.de)
00:49:51 × carlomagno quits (~cararell@inet-hqmc01-o.oracle.com) (Remote host closed the connection)
00:50:47 carlomagno joins (~cararell@inet-hqmc02-o.oracle.com)
00:52:27 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
00:53:22 × thir quits (~thir@p200300f27f025800e5e58f362e8b888e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
00:55:40 × OmegaDoug quits (8e750cd2@lnsm3-torontoxn-142-117-12-210.internet.virginmobile.ca) (Remote host closed the connection)
00:57:46 × mozzarella quits (~sam@unaffiliated/sam113101) (Quit: WeeChat 2.8)
00:58:34 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:55b2:236:b746:75d5)
00:58:45 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:00:53 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:55b2:236:b746:75d5) (Client Quit)
01:01:24 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 256 seconds)
01:02:50 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:55b2:236:b746:75d5)
01:03:27 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
01:03:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:04:53 × xff0x quits (~fox@2001:1a81:5350:d900:f127:8532:42d4:579b) (Ping timeout: 246 seconds)
01:05:48 plutoniix joins (~q@175.176.222.7)
01:06:49 xff0x joins (~fox@2001:1a81:538a:0:f127:8532:42d4:579b)
01:08:07 × raehik quits (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
01:08:21 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
01:08:22 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
01:08:22 GyroW joins (~GyroW@unaffiliated/gyrow)
01:09:03 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
01:09:31 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
01:09:43 × Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 260 seconds)
01:11:05 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
01:16:22 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
01:23:10 crestfallen joins (~jvw@135.180.15.188)
01:23:15 thir joins (~thir@p200300f27f02580070028f68706a1e08.dip0.t-ipconnect.de)
01:24:10 Tario joins (~Tario@201.192.165.173)
01:27:23 × nineonine quits (~nineonine@50.216.62.2) (Remote host closed the connection)
01:27:25 × thir quits (~thir@p200300f27f02580070028f68706a1e08.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
01:28:16 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
01:28:19 mozzarella joins (~sam@unaffiliated/sam113101)
01:29:54 <crestfallen> hi in line 29 we have do {ma <- mma; ma} so this behaves like bind, but there is no indication of (>>= id) . Does that work solely on how mma and ma are named in " mma <- ma " ? https://github.com/varreli/haskell/blob/master/monads/joinBind.txt
01:30:54 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
01:31:10 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
01:32:32 irc_user joins (uid423822@gateway/web/irccloud.com/x-tarrfebyaowlqxvj)
01:33:49 <crestfallen> correction {ma <- mma}
01:34:11 <koz_> crestfallen: If you look right above, it explains how bind relates to join. Then, you can read about do-notation to see how it desugars into bind.
01:34:19 <Axman6> I don't understand the quetion, but the names don't matter at all
01:34:32 <koz_> Literally look up the desugaring of do-notation, and rewrite that example with explicit use of return and bind.
01:34:37 <koz_> It'll be quite enlightening.
01:34:56 <Axman6> m do {ma <- mma; ma} becomes mma >>= \ma -> ma, aka mma >>= id
01:35:18 <koz_> Axman6: So much mixed martial arts. :P
01:35:43 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
01:36:07 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
01:38:57 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 256 seconds)
01:39:01 <crestfallen> koz_: Axman6: all do notation desugars into bind?
01:39:08 <koz_> crestfallen: Yes, and return.
01:39:28 <crestfallen> hold on please, not what I believed..
01:40:28 <crestfallen> I understand well the unification above you pointed out koz_ .
01:41:03 × m0rphism quits (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 258 seconds)
01:41:19 <crestfallen> ...
01:43:30 <crestfallen> so if you have it looking like this:
01:43:56 <crestfallen> (>>=) (Just (Just 5)) id
01:44:16 nineonine joins (~nineonine@50.216.62.2)
01:44:19 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) ()
01:44:33 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:44:46 <koz_> > Just (Just 5) >>= id
01:44:48 <lambdabot> Just 5
01:45:22 <Axman6> > Just (Just 5) >>= \just5 -> just5
01:45:24 <lambdabot> Just 5
01:45:55 <koz_> Axman6: Are you Just-ice? :P
01:46:17 <crestfallen> so does id apply to the first Just in (Just (Just 5)) ?
01:46:28 <crestfallen> and take it away?
01:46:56 <koz_> crestfallen: Let's look at the type of bind.
01:47:02 <koz_> :t (>>=)
01:47:03 <crestfallen> Axman6: that is very interesting: \just5 -> just5 *IS* id , right?
01:47:04 <lambdabot> Monad m => m a -> (a -> m b) -> m b
01:47:22 <koz_> Now, consider the case we were just looking at - what is 'm' here?
01:47:22 <Axman6> Just a >>= f = f a; Nothing >>= _ = Nothing
01:47:37 <koz_> (namely, 'Just (Just 5) >>= id')
01:48:20 <crestfallen> 'm' here is Just
01:48:47 <koz_> crestfallen: Incorrect.
01:48:54 Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas)
01:49:08 <koz_> You're mixing type and value level.
01:49:17 <koz_> Try again, and think about it carefully.
01:50:49 <koz_> base-4.10 is GHC-8.what?
01:50:57 <crestfallen> oh yeah ok so...
01:52:10 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 258 seconds)
01:52:33 <crestfallen> so in Axman6 's example, 'a' is (Just a) ; it
01:52:46 <Axman6> yep
01:52:48 <crestfallen> it's the inner Just
01:52:56 <Axman6> uh, which example
01:53:13 <crestfallen> Just a >>= f = f a
01:53:20 <Axman6> Just a >>= f = f a; Nothing >>= _ = Nothing is the definition of (>>=) for Maybe
01:53:41 <crestfallen> so id is applied to the inner (Just a)
01:53:50 <Axman6> yep
01:54:18 ashbreeze joins (~mark@72-161-253-104.dyn.centurytel.net)
01:55:20 <crestfallen> so Axman6 koz_ when you used this lambda notation Just (Just 5) >>= \just5 -> just5 ...
01:55:38 <koz_> \just5 -> just5 is alpha-equivalent to id.
01:55:54 <koz_> As is \foo -> foo, \bar -> bar, \koz -> koz, etc etc etc.
01:56:07 <crestfallen> that is very interesting. I mean, I know that, but seeing that is awesome.
01:56:39 × _ashbreeze_ quits (~mark@72-161-255-212.dyn.centurytel.net) (Ping timeout: 260 seconds)
01:57:13 <crestfallen> so id is not applied to the outer 'container', only Just a, the inner container.
01:57:52 <crestfallen> thanks kindly, today is a success koz_ Axman6
01:58:15 <koz_> crestfallen: I was leading you there, but yeah. It's _very_ key that you follow the types.
01:58:25 <koz_> This can sometimes mean by-hand substitutions to get what's going on.
01:58:33 <koz_> I do it all the time, and it's actually quite enlightening.
01:59:19 × reppertj quits (~textual@pool-96-246-209-59.nycmny.fios.verizon.net) (Quit: Textual IRC Client: www.textualapp.com)
01:59:44 <crestfallen> koz_: yeah thanks. the unification of (>>=) and id , I fully get type-wise. sometimes when I try to visualize function application in the implementation, I visualize it differently from how I understand the types.
02:00:25 <crestfallen> by-hand substitutions I really enjoy koz_
02:00:38 <koz_> I actually had to do this recently to get myself out of CPS hell.
02:00:41 <koz_> (at Real Job)
02:01:09 × lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Killed (card.freenode.net (Nickname regained by services)))
02:01:15 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
02:01:51 <crestfallen> koz_: you said to literally look up ...
02:02:10 <crestfallen> dang it irssi won't give me scrollback!
02:02:37 <koz_> crestfallen: Yep, in the sense of 'in the thing you pasted'.
02:03:35 <crestfallen> <koz_> Literally look up the desugaring of do-notation, and rewrite that example with explicit use of return and bind.
02:03:35 × xff0x quits (~fox@2001:1a81:538a:0:f127:8532:42d4:579b) (Ping timeout: 272 seconds)
02:03:45 <koz_> Oh, in that sense.
02:04:02 <koz_> Then I meant 'investigate' or 'find reference materials on'.
02:04:08 <koz_> In the 'look up X in the dictionary' use.
02:04:53 xff0x joins (~fox@2001:1a81:5391:7900:f127:8532:42d4:579b)
02:05:16 <crestfallen> yeah, you see I thought {ma <- mma; ma} was somehow knowing how to strip off the outer Just, as well as in {y <- x; y} .. somehow
02:05:28 × Tops2 quits (~Tobias@dyndsl-095-033-092-130.ewe-ip-backbone.de) (Read error: Connection reset by peer)
02:05:31 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
02:05:44 <crestfallen> but of course that is impossible koz_
02:05:59 × lemmih_ quits (~lemmih@218.186.157.57) (Remote host closed the connection)
02:05:59 <koz_> crestfallen: Don't let syntax confuse you - the types tell the truth.
02:06:23 lemmih_ joins (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
02:06:25 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
02:06:42 × lucasb quits (uid333435@gateway/web/irccloud.com/x-qhpgfsleurzdehfq) (Quit: Connection closed for inactivity)
02:06:57 <crestfallen> so I'm trying to think of where to find a good explanation of desugared do-notation ... working koz_ ...
02:07:27 elliott__ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
02:07:59 × lemmih_ quits (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
02:08:29 <koz_> crestfallen: https://wiki.haskell.org/Typeclassopedia#do_notation
02:08:37 <koz_> The Typeclassopedia is the source of considerable wisdom.
02:08:42 lemmih_ joins (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
02:08:44 <koz_> There's a desugaring grammar right in that entry.
02:09:52 <crestfallen> hit on academic paper by marlow, peyton-jones, kmett et al :/
02:10:16 <koz_> crestfallen: Yeah, have a read of the link above.
02:10:16 <crestfallen> thanks kindly copy that koz_
02:10:18 × oisdk quits (~oisdk@2001:bb6:3329:d100:11d5:8dc1:169a:e187) (Quit: oisdk)
02:10:57 × pera quits (~pera@unaffiliated/pera) (Ping timeout: 258 seconds)
02:11:04 <crestfallen> I do get your explanation now and Ax*man's
02:11:06 pera joins (~pera@unaffiliated/pera)
02:12:42 fraktor joins (~walt@129.93.191.18)
02:12:49 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
02:14:45 <fraktor> Would it be hypothetically possible to create something like Elm, where web apps are done using FRP and then rendered using a DOM diffing algorithm, to truly native applications?
02:14:58 <koz_> fraktor: Hypothetically yes.
02:15:04 <koz_> Given that Elm does this.
02:15:14 <koz_> However, the practical details of this are... somewhat difficult.
02:15:53 conal joins (~conal@64.71.133.70)
02:16:35 <fraktor> Yeah. Native GUIs don't have the same features for manipulating a DOM that web browsers do. Plus you need a cross-platform GUI library in the first place.
02:17:30 × conal quits (~conal@64.71.133.70) (Client Quit)
02:18:15 goepsilongo joins (~textual@2604:2000:1201:442c:2468:86aa:3a30:53a6)
02:18:25 conal joins (~conal@64.71.133.70)
02:18:35 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
02:18:37 × conal quits (~conal@64.71.133.70) (Client Quit)
02:19:13 drbean joins (~drbean@TC210-63-209-75.static.apol.com.tw)
02:19:18 polyrain joins (~polyrain@2001:8003:e501:6901:5438:7f7:706e:c9b0)
02:20:08 <fraktor> Speaking of which, I haven't done GUI programming in Haskell. Is there a preferred cross-platform library for it?
02:20:18 <koz_> For what definition of 'cross-platform'?
02:20:59 <koz_> If you consider GTK 'cross-platform', then there's some stuff on top of that.
02:21:16 <koz_> I think there's some FLTK stuff as well.
02:23:19 Stanley00 joins (~stanley00@unaffiliated/stanley00)
02:23:58 × theDon quits (~td@muedsl-82-207-238-240.citykom.de) (Ping timeout: 272 seconds)
02:24:59 <crestfallen> koz_: also if I may, this is bugging me. how if we write it using prefix notation:
02:25:02 <crestfallen> (>>=) (Just (Just 5)) id
02:25:22 <koz_> crestfallen: What are you asking? 'how if we write it using prefix notation:' is not a sentence.
02:25:22 theDon joins (~td@muedsl-82-207-238-153.citykom.de)
02:25:37 <crestfallen> sorry I'm writing it..
02:26:26 Saukk joins (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
02:26:41 <crestfallen> it looks like (m m a) is being applied to id
02:27:02 danso joins (~dan@107-190-41-58.cpe.teksavvy.com)
02:28:45 <koz_> crestfallen: I still don't understand. What do you mean by that?
02:28:57 <koz_> Like, are you saying that you don't get how prefix syntax is being used with an infix function?
02:28:58 × revprez_1nzio quits (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 246 seconds)
02:29:01 <koz_> Or something else?
02:30:06 revprez_anzio joins (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
02:30:11 <crestfallen> sorry my thinking is faulty. (<$>) (*10) [4,5,6] << yeah the pattern is the same here
02:31:23 <crestfallen> > (*10) <$> [4,5,6]
02:31:25 <lambdabot> [40,50,60]
02:31:50 <crestfallen> no it's reversed. do you see my point koz_ ?
02:32:01 <koz_> Nothing is reversed.
02:32:16 <koz_> You can make an infix operator prefix by wrapping it in ().
02:32:26 <koz_> And you can make a prefix function infix by wrapping it in ``.
02:32:40 <koz_> Like, are you confused by the prefix-infix distinction?
02:32:50 <koz_> I'm genuinely not sure what you're trying to say, or indeed, what isn't clear to you.
02:33:48 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:55b2:236:b746:75d5) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:33:59 × lemmih_ quits (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
02:35:01 lemmih joins (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
02:35:21 <crestfallen> in this case , the function is listed on the rhs of the infix: (Just (Just 5)) >>= id
02:35:29 <crestfallen> koz_: ^
02:35:46 <koz_> crestfallen: Functions can be arguments to other functions.
02:35:59 × lemmih quits (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
02:36:00 <koz_> There's nothing special about 'functions as arguments' versus 'non-functions as arguments'.
02:36:12 <crestfallen> in this case, the function is on the lhs : (*10) <$> [4,5,6]
02:36:24 <koz_> crestfallen: Yeah, and that's no different.
02:36:29 <koz_> :t (>>)
02:36:31 <lambdabot> Monad m => m a -> m b -> m b
02:36:32 lemmih joins (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
02:36:33 <koz_> Sorry
02:36:38 <koz_> :t (>>=)
02:36:39 <lambdabot> Monad m => m a -> (a -> m b) -> m b
02:36:44 <koz_> This takes a function as an argument.
02:36:53 <koz_> :t (<$>)
02:36:54 <lambdabot> Functor f => (a -> b) -> f a -> f b
02:36:59 <koz_> This also takes a function as an argument.
02:37:04 <koz_> Note where they are positioned.
02:37:14 <koz_> This is literally readable straight out of the type.
02:37:29 × lemmih quits (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
02:37:58 <crestfallen> yes the operands have the function in the first and second places respectively
02:38:00 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
02:38:13 lemmih joins (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
02:38:18 <koz_> crestfallen: So... what's the issue?
02:38:39 <koz_> The reason the arguments are arranged that way is literally written into their types.
02:38:40 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Client Quit)
02:38:48 <koz_> Is your question '_why_ is it that they're arranged that way?'.
02:38:54 <koz_> The answer is 'because someone decided it so'.
02:38:59 × lemmih quits (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
02:39:06 reallymemorable joins (~quassel@ip68-9-215-56.ri.ri.cox.net)
02:39:12 <koz_> There's no (particular) reason why the arguments to bind or <$> are in the order that they are.
02:39:17 <koz_> But that's how they're defined.
02:39:31 <crestfallen> ok fair enough. because yeah I would have thought that the function would have been in the same operand place
02:39:31 lemmih joins (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
02:39:41 <koz_> crestfallen: No, there's no reason for this.
02:40:00 <koz_> Order of arguments is arbitrary. There are some ergonomic issues regarding currying, but in this case, it's arbitrary.
02:40:12 <solonarv> oh! I see what you mean now. This is a reason I often use =<< instead of >>=
02:40:29 × lemmih quits (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
02:40:38 <koz_> solonarv: Yeah, and I think there's a flipped fmap too.
02:41:00 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 244 seconds)
02:41:01 lemmih joins (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
02:41:30 <crestfallen> excellent. yeah because technically, despite the context that bind is giving us, in some sense id is being applied to (Just (Just 5)) , right?
02:41:58 <koz_> crestfallen: I don't understand what you're saying.
02:41:59 × lemmih quits (~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
02:42:04 <koz_> Bind is defined the way it is.
02:42:08 <koz_> It means what its definition says.
02:42:14 <crestfallen> but if you look at it as > (>>=) (Just (Just 5)) id it looks odd
02:42:28 <koz_> Yeah - there's a reason we don't often write infix operators prefix.
02:42:44 <koz_> We can do it, and sometimes it can be more useful or readable that way, but there's a reason why >>= is infix.
02:43:18 <koz_> There's no a priori reason why bind needed to be an infix operator. We could actually do _everything_ prefix!
02:43:37 × ensyde quits (~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7) (Ping timeout: 260 seconds)
02:43:46 × djellemah quits (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 244 seconds)
02:43:49 whatisRT joins (~whatisRT@2002:5b41:6a33:0:e9bc:8751:d550:a446)
02:44:06 <crestfallen> yeah, the distinction affects my perception of it, tis all..
02:44:26 <monochrom> Some people want to write everything mixfix.
02:44:35 <koz_> monochrom: These people write Agda.
02:44:42 <monochrom> yeah :)
02:44:56 <crestfallen> like looking at a function and saying, ok this goes here, and that goes there, and this is what the machine is doing :)
02:45:43 <crestfallen> thanks great session koz_ et al
02:47:52 <crestfallen> yeah solonarv 's point makes it more intuitive:
02:47:55 <crestfallen> λ> (=<<) id (Just (Just 5))
02:48:49 <crestfallen> but that's wrong to think of it that way. because id is not applied that way, right koz_ ?
02:49:04 <koz_> crestfallen: I genuinely don't understand what you're saying or asking.
02:49:13 <koz_> So I have no idea whether it's wrong to think of 'it' 'that way' or not.
02:50:16 <crestfallen> nevermind thanks I'm overthinking it to poor results
02:51:05 × renzhi quits (~renzhi@modemcable070.17-177-173.mc.videotron.ca) (Ping timeout: 240 seconds)
02:51:14 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:21a4:edc3:68a:18f4)
02:51:36 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:52:41 <fraktor> I am also quite confused
02:56:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
02:59:48 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
02:59:54 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
03:00:01 × I440r quits (~I440r@195.206.169.184) ()
03:00:12 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
03:00:12 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
03:00:12 GyroW joins (~GyroW@unaffiliated/gyrow)
03:00:51 × lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Killed (verne.freenode.net (Nickname regained by services)))
03:01:00 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
03:05:46 × crestfallen quits (~jvw@135.180.15.188) (Quit: leaving)
03:05:55 × whatisRT quits (~whatisRT@2002:5b41:6a33:0:e9bc:8751:d550:a446) (Ping timeout: 240 seconds)
03:06:05 crestfallen joins (~jvw@135-180-15-188.fiber.dynamic.sonic.net)
03:10:42 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
03:12:51 wroathe_ joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:13:25 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
03:13:32 × goepsilongo quits (~textual@2604:2000:1201:442c:2468:86aa:3a30:53a6) (Quit: Textual IRC Client: www.textualapp.com)
03:19:46 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
03:20:09 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
03:22:02 × crestfallen quits (~jvw@135-180-15-188.fiber.dynamic.sonic.net) (Quit: Lost terminal)
03:23:32 × mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Read error: Connection reset by peer)
03:23:51 thir joins (~thir@p200300f27f02580079ce311adf6fad1c.dip0.t-ipconnect.de)
03:24:51 × Gurkenglas_ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
03:25:15 unlink2 joins (~unlink2@p200300ebcf17c500f1cd4c5efbdddd1e.dip0.t-ipconnect.de)
03:27:47 × monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER)
03:28:32 × thir quits (~thir@p200300f27f02580079ce311adf6fad1c.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
03:28:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:29:55 × ashbreeze quits (~mark@72-161-253-104.dyn.centurytel.net) (Ping timeout: 258 seconds)
03:30:22 × polyrain quits (~polyrain@2001:8003:e501:6901:5438:7f7:706e:c9b0) (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:32:15 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
03:32:16 ashbreeze joins (~mark@72-161-252-240.dyn.centurytel.net)
03:32:43 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
03:33:01 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
03:35:23 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
03:35:48 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
03:36:07 × jokester quits (~mono@unaffiliated/jokester) (Ping timeout: 260 seconds)
03:36:09 larou joins (5201f2b7@gateway/web/cgi-irc/kiwiirc.com/ip.82.1.242.183)
03:36:27 <larou> i rewrote the "typing the knot" with a "cycle"
03:36:28 hackage hakyll-process 0.0.1.0 - Hakyll compiler for arbitrary external processes. https://hackage.haskell.org/package/hakyll-process-0.0.1.0 (jhmcstanton)
03:36:28 <larou> https://pastebin.com/raw/J0e4fa3d
03:37:51 <larou> it gives;
03:37:52 <larou> *DLink> (fromCycle . (toCycle @False)) [1,2,3]
03:37:53 <larou> [1,2,3]
03:38:14 <larou> the regular tying the knot would not be able to do this
03:38:21 <larou> since it could not "detect the cycle"
03:38:41 <larou> ie, it would not support "fromCycle"
03:39:03 <larou> i dont think the type applications machinery it requires was available at the time
03:39:28 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
03:39:34 <larou> or maybe even GADTs used this way
03:39:38 jokester joins (~mono@unaffiliated/jokester)
03:39:51 × Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
03:39:58 <larou> im struggling to write "cons" though
03:40:56 <larou> i think this should work even if it is positioned somewhere other than with the cycle immediately behind it
03:41:15 <larou> so i cant just cast it to a list, cons to the list and cast back
03:41:21 <larou> which would be slow anyway...
03:41:53 <larou> but i cant understand how to link it back together, if it has to somehow itterate over the backwards portion until the cycle
03:42:31 <larou> aswell as the regular iterations over the forwards part, that would basically be the inlined version (cf. fusion) of the to/from list
03:42:36 × jedws quits (~jedws@121.209.161.98) (Quit: Textual IRC Client: www.textualapp.com)
03:42:58 monochrom joins (trebla@216.138.220.146)
03:42:58 <larou> where these recursions are supposed to reestablish the links to the updated nodes successively
03:45:12 TheScoop joins (~TheScoop@unaffiliated/tryte)
03:47:13 <hololeap> the exponential law `x^(m+n) = (x^m)(x^n)` translates into haskell types as `Either m n -> x` ~ `(m -> x, n -> x)`
03:47:19 <hololeap> is this basically correct?
03:49:01 <dolio> hololeap: Yes.
03:49:14 <int-e> :t either
03:49:15 <lambdabot> (a -> c) -> (b -> c) -> Either a b -> c
03:49:37 <int-e> :t uncurry either
03:49:38 <lambdabot> (a -> c, b -> c) -> Either a b -> c
03:49:47 <int-e> (one half of the isomorphism)
03:49:56 <int-e> (ignoring bottoms, of course)
03:50:28 <hololeap> int-e: good example :) but what is the other half?
03:50:40 <int-e> :t (. Left) &&& (. Right)
03:50:42 <lambdabot> (Either a b -> c) -> (a -> c, b -> c)
03:50:58 hackage pandoc 2.11.0.2 - Conversion between markup formats https://hackage.haskell.org/package/pandoc-2.11.0.2 (JohnMacFarlane)
03:51:27 <larou> :t (&&&)
03:51:27 <hololeap> right, fanout
03:51:29 <lambdabot> Arrow a => a b c -> a b c' -> a b (c, c')
03:51:51 <larou> % :t (&&&) @(->)
03:51:51 <yahb> larou: (b -> c) -> (b -> c') -> b -> (c, c')
03:52:31 <larou> :t either
03:52:32 <lambdabot> (a -> c) -> (b -> c) -> Either a b -> c
03:53:00 <larou> % :t bimap @Either
03:53:01 <yahb> larou: (a -> b) -> (c -> d) -> Either a c -> Either b d
03:53:29 <larou> is there a way to cast those (->) to `Arrow a' ?
03:53:52 <larou> like something like (&&&) but for Either instead of (,) ?
03:54:08 <larou> (i guess it should work for arbitrary bifunctors)
03:54:23 <hololeap> ah, but `(. Left) &&& (. Right)` means you have to have a value available for both types `a` and `b`, right?
03:54:23 <int-e> :t (|||)
03:54:24 <lambdabot> ArrowChoice a => a b d -> a c d -> a (Either b c) d
03:54:56 <hololeap> doesn't that contradict the semantics of Either?
03:55:29 <larou> that maps from Either to d
03:56:02 <int-e> larou: it's the arrow equiovalent of `either`
03:56:17 <larou> % :t (|||) @Either
03:56:17 <yahb> larou: ; <interactive>:1:1: error: No instance for (ArrowChoice Either) arising from a use of `|||'
03:56:21 <larou> rrg
03:56:25 nineonin_ joins (~nineonine@216-19-190-182.dyn.novuscom.net)
03:56:44 <int-e> ?!
03:56:44 <lambdabot> Maybe you meant: v @ ? .
03:56:47 <larou> % :t (|||) @(->)
03:56:47 <yahb> larou: (b -> d) -> (c -> d) -> Either b c -> d
03:56:51 <larou> :t either
03:56:52 <lambdabot> (a -> c) -> (b -> c) -> Either a b -> c
03:56:56 <larou> oh!
03:57:07 <larou> i was thinking of bimap still, sry
03:57:29 Ahmuck1 joins (~Ahmuck@195.206.169.184)
03:57:42 <larou> ah right, that c is like `c^(a+b)`
03:57:52 × ddellacosta quits (~dd@86.106.121.168) (Ping timeout: 246 seconds)
03:58:05 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 240 seconds)
03:58:15 <hololeap> sorry, i was mixing up my variables in the two definitions. i forgot that an Arrow is usually the variable `a`
03:58:30 <int-e> :t (arr Left >>>) &&& (arr Right >>>)
03:58:32 <lambdabot> Arrow cat => cat (Either a b) c -> (cat a c, cat b c)
03:58:50 <hololeap> :t arr Left
03:58:52 <lambdabot> Arrow a1 => a1 a2 (Either a2 b)
03:59:14 <hololeap> :i ArrowChoice
03:59:16 <int-e> So yes, both of these generalize to arrows.
03:59:23 <larou> bimap would be `(c+d)^(a+b)`
03:59:25 <hololeap> % :i ArrowChoice
03:59:25 <yahb> hololeap: type ArrowChoice :: (* -> * -> *) -> Constraint; class Arrow a => ArrowChoice a where; left :: a b c -> a (Either b d) (Either c d); right :: a b c -> a (Either d b) (Either d c); (+++) :: a b c -> a b' c' -> a (Either b b') (Either c c'); (|||) :: a b d -> a c d -> a (Either b c) d; {-# MINIMAL (left | (+++)) #-}; -- Defined in `Control.Arrow'; instance [safe] Comonad w => ArrowChoice (Cokle
03:59:51 × nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 260 seconds)
04:00:01 × alexelcu quits (~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in)
04:00:03 × polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 244 seconds)
04:00:32 <larou> ah, so (+++) is like bimap
04:00:44 <int-e> no
04:00:52 alexelcu joins (~alexelcu@142.93.180.198)
04:00:55 <int-e> err wait, sorry.
04:00:59 <hololeap> oh, int-e already mentioned (|||)
04:01:00 <int-e> yes, but specifically for Either.
04:01:17 <larou> right
04:01:38 <int-e> hololeap: yes, and I was careful to wrote "arrow" in lower case because it's an extra class.
04:02:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
04:02:29 <larou> is the idea that arrows by pair kind of subsume list
04:03:25 <larou> thinking of how conal was implementing stacks for his "compilers to categories"
04:03:38 <larou> compiling*
04:03:40 XorSwap joins (~user@wnpgmb016qw-ds01-98-128.dynamic.bellmts.net)
04:03:44 <hololeap> arrows by pair subsume list?
04:03:47 <hololeap> what does that mean?
04:04:11 <larou> something about matching on cons being like a pair lens thing
04:04:14 Rudd0 joins (~Rudd0@185.189.115.108)
04:04:34 <larou> like, the arrows way would just be to have nested pairs instead of lists
04:04:43 mirrorbird joins (~psutcliff@m83-187-163-53.cust.tele2.se)
04:04:54 <larou> and then to lens over any element by distributing over pair
04:05:00 × kupi quits (uid212005@gateway/web/irccloud.com/x-xztwkgxiilqycepj) (Quit: Connection closed for inactivity)
04:05:14 <hololeap> can you give a small example?
04:05:26 <larou> i cant actually lens speak
04:05:27 × whiteline quits (~whiteline@unaffiliated/whiteline) (Ping timeout: 260 seconds)
04:05:43 <larou> or arrow speak for that matter
04:05:51 <larou> so no! sorry...
04:06:26 <hololeap> just something pseudo-haskelly to illustrate the point
04:06:34 <larou> i think basically he managed to get quite a lot of expression from just category and arrow
04:06:47 <larou> like, enough to write a compiler of sorts, with this idea of a stack
04:06:59 <larou> erm, ok, i guess something like;
04:07:34 <larou> update 1 (+1) (1,(2,3)) = (1,(3,3))
04:07:37 <larou> ===
04:07:47 <larou> update 1 (+1) [1,2,3] = [1,3,3]
04:08:25 × elliott__ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
04:08:50 <larou> not that that shows anything about the compiler stack idea
04:09:17 <larou> the talk was here; https://www.youtube.com/watch?v=wvQbpS6wBa0
04:09:20 jedws joins (~jedws@121.209.161.98)
04:09:40 Reiser2 is now known as Reiser
04:09:44 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
04:09:47 × Reiser quits (~0a2a0001@static.210.242.216.95.clients.your-server.de) (Changing host)
04:09:47 Reiser joins (~0a2a0001@unaffiliated/reisen)
04:10:03 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
04:10:31 <hololeap> i know i asked for pseudo-haskell, but what would the type be for `update` in the first example?
04:10:48 <hololeap> i don't understand what the first 1 is for
04:11:02 <larou> well in the list example its the index
04:11:13 <larou> > [1,2,3] !! 1
04:11:16 <lambdabot> 2
04:11:25 <hololeap> oh
04:11:47 <larou> the type signature totally fails for the first example because really, nested pairs are not lists...
04:13:25 <larou> i think in the talk he was flipping the order of the pair around
04:13:28 <hololeap> update 0 = _1 ; update n f = _2 . update (n-1) f
04:13:31 <larou> so that the tail was on the first
04:13:43 <hololeap> (that might not be correct, i didn't test it)
04:14:00 ensyde joins (~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7)
04:15:15 <larou> i dont think you should be dotting? like the update (n-1) is the function passed to _2 right?
04:15:20 <larou> % :t _2
04:15:20 <yahb> larou: (Field2 s t a b, Functor f) => (a -> f b) -> s -> f t
04:15:36 <hololeap> :% t (_2 . _2 . _2 . _1)
04:15:51 <hololeap> broke it
04:15:52 <larou> % t (_2 . _2 . _2 . _1)
04:15:52 <yahb> larou: ; <interactive>:41:1: error: Variable not in scope: t :: ((a3 -> f0 b3) -> s0 -> f0 t0) -> t
04:16:05 <hololeap> % :t (_2 . _2 . _2 . _1)
04:16:06 <yahb> hololeap: (Functor f, Field2 s t a1 b1, Field2 a1 b1 a2 b2, Field2 a2 b2 a3 b3, Field1 a3 b3 a4 b4) => (a4 -> f b4) -> s -> f t
04:16:49 <larou> % :t \f -> (_2 (_1 f))
04:16:50 <yahb> larou: (Field2 s1 t s2 b1, Functor f, Field1 s2 b1 a b2) => (a -> f b2) -> s1 -> f t
04:17:53 <larou> % :t (\f -> (_2 (_1 f))) (+1) (1,(2,3))
04:17:53 <yahb> larou: (Functor f, Num a, Num b1, Num (f b2)) => f (a, (b2, b1))
04:17:57 <hololeap> % :t \n f = let foo n = case n of ; 0 -> _1 ; n' -> _2 . foo (n-1)
04:17:57 <yahb> hololeap: ; <interactive>:1:6: error: parse error on input `='
04:17:57 <larou> % (\f -> (_2 (_1 f))) (+1) (1,(2,3))
04:17:58 <yahb> larou: ; <interactive>:46:1: error:; * Ambiguous type variables `f0', `b0' arising from a use of `print'; prevents the constraint `(Show (f0 (Integer, (b0, Integer))))' from being solved.; Probable fix: use a type annotation to specify what `f0', `b0' should be.; These potential instances exist:; instance Show a => Show (ZipList a) -- Defined in `Control.Applicative'; insta
04:18:08 <larou> !
04:18:09 <hololeap> % :t \n = let foo n = case n of ; 0 -> _1 ; n' -> _2 . foo (n-1)
04:18:09 <yahb> hololeap: ; <interactive>:1:4: error: parse error on input `='
04:18:39 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
04:18:42 × ensyde quits (~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7) (Ping timeout: 260 seconds)
04:18:54 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
04:18:59 <larou> % :t \n -> let foo n = case n of ; 0 -> _1 ; n' -> _2 . foo (n-1)
04:18:59 <yahb> larou: ; <interactive>:1:61: error: parse error (possibly incorrect indentation or mismatched brackets)
04:19:31 <larou> % :t \n -> let foo n = case n of ; 0 -> _1 ; n' -> _2 . foo (n-1) in foo 1 (+1) (1,(2,3))
04:19:31 <yahb> larou: ; <interactive>:1:65: error:; * Occurs check: cannot construct the infinite type: b1 ~ (f b, b1); arising from a functional dependency between:; constraint `Field2 (f b, (f b, b1)) (b, (f b, b1)) (f b, (f b, b1)) (b, (f b, b1))' arising from a use of `foo'; instance Field2 (a, b2) (a, b') b2 b' at <no location info>; * In the expression: foo 1 (+ 1) (1, (2, 3));
04:19:45 <larou> this isnt working at all!
04:20:11 <larou> crazy lenses...
04:20:33 <hololeap> % update 0 = _1 ; update n = _2 . update (n-1)
04:20:33 <yahb> hololeap:
04:20:36 <hololeap> % :t update
04:20:37 <yahb> hololeap: (Eq t, Num t, Field1 a1 b1 a2 b2, Functor f, Field2 a1 b1 a1 b1) => t -> (a2 -> f b2) -> a1 -> f b1
04:20:48 <hololeap> anyway, that's what i was going for
04:21:09 <larou> how is that used?
04:21:22 plast1k_ joins (~plast1k_@196.207.181.246)
04:24:36 <larou> % update 1 return (1,(2,3))
04:24:37 <yahb> larou: ; <interactive>:52:1: error:; * Occurs check: cannot construct the infinite type: b ~ (a, b); arising from a functional dependency between:; constraint `Field2 (a, (a, b)) (a, (a, b)) (a, (a, b)) (a, (a, b))' arising from a use of `update'; instance Field2 (a1, b1) (a1, b') b1 b' at <no location info>; * In the expression: update 1 return (1, (2, 3)); In an equat
04:24:59 <larou> how does that even typecheck!?
04:25:03 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:21a4:edc3:68a:18f4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:27:17 <larou> i think you would have to make update a function of a class so it could match on the type it was being applied to
04:29:47 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:30:31 <hololeap> yeah this doesn't typecheck well when applied to an actual value
04:30:45 × fraktor quits (~walt@129.93.191.18) (Quit: WeeChat 2.8)
04:31:58 × Guest34869 quits (~chris@81.96.113.213) (Remote host closed the connection)
04:32:00 <hololeap> there was a library that could convert (1,2,3,4) to [1,2,3,4] somehow
04:32:00 × XorSwap quits (~user@wnpgmb016qw-ds01-98-128.dynamic.bellmts.net) (Quit: XorSwap)
04:33:25 <larou> you mean (1,(2,(3,4))) ?
04:33:54 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
04:34:10 Tario joins (~Tario@201.192.165.173)
04:34:38 <hololeap> i remember it being (1,2,3,4) -> [1,2,3,4]. you would have to convert (1,(2,(3,4))) to (1,2,3,4) first i suppose
04:34:52 <larou> well thats no good!
04:34:58 <hololeap> anyway, possible, but tricky with haskell's type system
04:35:04 × sdx23 quits (~sdx23@unaffiliated/sdx23) (Ping timeout: 265 seconds)
04:35:10 <larou> anyway, whats the point in having something that typechecks except when its applied to a value
04:35:37 <hololeap> there isn't one. i made a mistake
04:35:52 <larou> k
04:35:52 conal joins (~conal@64.71.133.70)
04:35:58 hackage sweet-egison 0.1.1.1 - Shallow embedding implementation of non-linear pattern matching https://hackage.haskell.org/package/sweet-egison-0.1.1.1 (SatoshiEgi)
04:36:00 <larou> btw did anyone see this>
04:36:01 <larou> https://pastebin.com/raw/J0e4fa3d
04:36:02 <larou> ?
04:36:04 <hololeap> although it should be possible
04:36:11 <hololeap> using type families or something
04:36:15 <larou> i was trying to write cons for a cyclic list
04:36:30 <larou> but got stuck
04:38:01 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
04:38:19 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:38:32 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 258 seconds)
04:38:43 × ech quits (~user@gateway/tor-sasl/ech) (Ping timeout: 240 seconds)
04:38:58 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
04:41:14 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
04:41:24 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Client Quit)
04:41:43 × blissful quits (~azuline@unaffiliated/azuline) (Quit: The Lounge - https://thelounge.chat)
04:43:01 × jneira_ quits (~jneira@80.30.100.250) (Ping timeout: 246 seconds)
04:43:09 jneira_ joins (~jneira@211.red-176-87-17.dynamicip.rima-tde.net)
04:43:32 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
04:43:32 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
04:43:41 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
04:44:56 blissful joins (~azuline@unaffiliated/azuline)
04:45:21 × larou quits (5201f2b7@gateway/web/cgi-irc/kiwiirc.com/ip.82.1.242.183) (Quit: Connection closed)
04:46:03 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
04:48:01 chris joins (~chris@81.96.113.213)
04:48:26 chris is now known as Guest39829
04:49:05 day_ joins (~Unknown@unaffiliated/day)
04:50:21 Tario joins (~Tario@201.192.165.173)
04:50:41 ech joins (~user@gateway/tor-sasl/ech)
04:52:36 × day quits (~Unknown@unaffiliated/day) (Ping timeout: 256 seconds)
04:52:36 day_ is now known as day
04:53:42 × ericsagnes quits (~ericsagne@2405:6580:0:5100:548b:75ef:7d3b:2917) (Ping timeout: 260 seconds)
04:54:53 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
04:55:11 Tario joins (~Tario@201.192.165.173)
04:59:45 × Saukk quits (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
04:59:52 jsynacek joins (~jsynacek@ip-185-149-130-112.kmenet.cz)
05:05:42 ericsagnes joins (~ericsagne@2405:6580:0:5100:ad7e:a36b:18dd:5e0b)
05:06:11 <hololeap> https://dpaste.com/3FX3PKNAB
05:12:18 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:12:49 × foldr quits (~foldr@90.248.57.181) (Ping timeout: 264 seconds)
05:12:52 snakemas1 joins (~snakemast@213.100.206.23)
05:14:09 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
05:14:58 hackage sweet-egison 0.1.1.2 - Shallow embedding implementation of non-linear pattern matching https://hackage.haskell.org/package/sweet-egison-0.1.1.2 (SatoshiEgi)
05:17:43 polyrain joins (~polyrain@130.102.13.188)
05:22:14 × jneira_ quits (~jneira@211.red-176-87-17.dynamicip.rima-tde.net) (Ping timeout: 258 seconds)
05:26:27 lemmih joins (~lemmih@2406:3003:2072:44:70c9:d5cf:dc27:2e6a)
05:29:53 × lemmih quits (~lemmih@2406:3003:2072:44:70c9:d5cf:dc27:2e6a) (Client Quit)
05:31:04 kenran joins (~maier@b2b-37-24-119-190.unitymedia.biz)
05:32:22 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:32:26 lemmih joins (~lemmih@2406:3003:2072:44:70c9:d5cf:dc27:2e6a)
05:32:58 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
05:35:07 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
05:38:14 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
05:39:16 ggole joins (~ggole@2001:8003:8119:7200:245d:f234:9b48:f3a5)
05:44:52 × MattMareo quits (~mattl@unaffiliated/mattmareo) (Remote host closed the connection)
05:44:55 AHADI-DANIEL joins (~Thunderbi@45.195.7.35)
05:46:35 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
05:46:55 alp joins (~alp@2a01:e0a:58b:4920:bc3f:65f1:5680:9d66)
05:47:11 MattMareo joins (~mattl@unaffiliated/mattmareo)
05:47:40 Guest88073 is now known as lep-delete
05:47:41 lep-delete is now known as Guest88073
05:47:42 Guest88073 is now known as lep-delete
05:47:48 lep-delete is now known as Guest88073
05:48:18 Sanchayan joins (~Sanchayan@171.61.90.104)
05:52:40 × Guest39829 quits (~chris@81.96.113.213) (Remote host closed the connection)
05:52:46 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-xesqnwopwcihzfhi) (Quit: Connection closed for inactivity)
05:52:49 nyd joins (~lpy@unaffiliated/elysian)
05:53:12 × danso quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
05:54:09 danso joins (~dan@107-190-41-58.cpe.teksavvy.com)
05:56:16 bahamas joins (~lucian@unaffiliated/bahamas)
05:57:18 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
06:00:01 × Ahmuck1 quits (~Ahmuck@195.206.169.184) ()
06:01:05 × alp quits (~alp@2a01:e0a:58b:4920:bc3f:65f1:5680:9d66) (Ping timeout: 272 seconds)
06:03:02 × sleblanc quits (~sleblanc@unaffiliated/sebleblanc) (Ping timeout: 265 seconds)
06:03:42 × acidjnk_new2 quits (~acidjnk@p200300d0c723787058597087ca157dd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
06:05:36 × Guest88073 quits (~lep@94.31.82.44) (Read error: Connection reset by peer)
06:05:56 lep-delete joins (~lep@94.31.82.44)
06:05:59 whatisRT joins (~whatisRT@2002:5b41:6a33:0:e9bc:8751:d550:a446)
06:06:22 lep-delete is now known as Guest88073
06:10:53 <hololeap> @pf runMatchT m = runMaybeT . runReaderT (getMatchT m)
06:10:53 <lambdabot> Maybe you meant: pl bf
06:11:01 <hololeap> @pl runMatchT m = runMaybeT . runReaderT (getMatchT m)
06:11:02 <lambdabot> runMatchT = (runMaybeT .) . runReaderT . getMatchT
06:11:30 cfricke joins (~cfricke@unaffiliated/cfricke)
06:12:09 × irc_user quits (uid423822@gateway/web/irccloud.com/x-tarrfebyaowlqxvj) (Quit: Connection closed for inactivity)
06:13:27 hackage egison 4.1.1 - Programming language with non-linear pattern-matching against non-free data https://hackage.haskell.org/package/egison-4.1.1 (SatoshiEgi)
06:13:47 toorevitimirp joins (~tooreviti@117.182.180.0)
06:15:00 bitmagie joins (~Thunderbi@200116b8068ac700b1ff22a8b63421be.dip.versatel-1u1.de)
06:17:33 × solonarv quits (~solonarv@anancy-651-1-202-101.w109-217.abo.wanadoo.fr) (Ping timeout: 260 seconds)
06:19:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:21:24 × plast1k_ quits (~plast1k_@196.207.181.246) (Ping timeout: 265 seconds)
06:21:53 Wayno joins (~Wayno@185.163.110.116)
06:24:54 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
06:30:28 aqd joins (~aqd@87-92-145-87.rev.dnainternet.fi)
06:31:46 chris joins (~chris@81.96.113.213)
06:32:09 chris is now known as Guest79846
06:34:21 × kenran quits (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 260 seconds)
06:35:04 mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh)
06:37:12 plast1k_ joins (~plast1k_@196.207.181.246)
06:37:55 × aqd quits (~aqd@87-92-145-87.rev.dnainternet.fi) (Quit: Textual IRC Client: www.textualapp.com)
06:38:11 avdb joins (~avdb@ip-83-134-109-138.dsl.scarlet.be)
06:39:45 × avdb quits (~avdb@ip-83-134-109-138.dsl.scarlet.be) (Client Quit)
06:40:14 avdb joins (~avdb@ip-83-134-109-138.dsl.scarlet.be)
06:42:14 × danso quits (~dan@107-190-41-58.cpe.teksavvy.com) (Quit: WeeChat 2.9)
06:43:10 kenran joins (~maier@b2b-37-24-119-190.unitymedia.biz)
06:45:25 ensyde joins (~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7)
06:45:35 kritzefitz joins (~kritzefit@fw-front.credativ.com)
06:48:03 × ech quits (~user@gateway/tor-sasl/ech) (Ping timeout: 240 seconds)
06:48:03 × kenran quits (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 260 seconds)
06:49:09 × Guest79846 quits (~chris@81.96.113.213) (Remote host closed the connection)
06:50:00 wroathe_ is now known as wroathe
06:50:29 × ensyde quits (~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7) (Ping timeout: 272 seconds)
06:51:29 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
06:51:46 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:51:58 fragamus joins (~michaelgo@73.93.155.61)
06:52:25 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds)
06:52:29 dhouthoo joins (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
06:52:53 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
06:53:08 <fragamus> howdy do we have a way to solve a set of six linear equations
06:53:55 <fragamus> I kinda want to not use something that would require me to add a bulky external package
06:54:01 ech joins (~user@gateway/tor-sasl/ech)
06:54:22 <Axman6> what does "external" mean?
06:54:30 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
06:54:32 <Axman6> I'm sure hmatrix has something?
06:54:34 <fragamus> I just want a sleek all haskell package that solves a system of linear equations
06:55:01 <fragamus> external means someone wrote one in C and then someone else ported it to haskell
06:55:07 <fragamus> I just want all haskell
06:55:14 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
06:55:15 <fragamus> I will have a look at hmatrix
06:55:44 <fragamus> I don't want one that uses FFI
06:55:54 <Axman6> I believe hmatrix uses lapack
06:56:49 dcoutts_ joins (~duncan@33.14.75.194.dyn.plus.net)
06:57:20 <Axman6> https://hackage.haskell.org/package/linear-1.21.3/docs/Linear-Matrix.html#v:luSolve?
06:57:20 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
06:57:30 <Axman6> pretty sure there' no C deps for the linear package
06:57:32 <fragamus> I just want to do gaussian elimination on a six by six matrix
06:58:02 <fragamus> yes Linear is nice but it appears to top out at vecors of length 4
06:58:02 × polyrain quits (~polyrain@130.102.13.188) (Quit: My MacBook has gone to sleep. ZZZzzz…)
06:58:16 <fragamus> vectors even
06:58:32 <Axman6> V is an arbitrary sizex vector
06:58:50 alp joins (~alp@2a01:e0a:58b:4920:e911:6d8c:d3c2:ba84)
06:58:54 <fragamus> elimination and back substitution
06:59:02 <Axman6> so you want V 6 (V 6 Double) or something
06:59:33 <fragamus> ok lemme try that
07:00:02 <Axman6> I have no idea if this'll work though, I'm just following the types
07:00:18 × rprije quits (~rprije@14-203-72-60.tpgi.com.au) (Ping timeout: 260 seconds)
07:00:32 <fragamus> V would have to implement typeclass Additive etc.
07:00:49 <Axman6> which it does
07:02:37 × xff0x quits (~fox@2001:1a81:5391:7900:f127:8532:42d4:579b) (Ping timeout: 244 seconds)
07:03:56 sdx23 joins (~sdx23@unaffiliated/sdx23)
07:04:59 snakemas1 joins (~snakemast@213.100.206.23)
07:08:10 <fragamus> ok Linear.V looks like a winner
07:08:40 <fragamus> what does Portability non-portable mean?
07:08:57 <Axman6> probably works with GHC
07:09:22 <fragamus> ok so it is prtable
07:09:29 <fragamus> portable even
07:09:44 × pera quits (~pera@unaffiliated/pera) (Ping timeout: 256 seconds)
07:09:49 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
07:10:42 chaosmasttter joins (~chaosmast@p200300c4a710fa01b4d1efe2d5e04ce9.dip0.t-ipconnect.de)
07:11:20 × whatisRT quits (~whatisRT@2002:5b41:6a33:0:e9bc:8751:d550:a446) (Ping timeout: 246 seconds)
07:13:16 × Sgeo_ quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
07:13:42 whiteline joins (~whiteline@unaffiliated/whiteline)
07:16:12 × tzh quits (~tzh@2601:448:c500:5300::8e04) (Quit: zzz)
07:16:21 aqd joins (~aqd@ip-87-108-38-187.customer.academica.fi)
07:16:23 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
07:16:38 × Buntspecht quits (~user@unaffiliated/siracusa) (Quit: Bye!)
07:19:54 vilpan joins (~0@mail.elitnet.lt)
07:20:15 × bliminse quits (~bliminse@host217-42-95-37.range217-42.btcentralplus.com) (Quit: leaving)
07:23:23 × perdent quits (~blah@101.175.98.122) (Remote host closed the connection)
07:23:33 bliminse joins (~bliminse@host217-42-95-37.range217-42.btcentralplus.com)
07:25:21 thir joins (~thir@p200300f27f02580079ce311adf6fad1c.dip0.t-ipconnect.de)
07:25:40 <merijn> honestly "portability" and "stability" fields have no well defined meaning
07:25:51 <merijn> Some of my packages have stability "haha" :p
07:26:31 snakemas1 joins (~snakemast@213.100.206.23)
07:26:57 funkatronixxx joins (~funkatron@a83-161-198-206.adsl.xs4all.nl)
07:30:02 × thir quits (~thir@p200300f27f02580079ce311adf6fad1c.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
07:30:38 × AHADI-DANIEL quits (~Thunderbi@45.195.7.35) (Ping timeout: 256 seconds)
07:30:44 nikotine is now known as ping
07:31:02 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
07:31:20 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
07:31:21 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
07:31:21 GyroW joins (~GyroW@unaffiliated/gyrow)
07:31:52 polyrain joins (~polyrain@130.102.13.188)
07:31:54 AHADI-DANIEL joins (~Thunderbi@45.195.7.35)
07:35:01 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 264 seconds)
07:36:50 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 272 seconds)
07:39:45 × dddddd quits (~dddddd@unaffiliated/dddddd) (Ping timeout: 240 seconds)
07:39:45 danvet_ joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
07:41:01 snakemas1 joins (~snakemast@213.100.206.23)
07:42:43 coot joins (~coot@37.30.50.102.nat.umts.dynamic.t-mobile.pl)
07:44:58 AHADI-DANIEL1 joins (~Thunderbi@45.195.7.35)
07:44:59 × AHADI-DANIEL quits (~Thunderbi@45.195.7.35) (Read error: Connection reset by peer)
07:45:00 AHADI-DANIEL1 is now known as AHADI-DANIEL
07:49:39 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
07:50:26 xff0x joins (~fox@217.110.198.158)
07:53:28 × sw1nn quits (~sw1nn@host86-173-104-87.range86-173.btcentralplus.com) (Quit: WeeChat 2.9)
07:53:39 × sea-gull quits (~sea-gull@li1815-136.members.linode.com) (Ping timeout: 258 seconds)
07:53:46 sea-gull joins (~sea-gull@li1815-136.members.linode.com)
07:55:00 sw1nn joins (~sw1nn@host86-173-104-87.range86-173.btcentralplus.com)
07:55:02 × toorevitimirp quits (~tooreviti@117.182.180.0) (Remote host closed the connection)
07:55:08 supercoven joins (~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi)
07:55:09 × supercoven quits (~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi) (Max SendQ exceeded)
07:55:14 × Stanley00 quits (~stanley00@unaffiliated/stanley00) (Read error: Connection reset by peer)
07:55:16 Stanley|00 joins (~stanley00@unaffiliated/stanley00)
07:55:23 supercoven joins (~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi)
07:55:30 toorevitimirp joins (~tooreviti@117.182.180.0)
07:56:02 raichoo joins (~raichoo@213.240.178.58)
07:57:55 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
07:59:23 × supercoven quits (~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi) (Max SendQ exceeded)
07:59:24 × jgt1 quits (~jgt@77-255-14-254.adsl.inetia.pl) (Read error: Connection reset by peer)
07:59:41 supercoven joins (~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi)
08:00:04 × Stanley|00 quits (~stanley00@unaffiliated/stanley00) (Ping timeout: 246 seconds)
08:00:12 jgt1 joins (~jgt@77-255-14-254.adsl.inetia.pl)
08:00:13 anik joins (~anik@103.23.207.150)
08:00:24 <avdb> What's the best way to install all Haskell tools on Linux? I did a fresh installation yesterday and I'd rather not clutter it again by installing GHC, Stack & Cabal in 5 different ways
08:00:45 <avdb> I head you're not supposed to use Haskell Platform or something because it was harmful
08:00:56 × jgt1 quits (~jgt@77-255-14-254.adsl.inetia.pl) (Client Quit)
08:01:05 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
08:01:53 <merijn> define "all haskell tools" :)
08:02:20 <merijn> Are you on Arch? Because if so, rule one is: avoid the official packages :)
08:02:30 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) ()
08:02:32 <avdb> I need GHC, GHCi, Stack, Cabal and the base packages
08:02:50 <avdb> Nope, Gentoo, Haskell support is amazing
08:02:55 <merijn> avdb: GHC+cabal are probably most easily/portably done via ghcup
08:03:13 <merijn> stack is most easily done via, well, stack (which will get GHC for you)
08:03:24 <avdb> Alright, that was the method I read about in "What I wish I knew before learning Haskell"
08:03:57 <merijn> If you're a Luddite whose pedantic about his environment there's also the "just download the GHC bindist" approach
08:04:13 <avdb> Unlike other books, instead of letting you dip your toes in the water first, it throws you directly in the cold water
08:04:16 <merijn> Which is what I stick with, but that's not for everyone :p
08:05:17 untseac joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
08:06:03 × anik quits (~anik@103.23.207.150) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
08:07:25 <maerwald> avdb: you can't have multiple GHC in gentoo
08:08:29 <maerwald> and it exposes hackage packages in a way that makes it impossible to have the same version installed multiple times, effectively leading to lots of dependency resolution problems
08:09:12 lagothrix is now known as Guest70556
08:09:12 × Guest70556 quits (~lagothrix@unaffiliated/lagothrix) (Killed (tolkien.freenode.net (Nickname regained by services)))
08:09:21 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
08:09:52 <avdb> Alright, so I need to stick with my package manager?
08:10:32 <[exa]> "your package manager" as the distro's package manager?
08:10:42 <avdb> Portage
08:10:51 <avdb> We have a Haskell overlay
08:10:54 <maerwald> avdb: as I said, you can only have one GHC and haskell packages are not handled properly
08:11:10 <maerwald> it's not worth the trouble
08:11:36 <[exa]> avdb: certainly use ghcup and local cabal for your development packages... the way haskell packages work is problematic for distros to grasp correctly to allow both development and reliably installed packages
08:12:17 × isovector1 quits (~isovector@172.103.216.166) (Quit: Leaving)
08:12:29 <avdb> Oh okay, but how do I update ghcup without hassle?
08:12:30 <maerwald> most package managers were written in an era where packages were C packages and maintainers lost sleep over changing/breaking API
08:12:37 <avdb> Since it's not recorded in Portage
08:12:57 <avdb> Hahaha, XMonad wasn't easy on dependencies either :$
08:13:00 <maerwald> now we have SemVer, npm and need tools like nix to handle any of that, but no one really understands
08:13:01 <[exa]> avdb: you don't need to, it's basically an onetime script
08:13:33 <[exa]> avdb: also it can kindof update itself, like rustups, pips and other "local" managers
08:13:58 <[exa]> anyway I have to say that I'd welcome ghcup in distro packages
08:14:10 <maerwald> it's a bit sad that you need the least ergonomic package manager out there to handle haskell packages correctly
08:14:22 <avdb> Oh that's cool, seems like it installs itself in my home directory
08:14:49 isovector1 joins (~isovector@172.103.216.166.cable.tpia.cipherkey.com)
08:15:07 <[exa]> avdb: it's really convenient for development, just gives the user a working copy of ghc and cabal, with easy way to switch versions etc. Certainly the easiest way around, by far
08:15:17 × lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Killed (hitchcock.freenode.net (Nickname regained by services)))
08:15:26 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
08:16:31 <[exa]> avdb: if you don't mind a bit of `make install`, you can install ghc+cabal yourself from binary distribution on the web, which will give you a similar result with a bit more control. Eventually you could compile ghc, but that's a longer adventure
08:17:04 <[exa]> (by "longer" I mean "please don't do this to yourself now")
08:18:12 <merijn> You shouldn't compile GHC yourself unless you really have to
08:18:22 <merijn> And actually you run into circular issues anyway
08:18:27 × polyrain quits (~polyrain@130.102.13.188) (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:18:34 <merijn> You need to already have a working GHC to compile GHC from source
08:18:48 <merijn> So, why would you bother building it if you've already got it :p
08:19:22 × addcninblue quits (~addison@c-73-158-198-149.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
08:19:26 <avdb> [exa]: Oh no, I already had horrible experiences compiling rust in the past
08:20:00 <jchia> i'm wondering how much performance improvement you can get by compiling ghc yourself with optimization options fit for the target machine
08:20:09 <avdb> You're 100% right merijn. Compiling packages from source is only useful for customization with USE flags or ports.
08:20:27 <[exa]> jchia: that's very gentoo-oriented question right. :D
08:20:43 <avdb> Oh and optimizations, forgot.
08:20:47 <jchia> [exa]: i just find ghc, but i don't use gentoo
08:20:50 <jchia> i find ghc slow
08:21:16 Stanley00 joins (~stanley00@unaffiliated/stanley00)
08:21:38 × lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Ping timeout: 258 seconds)
08:21:40 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
08:21:45 <jchia> So if i can even get 5% improvement from building ghc from source, i would do it. i just haven't tried
08:22:19 <[exa]> I don't really believe the machine-specific optimizations would help it... ghc is slow because it handles giant heaps of irregular structures and tries to do it in a (relatively) sane and clean way, which can be hardly optimized by lowlevel changes in the compiler
08:22:49 <[exa]> jchia: would be interesting to see the benchmark though
08:23:25 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
08:24:12 × nyd quits (~lpy@unaffiliated/elysian) (Quit: nyd)
08:26:21 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds)
08:26:38 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
08:26:55 moy joins (a4b11321@static-csq-cds-019033.business.bouyguestelecom.com)
08:27:19 moy is now known as Guest6760
08:28:11 × sdx23 quits (~sdx23@unaffiliated/sdx23) (Quit: Lost terminal)
08:31:55 bahamas joins (~lucian@unaffiliated/bahamas)
08:32:39 <Guest6760> Hello. Im discovering Haskell through the development of a little chat server using TCP protocole. Sadly, i can only parse the message sent initially at the client connexion. If a client keep the socket open and continue sending message, i cant get them server side. Anyone with some experience with the Network module has a clue ?
08:32:51 <Guest6760> as example im using the snippet found on the Network module documentation :
08:33:13 <Guest6760> https://hackage.haskell.org/package/network-3.1.1.1/docs/Network-Socket.html
08:33:43 invaser joins (~Thunderbi@31.148.23.125)
08:35:23 <[exa]> Guest6760: how exactly you "can't" get them on server side? the client disconnects? the read from the connection hangs forever?
08:36:02 sdx23 joins (~sdx23@unaffiliated/sdx23)
08:37:47 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
08:37:52 <[exa]> (also, it might help a lot to pastebin some representative sample of your code)
08:39:06 <Guest6760> ah yeah pastebin ill do that. by i cant i mean i dont find how to do it. The client does not disconnect, but i dont know how to listen to/parse the message that the client keep sending
08:40:09 <Guest6760> https://pastebin.com/RCyZcwVb here is my server code
08:41:00 <Guest6760> i can log the message client send on connexion, and answer it also, at the connexion, but then nothing
08:41:57 hackage benchpress 0.2.2.15 - Micro-benchmarking with detailed statistics. https://hackage.haskell.org/package/benchpress-0.2.2.15 (willsewell)
08:42:36 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
08:42:53 <[exa]> ok good, you probably don't want to use plain 'recv' but you can wrap the socket with a handle-like interface; convert it using `socketToHandle` first. Then you can e.g. read the first "line" from the client using `hGetLine`
08:43:38 <[exa]> Guest6760: btw, highly suggest using some kind of telnet or netcat tool to debug&inspect client and server separately
08:43:52 kenran joins (~maier@b2b-37-24-119-190.unitymedia.biz)
08:45:10 <Guest6760> ok thanks a lot, i'll give it a try. Im using netcat as client but im was not aware i could use it to debug
08:45:21 <Guest6760> i was not aware
08:45:24 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 258 seconds)
08:45:29 ph88 joins (~ph88@2a02:8109:9e40:2704:21a2:9414:d2e6:266d)
08:45:34 <maerwald> avdb: compiling from source is about trust too... and I don't mean that from some paranoid privacy perspective, but from the perspective that package maintainers tend to mess up
08:46:06 <ph88> you mean you have to trust them not to mess up ? :P
08:46:24 <[exa]> Guest6760: if you are using it as client, you are probably already there :]
08:46:26 <maerwald> no, I don't have to, because I can see what they are doing exactly
08:48:13 × isovector1 quits (~isovector@172.103.216.166.cable.tpia.cipherkey.com) (Ping timeout: 260 seconds)
08:48:20 × toorevitimirp quits (~tooreviti@117.182.180.0) (Quit: Konversation terminated!)
08:48:57 × mirrorbird quits (~psutcliff@m83-187-163-53.cust.tele2.se) (Quit: Leaving)
08:49:03 × kenran quits (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 256 seconds)
08:49:38 × whiteline quits (~whiteline@unaffiliated/whiteline) (Remote host closed the connection)
08:50:01 whiteline joins (~whiteline@unaffiliated/whiteline)
08:51:45 × drbean quits (~drbean@TC210-63-209-75.static.apol.com.tw) (Ping timeout: 240 seconds)
08:52:58 hackage conduit 1.3.3 - Streaming data processing library. https://hackage.haskell.org/package/conduit-1.3.3 (MichaelSnoyman)
08:53:08 × whiteline quits (~whiteline@unaffiliated/whiteline) (Client Quit)
08:53:30 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
08:54:14 toorevitimirp joins (~tooreviti@117.182.180.0)
08:54:29 × AHADI-DANIEL quits (~Thunderbi@45.195.7.35) (Quit: AHADI-DANIEL)
08:54:38 chris joins (~chris@81.96.113.213)
08:55:02 chris is now known as Guest86129
08:55:11 × Guest86129 quits (~chris@81.96.113.213) (Remote host closed the connection)
08:58:05 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
09:00:01 × Wayno quits (~Wayno@185.163.110.116) ()
09:01:06 thc202 joins (~thc202@unaffiliated/thc202)
09:01:31 DavidEichmann joins (~david@43.240.198.146.dyn.plus.net)
09:01:46 anik joins (~anik@103.23.207.158)
09:01:46 × ixlun quits (~matthew@213.205.241.94) (Read error: Connection reset by peer)
09:02:09 rprije joins (~rprije@203-219-208-42.static.tpgi.com.au)
09:05:40 × jrqc quits (~rofl@96.78.87.197) (Remote host closed the connection)
09:05:40 × plast1k_ quits (~plast1k_@196.207.181.246) (Remote host closed the connection)
09:05:57 jrqc joins (~rofl@96.78.87.197)
09:06:01 plast1k_ joins (~plast1k_@196.207.181.246)
09:06:23 ubert joins (~Thunderbi@p200300ecdf10db93e6b318fffe838f33.dip0.t-ipconnect.de)
09:06:25 × fragamus quits (~michaelgo@73.93.155.61) (Ping timeout: 240 seconds)
09:07:13 × plast1k_ quits (~plast1k_@196.207.181.246) (Client Quit)
09:08:25 × anik quits (~anik@103.23.207.158) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
09:08:45 Franciman joins (~francesco@host-82-48-166-25.retail.telecomitalia.it)
09:08:54 <Franciman> Hi, what is the most mature GUI toolkit for haskell?
09:08:54 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
09:08:59 <Franciman> gi-gtk?
09:09:01 <Franciman> or gtk3?
09:10:55 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-ritgaqlnctnhotjj) (Quit: Connection closed for inactivity)
09:13:04 <merijn> Mature in which sense?
09:14:16 <merijn> The most robust is probably ftlkhs, but it doesn't look all nice and shiny
09:14:44 coot_ joins (~coot@37.30.35.208.nat.umts.dynamic.t-mobile.pl)
09:15:31 snakemas1 joins (~snakemast@213.100.206.23)
09:16:58 <Guest6760> [exa] I'm experiencing the same issue with Handles : i read the first message sent, then the talk function is called again recursively, there is nothing to read, then it stop to listen to messages (i guess)
09:17:04 <Guest6760> https://pastebin.com/PBkc0KNe
09:17:43 <Guest6760> It seems that talk stop calling itself recursively after the 2nd execution
09:17:57 × coot quits (~coot@37.30.50.102.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds)
09:17:58 coot_ is now known as coot
09:19:49 SysRun joins (~SysRun@s91904426.blix.com)
09:20:45 thir joins (~thir@p200300f27f02580054c95ee62928d196.dip0.t-ipconnect.de)
09:21:22 anik joins (~anik@103.23.207.144)
09:21:48 <dminuoso> Guest6760: Did you read the note at
09:21:54 <dminuoso> https://hackage.haskell.org/package/network-3.1.2.0/docs/Network-Socket.html#v:socketToHandle
09:22:01 <dminuoso> "By default, the new handle is unbuffered. Use hSetBuffering to change the buffering.'
09:22:40 <Guest6760> i red it but it didnt mean much to me :p
09:23:07 <dminuoso> Well, hGetLine will block until it gets a newline
09:23:13 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
09:23:40 <dminuoso> But if the handle is unbuffered, it wont get to a newline even though one may be in its buffer already
09:23:46 <dminuoso> Oh
09:23:48 <dminuoso> Haha
09:23:53 <dminuoso> Wait, I read this the wrong way around.
09:24:15 snakemas1 joins (~snakemast@213.100.206.23)
09:24:37 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
09:25:13 × thir quits (~thir@p200300f27f02580054c95ee62928d196.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
09:25:19 × anik quits (~anik@103.23.207.144) (Client Quit)
09:26:06 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
09:27:23 Amras joins (~Amras@unaffiliated/amras0000)
09:28:58 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
09:29:52 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
09:31:25 × vilpan quits (~0@mail.elitnet.lt) (Ping timeout: 246 seconds)
09:32:22 × petersen quits (~petersen@redhat/juhp) (Quit: petersen)
09:32:24 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
09:32:35 <maerwald> Franciman: gi-gtk is better maintained afair
09:34:10 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 256 seconds)
09:34:13 <maerwald> Franciman: the gtk3 readme says "For all new application development you should consider using haskell-gi as it has much more complete bindings."
09:34:44 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Ping timeout: 256 seconds)
09:35:30 perdent joins (~blah@101.175.98.122)
09:36:38 <Franciman> merijn, yeah I meant between gi-gtk and gtk3
09:36:41 <Franciman> thanks maerwald
09:37:16 <merijn> Just throwing it out there because I know deech has put a ton of time into making it work/compile well on all platforms :)
09:39:38 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
09:39:48 GyroW_ joins (~GyroW@d54C03E98.access.telenet.be)
09:39:48 × GyroW_ quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
09:39:48 GyroW_ joins (~GyroW@unaffiliated/gyrow)
09:40:38 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
09:41:20 karanlikmadde joins (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
09:45:09 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
09:45:24 <Franciman> merijn, but is fltkhs as low level as fltk?
09:45:49 <Franciman> I wanted to make something similar to https://github.com/wavewave/hoodle
09:47:43 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
09:48:10 polyrain joins (~polyrain@130.102.13.188)
09:48:27 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
09:48:27 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
09:48:27 GyroW joins (~GyroW@unaffiliated/gyrow)
09:49:33 <merijn> Franciman: Well, the docs claims "comes with GUI builder support to alleviate the tedium of laying out widgets by hand."
09:52:11 <merijn> tbh, I've mostly given up on GUIs for a while because they tended to be rather painful to setup and the ease of building ftlkhs is what got my attention, but if it can't really do what you need, then yeah, that matters very little :)
09:52:26 <Guest6760> setted the buffering mode to line buffering but the issue remains, i never get past the 2nd hGetLine call
09:53:45 <merijn> What is the remote side sending you, though?
09:54:50 Kaeipi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
09:55:00 <Guest6760> opening a connection client side with the command : echo "hello" | nc 127.0.0.1 3000
09:55:16 <Guest6760> then typing text in the opened process
09:55:20 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
09:55:22 <merijn> eh
09:55:28 <merijn> That's not going to work
09:55:39 <merijn> stdin is going to point to echo, not to nc
09:55:48 <merijn> and echo won't read anything from stdin
09:56:00 <Guest6760> AH
09:56:16 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 256 seconds)
09:56:34 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
09:57:51 <Guest6760> AAAAAAAAAH, without echo it work perfectly
09:58:15 <Guest6760> i spent a whole day of this i feel ashamed.
09:58:20 <Guest6760> on
10:00:26 <Guest6760> thank u merijn, apologize since it was not haskell related at all
10:00:55 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
10:01:16 knupfer joins (~Thunderbi@200116b82cf69500a8fc9dfffe346029.dip.versatel-1u1.de)
10:01:17 × knupfer quits (~Thunderbi@200116b82cf69500a8fc9dfffe346029.dip.versatel-1u1.de) (Client Quit)
10:01:32 knupfer joins (~Thunderbi@i5E86B451.versanet.de)
10:06:00 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
10:07:07 snakemas1 joins (~snakemast@213.100.206.23)
10:11:25 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 240 seconds)
10:12:55 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 265 seconds)
10:13:52 Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas)
10:14:03 × bliminse quits (~bliminse@host217-42-95-37.range217-42.btcentralplus.com) (Ping timeout: 256 seconds)
10:14:53 bliminse joins (~bliminse@host217-42-95-37.range217-42.btcentralplus.com)
10:16:57 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
10:17:02 yeeeefe joins (~Username@95.7.254.155.in-addr.arpa)
10:17:19 × jedws quits (~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:17:39 × yeeeefe quits (~Username@95.7.254.155.in-addr.arpa) (Client Quit)
10:19:18 raehik joins (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net)
10:19:36 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 272 seconds)
10:19:36 × invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 272 seconds)
10:19:44 GyroW_ joins (~GyroW@d54C03E98.access.telenet.be)
10:19:44 × GyroW_ quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
10:19:44 GyroW_ joins (~GyroW@unaffiliated/gyrow)
10:20:01 × rprije quits (~rprije@203-219-208-42.static.tpgi.com.au) (Ping timeout: 264 seconds)
10:20:21 <tomsmeding> Guest6760: { echo "hello"; cat; } | nc 127.0.0.1 3000
10:20:45 <tomsmeding> assuming you're using bash or something similar
10:24:06 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:24:08 invaser joins (~Thunderbi@31.148.23.125)
10:24:26 cosimone joins (~cosimone@2001:b07:ae5:db26:9217:95c7:973d:d0ad)
10:27:29 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
10:27:58 vilpan joins (~0@mail.elitnet.lt)
10:28:09 <dminuoso> What's the right way to gracefully shut down a warp server running in some thread?
10:28:18 oisdk joins (~oisdk@2001:bb6:3329:d100:11d5:8dc1:169a:e187)
10:28:20 <dminuoso> Is there a particular async exception to throw?
10:29:42 × cosimone quits (~cosimone@2001:b07:ae5:db26:9217:95c7:973d:d0ad) (Ping timeout: 260 seconds)
10:30:39 <phadej> KillThread?
10:31:05 <phadej> or ratheer https://hackage.haskell.org/package/base-4.14.0.0/docs/Control-Concurrent.html#v:killThread
10:31:37 × avdb quits (~avdb@ip-83-134-109-138.dsl.scarlet.be) (Ping timeout: 246 seconds)
10:31:58 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
10:32:00 sQVe joins (~sQVe@unaffiliated/sqve)
10:32:02 × chaosmasttter quits (~chaosmast@p200300c4a710fa01b4d1efe2d5e04ce9.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
10:36:28 jonathanx joins (~jonathan@185.224.57.161)
10:40:04 × lukelau quits (~lukelau@2a03:b0c0:1:d0::1bc:b001) (Quit: Bye)
10:40:15 lukelau_ joins (~lukelau@46.101.13.214)
10:40:23 × alp quits (~alp@2a01:e0a:58b:4920:e911:6d8c:d3c2:ba84) (Ping timeout: 272 seconds)
10:42:09 × karanlikmadde quits (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
10:42:45 djellemah joins (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
10:43:29 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
10:44:10 alp joins (~alp@2a01:e0a:58b:4920:5d8e:fcca:f937:63bd)
10:44:46 kenran joins (~maier@b2b-37-24-119-190.unitymedia.biz)
10:45:36 xerox_ joins (~xerox@unaffiliated/xerox)
10:45:50 ensyde joins (~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7)
10:46:14 snakemas1 joins (~snakemast@213.100.206.23)
10:47:11 sleblanc joins (~sleblanc@unaffiliated/sebleblanc)
10:47:53 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
10:47:53 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
10:47:53 GyroW joins (~GyroW@unaffiliated/gyrow)
10:48:04 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 258 seconds)
10:48:23 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
10:48:45 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds)
10:49:57 × ensyde quits (~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7) (Ping timeout: 244 seconds)
10:49:59 × kenran quits (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 258 seconds)
10:50:58 hackage radius 0.7.1.0 - Remote Authentication Dial In User Service (RADIUS) https://hackage.haskell.org/package/radius-0.7.1.0 (erick)
10:51:48 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 256 seconds)
10:51:56 dddddd joins (~dddddd@unaffiliated/dddddd)
10:56:33 × raichoo quits (~raichoo@213.240.178.58) (Quit: Lost terminal)
10:57:19 karanlikmadde joins (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
10:59:06 × sQVe quits (~sQVe@unaffiliated/sqve) (Quit: Bye!)
10:59:17 dhil joins (~dhil@195.213.192.122)
10:59:39 Lycurgus joins (~niemand@98.4.96.235)
11:03:47 outerpassage joins (~outerpass@li1196-30.members.linode.com)
11:04:05 sleblanc parts (~sleblanc@unaffiliated/sebleblanc) ("Leaving")
11:05:28 hackage aeson-commit 1.2 - Parse Aeson data with commitment https://hackage.haskell.org/package/aeson-commit-1.2 (jonascarpay)
11:05:57 cosimone joins (~cosimone@2001:b07:ae5:db26:9217:95c7:973d:d0ad)
11:07:21 × plutoniix quits (~q@175.176.222.7) (Quit: Leaving)
11:11:14 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
11:14:39 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
11:19:34 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
11:20:20 son0p joins (~son0p@181.58.39.86)
11:20:25 snakemas1 joins (~snakemast@213.100.206.23)
11:21:35 thir joins (~thir@p200300f27f02580078db57e7930eddd6.dip0.t-ipconnect.de)
11:25:09 machined1od joins (~machinedg@24.105.81.50)
11:25:28 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 272 seconds)
11:25:58 m0rphism joins (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de)
11:26:27 × thir quits (~thir@p200300f27f02580078db57e7930eddd6.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
11:32:16 × polyrain quits (~polyrain@130.102.13.188) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:34:44 <dminuoso> phadej: Mmm, is that the most graceful thing to do?
11:34:55 <dminuoso> That might kill handlers right in the middle of it, wouldn't it?
11:34:55 <phadej> dminuoso: yes
11:35:03 <phadej> to graceful
11:35:23 <phadej> to handlers, I think they will run to completion, as they are in separate threads
11:35:31 <phadej> I don't think warp links them
11:36:07 × alp quits (~alp@2a01:e0a:58b:4920:5d8e:fcca:f937:63bd) (Ping timeout: 272 seconds)
11:37:49 alp joins (~alp@2a01:e0a:58b:4920:117b:f16b:d9b4:551d)
11:41:02 <phadej> the docs imply that with runSettingsSocket you can control graceful shutdown of live (keep-alive)connections. You should read the code on what happens if exception is thrown to the warp's main thread
11:43:14 raichoo joins (~raichoo@213.240.178.58)
11:43:26 zerstroyer[m] joins (zerstroyer@gateway/shell/matrix.org/x-odscjndwbucnjdke)
11:43:59 × cosimone quits (~cosimone@2001:b07:ae5:db26:9217:95c7:973d:d0ad) (Quit: cosimone)
11:44:12 <Franciman> I see merijn thanks
11:44:32 cosimone joins (~cosimone@93-47-228-249.ip115.fastwebnet.it)
11:46:39 GyroW_ joins (~GyroW@d54C03E98.access.telenet.be)
11:46:39 × GyroW_ quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
11:46:39 GyroW_ joins (~GyroW@unaffiliated/gyrow)
11:47:01 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
11:47:15 × raehik quits (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Quit: WeeChat 2.8)
11:52:49 × alx741 quits (~alx741@181.196.68.181) (Ping timeout: 246 seconds)
11:53:27 hackage pandoc-crossref 0.3.8.3 - Pandoc filter for cross-references https://hackage.haskell.org/package/pandoc-crossref-0.3.8.3 (lierdakil)
11:56:23 fendor joins (~fendor@046124068105.public.t-mobile.at)
11:56:25 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
11:56:39 shatriff joins (~vitaliish@176.52.219.10)
12:00:02 × SysRun quits (~SysRun@s91904426.blix.com) ()
12:01:32 snakemas1 joins (~snakemast@213.100.206.23)
12:01:49 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
12:05:38 alx741 joins (~alx741@181.196.68.136)
12:06:59 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
12:09:52 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:10:12 × cgfbee quits (~bot@oc1.itim-cj.ro) (Remote host closed the connection)
12:11:08 chaosmasttter joins (~chaosmast@p200300c4a710fa01b4d1efe2d5e04ce9.dip0.t-ipconnect.de)
12:11:44 × funkatronixxx quits (~funkatron@a83-161-198-206.adsl.xs4all.nl) (Quit: Textual IRC Client: www.textualapp.com)
12:14:09 × karanlikmadde quits (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
12:15:51 bahamas joins (~lucian@unaffiliated/bahamas)
12:15:53 × gienah quits (~mwright@gentoo/developer/gienah) (Ping timeout: 260 seconds)
12:16:13 gienah joins (~mwright@gentoo/developer/gienah)
12:16:28 × hongminhee quits (~dahlia@207.148.91.209) (Ping timeout: 260 seconds)
12:16:28 × kini quits (~kini@unaffiliated/kini) (Ping timeout: 260 seconds)
12:16:35 <gentauro> is there anybody that would like to talk about some work/hobby project in about two weeks for MF#K? https://www.meetup.com/MoedegruppeFunktionelleKoebenhavnere/events/rqbcdlybcnbkc/
12:16:37 hongminhee joins (~dahlia@207.148.91.209)
12:16:48 <gentauro> it would be an online event ofc
12:16:56 karanlikmadde joins (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
12:17:15 <gentauro> here are some slides about MF#K :) http://blog.stermon.com/assets/talks/2019-12-13_Siteimprove-Community-Day.pdf
12:20:11 <dminuoso> phadej: Mmm, indeed. that seems to be it. Im mapping out the source code at the moment, but it seems as if settingsInstallShutdownHandler does the trick.
12:20:36 × Stanley00 quits (~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
12:20:58 <dminuoso> At any rate, warp sets FileCloseOnExec - presumably throwing an async exception should be fine. Ill dig further whether warp links threads or not
12:21:15 <[exa]> gentauro: probably depends on how advanced stuff you'd want there
12:21:46 shortdudey1231 joins (~shortdude@185.204.1.185)
12:22:43 × revprez_anzio quits (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Quit: Lost terminal)
12:22:52 <gentauro> [exa]: depending on the topic, the crowd will match ;) I think Oskar Wickström had a 2-3 hour Q&A :)
12:23:01 <gentauro> and Marlow had 1 hour ;)
12:23:24 <gentauro> Marlow said "please stawp" xD
12:24:05 <[exa]> ok I guess I'm not that advanced in FP :]
12:24:34 geekosaur joins (82659a0e@host154-014.vpn.uakron.edu)
12:24:42 cgfbee joins (~bot@oc1.itim-cj.ro)
12:24:43 <gentauro> [exa]: that said, we also had less advanced talks ;)
12:24:58 kini joins (~kini@unaffiliated/kini)
12:25:43 <gentauro> for the Agda talks, we have very few participants, for the more "normal" ones, the amount in participants increase
12:26:06 <gentauro> and if you can relate the FP topic with daily work, you will get a full house ;)
12:26:28 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
12:26:33 × Guest6760 quits (a4b11321@static-csq-cds-019033.business.bouyguestelecom.com) (Remote host closed the connection)
12:28:05 × invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 260 seconds)
12:29:01 carlomagno1 joins (~cararell@inet-hqmc02-o.oracle.com)
12:29:41 × karanlikmadde quits (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
12:30:26 × son0p quits (~son0p@181.58.39.86) (Quit: leaving)
12:32:00 × oisdk quits (~oisdk@2001:bb6:3329:d100:11d5:8dc1:169a:e187) (Quit: oisdk)
12:32:01 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Ping timeout: 246 seconds)
12:33:10 acidjnk_new2 joins (~acidjnk@p200300d0c723787058597087ca157dd5.dip0.t-ipconnect.de)
12:33:15 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
12:37:37 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
12:38:52 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
12:38:52 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
12:38:52 GyroW joins (~GyroW@unaffiliated/gyrow)
12:40:02 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 256 seconds)
12:45:38 kenran joins (~maier@b2b-37-24-119-190.unitymedia.biz)
12:46:39 × Sanchayan quits (~Sanchayan@171.61.90.104) (Quit: leaving)
12:49:18 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
12:50:25 × kenran quits (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 240 seconds)
12:50:37 <[exa]> gentauro: well right, not very sure about that :D I'll think that through
12:50:40 whatisRT joins (~whatisRT@2002:5b41:6a33:0:e9bc:8751:d550:a446)
12:50:58 hackage elynx-markov 0.4.1 - Simulate molecular sequences along trees https://hackage.haskell.org/package/elynx-markov-0.4.1 (dschrempf)
12:51:57 hackage elynx 0.4.1, tlynx 0.4.1, slynx 0.4.1, elynx-tree 0.4.1, elynx-tools 0.4.1, elynx-seq 0.4.1, elynx-nexus 0.4.1 (dschrempf)
12:53:51 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
12:56:12 <gentauro> [exa]: please do and we will be happy to host your talk :)
12:57:03 p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
13:00:14 drbean joins (~drbean@TC210-63-209-44.static.apol.com.tw)
13:02:22 jedws joins (~jedws@121.209.161.98)
13:02:27 stefan-__ joins (~cri@42dots.de)
13:03:25 × ubert quits (~Thunderbi@p200300ecdf10db93e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
13:04:10 urodna joins (~urodna@unaffiliated/urodna)
13:05:04 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
13:06:54 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Quit: WeeChat 2.7.1)
13:09:33 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
13:09:49 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
13:12:18 stefan-__ is now known as stefan-_
13:12:51 hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net)
13:14:15 × vilpan quits (~0@mail.elitnet.lt) (Ping timeout: 256 seconds)
13:14:17 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:21a4:edc3:68a:18f4)
13:15:29 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
13:15:35 ubert joins (~Thunderbi@p200300ecdf10db93e6b318fffe838f33.dip0.t-ipconnect.de)
13:16:02 × dhil quits (~dhil@195.213.192.122) (Ping timeout: 258 seconds)
13:16:45 × jonathanx quits (~jonathan@185.224.57.161) (Ping timeout: 240 seconds)
13:16:54 GyroW_ joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
13:16:54 × GyroW_ quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
13:16:54 GyroW_ joins (~GyroW@unaffiliated/gyrow)
13:17:04 polyrain joins (~polyrain@2001:8003:e501:6901:38e4:6ee5:bca4:d4a)
13:17:08 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
13:17:24 × nek0 quits (~nek0@mail.nek0.eu) (Remote host closed the connection)
13:17:27 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
13:18:00 nek0 joins (~nek0@mail.nek0.eu)
13:20:49 invaser joins (~Thunderbi@31.148.23.125)
13:21:31 chris joins (~chris@81.96.113.213)
13:21:54 chris is now known as Guest55918
13:22:00 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:21a4:edc3:68a:18f4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:22:32 thir joins (~thir@p200300f27f025800a12cbcb87939dcdb.dip0.t-ipconnect.de)
13:24:31 Saukk joins (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
13:24:34 × nek0 quits (~nek0@mail.nek0.eu) (Remote host closed the connection)
13:24:40 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
13:26:49 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:1998:2d6c:5e41:4ff5)
13:26:52 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
13:27:01 × thir quits (~thir@p200300f27f025800a12cbcb87939dcdb.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
13:27:09 × geekosaur quits (82659a0e@host154-014.vpn.uakron.edu) (Ping timeout: 245 seconds)
13:27:10 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
13:27:10 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
13:27:10 GyroW joins (~GyroW@unaffiliated/gyrow)
13:27:30 ystael joins (~ystael@209.6.50.55)
13:28:59 dhil joins (~dhil@78.156.97.38)
13:29:57 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
13:30:09 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds)
13:31:30 × Saukk quits (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
13:31:58 hackage mcmc 0.2.4 - Sample from a posterior using Markov chain Monte Carlo https://hackage.haskell.org/package/mcmc-0.2.4 (dschrempf)
13:31:59 nyd joins (~lpy@unaffiliated/elysian)
13:32:50 polyrain_ joins (~polyrain@58.161.83.164)
13:33:08 × jedws quits (~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:34:03 × Benzi-Junior quits (~BenziJuni@88-149-67-198.du.xdsl.is) (Ping timeout: 258 seconds)
13:34:06 kindaro joins (1f08d425@h31-8-212-37.dyn.bashtel.ru)
13:34:20 <kindaro> How can I encode my type to a `ByteString` with custom Aeson options?
13:34:23 mirrorbird joins (~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1)
13:34:41 <kindaro> The default `encode` does not accept options.
13:35:33 <kindaro> My type is Generic, so I can use `genericToJSON` to obtain `Value`, however I cannot find a way to convert `Value` to the serial representation.
13:35:45 × DavidEichmann quits (~david@43.240.198.146.dyn.plus.net) (Remote host closed the connection)
13:35:55 × polyrain quits (~polyrain@2001:8003:e501:6901:38e4:6ee5:bca4:d4a) (Ping timeout: 240 seconds)
13:36:09 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
13:36:28 <kindaro> I read the docs with all eyes I have but I could not find an appropriate function.
13:37:09 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
13:37:18 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
13:37:29 × invaser quits (~Thunderbi@31.148.23.125) (Quit: invaser)
13:40:57 <lortabac> kindaro: one way to do it is to define a ToJSON instance: toJSON = genericToJSON options
13:40:59 Benzi-Junior joins (~BenziJuni@88-149-67-198.du.xdsl.is)
13:41:03 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
13:41:41 <kindaro> So then a type can only be encoded one way, I see.
13:43:42 <lortabac> if you don't want to rely on the type classes, you can find a way to produce a Value and then just 'encode' the Value
13:44:01 <lortabac> Value has a ToJSON instance
13:45:28 hackage pusher-http-haskell 2.0.0.2 - Haskell client library for the Pusher Channels HTTP API https://hackage.haskell.org/package/pusher-http-haskell-2.0.0.2 (willsewell)
13:46:27 <kindaro> Oh, I did not realize this. Thanks.
13:46:44 <lortabac> unless you need to customize the Value -> ByteString part
13:47:20 × drbean quits (~drbean@TC210-63-209-44.static.apol.com.tw) (Ping timeout: 272 seconds)
13:47:21 <merijn> At that point you need to question your life choices, tbh
13:47:31 <kindaro> `encode ∘ genericToJSON options` is what I need.
13:47:38 × Guest55918 quits (~chris@81.96.113.213) (Remote host closed the connection)
13:47:45 <kindaro> Life choices?
13:48:08 <merijn> If you need to customize the "Value -> ByteString" part as lortabac commented
13:48:38 <kindaro> Ah. Well, in my case I do not.
13:48:38 × jespada quits (~jespada@90.254.245.15) (Ping timeout: 260 seconds)
13:49:00 × kindaro quits (1f08d425@h31-8-212-37.dyn.bashtel.ru) (Remote host closed the connection)
13:49:04 <lortabac> I said that because I was not sure I understood your question correctly
13:49:20 <lortabac> I was not encouraging to do that :)
13:49:56 jespada joins (~jespada@90.254.245.15)
13:51:31 <phadej> genericToEncoding might be more direct way
13:51:43 <phadej> refer to the documentation how to convert Encoding to (lazy) ByteString
13:52:14 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
13:52:16 irc_user joins (uid423822@gateway/web/irccloud.com/x-juqawwjwttxnnpia)
13:52:18 × Kaivo quits (~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com) (Quit: WeeChat 2.9)
13:54:31 × whatisRT quits (~whatisRT@2002:5b41:6a33:0:e9bc:8751:d550:a446) (Read error: Connection reset by peer)
13:54:36 Kaivo joins (~Kaivo@104-200-86-99.mc.derytele.com)
13:56:36 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
13:57:21 × alp quits (~alp@2a01:e0a:58b:4920:117b:f16b:d9b4:551d) (Ping timeout: 272 seconds)
13:58:15 × Lycurgus quits (~niemand@98.4.96.235) (Quit: Exeunt)
13:58:45 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
14:00:16 × ubert quits (~Thunderbi@p200300ecdf10db93e6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection)
14:01:46 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
14:02:04 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
14:02:05 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
14:02:05 GyroW joins (~GyroW@unaffiliated/gyrow)
14:02:14 karanlikmadde joins (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
14:02:16 × dcoutts_ quits (~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 256 seconds)
14:03:09 chris joins (~chris@81.96.113.213)
14:03:20 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 256 seconds)
14:03:34 chris is now known as Guest17130
14:06:17 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
14:07:05 polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
14:07:34 × Guest17130 quits (~chris@81.96.113.213) (Ping timeout: 260 seconds)
14:09:09 × fendor quits (~fendor@046124068105.public.t-mobile.at) (Remote host closed the connection)
14:09:37 <hyperisco> > (\if then 1 else 0) True
14:09:37 fendor joins (~fendor@046124068105.public.t-mobile.at)
14:09:39 <lambdabot> <hint>:1:6: error: <hint>:1:6: error: parse error on input ‘then’
14:10:08 <phadej> :t bool 0 1
14:10:10 <lambdabot> Num a => Bool -> a
14:10:20 <phadej> bool 0 1 False
14:10:26 <phadej> > bool 0 1 False
14:10:29 <lambdabot> 0
14:10:40 <Uniaika> phadej: I feel you
14:11:12 Tario joins (~Tario@201.192.165.173)
14:11:47 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
14:11:57 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
14:11:57 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
14:11:57 GyroW joins (~GyroW@unaffiliated/gyrow)
14:12:19 conal joins (~conal@64.71.133.70)
14:12:49 × karanlikmadde quits (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
14:14:33 <hyperisco> > flip map [1,2,3] \x -> x + 1
14:14:35 <lambdabot> error:
14:14:35 <lambdabot> Unexpected lambda expression in function application:
14:14:35 <lambdabot> \ x -> x + 1
14:14:44 <hyperisco> is that extension in GHC yet and what is it called?
14:16:10 × bitmapper quits (uid464869@gateway/web/irccloud.com/x-dkvrjjnwvljgfxqg) (Quit: Connection closed for inactivity)
14:16:26 kuribas joins (~user@ptr-25vy0i94ezsnlaecbal.18120a2.ip6.access.telenet.be)
14:16:57 <ski> % (`map` [1,2,3]) \x -> x + 1
14:16:58 <yahb> ski: ; <interactive>:58:17: error:; Unexpected lambda expression in function application:; \ x -> x + 1; You could write it with parentheses; Or perhaps you meant to enable BlockArguments?
14:17:09 <kuribas> I wonder what the added value of recursion schemes is. They are fun to learn, but I feel they ultimately don't solve a real problem.
14:17:15 <ski> % :set -XBlockArguments
14:17:15 <yahb> ski:
14:17:17 <ski> % (`map` [1,2,3]) \x -> x + 1
14:17:18 <yahb> ski: [2,3,4]
14:17:26 <dolio> kuribas: Yep.
14:17:27 <kuribas> you get slightly less verbose code...
14:18:01 <hyperisco> am I looking in the wrong place? not documented https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html
14:18:01 <dolio> The value is that endless papers can be written about them.
14:18:28 <ski> <https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#extension-BlockArguments> ?
14:18:33 plast1k_ joins (~plast1k_@196.207.181.246)
14:18:55 <kuribas> dolio: indeed
14:18:57 <hyperisco> apparently I kept typing "black" instead of "block"
14:20:19 <kuribas> maybe they could better prove termination in a total language?
14:20:38 <dolio> I've never seen anyone use them in a total language.
14:20:58 <dolio> Also, some of them are not total.
14:21:33 <kuribas> anamorphism...
14:21:52 <merijn> I tried learning recursion schemes once
14:21:52 × unlink2 quits (~unlink2@p200300ebcf17c500f1cd4c5efbdddd1e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
14:21:53 <phadej> anamorphims is corecursion, not recursion
14:21:57 <merijn> Decided it wasn't worth it
14:22:06 <hyperisco> we've all used foldr … the problem is that we have not learned enough as a community
14:22:07 <merijn> So hard to see what's going
14:22:14 <dolio> hylo is non-total.
14:22:30 <merijn> "oh, but by not reimplementing the recursion each time you avoid screwing it up"
14:22:42 <merijn> Which, in the grand scheme of things seems like a non-issue
14:22:58 <hyperisco> I'd say it is the wrong perspective
14:23:00 <merijn> I can't recall the last time I messed up implementing some recursive function
14:23:11 <kuribas> merijn: I find I can still screw up with cata :)
14:23:19 <hyperisco> the point should be removing the need to think about recursion, that is what it removes
14:23:23 <merijn> I spend more time trying to figure out recursion schemes then I ever spend debugging recursion
14:23:42 <merijn> hyperisco: But thinking about recursion is an order of magnitude easier than thinking about recursion schemes
14:23:51 GyroW_ joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
14:23:51 × GyroW_ quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
14:23:51 GyroW_ joins (~GyroW@unaffiliated/gyrow)
14:23:56 <hyperisco> maybe, or maybe it is just an education problem
14:24:12 ephemera_ joins (~E@122.34.1.187)
14:24:25 <hyperisco> and probably, before that, a lack of many people having experience
14:24:32 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 256 seconds)
14:24:37 <phadej> merijn: learning a bit about recursion schemes might make you think about ordinary recursive functions in more principled way
14:24:43 <merijn> Seems like a big coincidence that the 10+ blogposts by different authors, 3 papers and the docs of recursion schemes are all inscrutable, even for the ones I know
14:24:53 <phadej> merijn: not much different than learning a bit of Haskell might make you better Python programmer
14:24:56 <merijn> phadej: Sure, but so far the ROI seems slim to non-existent
14:25:09 <phadej> merijn: maybe
14:25:48 <hyperisco> several arguments can be brought out that are hard to distinguish from, say, an OO programmer bemoaning the needless obscurity of FP
14:26:35 <typetetris> Someone here using ghc8102 for his production software already?
14:26:40 <merijn> I'll reconsider/reevaluate my opinion if/when someone shows me a tangible example that's improve
14:26:47 <merijn> typetetris: Define production
14:26:58 <hyperisco> I'd say all the same things about lens :P
14:27:04 <merijn> hyperisco: I don't use lens either
14:27:08 <typetetris> merijn: run software compiled with ghc8.10.2 to earn money.
14:27:26 <dolio> Lens is way more useful than fancy recursion schemes.
14:27:39 <merijn> dolio: Oh, I'm sold on the usefulness of lens
14:27:48 <merijn> dolio: I just haven't done anything where it was worth bothering
14:28:21 <merijn> I'm all about Luddite haskell :p
14:28:33 <merijn> (he says, after enabling TypeFamilies and GADTs everywhere...)
14:28:50 <kuribas> lens is great, but most stuff in lens is unnecessary IMHO
14:29:02 DavidEichmann joins (~david@43.240.198.146.dyn.plus.net)
14:29:14 <phadej> merijn: UTerm in unification-fd is a very neat example of using recursion schemes ideas
14:29:18 <hyperisco> I am finding that some things just serve an implementation, and that isn't really where the challenge is
14:29:27 hackage lucid-cdn 0.2.2.0 - Curated list of CDN imports for lucid. https://hackage.haskell.org/package/lucid-cdn-0.2.2.0 (locallycompact)
14:29:37 <hyperisco> I feel like lens is that sort of thing… but I am pretty stupid about lens.
14:29:37 <phadej> UTerm though being the same as Free
14:29:56 <merijn> I'm still undecided about free too :p
14:30:12 <phadej> it's used very differently though
14:30:15 <phadej> UTerm is very data-like
14:30:17 <merijn> I was trying to do a fancy AST with Free, ended with tons of boilerplate
14:30:22 <phadej> Free is hardly ever presented as it
14:30:46 <merijn> Talked to Ed about it and he told me he was just using a regular AST type instead of free for that reason
14:30:48 <phadej> boilerplate is worth if you can have something "for free" (like unification)
14:30:55 × djellemah quits (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 240 seconds)
14:31:02 <phadej> for abitrary `f`
14:31:19 <phadej> but if you don't need (or cannot have) that kind of separation
14:31:23 <merijn> phadej: Sure, but I feel some of these solutions get over-hyped and then drag beginners into abstraction tarpits :)
14:31:45 <phadej> merijn: yes. I do think that all extensible-effects things are overhyped
14:31:59 <hyperisco> I think incorporating a generalisation and only using it in special cases is often increasing burden without benefit
14:32:01 <phadej> most people don't have the problems they solve
14:32:23 × oxide quits (~lambda@unaffiliated/mclaren) (Ping timeout: 260 seconds)
14:33:07 <lortabac> what problems do they solve?
14:33:12 × ph88 quits (~ph88@2a02:8109:9e40:2704:21a2:9414:d2e6:266d) (Quit: Leaving)
14:33:27 <merijn> lortabac: Staying employed as PL researcher ;)
14:33:30 merijn ducks
14:33:31 <phadej> "separation of concerns"
14:33:41 <hyperisco> getting Monad machinery from just a Functor is helpful when your total effort needs not be much more than obtaining Monad machinery
14:34:17 <phadej> which in that case is decoupling syntax from semantics
14:34:19 <hyperisco> if you then have to go on defining several more things, the benefit of Free becomes comparatively small and the burden multiplies over your remaining effort
14:34:39 <phadej> (specifically having different semantics for the same syntax)
14:34:49 <phadej> if these words don't mean anything to you, you don't have that problem ;)
14:35:04 <lortabac> I think I don't have that problem :)
14:35:06 <hyperisco> in other words, Free life seems to start with your Functor, then you start adding on more definitions, then you realise what Free is giving you isn't worth it
14:35:29 <phadej> (here syntax is "program text", and semantics "what this text actually does, if executed")
14:35:31 <dolio> It might just mean you don't recognize that you have the problem.
14:36:14 <lortabac> dolio: possible
14:36:28 bitmapper joins (uid464869@gateway/web/irccloud.com/x-vecxpakzwaisvdlf)
14:37:13 <hyperisco> the truly free Free would be an automatic derivation, something that adapts to your data definition rather than you having to adapt to Free
14:37:17 <merijn> Meanwhile I just want checked exceptions in Haskell :(
14:37:28 <merijn> Also, proper first class concurrency/threading
14:37:40 <merijn> With resource domains
14:37:44 <hyperisco> merijn, have you used checked exceptions in any other language?
14:37:59 <merijn> hyperisco: Yes, but those are shit, because they're not inferred
14:38:18 nek0 joins (~nek0@mail.nek0.eu)
14:38:30 <hyperisco> personally I failed to find a compelling use
14:38:41 <merijn> hyperisco: I want to be able to know "what *exact* set of exceptions can this throw?" and "this can never throw an exception"
14:38:52 chris joins (~chris@81.96.113.213)
14:39:04 <merijn> None of this Haskell shit of "look at the docs and pray someone documented all exceptions (spoiler: they never do)"
14:39:11 <dolio> So, an extensible effects system.
14:39:14 × amosbird quits (~amosbird@23.98.37.89) (Quit: ZNC 1.7.5 - https://znc.in)
14:39:15 chris is now known as Guest82554
14:39:16 <hyperisco> I found some utility with file system operations, because you learn things about files through exceptions
14:39:16 <merijn> dolio: No
14:39:28 <merijn> dolio: I want it pure, because I think I've worked it out
14:39:37 <merijn> dolio: Specifically I *don't* want it in the types
14:39:40 <merijn> or rather
14:39:44 <merijn> not in the types we have now
14:39:51 <merijn> I want orthogonal types for exceptions
14:40:26 <merijn> "(/) :: Int -> Int -> Maybe Int" (or whatever checked variant) is unacceptable
14:40:35 <kuribas> hyperisco: I have in java, and it's still better than nothing.
14:40:45 <xsperry> having used checked exceptions in java, I don't miss them
14:40:47 <dolio> Maybe isn't an extensible effects system.
14:40:55 × aqd quits (~aqd@ip-87-108-38-187.customer.academica.fi) (Quit: Textual IRC Client: www.textualapp.com)
14:41:05 <merijn> I wanna determine that "(/) :: Int -> Int -> Int" can throw "division by zero" *without* any change to that type signature
14:41:25 <xsperry> determine how? by getting a compile error if you don't catch that exception, every single tim eyou use /?
14:41:27 evanjs- joins (~evanjs@075-129-188-019.res.spectrum.com)
14:41:31 <merijn> And I'm 95% certain it can be done
14:41:37 <hyperisco> merijn, I would be more inclined to that idea
14:41:57 <hyperisco> my issue is that different types of exceptions have scant uses, at least in my experience
14:42:00 <merijn> xsperry: In java you need to annotate them in all intermediate functions, ain't nobody got time for that
14:42:08 ddellacosta joins (~dd@86.106.121.168)
14:42:14 <hyperisco> in other words, having one type for all exceptions seems to cover almost every use
14:42:14 <kuribas> merijn: I'd prefer a theorem prover, than proves the denominator is never 0 :)
14:42:26 × evanjs quits (~evanjs@075-129-188-019.res.spectrum.com) (Ping timeout: 256 seconds)
14:42:28 <merijn> kuribas: That's nice, but not always possible
14:43:11 <lortabac> merijn: do you have some draft/prototype of your idea?
14:43:11 <merijn> Maybe once my thesis is finally done I'll get around to revisiting my idea and make a prototype
14:43:30 <merijn> lortabac: I started working on one, but it's on indefinite hold
14:43:41 <hyperisco> merijn, even annotating just top level definitions I found was a chore
14:43:54 <davean> kuribas: and we already have that :)
14:44:00 <kuribas> merijn: then you can always do: if denom == 0 then exceptionCase else compute...
14:44:04 <hyperisco> if you try and be fine-grained and have different exceptions for different sorts of problems, there is a systemic problem with it
14:44:06 <kuribas> davean: liquid haskell?
14:44:14 <merijn> kuribas: No, because that only works there
14:44:19 <merijn> kuribas: It doesn't propagate
14:44:25 × cosimone quits (~cosimone@93-47-228-249.ip115.fastwebnet.it) (Ping timeout: 240 seconds)
14:44:38 xerox_ joins (~xerox@unaffiliated/xerox)
14:44:40 <merijn> kuribas: If I map a throwing exception over a list, I wanna track that without handling it right away
14:44:54 <merijn> kuribas: Your solution is "just handle the case so you don't have an exception"
14:44:58 hackage secp256k1-haskell 0.5.0 - Bindings for secp256k1 https://hackage.haskell.org/package/secp256k1-haskell-0.5.0 (jprupp)
14:45:24 <hyperisco> I think the focus is maybe too much on "how" and not enough on the "what" and "why"
14:45:37 <merijn> I want to have it transparently and be able to assert "this doesn't throw" (either due to not throwing or an underlying catch dealing with it)
14:46:23 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 260 seconds)
14:46:23 <davean> kuribas: thats one of them
14:46:30 kenran joins (~maier@b2b-37-24-119-190.unitymedia.biz)
14:47:01 × evanjs- quits (~evanjs@075-129-188-019.res.spectrum.com) (Quit: ZNC 1.8.1 - https://znc.in)
14:47:03 ephemera_ joins (~E@122.34.1.187)
14:47:59 <hyperisco> what is the actual problem? if the problem is merely knowing if something throws or not, that doesn't require anything too fancy
14:48:09 <hyperisco> it is just one bit of information
14:48:22 Sheilong joins (uid293653@gateway/web/irccloud.com/x-ukzmbdoxywbjiwys)
14:48:48 <merijn> hyperisco: 1) that's harder than you think and 2) handling multiple possible errors isn't much harder
14:49:28 <davean> hyperisco: Its somewhat uninteresting as every unmasked thing throws
14:49:38 <hyperisco> 1) I didn't say how difficult it was 2) but what is the point
14:49:41 <merijn> davean: Well, see my 2nd point
14:49:45 <phadej> pure exceptions are hard in lazy language
14:49:53 <merijn> davean: I want proper first class concurrency and resource domains too
14:49:59 <phadej> you cannot have pure `try`
14:49:59 <davean> yes, sure
14:49:59 <merijn> phadej: I'm not convinced
14:50:06 × Guest82554 quits (~chris@81.96.113.213) (Remote host closed the connection)
14:50:18 evanjs joins (~evanjs@075-129-188-019.res.spectrum.com)
14:50:25 <hyperisco> I am saying I've been around this block twice in two different ways over the past 3 years and both times it proved fruitless
14:50:27 <merijn> phadej: I think you can! Now I just need to free up half a year to prove it :p
14:50:32 <davean> phadej: there is an entire deterministic class of exceptions.
14:50:34 <xsperry> merijn, how can you ensure that "this does not throw out of memory exception"?
14:50:43 <davean> phadej: really we already *have* pure try
14:50:46 <merijn> xsperry: Ok, that one is tricky
14:51:01 <merijn> xsperry: Or really, not really interesting, since everything can throw that
14:51:05 <xsperry> disk failure. or even not enoug hspace on disk
14:51:15 <phadej> disk failure is not pure exception
14:51:17 <phadej> it's IOError
14:51:23 <davean> xsperry: those are the unmasked exception case
14:51:28 <kuribas> merijn: something like "(/) :: Int -> Int -> Int throwing DivideByZeroException"?
14:51:29 × kenran quits (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 258 seconds)
14:51:51 <merijn> kuribas: I like types, so I think we need more of them!
14:52:00 <merijn> kuribas: You need finer grained in a lazy setting, tbh
14:52:17 <kuribas> merijn: then what is the type of? map (/) numbers
14:52:18 × bahamas quits (~lucian@unaffiliated/bahamas) (Quit: leaving)
14:52:21 <phadej> davean: which is? do you mean deepseq, I don't think it's "pure try"
14:52:22 <xsperry> phadej, what's a pure exception? you can't throw exceptions in non-IO code in haskell
14:52:29 <phadej> xsperry: sure you can
14:52:32 <phadej> :t throw
14:52:32 <merijn> I want a type signature for exceptions (inferred) and resource domains, but without the usual nonsense of stuffing everything into the "functional" type
14:52:34 <lambdabot> Exception e => e -> a
14:52:44 <phadej> you shouldn't, but you can
14:52:45 <phadej> and / throws
14:52:49 <phadej> > 1 / 0 :: Int
14:52:51 <lambdabot> error:
14:52:51 <lambdabot> • No instance for (Fractional Int) arising from a use of ‘/’
14:52:51 <lambdabot> • In the expression: 1 / 0 :: Int
14:52:53 Tops2 joins (~Tobias@dyndsl-091-249-082-055.ewe-ip-backbone.de)
14:52:55 <phadej> > 1 `div` 0 :: Int
14:52:57 <lambdabot> *Exception: divide by zero
14:53:01 <davean> phadej: no, All the exception monads that aren't transforms of IO/ST
14:53:20 <merijn> davean: I don't consider those exceptions, tbh
14:53:25 <merijn> (stuff like ExceptT)
14:53:26 <dolio> You can throw IOErrors in pure code if you want in GHC.
14:53:56 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
14:54:02 <davean> dolio: I don't want, can I still do it?
14:54:14 <dolio> You can.
14:54:24 <davean> Damn
14:54:24 <dolio> But if you don't want, you probably won't.
14:54:39 <phadej> davean: these have overheads, mostyl acceptable, sometimes not
14:54:43 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
14:54:46 <phadej> and that sometimes is nasty :(
14:55:06 <davean> phadej: They have overhead, sure, but they do catch pure exceptions effectively.
14:55:15 ephemera_ joins (~E@122.34.1.187)
14:55:34 <davean> Theres no reason we couldn't build a better version of them
14:55:36 <phadej> davean: but they aren't vocabulary. If you want to catch division by zero, you need to rewrite about everything
14:55:48 <davean> phadej: thats just a failing of Haskell currently.
14:55:59 <davean> Because our sollutions are bad doesn't mean we can't have less shitty ones
14:56:13 <davean> It is clearly a solvable problem
14:56:16 <merijn> Like I said, I think it can be done
14:56:26 <davean> We absolutely *know* it can be done
14:56:30 <phadej> I don't think people would agree on Either someting a to be the result type of division
14:56:32 <merijn> Probably not in a backwards compatible way with Haskell, which is a shame :\
14:56:38 <merijn> phadej: Without that
14:56:41 <phadej> it have to be convinienet enough to be used
14:56:45 <phadej> (or first accepted)
14:57:31 <hyperisco> mm how about use constraints
14:57:33 <merijn> Actually, maybe it could be backward compatible enough...
14:57:47 <davean> The question isn't if it can be done, its how much we like the best version we know how to make
14:57:50 <hyperisco> (/) :: Exceptional => Int -> Int -> Int
14:57:51 <merijn> You know what I also want that ties into this
14:57:59 <hyperisco> or Partial
14:58:08 <merijn> strictness polymorphic code
14:58:25 karanlikmadde joins (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
14:58:27 <davean> merijn: Thats sorta levity polymorphism ...
14:58:33 <davean> (Which Haskell sucks at)
14:58:36 <phadej> merijn: that sounds that you don't want Haskell anymore, but something else ;)
14:58:37 djellemah joins (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
14:58:42 <merijn> phadej: I do
14:58:48 <hyperisco> catch :: (Partial => x) -> (Exception -> x) -> x
14:58:49 <merijn> (want something else)
14:58:57 <phadej> that's fair
14:59:09 <merijn> But implementing a sufficiently well-performing alternative to Haskell is more than a 1 person job :p
14:59:22 <merijn> phadej: I want something that is a lot *like* Haskell, but not Haskell
14:59:32 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 272 seconds)
14:59:41 <phadej> merijn: having a prototype toy language is something 1 person can still make
14:59:44 <merijn> Maybe csaba's whole program compilation stuff will help me get started
15:00:01 <hyperisco> I bet that is doable with backwards compatibility
15:00:01 × shortdudey1231 quits (~shortdude@185.204.1.185) ()
15:00:03 <phadej> then bigger community can think whether it can be bolted back to GHC Haskell, if its found valuable
15:00:22 lnlsn joins (~lnlsn@189.100.212.150)
15:00:33 × machined1od quits (~machinedg@24.105.81.50) (Quit: leaving)
15:00:47 <merijn> phadej: A lot of the things I truly want are probably to invasive to ever get into GHC (it'd be a mess trying to intergrate it with the existing dependent haskell stuff, etc.)
15:01:11 machinedgod joins (~machinedg@24.105.81.50)
15:01:16 <phadej> well, LinearTypes got in...
15:01:20 <hyperisco> then we can watch the Partial constraint get inferred on most of Haskell code :P
15:01:21 <merijn> But csaba's has (wildly ambitious plans) to develop/split of the Core pipeline from GHC, which I think would be an *amazing* development
15:01:28 <merijn> phadej: People got paid to make linear types ;)
15:01:31 <phadej> I do think everything is possible if you want (and yell) hard enough
15:02:07 <merijn> If GHC's code generation could be split off and reused I think that'd encourage/help experimenting with other languages a lot
15:02:21 <phadej> yes
15:02:23 <merijn> Like, having something that can ingest something like Core
15:02:34 <merijn> I can work with Core and reasonably target it
15:02:52 <phadej> Well, no. Core evolves
15:02:57 <phadej> it changed with linear types e.g.
15:03:03 <phadej> and will further change with more dependent haskell
15:03:06 × toorevitimirp quits (~tooreviti@117.182.180.0) (Ping timeout: 260 seconds)
15:03:18 × kritzefitz quits (~kritzefit@fw-front.credativ.com) (Ping timeout: 260 seconds)
15:03:27 <phadej> so it's not that stable interface (though quite small, so you may be able to adopt)
15:04:02 <phadej> but it's very likely it will iss some feature that an experimental frontend would like to have
15:04:14 <phadej> (that's the case with LLVM IR e.g.)
15:04:52 <merijn> phadej: Yeah, but an evolving high level interface is much better than having to compile to LLVM IR myself
15:04:53 <phadej> one IR to rule them all is quite ambitious goal :)
15:05:01 <merijn> that's way too low level to deal with
15:05:02 Deide joins (~Deide@217.155.19.23)
15:05:19 <phadej> (the type-theoreitical IR = Core-like language, it is)
15:05:53 <phadej> but I do agree, that making GHC Core usable without GHC frontend is a good first step
15:05:55 <dolio> LLVM seems to lack features for compiling functional languages, too.
15:05:58 <phadej> and quite big one
15:06:00 <merijn> phadej: but having to develop a full native code backend is just way too much work for someone to attempt with a useful goal
15:06:28 <phadej> (i..e. if GHC Core is good enough for your experiment, it's a shame it cannot be used today)
15:07:16 <merijn> Or GRIN, I suppose
15:09:49 damianfral joins (uid469644@gateway/web/irccloud.com/x-glchetbxfivfvobd)
15:10:52 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:11:27 × pjb quits (~t@2a01cb04063ec500259c126a59c35166.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
15:13:22 vicfred joins (~vicfred@unaffiliated/vicfred)
15:14:20 × chaosmasttter quits (~chaosmast@p200300c4a710fa01b4d1efe2d5e04ce9.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
15:14:24 × vicfred quits (~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
15:14:55 vicfred joins (~vicfred@unaffiliated/vicfred)
15:15:33 × hiroaki quits (~hiroaki@ip4d176049.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
15:16:00 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
15:23:07 unlink2 joins (~unlink2@p57b852f3.dip0.t-ipconnect.de)
15:23:15 thir joins (~thir@p200300f27f0258004ce58c845c83e0b2.dip0.t-ipconnect.de)
15:23:38 addcninblue joins (~addison@c-73-158-198-149.hsd1.ca.comcast.net)
15:24:55 × dhil quits (~dhil@78.156.97.38) (Ping timeout: 246 seconds)
15:27:25 × thir quits (~thir@p200300f27f0258004ce58c845c83e0b2.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
15:30:21 isovector1 joins (~isovector@172.103.216.166.cable.tpia.cipherkey.com)
15:30:27 hackage subG 0.1.0.0 - Some extension to the Foldable and Monoid classes. https://hackage.haskell.org/package/subG-0.1.0.0 (OleksandrZhabenko)
15:30:35 pera joins (~pera@unaffiliated/pera)
15:32:15 Guest37834 joins (uid469646@gateway/web/irccloud.com/x-jcuztqspwxvcsinh)
15:32:53 × Guest37834 quits (uid469646@gateway/web/irccloud.com/x-jcuztqspwxvcsinh) (Client Quit)
15:34:04 × snakemas1 quits (~snakemast@213.100.206.23) (Quit: WeeChat 2.9)
15:35:58 × pera quits (~pera@unaffiliated/pera) (Ping timeout: 260 seconds)
15:36:19 chris joins (~chris@81.96.113.213)
15:36:42 chris is now known as Guest67441
15:37:00 blip joins (5e86b451@gateway/web/cgi-irc/kiwiirc.com/ip.94.134.180.81)
15:37:36 <blip> Is it possible to get the ghc version used to compile a module without cpp?
15:38:27 × Guest67441 quits (~chris@81.96.113.213) (Remote host closed the connection)
15:38:27 <kuribas> merijn: I'd like a language which allows type level computations in it using the same language.
15:38:44 <kuribas> merijn: but still with separation between types and kinds (not dependend types).
15:39:11 <kuribas> merijn: so you can still have hindley millner inference for most programs.
15:39:45 × xff0x quits (~fox@217.110.198.158) (Ping timeout: 240 seconds)
15:40:03 <kuribas> merijn: GRIN looks nice as an IR.
15:41:35 <dolio> Have you tried dependently typed languages? Agda and Idris are not exactly poor when it comes to inference.
15:42:10 <kuribas> dolio: I still prefer haskell inference
15:43:00 <kuribas> merijn: if you want to make a derivative language using GRIN, you can count me in :)
15:43:22 <monochrom> "One IR to rule them all" sounds like standardizing C all over again, you will just end up having 90% of it UB or implementation-defined.
15:43:52 <kuribas> monochrom: GRIN is meant as a step above C or LLVM, to defunctionalize a program.
15:44:02 <kuribas> monochrom: it's not meant to be between the machine and the program
15:44:04 <hyperisco> every time you read or hear "the IO monad" just imagine "the dog animal"
15:44:24 <hyperisco> and we can expunge this from common parlance
15:44:31 <monochrom> Do you also extend that to "the Maybe monad"?
15:45:01 × emmanuel_erc quits (~user@2604:2000:1382:ce03:1864:d59f:f9f2:35b1) (Ping timeout: 272 seconds)
15:45:01 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:45:10 <dolio> How about the free monoid monad?
15:45:21 <monochrom> "the integer monoid"? "the integer group"? "the integer ring"? "the integer commutative ring"? "the integer module"?
15:45:42 <monochrom> "the human species"? "the dog species"?
15:47:16 <monochrom> I know there are terrible writers who write "the IO monad" blindly. But for the rest of us, if we bother to write that, the context is we're focusing on the monadness. Just like when we bother to write "the human species" instead of just "humans".
15:47:16 pera joins (~pera@unaffiliated/pera)
15:47:17 × Wamanuz quits (~wamanuz@78-70-34-81-no84.tbcn.telia.com) (Remote host closed the connection)
15:48:23 <carbolymer> I'm looking for mutable thread-safe, performant, hash map implementation, sth like Java's concurrenthashmap; I've found stm-containers, but the docs are vague and after reading the code I'm under impression ithat it just shoves whole multimap into TVar - which isn't really what I want
15:49:08 <hyperisco> well then the substitution makes sense and you can carry on :P
15:49:42 <hyperisco> I guess we don't say "dog animal", even though it follows the same pattern
15:50:05 <dolio> They do in Battlefield Earth.
15:50:17 <carbolymer> do you know which map implementation would be good? or should I just use `Map Text (TMVar DList a)` ?
15:50:50 <monochrom> We say "the dog phylum" or whatever level in the hierarchy it is, similar to "the human species".
15:51:18 <monochrom> because "animal" is too broad in that hierarchy.
15:51:33 <monochrom> and "the sine function", and "the sine wave".
15:52:16 emmanuel_erc joins (~user@2604:2000:1382:ce03:e422:6bdf:36af:752a)
15:52:25 <monochrom> There is a reason natural languages nor programming languages are xz files.
15:53:06 <hyperisco> hm, is "the sine function" another extraneous phrase
15:54:04 <monochrom> NO
15:54:17 <monochrom> <monochrom> "the integer monoid"? "the integer group"? "the integer ring"? "the integer commutative ring"? "the integer module"?
15:54:30 <monochrom> Read that 100 times until it feels natural.
15:54:47 <hyperisco> it feels natural if we're talking about algebraic structures
15:54:50 <monochrom> err s/100 times/repeatedly/
15:55:27 <monochrom> Then "the sine function" is natural when talking about function structures. "the sine wave" is natural when talking wave structures.
15:55:39 <monochrom> "the IO monad" is natural when talking about monad structures.
15:55:51 <hyperisco> yes I am just saying I think I usually hear "the sine function" and never simply "sine"
15:55:53 <monochrom> So you have always known it, you just don't want to admit it.
15:56:16 <EvanR> carbolymer: any reason you need specifically that data structure
15:56:20 × acidjnk_new2 quits (~acidjnk@p200300d0c723787058597087ca157dd5.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
15:56:20 <hyperisco> granted, it is a homophone with too many other meanings
15:56:45 <EvanR> generally haskell's GC works better with immutable
15:57:40 <hyperisco> the weirdness isn't when you're talking about >>= and you say "the IO monad", it is when you're talking about putStrLn and you say "it runs in the IO monad"
15:58:11 <monochrom> The Haskell library doesn't have imperative lock-free concurrent mutable data structures.
15:58:22 <monochrom> There is not enough demand to begin with.
15:58:39 <hyperisco> but maybe that happens because "IO" isn't unambiguous enough
15:59:24 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:59:36 <monochrom> One single IORef, atomically used, that points to an immutable version, solves 99% of the same problems.
15:59:51 <monochrom> Note that you get ACID automatically.
16:02:56 sfvm joins (~sfvm@37.228.215.148)
16:03:04 toorevitimirp joins (~tooreviti@117.182.180.0)
16:03:26 <kuribas> the danger is that the monadicness of IO looks like something special by beginners. But IO works perfectly without a Monad instance.
16:03:49 × addcninblue quits (~addison@c-73-158-198-149.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
16:03:53 × polyrain_ quits (~polyrain@58.161.83.164) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:04:01 <c_wraith> and conversely, monads have nothing to do with "impurity"
16:04:28 <dolio> Seems like sometimes people decide it's useful to communicate with more than the absolute minimum number of bits of information possible, and that isn't really a problem to be solved.
16:04:35 addcninblue joins (~addison@c-73-158-198-149.hsd1.ca.comcast.net)
16:04:46 <monochrom> Right, I don't say "monad" when the context is teaching IO itself.
16:04:51 solonarv joins (~solonarv@anancy-651-1-202-101.w109-217.abo.wanadoo.fr)
16:04:53 × jespada quits (~jespada@90.254.245.15) (Quit: Leaving)
16:04:54 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-wfqfiwhdaazevkgj)
16:05:10 <monochrom> But that is hardly the only valid context.
16:05:54 <c_wraith> dolio: no, I think this one is. The problem is that people really do think monads are special because they think IO is what monads are. It's IO that's special, not monads. But they get conflated by a *lot* of people because they always see IO described as a monad.
16:06:19 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:06:27 fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net)
16:08:27 hackage subG 0.1.1.0 - Some extension to the Foldable and Monoid classes. https://hackage.haskell.org/package/subG-0.1.1.0 (OleksandrZhabenko)
16:08:47 <blip> Why are there only Natural nums on the type level?
16:09:04 <kuribas> Then it seems monads are only necessary because you have a pure language, and they are no more than a kludge to fix a language that can only appeal to accedemics.
16:09:08 <blip> What about a promoted 4.7?
16:09:14 <Rembane> blip: Because it's almost impossible to put other kind of numbers there.
16:09:21 <Rembane> blip: How would you represent 4.7 as a type?
16:09:44 <blip> for example : Proxy :: Proxy (4, 7)
16:10:00 <blip> why wouldn't that be possible?
16:10:30 × pera quits (~pera@unaffiliated/pera) (Ping timeout: 256 seconds)
16:10:48 <blip> why isn't it syntactically suported? Often I use negative numbers at the type level
16:12:30 <Rembane> blip: That sounds like a more possible, representation.
16:12:37 × Deide quits (~Deide@217.155.19.23) (Read error: Connection reset by peer)
16:12:47 <solonarv> it probably just isn't supported because nobody has said to GHC devs "hey, I really need type level non-integer numbers"
16:12:49 Deide joins (~Deide@217.155.19.23)
16:13:00 LKoen joins (~LKoen@81.255.219.130)
16:13:03 <blip> non-natural
16:13:36 <solonarv> you can of course define type-level integers or rationals yourself, you just won't get nice syntax where you just write down a numeric literal
16:13:42 <dolio> Monads (and similar stuff) are useful for many things that are not directly related to 'purity'.
16:14:01 <davean> I mean you can create a TDouble Nat Nat, but defining rules for it will be "fun"
16:14:03 <blip> solonarv: yes, but that get's ugly fast
16:14:58 <kuribas> blip: I think because Naturals are used for array indexing, one of the main usecases for typelevel numbers, but Double is much less handy.
16:15:37 <blip> Well, but negatives can be nicely used for physical dimensions for example.
16:15:55 <davean> what physical dimensions can be negative?
16:16:03 <davean> weight can't be, length can't be ...
16:16:03 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
16:16:21 <kuribas> blip: how do you use physical dimensions on type level?
16:16:47 <blip> davean: length can be, for example 5 s/m
16:17:04 <davean> blip: Theres no negative there
16:17:16 <blip> davean: yes, there are
16:17:18 <davean> kuribas: Oh thats easy, you often want to run a program for a specific case, so you pass parameterize at the type level by the static information
16:17:29 <blip> m^(-1)
16:17:40 <davean> no, theres no negative there, theres a m^-1
16:17:44 <davean> but thats not a negative value
16:17:53 <kuribas> davean: I don't get it
16:17:54 <davean> Which is a very important thing to realize
16:17:58 <blip> well, -1 looks negative to me
16:18:44 gxt joins (~gxt@gateway/tor-sasl/gxt)
16:19:11 <blip> 60 :: Meter^1 * Second^(-1)
16:19:13 × nineonin_ quits (~nineonine@216-19-190-182.dyn.novuscom.net) (Remote host closed the connection)
16:19:49 nineonine joins (~nineonine@50.216.62.2)
16:20:18 <davean> blip: its a negative exponent, but not a negative value, it produces a unit and the value of the unit isn't negative. You can choose to talk about it as an exponent, or directly what it is
16:20:31 <davean> The negativeness there is just notation for the unit
16:21:44 <davean> in the same sense that subtraction isn't a negative number
16:22:01 Wamanuz joins (~wamanuz@78-70-34-81-no84.tbcn.telia.com)
16:22:43 × dhouthoo quits (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
16:23:01 <solonarv> right, and if you want to write down the negative exponent on the type level, you need negative type-level integers
16:23:02 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
16:23:02 <kuribas> blip: I am missing the explanation why this would be interesting *at type level*.
16:23:17 <solonarv> I do think blip's notation is sensible and desirable
16:23:31 <blip> kuribas: you could avoid adding seconds to meters for example
16:23:39 geekosaur joins (82659a0e@host154-014.vpn.uakron.edu)
16:23:46 <solonarv> putting units/dimensions on the type level lets you make the typechecker do dimensional analysis for you
16:24:08 <kuribas> blip: then you just need a Meter newtype and Seconds newtype.
16:24:43 <kuribas> solonarv: in that case I would just have one canonical type.
16:25:03 <solonarv> now if you want to multiply two Meter values you also need an Area newtype, if you want to divide a Meter value by a Seconds value you need a MeterPerSecond newtype... it's a profusion of newtypes!
16:25:47 <blip> kuribas: how would you possibly implement multiplication
16:26:01 <phadej> https://hackage.haskell.org/package/uom-plugin
16:26:07 × ericsagnes quits (~ericsagne@2405:6580:0:5100:ad7e:a36b:18dd:5e0b) (Ping timeout: 260 seconds)
16:26:23 <kuribas> blip: a Squared type?
16:26:52 <kuribas> like (Squared Meter)
16:26:55 × karanlikmadde quits (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
16:27:17 <blip> (:*:) :: (Meter x, Second y, Mass z, ...) -> (Meter x', Second y', Mass z', ...) -> (Meter (x+x'), Second (y+y'), Mass (z + z')...)
16:27:29 <solonarv> and now you need a Cubed type, and you need to figure out division still...
16:27:30 <blip> of any SI-Dimension
16:27:37 <solonarv> there *are* libraries that do this already, mind you
16:27:48 <davean> dimensional for example
16:27:54 <davean> a few others
16:27:57 <kuribas> solonarv: or just... don't? Don't try to encode everything in types?
16:28:35 <phadej> >>> It is traditional here to cite the Mars Climate Orbiter, or the Gimli Glider
16:28:38 <phadej> (http://lamar.colostate.edu/~hillger/unit-mixups.html).
16:28:48 <davean> kuribas: so, for example, if I want to setup a control system, knowing the paraeters staticly let me generate code that optimally performs the control operation for each enumerated case
16:28:53 <solonarv> but this is actually a sensible thing to encode in types. The system of dimensions (or units) *is* a type system already, and it can be embedded into Haskell's type system.
16:29:17 <phadej> solonarv: can, but it can also be painful without compiler support. See uom-plugin paper
16:30:09 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
16:30:18 xff0x joins (~fox@217.110.198.158)
16:31:55 alp joins (~alp@2a01:e0a:58b:4920:d1be:ca38:a451:6036)
16:32:42 jneira[m] joins (~jneira@191.red-37-10-143.dynamicip.rima-tde.net)
16:33:22 <dolio> 'Dimensional analysis' that physicists talk about is basically type checking.
16:33:34 <kuribas> solonarv: Squared and Cubed sounds ok to me. How many dimension do you really need? Besides, a lot more can go wrong in numerical calculations than wrong dimensions.
16:34:00 <blip> kuribas: up to ^5
16:34:06 <blip> isn't that uncommon in physics
16:34:11 <dolio> Maybe only physics professors.
16:34:42 <solonarv> even fractional exponents come up sometimes! although admittedly not often
16:34:49 <blip> dimensional analysis: don't do only profs, that's taught in schools
16:35:27 <solonarv> yeah, I was taught DA in high school. We even properly distinguished units from dimensions.
16:37:18 <blip> if my pupils don't do DA, I slap them with a Force of 5 kg :)
16:37:44 <blip> kuribas: so you would use a newtype for Newtons?
16:38:07 <kuribas> blip: possibly?
16:38:10 chris joins (~chris@81.96.113.213)
16:38:17 <blip> hm
16:38:23 <davean> blip: have you looked at 'dimensional', etc?
16:38:24 ericsagnes joins (~ericsagne@2405:6580:0:5100:2c71:50df:a168:e256)
16:38:33 chris is now known as Guest68069
16:38:40 <blip> davean: yes, but I'm using that just as an example
16:38:45 <solonarv> @hackage units - the one I remembered first when this discussion came up
16:38:46 <lambdabot> https://hackage.haskell.org/package/units - the one I remembered first when this discussion came up
16:39:16 <blip> I'm more generally interested in representing more stuff ergonomically at type level
16:39:25 <blip> I'm a bit of a TL fan
16:39:48 <solonarv> type-level (negative) integers and fractions might be within the realm of what a GHC plugin can do
16:39:48 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
16:39:58 × lnlsn quits (~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
16:40:01 <kuribas> type level, ergonomic and haskell don't really go together
16:40:08 <kuribas> except for simple stuff
16:40:14 <blip> don't be that negative
16:40:23 <solonarv> there is some facility within GHC plugins to add new syntax if it can be cobbled together from existing syntax
16:40:25 <davean> I don't know why you'd use a plugin for it, you can just do it if you want
16:40:27 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
16:40:51 <davean> You have to lie and just claim laws, but thats easy
16:41:21 <kuribas> blip: I am not negative. It's nice to have it, but most of it was an afterthought.
16:41:22 <blip> Well, kind-safety is overrated
16:41:29 <blip> yeah
16:41:41 <blip> But it's getting better over time
16:42:19 <kuribas> blip: actually, that's something I miss, well kinded type level computation. For example servant is pretty ad-hoc.
16:42:43 trevorriles joins (uid469656@gateway/web/irccloud.com/x-ruimatphqohrzmib)
16:42:48 × 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.”)
16:43:02 <blip> I actually love servant, and think it's relatively non-ad-hoc for what it's doing.
16:43:31 <blip> that's a lot more ad-hoc: https://github.com/knupfer/type-of-html
16:44:25 <blip> considering that we've got Type :: Type, I think we've lost on the well kinded front
16:44:54 karanlikmadde joins (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
16:45:17 aenesidemus joins (~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net)
16:45:28 × xff0x quits (~fox@217.110.198.158) (Ping timeout: 256 seconds)
16:46:11 <dolio> I don't think that really follows.
16:46:38 lnlsn joins (~lnlsn@189.100.212.150)
16:47:02 lnlsn- joins (~lnlsn@189.100.212.150)
16:47:06 trevorriles is now known as visi0n
16:47:19 visi0n is now known as trevorriles
16:47:22 kenran joins (~maier@b2b-37-24-119-190.unitymedia.biz)
16:47:38 × addcninblue quits (~addison@c-73-158-198-149.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
16:48:31 addcninblue joins (~addison@c-73-158-198-149.hsd1.ca.comcast.net)
16:48:44 mmohammadi981266 joins (~mmohammad@2.178.247.129)
16:48:53 × plast1k_ quits (~plast1k_@196.207.181.246) (Quit: Leaving)
16:49:52 avdb joins (~avdb@ip-213-49-124-15.dsl.scarlet.be)
16:50:28 hackage Z-Data 0.1.7.1 - Array, vector and text https://hackage.haskell.org/package/Z-Data-0.1.7.1 (winterland)
16:50:38 pera joins (~pera@unaffiliated/pera)
16:50:38 × tv quits (~tv@unaffiliated/tv) (Ping timeout: 260 seconds)
16:51:20 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
16:51:27 hackage subG 0.1.1.1 - Some extension to the Foldable and Monoid classes. https://hackage.haskell.org/package/subG-0.1.1.1 (OleksandrZhabenko)
16:52:25 × kenran quits (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 246 seconds)
16:54:19 × Guest68069 quits (~chris@81.96.113.213) (Remote host closed the connection)
16:58:00 <nerdypepper> hiya, is there a shorter way to do this: https://pastebin.com/0XBjebVt ?
16:58:23 <davean> sure
16:58:27 <nerdypepper> there is no particular reason i want to shorten it however, just trying to scratch an itch
16:58:32 × lnlsn- quits (~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
16:58:32 × lnlsn quits (~lnlsn@189.100.212.150) (Write error: Connection reset by peer)
16:59:17 lnlsn joins (~lnlsn@189.100.212.150)
16:59:27 multichill joins (~multichil@84.39.116.180)
16:59:52 <lyxia> It looks good already to me.
17:00:36 <solonarv> I agree. There is no immediately obvious way to shorten it, which to me means I should leave it alone
17:00:49 <solonarv> (well, you save two characters with s/return/pure/ :p )
17:01:17 <siraben> `(some_computation val >>= another_computation) >> pure result`
17:01:31 <fryguybob> carbolymer: stm-container is based on the Hashed Array-Mapped Trie data structure and has internal TVar's.
17:01:33 <geekosaur> there's a way to shorten it but it's not obvious
17:01:43 × mmohammadi981266 quits (~mmohammad@2.178.247.129) (Ping timeout: 260 seconds)
17:01:55 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
17:01:59 <blip> siraben: wrong
17:02:14 <siraben> blip: interesting, which part?
17:02:35 <blip> your `result` doesn't exist
17:02:35 <siraben> Oh oops
17:02:36 <siraben> missed the result
17:02:37 gxt joins (~gxt@gateway/tor-sasl/gxt)
17:02:38 <siraben> lol
17:02:48 <siraben> then it's fine as is
17:03:02 <nerdypepper> lyxia, solonarv : fair enough, thanks
17:03:13 <blip> `f val >>= \r -> g f >> pure r`
17:03:33 <blip> `f val >>= \r -> g r >> pure r`
17:03:47 Mathnerd314 joins (uid442749@supertux/Mathnerd314)
17:04:43 <carbolymer> fryguybob, thanks for the info, I think I've overlooked that
17:05:27 <carbolymer> EvanR, I just need a bit finer locking than on a whole Map level
17:05:28 <nerdypepper> blip: nice!
17:05:38 <blip> `f val >>= uncurry (>>) . (g &&& pure)` ??
17:06:26 tv joins (~tv@unaffiliated/tv)
17:07:42 <blip> actually `*>` is nicer than `>>`
17:07:50 <nerdypepper> blip: sweet, i was looking to do this somehow using arrow combinators, thanks a lot
17:07:52 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
17:07:58 <nerdypepper> blip: any reason *> is better than >> ?
17:08:07 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
17:08:08 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
17:08:08 GyroW joins (~GyroW@unaffiliated/gyrow)
17:08:12 <blip> it's usable in more cases
17:08:27 <blip> it's more honest
17:08:37 <blip> it's like using `pure` and not `return`
17:09:00 <nerdypepper> gotcha
17:09:11 <blip> and it's combinable with applicative do
17:09:44 hekkaidekapus_ is now known as hekkaidekapus
17:10:36 <fryguybob> carbolymer: A non-STM, concurrent version of the HAMT is in the ctrie package.
17:11:57 <fryguybob> That one can have non-blocking snapshots, but I don't think the ctrie package implementes it.
17:12:04 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
17:12:07 <blip> proposal: let's deprecate mapM
17:12:17 <hekkaidekapus> dminuoso, tomjaguarpaw: Actionable input is required at <https://gitlab.haskell.org/ghc/ghc/-/issues/18836#note_307788>. After all, you’ll started it :) So, ”would you care to […] propose a paragraph or two that would have cleared it up for you?”
17:13:03 × lnlsn quits (~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
17:13:42 <hekkaidekapus> *you all
17:16:11 × raichoo quits (~raichoo@213.240.178.58) (Quit: Lost terminal)
17:17:11 × bitmagie quits (~Thunderbi@200116b8068ac700b1ff22a8b63421be.dip.versatel-1u1.de) (Quit: bitmagie)
17:18:25 juuandyy joins (~juuandyy@90.166.144.65)
17:18:53 plast1k_ joins (~plast1k_@196.207.181.246)
17:18:56 × juuandyy quits (~juuandyy@90.166.144.65) (Client Quit)
17:19:14 mmohammadi981266 joins (~mmohammad@5.106.141.98)
17:23:24 Buntspecht joins (~user@unaffiliated/siracusa)
17:24:07 thir joins (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de)
17:26:46 × karanlikmadde quits (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
17:27:59 × hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Quit: Curry, you fools!)
17:28:22 xff0x joins (~fox@2001:1a81:5391:7900:f127:8532:42d4:579b)
17:29:56 frdg joins (47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net)
17:30:22 × Tops2 quits (~Tobias@dyndsl-091-249-082-055.ewe-ip-backbone.de) (Quit: Leaving.)
17:31:56 × mmohammadi981266 quits (~mmohammad@5.106.141.98) (Ping timeout: 256 seconds)
17:32:29 mmohammadi981266 joins (~mmohammad@2.178.247.129)
17:38:00 × nyd quits (~lpy@unaffiliated/elysian) (Quit: nyd)
17:38:23 × AWizzArd quits (~code@gehrels.uberspace.de) (Changing host)
17:38:23 AWizzArd joins (~code@unaffiliated/awizzard)
17:39:59 × mmohammadi981266 quits (~mmohammad@2.178.247.129) (Quit: I quit (╯°□°)╯︵ ┻━┻)
17:40:50 amosbird joins (~amosbird@13.75.119.182)
17:41:14 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
17:42:11 howdoi joins (uid224@gateway/web/irccloud.com/x-vzqpthvuyxsqigap)
17:43:53 acidjnk_new2 joins (~acidjnk@p200300d0c723787058597087ca157dd5.dip0.t-ipconnect.de)
17:46:23 × jinblack quits (~JinBlack@2001:41d0:8:4b28::1) (Ping timeout: 244 seconds)
17:46:36 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
17:47:03 × Gurkenglas_ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 258 seconds)
17:47:54 ephemera_ joins (~E@122.34.1.187)
17:49:52 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
17:50:02 GyroW joins (~GyroW@d54c03e98.access.telenet.be)
17:50:02 × GyroW quits (~GyroW@d54c03e98.access.telenet.be) (Changing host)
17:50:02 GyroW joins (~GyroW@unaffiliated/gyrow)
17:51:35 × plast1k_ quits (~plast1k_@196.207.181.246) (Quit: Leaving)
17:53:04 × avdb quits (~avdb@ip-213-49-124-15.dsl.scarlet.be) (Quit: WeeChat 2.9)
17:53:58 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 256 seconds)
17:55:25 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 264 seconds)
17:55:44 × alp quits (~alp@2a01:e0a:58b:4920:d1be:ca38:a451:6036) (Remote host closed the connection)
17:55:47 ephemera_ joins (~E@122.34.1.187)
17:55:50 alp_ joins (~alp@88.126.45.36)
17:56:10 GyroW joins (~GyroW@d54c03e98.access.telenet.be)
17:56:10 × GyroW quits (~GyroW@d54c03e98.access.telenet.be) (Changing host)
17:56:10 GyroW joins (~GyroW@unaffiliated/gyrow)
17:56:18 karanlikmadde joins (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
18:00:02 × multichill quits (~multichil@84.39.116.180) ()
18:01:02 Tops2 joins (~Tobias@dyndsl-091-249-082-055.ewe-ip-backbone.de)
18:01:49 × mirrorbird quits (~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1) (Ping timeout: 272 seconds)
18:02:28 anik joins (~anik@103.23.207.158)
18:06:34 hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net)
18:07:25 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 240 seconds)
18:08:48 × anik quits (~anik@103.23.207.158) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
18:08:48 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
18:08:52 <hyperisco> still on the hunt for a templating solution that is just a library for parsing templates and evaluating them
18:08:57 ephemera_ joins (~E@122.34.1.187)
18:09:05 <hyperisco> something not oddly conflated with JSON and CLI
18:09:27 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
18:09:41 fragamus joins (~michaelgo@73.93.153.117)
18:10:44 larou joins (5201f2b7@gateway/web/cgi-irc/kiwiirc.com/ip.82.1.242.183)
18:11:24 Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas)
18:11:29 <dsal> What kind of templates? I'd expect there would be too many to choose from. e.g. https://hackage.haskell.org/package/mustache
18:11:52 <fragamus> I'm having trouble constructing a Linear.V vector from a list can anyone help
18:12:26 <larou> i was wondering about arrows and the support for various channels of communication over adaptive programs...
18:13:26 <larou> fragamus: did you see; http://hackage.haskell.org/package/vector-0.12.1.2/docs/Data-Vector.html#g:7
18:14:08 <amf> in the 4 version approach (e.g. 0.1.2.3) what number would i bump if i were to add deriving Generic to one of the exported types?
18:14:33 <fragamus> looking now
18:14:39 × geekosaur quits (82659a0e@host154-014.vpn.uakron.edu) (Ping timeout: 245 seconds)
18:14:54 <larou> probably you want; http://hackage.haskell.org/package/vector-0.12.1.2/docs/Data-Vector.html#g:36
18:15:38 <larou> amf: im not sure thats subjective?
18:16:22 __monty__ joins (~toonn@unaffiliated/toonn)
18:16:32 anik joins (~anik@103.23.207.149)
18:17:39 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
18:17:44 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
18:17:46 chaosmasttter joins (~chaosmast@p200300c4a710fa01b4d1efe2d5e04ce9.dip0.t-ipconnect.de)
18:17:50 <monochrom> amf: I think it's 0.1.2.3 -> 0.1.3.3. But see eg https://pvp.haskell.org/#leaking-instances and later the "decision tree"
18:17:52 <davean> amf: 0 or 1
18:18:04 <davean> well, yahm depends on your feeling on leaked instances :)
18:18:35 <fragamus> larou: I am trying to construct a Linear.V V
18:18:57 <larou> thats just a newtype wrapper
18:19:08 <larou> so you would just dot with the newtype constructor
18:19:22 <larou> V . toList
18:19:37 <larou> does that work?
18:19:51 avdb joins (~avdb@ip-213-49-124-15.dsl.scarlet.be)
18:19:56 <amf> or... i could just let the lib maintainer handle it :)
18:19:58 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
18:20:06 <fragamus> sorry larou I am not understanding
18:20:35 jneira_ joins (~jneira@80.30.100.250)
18:20:35 × jneira[m] quits (~jneira@191.red-37-10-143.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
18:20:41 <monochrom> Your case is not even an orphaned instance.
18:20:53 <fragamus> larou: are you saying I must first construct a Data.Vector Vector
18:20:54 dhil joins (~dhil@195.213.192.122)
18:21:03 <larou> erm, fromlist sorry
18:21:11 <larou> fromList :: [a] -> Vector a
18:21:16 <fragamus> ah
18:21:42 <larou> V :: Vector a -> V n a
18:21:52 <fragamus> ok
18:21:58 <larou> so; V . fromList :: [a] -> V n a
18:22:22 <fragamus> ok
18:22:24 ao2 joins (~ao2@185.163.110.116)
18:22:30 <fragamus> ill give that a go thanks
18:22:46 ao2 is now known as Guest25237
18:22:47 <monochrom> amf: Ah, instead, https://pvp.haskell.org/#version-numbers point 2 is the applicable point. You are adding a non-orphan instance.
18:22:55 <larou> so, i was thinking, for "arrows for different coms channels within modifiable programs"
18:23:31 <larou> about the kind of picture there is in arrows docs, where a pair or an either can kind of have an "arrow going through a node"
18:23:49 <monochrom> and point 6 is saying "woe to your user if they added their own orphan Generic to your type" :)
18:24:07 <larou> like, maybe for most of the operation of the program types are just composed together in functions as usual
18:24:22 × thir quits (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de) (Remote host closed the connection)
18:24:32 <larou> but then, there can be an option to like, generate a replacement for some function, and pass this through the program to where it replaces some node
18:24:51 thir joins (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de)
18:25:03 <larou> so it would kind of have an Either, from if it was one or the other of these kinds of data being passed through the program
18:25:11 <larou> and a pair, to allow it to get to where it needs to go
18:25:14 × anik quits (~anik@103.23.207.149) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
18:25:15 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) ()
18:25:42 <larou> im not sure what those opperations are called in arrows... but does that seem comprehensible?
18:25:56 wroathe_ joins (~wroathe@75-146-43-37-Minnesota.hfc.comcastbusiness.net)
18:26:51 <larou> i guess this ends up being quite complicated though. like, if one function can be modified by another, thats fine, since then this pathway can be "hard coded"
18:27:14 <larou> but if you need any part to be able to modify any other part, then it seems like some kind of crossroads would be needed
18:27:42 <larou> like signal boxes on train tracks, to direct the modification to where it needs to go
18:27:56 <amf> monochrom: ah ok, that does make sense, thanks!
18:27:58 hackage hslua 1.3.0 - Bindings to Lua, an embeddable scripting language https://hackage.haskell.org/package/hslua-1.3.0 (tarleb)
18:28:19 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
18:28:24 <larou> it needs to be able to pass the data through the program along pathways that can be dynamically configured
18:28:27 × alp_ quits (~alp@88.126.45.36) (Ping timeout: 258 seconds)
18:29:04 <larou> kind of like in FPGAs where the logic units are connected together by programable switching paths, i forget what they are called,
18:29:19 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
18:29:25 × thir quits (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
18:29:31 <larou> oh, they call it "programable routing"
18:29:40 alp_ joins (~alp@2a01:e0a:58b:4920:70f4:103a:daad:d45e)
18:30:27 <larou> or "programable interconnections"
18:30:36 ephemera_ joins (~E@122.34.1.187)
18:30:40 <larou> they just have a 2d grid, so its quite simple
18:30:41 wroathe_ is now known as wroathe
18:30:50 <hyperisco> dsal, mustache is oddly confused with both JSON and CLI
18:30:56 <larou> with just 4 wires and the switching block
18:30:58 <hyperisco> but those sorts of templates, yes
18:31:03 <dsal> It's just the first thing I thought of.
18:31:29 <hyperisco> not savvy on templating languages anymore
18:31:43 <dsal> My last web thing was in elm, which doesn't do templating language at all. :/
18:31:57 <larou> "Each CLB is tied to a switch matrix to access the general routing structure. The switch matrix provides programmable multiplexers, which are used to select the signals in a given routing channel and thereby connect vertical and horizontal lines."
18:32:02 <larou> https://towardsdatascience.com/introduction-to-fpga-and-its-architecture-20a62c14421c
18:32:15 <larou> i was thinking something like this might be doable with arrows
18:32:29 <larou> but on an arbitrary architecture, not just a 2d grid
18:32:50 DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
18:34:09 <larou> and obviously, with arbitrary types of data sent along the edges, not just the binary or floating point signals - since we have functions in a program instead of logic units, or configurable logic blocks, as in a FPGA
18:34:12 <hyperisco> maybe I should just whip up my own with megaparsec lol, isn't that complicated oO
18:34:28 hackage tasty-lua 0.2.3.1 - Write tests in Lua, integrate into tasty. https://hackage.haskell.org/package/tasty-lua-0.2.3.1 (tarleb)
18:34:38 geekosaur joins (82659a0e@host154-014.vpn.uakron.edu)
18:35:13 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:35:18 conal joins (~conal@64.71.133.70)
18:36:32 <monochrom> larou: The value of your messages to #haskell is decreasing rapidly. I ask you to stop.
18:37:57 hackage hslua-module-text 0.3.0.1 - Lua module for text https://hackage.haskell.org/package/hslua-module-text-0.3.0.1 (tarleb)
18:38:08 <larou> ah, your right, im getting distracted - sorry. it was just an afterthought to a discussion about the "fanout" operation yesterday
18:38:28 <larou> i guess id be better off trying to grapple with the arrows framework in a less complex application
18:38:30 <hyperisco> why are all template processors dependent on Aeson lol
18:38:34 tabaqui joins (~tabaqui@46.39.45.136)
18:38:38 <tabaqui> hey all
18:38:51 <monochrom> aeson is our go-to JSON library.
18:39:57 <tabaqui> Do you know a good tutorial for recursion-schemes?
18:40:28 hackage hslua-module-system 0.2.2.1 - Lua module wrapper around Haskell's System module. https://hackage.haskell.org/package/hslua-module-system-0.2.2.1 (tarleb)
18:40:38 <phadej> tabaqui: there isn't
18:40:47 <monochrom> Yes IMO but my opinion includes only learning catamorphisms and anamorphisms, and ignoring the rest.
18:41:07 <phadej> that's not wrong :)
18:41:28 hackage hakyll-process 0.0.2.0 - Hakyll compiler for arbitrary external processes. https://hackage.haskell.org/package/hakyll-process-0.0.2.0 (jhmcstanton)
18:41:28 <tabaqui> well, -morphisms are pretty easy, but I'm interesting in Fi'ed datatype
18:41:35 <tabaqui> *Fix'ed datatypes
18:41:43 <phadej> you don't need Fix for recursion schemes
18:42:14 <tabaqui> I want to combine them to build AST interpreter
18:42:36 <phadej> you don
18:42:37 <phadej> 't
18:42:44 <phadej> use concretely recursive types
18:42:54 <tabaqui> nah, it's boring:)
18:43:01 × kuribas quits (~user@ptr-25vy0i94ezsnlaecbal.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
18:43:20 <monochrom> in which case something like http://www.cs.ox.ac.uk/publications/publication2360-abstract.html
18:43:31 <phadej> you get barely any mileage from recursion s chemes for an AST
18:43:44 <phadej> about everything interesting isn't just cata
18:44:04 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 246 seconds)
18:44:05 × jneira_ quits (~jneira@80.30.100.250) (Ping timeout: 240 seconds)
18:44:21 <monochrom> and http://www.cs.ru.nl/B.Jacobs/PAPERS/JR.pdf
18:44:23 ephemera_ joins (~E@122.34.1.187)
18:44:33 <tabaqui> monochrom: seems good, thanks
18:44:34 jneira_ joins (~jneira@191.red-37-10-143.dynamicip.rima-tde.net)
18:45:25 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
18:45:42 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
18:46:20 <monochrom> Gibbon's work with the Fix type IIRC. Jacob's is general math.
18:46:23 <tabaqui> phadej: why not, it looks very promising
18:46:50 <monochrom> But I certainly needed Jacob's to prepare me. It also teaches many other things.
18:48:16 kenran joins (~maier@b2b-37-24-119-190.unitymedia.biz)
18:48:41 <monochrom> And now, for "just one step away from cata/ana", I present to you http://www.cs.ox.ac.uk/ralf.hinze/publications/index.html#P32
18:50:11 <zincy__> What is/are Jacobs?
18:50:26 <monochrom> Paper author
18:50:47 <larou> "adjoint folds and unfolds" !?
18:50:48 × jneira_ quits (~jneira@191.red-37-10-143.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
18:50:52 <monochrom> I guess Jacobs's
18:50:54 <monochrom> Yeah
18:50:59 <tabaqui> monochrom: till now, I've only learned this: https://www.youtube.com/watch?v=TEvDaKg4XXA
18:51:19 jneira_ joins (~jneira@80.30.100.102)
18:51:33 <larou> if there is a way to make anything less appealing it is to add the word "adjoint" to it...
18:51:34 <geekosaur> "Jacobs'" if we're being pedantic. Except usage is still changing and not settled
18:51:43 <geekosaur> yay natural language
18:51:45 <zincy__> Can someone unpack this sentence "The distinction between algebra and coalgebra pervades CS .. described usually in terms of data versus machines?
18:51:53 <monochrom> Well mine was a simple typo.
18:52:15 <tabaqui> fun fact: haskell programmers don't laugh at function "anaL"
18:52:23 <monochrom> Don't attribute to rich linguistic studies what can be attributed to typos and ELS.
18:52:27 hackage hslua-aeson 1.0.3.1 - Allow aeson data types to be used with lua. https://hackage.haskell.org/package/hslua-aeson-1.0.3.1 (tarleb)
18:52:51 <monochrom> Like, as well, "Gibbon's work with Fix" should be "Gibbon's works with Fix", too.
18:52:53 <larou> zincy__ : its a nod towards folds and unfolds
18:53:01 <larou> i think...
18:53:07 <monochrom> err and there I have a new typo of a spurrious space
18:53:11 <zincy__> Oh thanks
18:53:13 <larou> slightly confused about this being in terms of "algebras"
18:53:37 × kenran quits (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 264 seconds)
18:54:08 <monochrom> I have a feeling that future archaelogical linguistics in the 25th century looking at my IRC log and trying to theorize on my peculiar writing "style", any theory except honest typo.
18:54:28 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
18:55:03 <larou> hmm, actually, if "coalgegras" is going to include "things that dont have constructors" including *modifiers*, im not sure the fold vs unfold perspective isnt stretched beyond applicability
18:55:20 <geekosaur> one hopes their corpus consists of a bit more than just your IRC messages :)
18:56:32 <geekosaur> (then again, if they've any sense at all they'll see English and give up :)
18:56:51 <monochrom> zincy__: Do you already know of "Let F be a functor. An F-algebra is defined as: ..."?
18:57:22 <monochrom> Err actually I have a more elementary way. Do you already know of both foldr and unfoldr for []?
18:58:02 albertus1 joins (~seb@x4db5a1e1.dyn.telefonica.de)
18:58:10 <monochrom> foldr is a logical conclusion of "data [] a = [] | a : [] a" so it feels like data.
18:58:33 Guest88073 is now known as lep-delete
18:58:55 <monochrom> unfoldr is a little program that emits a list, it feels like a list-producing machine. You can even ascribe an "internal state" to it.
18:59:59 thir joins (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de)
19:00:10 <larou> i get confused about list being CoFree
19:00:17 <zincy__> Yeah I only know about foldr and unfoldr
19:00:25 <larou> but its still "data" as opposed to "codata"
19:00:30 <larou> whatever that is...
19:01:05 <larou> list is both isnt it, both foldable and unfoldable...
19:01:07 <monochrom> > unfoldr (\s -> if s==10 then Nothing else Just (even s, s+1)) 0
19:01:10 <lambdabot> [True,False,True,False,True,False,True,False,True,False]
19:01:35 pjb joins (~t@2a01cb04063ec50091a4fa1f69281349.ipv6.abo.wanadoo.fr)
19:02:07 <larou> and what about Free cf. Free Monads, for Free f, where f is a Functor
19:02:08 <monochrom> My example can be narrated as: I have an internal state, initially 0. If the state value hits 10, end; else, emit one more message "even s" and the next state is s+1.
19:02:28 <zincy__> So is this kinda like - machines produce data and unfoldr is our machine and lists are data?
19:02:40 <larou> (monoids in the category of endofunctors.... algebra?)
19:02:40 <monochrom> So I have a little automaton that has an internal state and emits messages accordingly for several steps.
19:02:47 <monochrom> Yes
19:02:51 <zincy__> Oh cool
19:03:05 <larou> :t build
19:03:07 <lambdabot> error:
19:03:07 <lambdabot> • Variable not in scope: build
19:03:07 <lambdabot> • Perhaps you meant ‘buildG’ (imported from Data.Graph)
19:03:15 × berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
19:03:31 berberman joins (~berberman@unaffiliated/berberman)
19:03:44 <larou> :t \f -> foldr f (:) []
19:03:45 <lambdabot> (a1 -> (a2 -> [a2] -> [a2]) -> a2 -> [a2] -> [a2]) -> a2 -> [a2] -> [a2]
19:04:03 <larou> oh no, i got that very wrong...
19:04:37 <larou> but like "unfold" isnt the machine... nor is the argument to it. its both the unfold and its argument, that produces the list
19:04:44 <larou> :t unfoldr
19:04:45 <lambdabot> (b -> Maybe (a, b)) -> b -> [a]
19:05:04 <larou> so i guess its just anything thats (b -> [a])
19:05:25 <larou> ah, i was thinking of Church encoding, not build
19:05:30 <larou> like, a partially applied fold
19:05:49 <larou> :t foldr undefined
19:05:50 <lambdabot> Foldable t => b -> t a -> b
19:06:06 boo joins (d03b9e15@208.59.158.21)
19:06:08 <larou> oh, i guess it needs the initial data too...
19:06:12 <larou> :t foldr undefined undefined
19:06:13 <lambdabot> Foldable t => t a -> b
19:06:25 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 240 seconds)
19:06:37 boo is now known as Guest98072
19:06:38 <monochrom> larou, you're being anal about "unfoldr is the machine". Clearly, you could have also picked on "the State monad" --- there is no State monad, you always have to pick a type T and say "the State T monad".
19:06:38 <larou> which is dual to (b -> t a) from the partially applied unfold
19:07:08 × Franciman quits (~francesco@host-82-48-166-25.retail.telecomitalia.it) (Ping timeout: 260 seconds)
19:07:35 <larou> well, just considering; f a -> b, and b -> f a, its clear one of them produces data and one of them consumes it
19:07:42 × thir quits (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
19:08:33 <larou> anyway, where does the "adjoint" enter?
19:08:41 <larou> its supposed to generalise over this right/
19:09:42 × nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 272 seconds)
19:10:01 <monochrom> There is a URL, you could use it.
19:10:28 × Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 256 seconds)
19:11:01 <monochrom> Like I said the value of your messages is dropping under 0.
19:11:13 <larou> nice summary
19:11:35 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
19:12:21 <larou> can you explain though? i dont know enough theory to understand this paper...
19:12:53 <larou> some vague intuition to serve as a foundation to grasp at the abstract concepts?
19:13:03 kenran joins (~maier@b2b-37-24-119-190.unitymedia.biz)
19:13:22 <monochrom> Learn adjoint functors, then?
19:13:33 <larou> what are those for?
19:13:33 xerox_ joins (~xerox@unaffiliated/xerox)
19:13:39 <monochrom> Adjunction itself takes a while to learn already.
19:13:47 <monochrom> For reading Hinze's paper?
19:13:52 <larou> ...
19:14:16 <monochrom> I certainly avoided learning adjunction until I found Hinze's paper. I learned adjunction for it.
19:14:35 <larou> ah, that must have given you the ability to explain it in less technical terms!
19:14:40 <monochrom> It's a good enough justification for me.
19:15:03 <monochrom> Do I owe you something?
19:15:48 nineonine joins (~nineonine@50.216.62.2)
19:16:01 <larou> its like Kan extensions, there is this commuting diagram
19:16:07 <larou> ok....
19:17:38 × kenran quits (~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 265 seconds)
19:18:48 × wroathe quits (~wroathe@75-146-43-37-Minnesota.hfc.comcastbusiness.net) (Ping timeout: 260 seconds)
19:18:56 kenran joins (~maier@87.123.205.83)
19:20:36 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
19:20:37 mirrorbird joins (~psutcliff@m83-187-163-53.cust.tele2.se)
19:21:54 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
19:22:55 <larou> so we have datatypes as the fixed points of base functors...
19:24:18 <larou> F(uF) = uF
19:24:36 conal joins (~conal@64.71.133.70)
19:25:03 <larou> vF = F(vF)
19:25:08 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:25:18 <larou> those cant be equals signs, they must be some kind of arrow
19:25:41 <larou> thats like monoids in endofunctors by the looks of it
19:25:50 <larou> or comonoids... for the dual
19:26:58 hackage silkscreen 0.0.0.3 - Prettyprinting transformers. https://hackage.haskell.org/package/silkscreen-0.0.0.3 (robrix)
19:27:08 <larou> it says that in haskell, the inductive and coinductive data coincide, unlike Charity or Coq
19:28:08 <larou> (since we can pattern match on the constructor - foldables are unfoldables?)
19:30:05 × dhil quits (~dhil@195.213.192.122) (Ping timeout: 240 seconds)
19:30:19 <larou> it references this; https://www.cs.tufts.edu/~nr/cs257/archive/tim-sheard/two-level-unification.pdf
19:31:03 <larou> "The first of these is the definition of recursive
19:31:03 <larou> data types using two levels: a structure defining level, and
19:31:04 <larou> a recursive knot-tying level"
19:31:14 <larou> woop woop!
19:31:33 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
19:31:54 × tensorpudding quits (~michael@unaffiliated/tensorpudding) (Quit: ZNC - http://znc.in)
19:32:45 × ephemera_ quits (~E@122.34.1.187) (Remote host closed the connection)
19:34:03 ephemera_ joins (~E@122.34.1.187)
19:34:14 conal joins (~conal@64.71.133.70)
19:34:34 <larou> hmm, then it says something about termination. seems like folds need to terminate, so inductive data is finite - while unfolds are potentially infinite
19:34:43 <larou> i guess thats why we have lazy evaluation
19:36:54 <monochrom> Haha "class Pretty a" "Overloaded conversion to Doc." "Laws: 1. output should be pretty. :-)"
19:37:10 × fragamus quits (~michaelgo@73.93.153.117) (Ping timeout: 256 seconds)
19:37:12 <dsal> *objectively*
19:39:10 <larou> argh! then it does trees as mutually recursive base functors as a categorical product
19:41:07 <larou> it says " Haskell has no concept of pairs on the type level, that is, no product
19:41:08 <larou> kinds"
19:41:12 <larou> is that still true?
19:42:38 × Tops2 quits (~Tobias@dyndsl-091-249-082-055.ewe-ip-backbone.de) (Quit: Leaving.)
19:43:24 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
19:43:43 dhil joins (~dhil@78.156.97.38)
19:44:42 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 265 seconds)
19:45:10 <monochrom> I forgot what it means, but in 2010 even GHC didn't have an interesting kind system.
19:45:48 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
19:46:50 × kenran quits (~maier@87.123.205.83) (Ping timeout: 260 seconds)
19:48:05 <larou> well, the paper goes from mutually recursive datatypes as fixed points of pairs of base functors
19:48:09 <dminuoso> hekkaidekapus: Cheers, yeah I noticed. Been pondering a bit about it
19:48:21 <larou> and then extends this to parametric recursive datatypes
19:48:42 <larou> anyway, i got to the point where it mentions adjunction
19:49:49 <larou> basiclly just says the fixed point definition for the base functor in the Monad vs Comonad style F-algebra, need to be adjoint to each other
19:50:09 <dminuoso> hekkaidekapus: My main issue is, we dont have any specification in the Haskell report to talk about what context in instance declarations means. And Im struggling at understanding at full depth the quoted Note.
19:50:27 <larou> something about a datatypes realisation being "unique" to a given fixed point induction/coinduction
19:51:28 hackage little-logger 0.3.0 - Basic logging based on co-log https://hackage.haskell.org/package/little-logger-0.3.0 (ejconlon)
19:53:45 <larou> rarg. then instead of having the datatype as the solution of the fixed point equation of the base functor
19:54:01 <larou> it does a pullback by the adjoint morphism (or something)
19:54:22 <larou> like, you use the unfold version of the base function, and the casting from that to the fold version
19:54:36 <larou> and *that* gives an "adjoint fold"
19:54:46 <larou> what a bizarre concept
19:55:54 <larou> so you get "adjoint base functions"
19:57:00 × Gurkenglas_ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds)
19:57:05 <larou> if i was going to say things that are almost wrong to explain, it would be something like "imagine if you tried to fold using the unfolding function, and that worked somehow, but you were doing this to define the datatypes"
19:57:35 <larou> almost not wrong*
19:58:13 <larou> apparently this is more expressive!?
19:58:34 <larou> like adjoint-folds "capture more" than regular folds...
19:59:41 <larou> he says they are at least as expressive since Id is dual to itself...
19:59:45 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
19:59:49 <larou> *baffled*
20:01:34 × Xnuk quits (~xnuk@vultr.xnu.kr) (Quit: ZNC - https://znc.in)
20:01:45 <larou> and then, apparently, the adjunction expressed by currying somehow leads to accumulator patterns!?
20:01:49 Xnuk joins (~xnuk@vultr.xnu.kr)
20:03:29 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
20:04:53 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
20:05:23 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Read error: Connection reset by peer)
20:05:28 × avdb quits (~avdb@ip-213-49-124-15.dsl.scarlet.be) (Ping timeout: 260 seconds)
20:05:50 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
20:06:03 <larou> and then something to do with the adjunction with categorical product giving mutuomorphisms such as the paramorphism required for the basecase guard used in the definition of fac
20:06:23 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Read error: No route to host)
20:06:48 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
20:06:48 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
20:08:08 conal joins (~conal@64.71.133.70)
20:11:05 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Ping timeout: 240 seconds)
20:11:30 <larou> and then by adjunction with the type application for summing over parametric datatypes as an adjoint fold...
20:11:48 <larou> adjunction with the opperation of type application*
20:12:03 <larou> which is equally as peculiar
20:13:29 Guest_72 joins (1fcdcd84@31.205.205.132)
20:13:40 × Guest_72 quits (1fcdcd84@31.205.205.132) (Remote host closed the connection)
20:14:45 <larou> and then finally concatination by the adjunction ebtween left and right kan extensions... just because...
20:15:04 × Guest98072 quits (d03b9e15@208.59.158.21) (Ping timeout: 245 seconds)
20:15:06 <larou> what a waste of time
20:15:08 × larou quits (5201f2b7@gateway/web/cgi-irc/kiwiirc.com/ip.82.1.242.183) (Quit: Connection closed)
20:19:43 rprije joins (~rprije@203-219-208-42.static.tpgi.com.au)
20:20:09 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
20:20:46 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 258 seconds)
20:21:28 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
20:21:31 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
20:21:31 GyroW joins (~GyroW@unaffiliated/gyrow)
20:21:45 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:26:25 × jneira_ quits (~jneira@80.30.100.102) (Ping timeout: 240 seconds)
20:26:28 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
20:27:11 jneira_ joins (~jneira@191.red-37-10-143.dynamicip.rima-tde.net)
20:29:05 × supercoven quits (~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi) (Ping timeout: 240 seconds)
20:29:53 <johnw> who are you talking to, larou?
20:30:18 <geekosaur> they left. thankfully
20:30:25 × shutdown_-h_now quits (~arjan@2001:1c06:2d0b:2312:613f:c21f:11b3:bc2c) (Ping timeout: 240 seconds)
20:30:40 <johnw> his speech sounds awfully similar to another user we banned about six montsh ago
20:31:20 × knupfer quits (~Thunderbi@i5E86B451.versanet.de) (Quit: knupfer)
20:31:20 × jneira_ quits (~jneira@191.red-37-10-143.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
20:31:21 knupfer1 joins (~Thunderbi@200116b82cf69500681ba1c078ac2f17.dip.versatel-1u1.de)
20:31:29 thir joins (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de)
20:31:40 jneira_ joins (~jneira@80.30.100.250)
20:33:12 Tops2 joins (~Tobias@dyndsl-091-249-082-055.ewe-ip-backbone.de)
20:33:44 knupfer1 is now known as knupfer
20:35:51 × thir quits (~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
20:36:21 shutdown_-h_now joins (~arjan@2001:1c06:2d0b:2312:9049:722b:5333:309e)
20:38:14 Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas)
20:39:13 × geekosaur quits (82659a0e@host154-014.vpn.uakron.edu) (Remote host closed the connection)
20:39:59 × knupfer quits (~Thunderbi@200116b82cf69500681ba1c078ac2f17.dip.versatel-1u1.de) (Ping timeout: 244 seconds)
20:40:37 × blip quits (5e86b451@gateway/web/cgi-irc/kiwiirc.com/ip.94.134.180.81) (Ping timeout: 246 seconds)
20:44:59 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
20:46:29 × alp_ quits (~alp@2a01:e0a:58b:4920:70f4:103a:daad:d45e) (Ping timeout: 272 seconds)
20:47:31 × ggole quits (~ggole@2001:8003:8119:7200:245d:f234:9b48:f3a5) (Quit: Leaving)
20:48:46 knupfer joins (~Thunderbi@i5E86B451.versanet.de)
20:49:06 <gentauro> johnw: who left?
20:51:01 <Uniaika> johnw: yeah I kinda noticed that
20:55:13 × hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Quit: Curry, you fools!)
20:55:50 × tv quits (~tv@unaffiliated/tv) (Read error: Connection reset by peer)
20:56:31 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
20:57:12 conal joins (~conal@64.71.133.70)
20:57:17 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:57:22 × xff0x quits (~fox@2001:1a81:5391:7900:f127:8532:42d4:579b) (Ping timeout: 260 seconds)
20:57:30 alp_ joins (~alp@2a01:e0a:58b:4920:8c10:5fbc:1459:e068)
20:57:55 xff0x joins (~fox@2001:1a81:5391:7900:1d93:24cf:d0e0:8889)
20:59:14 × karanlikmadde quits (~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
21:00:01 × Guest25237 quits (~ao2@185.163.110.116) ()
21:01:09 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:03:20 elliott__ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
21:03:42 <monochrom> I'm waiting for one last straw to be an excuse to ban them. :)
21:03:56 <monochrom> Actually if some of you already want to ban now, I can do it.
21:04:28 hackage buffet 0.5.0 - Assembles many Dockerfiles in one. https://hackage.haskell.org/package/buffet-0.5.0 (evolutics)
21:05:28 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
21:05:44 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
21:05:54 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
21:07:23 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
21:08:02 × toorevitimirp quits (~tooreviti@117.182.180.0) (Ping timeout: 260 seconds)
21:08:20 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
21:10:06 <proofofme> which package do you guys use to convert a string of CSV to a list of elements? I saw there are several
21:12:43 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
21:13:03 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
21:13:13 tv joins (~tv@unaffiliated/tv)
21:13:42 <monochrom> I use cassava
21:14:45 <monochrom> More honestly, there is some 10% of the easy case I just use Data.List.span/break and split at commas :)
21:15:05 Zush joins (~Zushauque@d67-193-170-251.home3.cgocable.net)
21:15:10 × Zush quits (~Zushauque@d67-193-170-251.home3.cgocable.net) (Client Quit)
21:15:37 Zus joins (~Zushauque@d67-193-170-251.home3.cgocable.net)
21:16:19 <monochrom> But I escalate to cassava when I need it properly done, esp if there is something like 43591,"monochrom, inc."
21:16:44 <proofofme> thank you! I will try Data.List.span/break!
21:18:23 × p3n quits (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Quit: ZNC 1.8.1 - https://znc.in)
21:18:55 p3n joins (~p3n@217.198.124.246)
21:19:36 frdg parts (47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net) ()
21:19:42 frdg joins (47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net)
21:20:53 × hive-mind quits (~hivemind@rrcs-67-53-148-69.west.biz.rr.com) (Ping timeout: 265 seconds)
21:21:19 × danvet_ quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
21:24:45 <proofofme> hmmm. how does span translate the literal string to the list of elements?
21:25:03 <monochrom> It doesn't. It just splits on the first comma.
21:25:21 <monochrom> Actually even a bit less than that.
21:25:45 <monochrom> > break (',' ==) "abc,def,ghi"
21:25:47 <lambdabot> ("abc",",def,ghi")
21:26:28 <monochrom> You add your own code to detect the leading comma in ",def..." and strip it
21:26:44 <monochrom> You also add your own recursion to continue.
21:27:15 <monochrom> You can steal code from "words" keeping in mind "words" splits on spaces.
21:27:41 <proofofme> hmmm I seee
21:27:58 <proofofme> can this be foldr'ed?
21:28:08 <monochrom> and the fact that words "abc def" = ["abc", "def"] but you want something different for "abc,,,,,def"
21:28:24 × knupfer quits (~Thunderbi@i5E86B451.versanet.de) (Ping timeout: 272 seconds)
21:28:28 hackage postgres-websockets 0.10.0.0 - Middleware to map LISTEN/NOTIFY messages to Websockets https://hackage.haskell.org/package/postgres-websockets-0.10.0.0 (diogob)
21:28:36 <monochrom> No.
21:30:21 machinedgod joins (~machinedg@24.105.81.50)
21:30:45 <monochrom> Maybe I should also let you know of http://hackage.haskell.org/package/split so you don't have to write your own recursion.
21:31:04 <monochrom> But here is my real consideration:
21:31:50 <monochrom> If you don't plan to worry about 43591,"monochrom, inc.", why incur a dependency? The recursion is just 3 lines.
21:32:27 <monochrom> If you do want to incur a dependency, why not incur the proper one?
21:32:43 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
21:33:08 <proofofme> so you WOULD use the split package for an easy case?
21:33:15 <monochrom> No.
21:33:43 × Alleria_ quits (~AllahuAkb@2604:2000:1484:26:c13:bf83:d3a4:854a) (Ping timeout: 244 seconds)
21:34:11 <proofofme> the elements I want to split contain stuff like the 43591, "monochrom, inc."
21:34:25 <monochrom> Then use cassava
21:34:28 <proofofme> there are a lot of random chars, even ',' that will be in it. ah ok
21:34:30 <proofofme> cool
21:34:55 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:35:16 slack1256 joins (~slack1256@181.203.95.77)
21:36:11 Alleria_ joins (~AllahuAkb@2604:2000:1484:26:dcad:5cf5:9c19:447f)
21:38:18 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
21:38:28 whatisRT joins (~whatisRT@2002:5b41:6a33:0:d585:23a3:86e4:f2b4)
21:41:35 Ariakenom joins (~Ariakenom@h-98-128-228-53.NA.cust.bahnhof.se)
21:41:36 <johnw> gentauro: I was thinking of 'fog'
21:42:27 <gentauro> johnw: ahh, fair nok
21:42:52 × Alleria_ quits (~AllahuAkb@2604:2000:1484:26:dcad:5cf5:9c19:447f) (Ping timeout: 260 seconds)
21:43:28 karanlikmadde joins (~karanlikm@2a01:c23:6037:1800:955:6189:d72:9daf)
21:44:05 Lycurgus joins (~niemand@98.4.96.235)
21:44:12 delYsid joins (~user@84-115-55-45.cable.dynamic.surfer.at)
21:44:14 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 272 seconds)
21:47:48 hive-mind joins (~hivemind@rrcs-67-53-148-69.west.biz.rr.com)
21:58:51 <dibblego> I use https://hackage.haskell.org/package/sv
22:00:35 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
22:02:12 <frdg> why would somebody search for functions on stackage instead of hoogle?
22:02:22 × Katarushisu quits (~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net) (Quit: Ping timeout (120 seconds))
22:02:44 Katarushisu joins (~Katarushi@82.30.254.24)
22:02:46 <monochrom> Is that a rhetorical question?
22:02:47 conal joins (~conal@64.71.133.70)
22:03:15 × coot quits (~coot@37.30.35.208.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
22:03:26 × chaosmasttter quits (~chaosmast@p200300c4a710fa01b4d1efe2d5e04ce9.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
22:03:41 <frdg> no. I saw someone use it in a video. This is what I mean by stackage. https://www.stackage.org/
22:04:00 theorb joins (~theorb@cpc81860-swin19-2-0-cust166.3-1.cable.virginm.net)
22:04:11 Rudd0 joins (~Rudd0@185.189.115.108)
22:04:39 <monochrom> I don't use stack or stackage. But I think I understand that a stackage user would like to avoid getting search hits that hit outside stackage.
22:06:29 <frdg> alright. As always I am confused about what stack even is. I used stack for my project and I was able to use packages from everywhere.
22:06:33 <monochrom> I certainly do the parallel thing myself. When I'm looking for "getArgs" in the libraries I actually have, I'm not going to Google it worldwide.
22:07:30 shafox joins (~shafox@106.51.234.111)
22:07:44 skami joins (~user@24.225.186.176)
22:07:45 <frdg> ohh stackage is like hackage.
22:08:07 × theorbtwo quits (~theorb@cpc81860-swin19-2-0-cust166.3-1.cable.virginm.net) (Ping timeout: 246 seconds)
22:08:09 <monochrom> stackage is a meticulously hand-checked subset of hackage.
22:08:50 <frdg> ok I see
22:08:52 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
22:09:09 <monochrom> and the subsetness is along at least 2 orthogonal axis at the same time.
22:09:29 × hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
22:09:52 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
22:10:20 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:1998:2d6c:5e41:4ff5) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:10:29 kupi joins (uid212005@gateway/web/irccloud.com/x-uvssjsekmuehxron)
22:10:51 × Lycurgus quits (~niemand@98.4.96.235) (Quit: Exeunt)
22:11:21 <monochrom> I had a software engineering prof who explained how to achieve reproducible, consistent build of legacy software. Say for example you have pretty old but time-tested code, you just need to fix a small bug.
22:11:33 × dhil quits (~dhil@78.156.97.38) (Ping timeout: 258 seconds)
22:12:22 <monochrom> You may have to be so anal down to the point you have to keep around the old compiler version you used last time, the old OS you used last time, the old hardware you used last time.
22:12:44 × jsynacek quits (~jsynacek@ip-185-149-130-112.kmenet.cz) (Ping timeout: 272 seconds)
22:13:02 <monochrom> stackage's purpose is doing that for library dependencies.
22:13:58 <pjb> Yes, you can try.
22:14:01 <frdg> ok that makes sense.
22:14:31 <pjb> But often you need to keep the old hardware too, and here is the problem. Hardware breaks. Virtual machines bit-rot.
22:14:40 <pjb> It's a full-time job.
22:15:21 son0p joins (~son0p@181.136.122.143)
22:15:25 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:7144:6660:b16:ebff)
22:15:31 <monochrom> We do demand our governments and corporate overlords of "more jobs, and they have to be full-time jobs", no? :)
22:16:01 <dibblego> I use av sim software that only runs on windows-xp
22:16:32 <gentauro> 00:02 < frdg> why would somebody search for functions on stackage instead of hoogle?
22:16:45 <gentauro> frdg: I wouldn't. Hoogle is pretty fast and `stackage` not so much …
22:17:41 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 256 seconds)
22:19:38 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
22:20:48 × elliott__ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
22:21:25 <johnw> I have an app that only works on xp too
22:22:07 <johnw> I have a VM where that app has been running for the last 20 years, only ever being suspended, never exited, because I wouldn't be able to restart it now
22:24:16 conal joins (~conal@64.71.133.70)
22:27:14 × fendor quits (~fendor@046124068105.public.t-mobile.at) (Remote host closed the connection)
22:28:23 × jneira_ quits (~jneira@80.30.100.250) (Ping timeout: 260 seconds)
22:28:45 jneira_ joins (~jneira@80.30.100.250)
22:30:15 <dibblego> heh, yeah I use vbox for winxp — aviation is stuck in the 1960s
22:30:38 netsoundW1 joins (~netsoundW@84.39.116.180)
22:31:16 <hpc> sometimes it seems like it should stay there
22:31:23 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
22:31:32 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
22:31:42 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
22:31:43 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
22:31:43 GyroW joins (~GyroW@unaffiliated/gyrow)
22:32:00 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
22:35:04 × Ariakenom quits (~Ariakenom@h-98-128-228-53.NA.cust.bahnhof.se) (Quit: Leaving)
22:35:19 × slack1256 quits (~slack1256@181.203.95.77) (Ping timeout: 265 seconds)
22:35:29 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:7144:6660:b16:ebff) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:35:40 <dibblego> today I have 4 flights totalling ~6 hours. It is going to be a 18 hour day
22:40:33 Ohg joins (~ohg@5.80.254.148)
22:40:57 <monochrom> I once booked my flight from Munich to Toronto too late. The booking was very late, pretty last minute (OK, last week), it was also summer, so availability sucked. Therefore...
22:40:58 hackage churros 0.1.3.0 - Channel/Arrow based streaming computation library. https://hackage.haskell.org/package/churros-0.1.3.0 (LyndonMaydwell)
22:42:08 <monochrom> it consisted of Munich -> London -> Halifax and St. John (no need to leave plane) -> Montreal -> Toronto
22:42:21 <monochrom> It spanned 24 hours.
22:43:13 <monochrom> (no need to leave plane between Halifax and St. John. I forgot which order.)
22:43:17 <dibblego> I am doing 4 flights today, in command, totalling 6 hours. Since aviation is stuck in the 1960s, I anticipate an additional 12 hours of error-prone, manual administration work
22:43:36 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
22:43:43 <hpc> oh wow, that kind of "have 4 flights"
22:44:21 <dibblego> I may have added that up incorrectly. Standby while I find my pen.
22:45:14 × frdg quits (47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net) (Remote host closed the connection)
22:45:31 <int-e> . o O ( time flies )
22:45:35 <hpc> although, apparently newer gulfstreams are modern in a pretty nice way
22:45:54 chris joins (~chris@81.96.113.213)
22:45:56 <hpc> (source, https://www.code7700.com/ which has some pretty interesting blog posts)
22:46:16 chris is now known as Guest62583
22:47:26 <monochrom> I guess software project delays and flight delays have a lot in common.
22:47:57 hackage webby 1.0.1 - A super-simple web server framework https://hackage.haskell.org/package/webby-1.0.1 (AdityaManthramurthy)
22:48:00 <monochrom> Or "delays" because perhaps we simply always underestimate schedules.
22:48:24 <hpc> monochrom: you should read that link, it's shocking how much is the same
22:48:40 <dibblego> my first one is 0030Z-0200Z want to time it?
22:50:38 <dibblego> that website is very US-oriented and generalises inaccurately in places
22:50:39 × mimi_vx quits (mimi1vx@nat/suse/x-rrcxinfwcsbojhcp) (Ping timeout: 258 seconds)
22:50:57 <hpc> exactly like programming!
22:51:14 <dibblego> :)
22:51:40 × Guest62583 quits (~chris@81.96.113.213) (Remote host closed the connection)
22:52:37 <dibblego> better go
22:54:43 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
22:55:34 Alleria_ joins (~AllahuAkb@2604:2000:1484:26:dcad:5cf5:9c19:447f)
22:55:39 × ystael quits (~ystael@209.6.50.55) (Ping timeout: 256 seconds)
22:59:09 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
23:00:25 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
23:01:57 <justsomeguy> This is kind of a shot in the dark, but ... Where did the idea of pattern matching come from? I'm somewhat interested in what the original motivation was for creating the feature.
23:02:08 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
23:02:54 <justsomeguy> I guess I should probably start by looking searching for things related ML or CLU.
23:04:27 <monochrom> I know pretty little, but ML is the earliest I know of.
23:05:00 <dminuoso> justsomeguy: ALGOL 68 seems to be the earliest language that supports it
23:05:29 <monochrom> But did Algol 68 have algebraic data types?
23:05:32 × Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Quit: Leaving)
23:05:32 <dminuoso> At least that's what a little bit of wiki warrioring reveals
23:05:40 <hpc> if it had a mathematical inspiration, it would probably be definition by parts
23:05:53 <dminuoso> monochrom: well you had union types, at least.
23:06:03 <monochrom> OK that counts.
23:06:17 <dolio> https://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf
23:06:51 <dolio> Might be earlier than 66, too, though.
23:06:54 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
23:06:56 Codaraxis joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
23:07:16 <justsomeguy> Funny; Half the time I ask where a PL feature originates from, it leads to Algol 68.
23:10:14 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
23:12:29 <dolio> Hah, the ISWIM paper is already using the phrase "purely functional" in 1966.
23:13:21 × Ohg quits (~ohg@5.80.254.148) (Remote host closed the connection)
23:16:49 × avn quits (~avn@78-56-108-78.static.zebra.lt) (Read error: Connection reset by peer)
23:18:20 <ski> (Peano) recursive definition of operations on naturals is older
23:19:34 ski . o O ( <https://plato.stanford.edu/entries/recursive-functions/> )
23:20:01 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
23:22:40 × johnw quits (~johnw@haskell/developer/johnw) (Quit: ZNC - http://znc.in)
23:23:34 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:f977:bb39:9180:7f9c)
23:23:50 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:25:27 conal joins (~conal@64.71.133.70)
23:26:12 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
23:28:03 earldouglas joins (~james@unaffiliated/jamestastic)
23:28:11 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
23:28:22 <earldouglas> Is there a way to pattern match on a newtype constructor that's in a hidden module?
23:29:22 <hpc> somehow or another, the data constructor needs to be in scope in order to match on it
23:30:21 <L29Ah> earldouglas: can't you coerce instead?
23:31:01 × Alleria_ quits (~AllahuAkb@2604:2000:1484:26:dcad:5cf5:9c19:447f) (Quit: Textual IRC Client: www.textualapp.com)
23:32:25 × whatisRT quits (~whatisRT@2002:5b41:6a33:0:d585:23a3:86e4:f2b4) (Ping timeout: 240 seconds)
23:34:52 anik joins (~anik@103.23.207.151)
23:35:52 <monochrom> "This instance is only usable if the constructor MkNT is in scope."
23:36:16 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:36:39 conal joins (~conal@64.71.133.70)
23:37:31 mimi_vx joins (mimi1vx@nat/suse/x-mbferublenzmdqyh)
23:37:51 <earldouglas> L29Ah: Do you mean `Data.Coerce (coerce)`? I'm not sure how to use that.
23:38:09 <monochrom> Yes. And unusable as said.
23:39:16 slack1256 joins (~slack1256@181.203.95.77)
23:39:32 × son0p quits (~son0p@181.136.122.143) (Quit: leaving)
23:40:27 <earldouglas> monochrom: Ah, I see that now. Yeah, coerce fails with "The data constructor ... of newtype ... is not in scope"
23:41:37 renzhi joins (~renzhi@modemcable070.17-177-173.mc.videotron.ca)
23:41:38 <earldouglas> I'm probably doing something wrong, but this feels like a bug. Is it even possible to use requestAccept? https://hackage.haskell.org/package/cgi-3001.5.0.0/docs/Network-CGI.html#v:requestAccept
23:41:39 xerox_ joins (~xerox@unaffiliated/xerox)
23:42:02 <earldouglas> I can't import Accept, which is hidden in Network.CGI.Accept, then re-exprted in Network.CGI
23:42:35 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
23:42:37 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:43:17 × anik quits (~anik@103.23.207.151) (Quit: Textual IRC Client: www.textualapp.com)
23:43:47 chris joins (~chris@81.96.113.213)
23:44:10 chris is now known as Guest96118
23:45:48 <monochrom> Use negotiate?
23:46:30 × Guest96118 quits (~chris@81.96.113.213) (Remote host closed the connection)
23:49:30 <earldouglas> That should work. Thanks!
23:51:14 GyroW_ joins (~GyroW@d54C03E98.access.telenet.be)
23:51:14 × GyroW_ quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
23:51:14 GyroW_ joins (~GyroW@unaffiliated/gyrow)
23:52:23 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
23:53:56 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:54:20 Alleria_ joins (~AllahuAkb@2604:2000:1484:26:4c41:7084:aa7f:3802)
23:55:37 anik joins (~anik@103.23.207.151)
23:56:11 larou joins (5201f2b7@gateway/web/cgi-irc/kiwiirc.com/ip.82.1.242.183)
23:56:12 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
23:58:09 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:f977:bb39:9180:7f9c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:58:26 <larou> do constraints in smart constructors work at type level?
23:58:45 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)

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