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.