Home freenode/#haskell: Logs Calendar

Logs on 2020-12-06 (freenode/#haskell)

00:00:03 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:00:52 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection)
00:00:55 × fendor_ quits (~fendor@77.119.129.145.wireless.dyn.drei.com) (Remote host closed the connection)
00:01:32 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
00:03:45 halbGefressen joins (~halbGefre@2a02:810d:f40:2a9c:a4fe:2adc:248b:466f)
00:04:15 × cosimone quits (~cosimone@93-47-228-249.ip115.fastwebnet.it) (Ping timeout: 260 seconds)
00:04:42 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 272 seconds)
00:05:11 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
00:08:37 × infinity0 quits (~infinity0@freenet/developer/infinity0) (Ping timeout: 264 seconds)
00:09:31 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:a9cd:d01b:63a8:de53:5983)
00:09:52 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:a9cd:d01b:63a8:de53:5983) (Client Quit)
00:10:02 × boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed)
00:10:24 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
00:11:18 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
00:13:50 × halbGefressen quits (~halbGefre@2a02:810d:f40:2a9c:a4fe:2adc:248b:466f) (Quit: halbGefressen)
00:14:53 Jeanne-Kamikaze joins (~Jeanne-Ka@66.115.189.235)
00:16:39 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:69cb:4c40:655a:5f75) (Remote host closed the connection)
00:19:04 Vulfe joins (~vulfe@2600:1702:31b0:34e0:69cb:4c40:655a:5f75)
00:20:35 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 246 seconds)
00:21:32 Vulfe_ joins (~vulfe@2600:1702:31b0:34e0:6dd4:a10a:cd57:9d07)
00:22:53 <cads> monochrom, I hate to say that I have recently declared for VI in that conflict
00:23:24 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:69cb:4c40:655a:5f75) (Ping timeout: 240 seconds)
00:24:38 <cads> I don't understand why the ghc proposal process doesn't require an implementation along with the proposal https://github.com/ghc-proposals/ghc-proposals#how-to-start-a-new-proposal
00:25:46 × Vulfe_ quits (~vulfe@2600:1702:31b0:34e0:6dd4:a10a:cd57:9d07) (Ping timeout: 244 seconds)
00:25:53 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:a9cd:d01b:63a8:de53:5983)
00:25:56 <cads> saying "you need to have a correct implementation" would do a lot to prove performance charachteristics and utility - to wit, the community would be free to /try/ proposed changes
00:26:00 <cads> by default
00:26:44 <cads> is the implementation cost of some propose features so large that it depends on the committee to implement/attract implementers?
00:27:55 haskellfan joins (6ca82605@dhcp-108-168-38-5.cable.user.start.ca)
00:28:17 <cads> 1. It has a spec. 2. It has code that implements the spec. 3. The code and spec don't totally stink (subjective review criterion) => this is a standalone proposal, and it warrants inclusion in the repo
00:29:29 <cads> not saying "machine checked correctness proofs" here, but 80% unit test coverage for unit tests that can run under 10 seconds, sounds like a good idea
00:29:56 <cads> ie, that's what I will demand for any hask code within my own org
00:32:53 Chronic joins (~Chronic__@84.203.103.100)
00:33:20 <ephemient> nfd9001: I Ieft a message while you were disconnected yesterday
00:33:29 Chronic is now known as Kronic
00:34:31 Tario joins (~Tario@200.119.184.125)
00:34:33 × Kaivo quits (~Kaivo@104-200-86-99.mc.derytele.com) (Quit: WeeChat 2.9)
00:34:48 × mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew)
00:37:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:40:44 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:a9cd:d01b:63a8:de53:5983) (Quit: Textual IRC Client: www.textualapp.com)
00:41:29 da39a3ee5e6b4b0d joins (~da39a3ee5@mx-ll-171.5.29-209.dynamic.3bb.co.th)
00:43:13 × argent0 quits (~argent0@168.227.97.34) (Ping timeout: 272 seconds)
00:43:28 × haskellfan quits (6ca82605@dhcp-108-168-38-5.cable.user.start.ca) (Remote host closed the connection)
00:46:40 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
00:48:16 conal joins (~conal@64.71.133.70)
00:50:03 × emmanuel_erc quits (~user@2604:2000:1382:ce03::9af) (Ping timeout: 244 seconds)
00:50:48 × Ariakenom quits (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
00:51:41 × BlackCapCoder quits (~blackcap@48.80-203-23.nextgentel.com) (Ping timeout: 244 seconds)
00:51:43 × conal quits (~conal@64.71.133.70) (Client Quit)
00:52:16 conal joins (~conal@64.71.133.70)
00:52:16 × Tario quits (~Tario@200.119.184.125) (Read error: Connection reset by peer)
00:52:26 Tario joins (~Tario@201.192.165.173)
00:52:31 × conal quits (~conal@64.71.133.70) (Client Quit)
00:55:25 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
00:55:40 conal joins (~conal@64.71.133.70)
00:55:40 × conal quits (~conal@64.71.133.70) (Client Quit)
00:56:56 Vulfe joins (~vulfe@2600:1702:31b0:34e0:6dd4:a10a:cd57:9d07)
00:57:22 × borne quits (~fritjof@200116b8645b9f009ba1d43461655289.dip.versatel-1u1.de) (Ping timeout: 244 seconds)
00:57:47 conal joins (~conal@64.71.133.70)
01:00:37 × conal quits (~conal@64.71.133.70) (Client Quit)
01:01:25 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:6dd4:a10a:cd57:9d07) (Ping timeout: 244 seconds)
01:01:45 Ariakenom joins (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se)
01:02:04 × Ariakenom quits (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Client Quit)
01:02:20 × nyaomi quits (~naomi@cpe-74-75-6-125.maine.res.rr.com) (Ping timeout: 272 seconds)
01:02:26 conal joins (~conal@64.71.133.70)
01:02:34 × conal quits (~conal@64.71.133.70) (Client Quit)
01:03:51 conal joins (~conal@64.71.133.70)
01:04:09 × conal quits (~conal@64.71.133.70) (Client Quit)
01:04:56 conal joins (~conal@64.71.133.70)
01:04:56 × conal quits (~conal@64.71.133.70) (Client Quit)
01:07:48 borne joins (~fritjof@200116b8645b9f009ba1d43461655289.dip.versatel-1u1.de)
01:09:19 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
01:10:29 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
01:10:43 × dhil quits (~dhil@195.213.192.34) (Ping timeout: 246 seconds)
01:12:21 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
01:14:15 × Amras quits (~Amras@unaffiliated/amras) (Ping timeout: 272 seconds)
01:16:18 × m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 256 seconds)
01:16:29 BlackCapCoder joins (~blackcap@48.80-203-23.nextgentel.com)
01:17:26 × joaj quits (~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca) (Ping timeout: 264 seconds)
01:18:26 joaj joins (~joaj@2001:818:e326:8200:9fc:6bde:c18a:1771)
01:18:31 hackage c2hs 0.28.7 - C->Haskell FFI tool that gives some cross-language type safety https://hackage.haskell.org/package/c2hs-0.28.7 (deech)
01:20:58 Vulfe joins (~vulfe@2600:1702:31b0:34e0:6dd4:a10a:cd57:9d07)
01:22:14 × pjb quits (~t@2a01cb04063ec50041ee30a820ddb685.ipv6.abo.wanadoo.fr) (Ping timeout: 264 seconds)
01:22:16 × opweiqw quits (~opweiqw@2604:880:50:5f:63:0:f0:1) (Remote host closed the connection)
01:24:02 hackage grow-vector 0.1.0.0 - Mutable vector with efficient appends https://hackage.haskell.org/package/grow-vector-0.1.0.0 (NCrashed)
01:27:12 conal joins (~conal@64.71.133.70)
01:28:13 × Feuermagier quits (~Feuermagi@213.178.26.41) (Remote host closed the connection)
01:28:23 × thunderrd quits (~thunderrd@183.182.110.8) (Remote host closed the connection)
01:28:29 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
01:29:15 × conal quits (~conal@64.71.133.70) (Client Quit)
01:30:30 × softwarm quits (4408f588@ip68-8-245-136.sd.sd.cox.net) (Ping timeout: 245 seconds)
01:31:34 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
01:32:09 argent0 joins (~argent0@168.227.97.34)
01:36:16 mounty1 joins (~mounty@210.1.196.133)
01:36:16 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
01:37:01 orion joins (~orion@c-76-19-238-5.hsd1.nh.comcast.net)
01:37:01 × orion quits (~orion@c-76-19-238-5.hsd1.nh.comcast.net) (Changing host)
01:37:01 orion joins (~orion@unaffiliated/orion)
01:42:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:43:08 Lord_of_Life_ joins (~Lord@46.217.217.114)
01:43:54 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Remote host closed the connection)
01:44:08 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
01:44:34 Feuermagier joins (~Feuermagi@213.178.26.41)
01:45:23 × da39a3ee5e6b4b0d quits (~da39a3ee5@mx-ll-171.5.29-209.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:45:25 × Lord_of_Life quits (~Lord@46.217.216.2) (Ping timeout: 240 seconds)
01:45:30 Lord_of_Life_ is now known as Lord_of_Life
01:45:59 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
01:46:56 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
01:47:11 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
01:47:32 ukari joins (~ukari@unaffiliated/ukari)
01:47:45 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
01:48:26 × falafel quits (~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 256 seconds)
01:48:48 × Feuermagier quits (~Feuermagi@213.178.26.41) (Remote host closed the connection)
01:49:16 × columbarius quits (~columbari@mue-88-130-54-019.dsl.tropolys.de) (Ping timeout: 240 seconds)
01:51:27 columbarius joins (~columbari@i5E86B34D.versanet.de)
01:51:34 Feuermagier joins (~Feuermagi@213.178.26.41)
01:51:49 conal joins (~conal@64.71.133.70)
01:51:49 × conal quits (~conal@64.71.133.70) (Client Quit)
01:52:00 × kipras quits (~Kipras@78-56-235-39.static.zebra.lt) (Ping timeout: 256 seconds)
01:55:50 conal joins (~conal@64.71.133.70)
01:56:31 × conal quits (~conal@64.71.133.70) (Client Quit)
01:56:41 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
01:57:57 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:cb1:a2e:bc62:aff6) (Ping timeout: 272 seconds)
01:57:58 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
01:58:52 softwarm joins (4408f588@ip68-8-245-136.sd.sd.cox.net)
02:02:32 hackage hledger-lib 1.20 - A reusable library providing the core functionality of hledger https://hackage.haskell.org/package/hledger-lib-1.20 (SimonMichael)
02:05:33 christo joins (~chris@81.96.113.213)
02:10:59 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Remote host closed the connection)
02:16:57 falafel joins (~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
02:17:59 × Aquazi quits (uid312403@gateway/web/irccloud.com/x-bkkscsldnugnnelg) (Quit: Connection closed for inactivity)
02:18:36 xff0x joins (~fox@2001:1a81:522b:1800:ae20:ad8a:33ca:dfa5)
02:21:25 × xff0x_ quits (~fox@port-92-193-238-203.dynamic.as20676.net) (Ping timeout: 246 seconds)
02:22:42 thunderrd joins (~thunderrd@183.182.110.8)
02:23:03 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:25:06 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
02:25:49 × joaj quits (~joaj@2001:818:e326:8200:9fc:6bde:c18a:1771) (Ping timeout: 272 seconds)
02:30:21 Tops2 joins (~Tobias@dyndsl-091-249-083-001.ewe-ip-backbone.de)
02:31:25 × s00pcan quits (~chris@075-133-056-178.res.spectrum.com) (Ping timeout: 264 seconds)
02:32:58 s00pcan joins (~chris@107.181.165.217)
02:34:10 × Tops21 quits (~Tobias@dyndsl-091-249-083-001.ewe-ip-backbone.de) (Ping timeout: 272 seconds)
02:37:31 × xchg quits (~xchg@185.204.1.185) (Remote host closed the connection)
02:41:36 × cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
02:41:39 × alp quits (~alp@2a01:e0a:58b:4920:f8ca:e52d:bace:9aad) (Ping timeout: 272 seconds)
02:41:49 × Kronic quits (~Chronic__@84.203.103.100) (Quit: Leaving)
02:45:13 × sw1nn quits (~sw1nn@host81-131-191-165.range81-131.btcentralplus.com) (Ping timeout: 264 seconds)
02:45:27 <ezzieyguywuf> does cabal update update any packages?
02:45:32 <ezzieyguywuf> or just the database?
02:45:56 × solonarv quits (~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr) (Ping timeout: 240 seconds)
02:47:17 <MarcelineVQ> just the hackage index
02:48:01 × Tops2 quits (~Tobias@dyndsl-091-249-083-001.ewe-ip-backbone.de) (Quit: Leaving.)
02:48:12 <ezzieyguywuf> how do I tell it to update any packages that have never versions?
02:48:29 <ezzieyguywuf> or do I just have to do that manually?
02:48:38 <ezzieyguywuf> specifically I'm just thinking about the things I've installed with cabal install
02:49:43 <MarcelineVQ> manually. you'd type cabal install thething after a cabal update
02:50:27 <sclv> with v2 whenever you cabal-build it'll calculate a plan with the latest avail pkgs
02:50:41 <ezzieyguywuf> MarcelineVQ: gotcha.
02:51:08 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Quit: Leaving)
02:51:26 <ezzieyguywuf> so I have to know "ah, hledger v1.20 dropped, time to manually update!"
02:51:30 <ezzieyguywuf> seems a bit tedious
02:51:39 <ezzieyguywuf> sclv: lol, that wasn't the case before?
02:54:45 sparsity joins (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
02:54:47 <sclv> in v1 it uses the already installed versions if they satisfy the deps
02:55:08 <sclv> i mean for an executable though of course its not going to magically keep them up to date in the background
02:55:11 <ezzieyguywuf> interesting
02:55:14 <sclv> its not like a system package manager
02:55:19 <sclv> its a build tool that can fetch deps
02:55:22 <ezzieyguywuf> indeed it is not.
02:55:36 <ezzieyguywuf> so I wonder if I should avoid using `cabal install` and instead prefer my package manager
02:55:56 <sclv> for executables, if you're ok with the release schedule of your package manager, yes
02:56:00 <sclv> if you want to be more bleeding edge, no
02:56:14 <monochrom> Your package manager lags way back behind.
02:56:35 <sclv> i mean for 90% of the executables on any given linux box i'm okay with that tho
02:56:55 <sclv> just.. i won't expect to be on the latest and greatest by a longshot
02:57:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
02:57:14 <monochrom> But to be honest, I just use ubuntu's version of pandoc, yes. :)
02:57:31 <monochrom> But totally not ubuntu's version of GHC, random, QuickCheck.
02:57:35 <ezzieyguywuf> lol, my package manager doesn't have hledger anyway
02:57:59 <ezzieyguywuf> monochrom: but QuickCheck, for example, I just use while coding, i.e. not as an executable in my path
02:58:07 paolo|out joins (~paolo|out@185.163.110.125)
02:58:52 sw1nn joins (~sw1nn@2a00:23c6:2385:3a00:415:b4b7:c159:18ea)
03:05:33 <sm[m]> ezzieyguywuf: in hledger's case, there's a curl command you could run with cron :)
03:11:23 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
03:13:43 vicfred joins (~vicfred@unaffiliated/vicfred)
03:14:03 pavonia joins (~user@unaffiliated/siracusa)
03:14:06 CMCDragonkai2 joins (~Thunderbi@124.19.3.250)
03:15:45 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Ping timeout: 244 seconds)
03:17:24 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 260 seconds)
03:19:01 <ezzieyguywuf> sm[m]: lol, I'm hesitant enough as it is running these variosu curl stuffies, without putting it on a cron
03:19:14 <ezzieyguywuf> and cron is not the type of package management I'm interesting in, lol.
03:20:11 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
03:22:06 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit)
03:22:28 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
03:23:33 conal joins (~conal@64.71.133.70)
03:27:12 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
03:28:56 <sm[m]> quite right :) though it's kind of like Debians unattended-upgrades..
03:28:57 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:31:48 rurt91 joins (~rurt91@gateway/tor-sasl/rurt91)
03:32:40 lagothrix is now known as Guest41331
03:32:40 xirhtogal joins (~lagothrix@unaffiliated/lagothrix)
03:32:40 × Guest41331 quits (~lagothrix@unaffiliated/lagothrix) (Killed (tolkien.freenode.net (Nickname regained by services)))
03:32:41 xirhtogal is now known as lagothrix
03:33:13 × theDon quits (~td@muedsl-82-207-238-039.citykom.de) (Ping timeout: 264 seconds)
03:34:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
03:34:41 theDon joins (~td@94.134.91.74)
03:38:22 × xff0x quits (~fox@2001:1a81:522b:1800:ae20:ad8a:33ca:dfa5) (Ping timeout: 260 seconds)
03:38:41 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
03:39:01 xff0x joins (~fox@83.236.23.112)
03:39:36 thusiiam joins (324240fd@S0106a0ff703dd1e7.cg.shawcable.net)
03:42:39 × jmsx quits (~jordan@li1158-85.members.linode.com) (Quit: bye o/)
03:43:14 jmsx joins (~jordan@li1158-85.members.linode.com)
03:53:05 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:a9cd:d01b:63a8:de53:5983)
03:55:32 × ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection)
03:56:17 × softwarm quits (4408f588@ip68-8-245-136.sd.sd.cox.net) (Remote host closed the connection)
03:56:35 softwarm joins (4408f588@ip68-8-245-136.sd.sd.cox.net)
03:59:06 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:6dd4:a10a:cd57:9d07) (Remote host closed the connection)
04:00:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:01:10 × sparsity quits (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
04:01:32 × natechan quits (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
04:02:03 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
04:03:18 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
04:04:00 drincruz_ joins (~adriancru@ool-44c748be.dyn.optonline.net)
04:04:43 × Jeanne-Kamikaze quits (~Jeanne-Ka@66.115.189.235) (Quit: Leaving)
04:05:39 × dxld quits (~dxld@rush.pub.dxld.at) (Quit: Bye)
04:05:56 dxld joins (~dxld@rush.pub.dxld.at)
04:08:50 natechan joins (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
04:12:43 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
04:16:20 × jmchael quits (~Chi1thang@87.112.60.168) (Ping timeout: 256 seconds)
04:17:06 drbean joins (~drbean@TC210-63-209-155.static.apol.com.tw)
04:17:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Ping timeout: 264 seconds)
04:18:03 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 260 seconds)
04:19:05 urek joins (~urek@186.215.8.193)
04:19:16 × Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 240 seconds)
04:19:56 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
04:20:46 Cthalupa joins (~cthulhu@47.186.47.75)
04:20:48 <ezzieyguywuf> hrm, hledger-web seems to hang if I change the journal file using my text editor
04:21:05 × urek__ quits (~urek@2804:7f1:e10a:a8d:a85d:6d9e:3db:9450) (Ping timeout: 272 seconds)
04:21:16 × darjeeling_ quits (~darjeelin@122.245.218.196) (Ping timeout: 240 seconds)
04:22:00 <ezzieyguywuf> also, I tried `hledger-web MyAccount` but it still listed everything
04:22:09 <sm[m]> ezzieyguywuf: strange, can you reproduce with a minimal file ?
04:22:23 <ezzieyguywuf> sm[m]: let me try h/o
04:23:06 × nerdypepper quits (nerdypeppe@152.67.160.69) (Ping timeout: 272 seconds)
04:24:48 <ezzieyguywuf> sm[m]: this reproduces both
04:24:50 <ezzieyguywuf> https://dpaste.com/89G2NYZ9H
04:24:58 <ezzieyguywuf> `hledger-web -f Test.journal Checking`
04:27:02 justsomeguy joins (~justsomeg@216.186.218.241)
04:27:02 × justsomeguy quits (~justsomeg@216.186.218.241) (Changing host)
04:27:02 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
04:28:01 <sm[m]> thanks! not for me..
04:28:06 <sm[m]> shall we take it to #hledger ?
04:28:16 <ezzieyguywuf> lol thought I was in there already whoop
04:32:50 ario joins (~ario@178.62.234.211)
04:32:57 <ario> hi
04:33:08 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
04:34:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
04:36:20 × falafel quits (~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 256 seconds)
04:36:51 <rurt91> hi
04:38:40 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:a9cd:d01b:63a8:de53:5983) (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:40:13 × borne quits (~fritjof@200116b8645b9f009ba1d43461655289.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
04:41:00 zaquest joins (~notzaques@5.128.210.178)
04:41:26 × CMCDragonkai2 quits (~Thunderbi@124.19.3.250) (Ping timeout: 256 seconds)
04:44:29 cads joins (~cads@ip-64-72-99-232.lasvegas.net)
04:47:39 × mozzarella quits (~sam@unaffiliated/sam113101) (Read error: Connection reset by peer)
04:47:46 × zaquest quits (~notzaques@5.128.210.178) (Read error: Connection reset by peer)
04:52:43 × iqubic quits (~user@2601:602:9500:4870:55f6:de24:d001:bc51) (Remote host closed the connection)
04:54:46 iqubic joins (~user@2601:602:9500:4870:81cb:3fd4:dbe9:8921)
04:55:05 mozzarella joins (~sam@unaffiliated/sam113101)
04:56:20 × softwarm quits (4408f588@ip68-8-245-136.sd.sd.cox.net) (Ping timeout: 245 seconds)
04:59:56 × rcdilorenzo quits (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo)
05:03:08 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:03:24 × shutdown_-h_now quits (~arjan@2001:1c06:2d0b:2312:a913:5438:3a24:3de8) (Ping timeout: 240 seconds)
05:05:24 <koala_man> I'm trying to load a file in ghci but it says "Could not find module ‘Test.QuickCheck.All’". Can I point it to my cabal installed version? My ~/.cabal dir has a Test/QuickCheck/All.hi deep down but no .hs/.lhs/.hsig/.lhsig that ghci looks for
05:06:16 <ezzieyguywuf> if I cabal install some-package-0.5, but alreaddy have some-package-0.6 installed, how can I make cabal update the symlink in ~/.local/bin?
05:07:39 <ezzieyguywuf> hrm, ok just delete symlink and re-install
05:08:31 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
05:08:54 boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
05:09:18 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
05:09:43 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
05:10:21 shutdown_-h_now joins (~arjan@2001:1c06:2d0b:2312:d1c6:3077:d789:1553)
05:11:14 × drincruz_ quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 256 seconds)
05:13:15 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
05:14:16 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
05:18:08 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Ping timeout: 260 seconds)
05:23:40 × unlink2 quits (~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de) (Remote host closed the connection)
05:24:42 × hexo quits (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
05:24:42 × srk quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
05:24:58 hexo joins (~hexo@gateway/tor-sasl/hexo)
05:25:03 unlink2 joins (~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de)
05:25:07 srk joins (~sorki@gateway/tor-sasl/sorki)
05:26:09 Saukk joins (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
05:27:54 × unlink2 quits (~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de) (Remote host closed the connection)
05:33:00 unlink2 joins (~unlink2@p5dc0acf8.dip0.t-ipconnect.de)
05:33:19 × urek quits (~urek@186.215.8.193) (Ping timeout: 260 seconds)
05:33:37 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
05:34:59 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-xcscidhxhkxwhlyp) ()
05:35:08 conal joins (~conal@64.71.133.70)
05:37:05 × Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 272 seconds)
05:37:50 Cthalupa joins (~cthulhu@47.186.47.75)
05:38:54 acidjnk_new joins (~acidjnk@p200300d0c719ff043467fd7c213734d3.dip0.t-ipconnect.de)
05:39:47 rif joins (~rif@c-24-4-99-49.hsd1.ca.comcast.net)
05:40:09 <rif> Hello friends. Can anyone offer some package management help?
05:41:33 <arahael> rif: You might want to be a little bit more specific if you want genuine help.
05:42:31 <rif> Sorry, new here, I was trying to figure out if this was a reasonable place to ask a detailed question. I can certainly be a lot more specific.
05:43:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:45:13 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
05:45:20 <rif> High-level: I installed Haskell platform on ubuntu. Things seemed to be working fine, but tonight I tried to import Data.List.Unique in a program and it didn't work. I ended up trying `cabal install --lib Unique`. After that, I could import Data.List.Unique, but I can no longer import Data.List.Split --- I get errors about the split package being hidden. Additionally, neither cabal nor ghc seem to think the unique package is actually
05:45:21 <rif> installed (e.g, `ghc-package -list` doesn't show it as either local or global). So I'm not sure how to proceed. Any advice is welcome.
05:45:54 <rif> Sorry, "ghc-pkg list" doesn't show unique as installed.
05:48:33 euisuny joins (4450e645@c-68-80-230-69.hsd1.pa.comcast.net)
05:48:51 <arahael> rif: I have to go, but it's probably hidden because it's not listed in your project's cabal file.
05:50:14 <rif> I don't know that I *have* a cabal file? All I did was start creating a file with a name like foo.hs, and then saying `ghc --make foo.hs` to get a binary. But your comment gives me ideas for things to look at --- I guess I edited some default cabal config.
05:50:40 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
05:51:06 euisuny_ joins (~euisuny@2601:47:4500:2140:89e0:403e:4683:85b2)
05:51:30 <arahael> I think you'll want to try a `cabal init` or something
05:51:39 × euisuny quits (4450e645@c-68-80-230-69.hsd1.pa.comcast.net) (Remote host closed the connection)
05:51:48 × euisuny_ quits (~euisuny@2601:47:4500:2140:89e0:403e:4683:85b2) (Client Quit)
05:51:49 <arahael> Which should give you a file. Anyway, I'm gone.
05:51:56 <rif> Thank you!
05:52:02 × rurt91 quits (~rurt91@gateway/tor-sasl/rurt91) (Remote host closed the connection)
05:52:05 euisuny joins (~euisuny@2601:47:4500:2140:89e0:403e:4683:85b2)
05:52:23 rurt91 joins (~rurt91@gateway/tor-sasl/rurt91)
05:54:53 × Saukk quits (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Ping timeout: 260 seconds)
05:55:54 × rurt91 quits (~rurt91@gateway/tor-sasl/rurt91) (Remote host closed the connection)
05:56:05 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
05:56:13 rurt91 joins (~rurt91@gateway/tor-sasl/rurt91)
05:56:31 Saukk joins (~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e)
05:57:01 × argent0 quits (~argent0@168.227.97.34) (Ping timeout: 246 seconds)
05:58:46 × rif quits (~rif@c-24-4-99-49.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
05:59:03 rif joins (~rif@c-24-4-99-49.hsd1.ca.comcast.net)
06:00:57 × dxld quits (~dxld@rush.pub.dxld.at) (Quit: Bye)
06:03:26 × bitmapper quits (uid464869@gateway/web/irccloud.com/x-kvwfkzcfenglexqu) (Quit: Connection closed for inactivity)
06:03:33 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8)
06:03:41 × BlackCapCoder quits (~blackcap@48.80-203-23.nextgentel.com) (Ping timeout: 272 seconds)
06:04:08 dxld joins (~dxld@rush.pub.dxld.at)
06:09:06 coot joins (~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl)
06:10:31 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
06:13:57 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
06:15:24 conal joins (~conal@64.71.133.70)
06:16:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
06:18:38 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Ping timeout: 264 seconds)
06:20:29 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
06:21:41 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
06:22:07 conal joins (~conal@64.71.133.70)
06:22:48 × conal quits (~conal@64.71.133.70) (Client Quit)
06:23:59 sh9 joins (~sh9@softbank060116136158.bbtec.net)
06:24:36 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
06:25:38 × euisuny quits (~euisuny@2601:47:4500:2140:89e0:403e:4683:85b2) ()
06:28:22 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) ()
06:29:29 × elliott_ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
06:29:50 darjeeling_ joins (~darjeelin@112.16.171.8)
06:30:19 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
06:31:14 × Sayless quits (~seiless@45.132.225.91) (Ping timeout: 246 seconds)
06:31:22 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
06:32:22 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
06:33:42 fxg joins (~fxg@unaffiliated/fxg)
06:33:49 × thusiiam quits (324240fd@S0106a0ff703dd1e7.cg.shawcable.net) (Ping timeout: 245 seconds)
06:34:37 × rif quits (~rif@c-24-4-99-49.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
06:35:20 falafel joins (~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
06:36:25 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
06:39:42 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:40:38 × notzmv quits (~user@unaffiliated/zmv) (Read error: Connection reset by peer)
06:41:08 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
06:41:27 × boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Ping timeout (120 seconds))
06:41:52 da39a3ee5e6b4b0d joins (~da39a3ee5@ppp-223-24-171-28.revip6.asianet.co.th)
06:44:46 × phaazon quits (~phaazon@2001:41d0:a:fe76::1) (Remote host closed the connection)
06:45:04 nyaomi joins (~naomi@cpe-74-75-6-125.maine.res.rr.com)
06:45:18 phaazon joins (~phaazon@2001:41d0:a:fe76::1)
06:46:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:47:51 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
06:51:05 × fxg quits (~fxg@unaffiliated/fxg) (Ping timeout: 240 seconds)
06:51:47 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
06:51:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
06:54:48 clever_ joins (~clever@142.68.248.92)
06:55:51 × xelxebar quits (~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection)
06:56:39 xelxebar joins (~xelxebar@gateway/tor-sasl/xelxebar)
06:57:51 × clever quits (~clever@NixOS/user/clever) (Ping timeout: 256 seconds)
06:59:16 × ddellacosta quits (dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
07:02:25 × Saukk quits (~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e) (Remote host closed the connection)
07:02:52 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds)
07:03:06 × darjeeling_ quits (~darjeelin@112.16.171.8) (Ping timeout: 256 seconds)
07:07:39 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 272 seconds)
07:11:55 × Guest4563 quits (~Siempre@4e69b241.skybroadband.com) (Ping timeout: 246 seconds)
07:13:08 × texasmynsted quits (~texasmyns@212.102.45.112) (Ping timeout: 260 seconds)
07:15:57 chris joins (~chris@bras-vprn-nwmkon8540w-lp130-10-142-112-210-136.dsl.bell.ca)
07:16:13 <jle`> koz_: hey, did you ever make any libraries involving fintary with Word-backed Sets?
07:16:22 chris is now known as Guest34720
07:16:23 <koz_> jle`: Nope.
07:16:37 <koz_> I worked on the idea a bit but never published it.
07:17:44 darjeeling_ joins (~darjeelin@112.16.171.8)
07:18:42 <jle`> ah, interesting. was talking about a similiar idea RE: AoC stuff and thought such a thing might be useful
07:18:48 <jle`> are you looking for PRs? :)
07:20:24 <jle`> it'd be in finitary-derive, right?
07:20:46 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
07:20:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:21:30 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
07:22:16 × doct0rhu quits (~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net) (Remote host closed the connection)
07:23:47 XR0DRiG0 joins (~Farinhoca@softbank126057187159.bbtec.net)
07:23:57 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
07:31:58 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Remote host closed the connection)
07:37:19 toorevitimirp joins (~tooreviti@117.182.181.85)
07:38:49 bitmagie joins (~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de)
07:39:26 <topos> Finitary + word-backed sets and Alexandra Ocasio-Cortez.
07:39:29 <topos> what a night
07:41:12 × bitmagie quits (~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de) (Client Quit)
07:46:44 britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch)
07:47:43 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
07:48:06 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
07:50:13 <koz_> It'd be a different package most likely.
07:50:28 <koz_> Since you're going for a set based on a bitvector right?
07:50:45 <koz_> (it could actually be a newtype)
07:51:23 <koz_> (newtype FinitarySet a = FinitarySet (Vector (Cardinality a) Bit))
07:51:35 z0 joins (~z0@188.251.65.247)
07:53:19 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
07:53:54 argent0 joins (~argent0@168.227.97.29)
07:53:59 <jle`> mhm
07:54:05 × argent0 quits (~argent0@168.227.97.29) (Client Quit)
07:54:10 <jle`> ah yeah, that would work i think :)
07:54:17 <jle`> or maybe just a WordN
07:54:22 <koz_> WordN?
07:54:35 argento joins (~argent0@168.227.97.29)
07:54:37 <koz_> The main reason to use Vector (Cardinality a) Bit is just to borrow all the functions.
07:54:47 <koz_> (and you could borrow like, 90% of the things you'd want)
07:54:57 <jle`> Word8, Word64, etc :)
07:55:02 <koz_> Ah.
07:55:03 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
07:55:19 <koz_> Well, Vector (Cardinality a) Bit is secretly a Vector Word64 underneath.
07:55:23 <jle`> with the constraint that Cardinality a has to be less than 8, 64, etc.
07:55:37 <jle`> hm, for unboxed vector?
07:55:42 <koz_> Yep.
07:55:49 <koz_> Let me link.
07:55:56 <jle`> oh neat. i had that suspicion but thought there might be paging issues or something
07:56:00 bitmagie joins (~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de)
07:56:16 <koz_> http://hackage.haskell.org/package/bitvec
07:56:16 × falafel quits (~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 240 seconds)
07:56:41 <jle`> ooooh
07:56:43 <koz_> This defines a newtype around Bool (called Bit) which has the relevant instances, including Unbox.
07:56:50 <koz_> So it's packed super-tight.
07:56:53 <jle`> noice
07:57:00 <jle`> clever that they can just abuse the Unbox instance
07:57:05 <koz_> Yep.
07:57:11 <koz_> So you can just transitively abuse vector-sized.
07:57:41 <koz_> There's also some specialized ops that you could use.
07:58:05 <koz_> (zipBits for example)
07:58:23 <koz_> You can use that to implement blindingly fast intersection and union.
07:59:08 <koz_> You can also implement 'choose :: FinitarySet a -> Maybe a' using 'bitIndex'.
07:59:14 <koz_> Also very fast.
07:59:20 <jle`> i was looking at zipBits ... at first i thought it was inefficient, but then i noticed the type
07:59:22 <jle`> very clever
07:59:40 <koz_> Yeah, it's a clever hack.
07:59:44 <jle`> also... `instance Bits (Vector Bit)`
07:59:46 <jle`> dang
07:59:52 <koz_> Yup.
07:59:57 <koz_> Bodigrim did the work.
08:00:12 <jle`> <3
08:00:21 <koz_> So basically if you want FinitarySet, that's how I'd go about it.
08:00:32 × argento quits (~argent0@168.227.97.29) (Remote host closed the connection)
08:00:42 <koz_> Amusingly, if you want to galaxy brain it up, you can do FinitaryMultiMap a b.
08:00:47 <koz_> (by using a bitmatrix)
08:01:05 × bitmagie quits (~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de) (Quit: bitmagie)
08:01:29 × nowhere_man quits (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Ping timeout: 272 seconds)
08:01:38 <koz_> Also makes me wonder if a MutableFinitarySet m a is a worthwhile idea.
08:01:52 <koz_> (and if so, it needs a better name)
08:03:07 × polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9)
08:04:44 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
08:05:37 × darjeeling_ quits (~darjeelin@112.16.171.8) (Ping timeout: 264 seconds)
08:06:32 <jle`> the possibilities are endless
08:07:18 <koz_> The multimap is the one I question the most.
08:07:26 <koz_> It's cute, but it doesn't seem terribly useful.
08:07:40 <koz_> (and it's not likely very efficiently packed either, because that matrix is likely sparse AF)
08:08:14 <koz_> You can probably use some kind of sparse matrix representation I guess?
08:08:26 polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
08:09:57 × z0 quits (~z0@188.251.65.247) (Quit: Lost terminal)
08:10:02 <jle`> hm...
08:10:11 <jle`> i'll start with maybe implementing the finitary set for this specific application
08:10:16 <jle`> and then see if it would be helpful to generalize :O
08:10:25 <iqubic> Which application is it? Letters?
08:10:42 <koz_> Also, do we even have Haskell librar{y,ies} for sparse matrices?
08:10:58 <jle`> koz_: i use Map (a,a) heh
08:11:05 <iqubic> Erm... I mean, is this a Letters Set thing?
08:11:07 <jle`> but hmatrix might expose one
08:13:20 <koz_> jle`: Not as far as I can tell.
08:13:33 Airscape joins (~Airscape@4e69b241.skybroadband.com)
08:14:46 <jle`> koz_: https://hackage.haskell.org/package/hmatrix-0.20.1/docs/Numeric-LinearAlgebra-Data.html#v:mkSparse
08:14:50 × wz1000 quits (~wz1000@static.11.113.47.78.clients.your-server.de) (Ping timeout: 256 seconds)
08:15:12 <koz_> Ah, never mind then, guess it does exist.
08:15:52 <jle`> but it's not really usable i think...it's mostly internal/for testing
08:15:58 <jle`> :(
08:17:16 <koz_> There's also a range of representations possible for sparse matrices.
08:17:22 <koz_> It depends on what you wanna be able to do.
08:17:38 bitmagie joins (~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de)
08:17:46 <iqubic> jle`: What is this for? Is it Advent Of Code related?
08:18:00 × bitmagie quits (~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de) (Client Quit)
08:19:15 johnw joins (~johnw@haskell/developer/johnw)
08:22:24 wz1000 joins (~wz1000@static.11.113.47.78.clients.your-server.de)
08:23:10 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
08:25:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:26:45 × cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
08:27:31 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 246 seconds)
08:30:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
08:32:21 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
08:32:35 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Remote host closed the connection)
08:32:35 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
08:32:43 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
08:33:24 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
08:39:40 ptrcmd_ joins (~ptrcmd@unaffiliated/petercommand)
08:39:47 × ptrcmd_ quits (~ptrcmd@unaffiliated/petercommand) (Client Quit)
08:40:01 ptrcmd_ joins (~ptrcmd@unaffiliated/petercommand)
08:40:18 × ptrcmd_ quits (~ptrcmd@unaffiliated/petercommand) (Client Quit)
08:40:32 <jle`> iqubic: yeah it's a byte-backed set
08:40:39 × jedws quits (~jedws@121.209.181.215) (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:42:29 <iqubic> Are you going to be releasing this onto hackage?
08:43:56 <jle`> unsure at the moment
08:49:21 Neo-- joins (~neo@188-230-138-83.dynamic.t-2.net)
08:50:14 × skiold_ quits (~skiold@gateway/tor-sasl/skiold) (Remote host closed the connection)
08:50:39 skiold_ joins (~skiold@gateway/tor-sasl/skiold)
08:50:49 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Remote host closed the connection)
08:54:21 Guest40272 joins (421b4175@cpe-66-27-65-117.san.res.rr.com)
08:54:40 <Guest40272> hi
08:55:32 × da39a3ee5e6b4b0d quits (~da39a3ee5@ppp-223-24-171-28.revip6.asianet.co.th) (Read error: Connection reset by peer)
08:56:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:58:28 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
08:58:33 × Guest40272 quits (421b4175@cpe-66-27-65-117.san.res.rr.com) (Remote host closed the connection)
08:58:42 × dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 256 seconds)
08:59:40 isrllynewhi joins (421b4175@cpe-66-27-65-117.san.res.rr.com)
09:01:47 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
09:01:58 isrllynewhi is now known as YourNick2
09:02:10 YourNick2 is now known as YourNickyesthism
09:03:01 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
09:03:24 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
09:04:18 dibblego joins (~dibblego@haskell/developer/dibblego)
09:04:23 × YourNickyesthism quits (421b4175@cpe-66-27-65-117.san.res.rr.com) (Remote host closed the connection)
09:08:05 × drbean quits (~drbean@TC210-63-209-155.static.apol.com.tw) (Ping timeout: 240 seconds)
09:10:20 kuribas joins (~user@ptr-25vy0i7m6krsx7uawj2.18120a2.ip6.access.telenet.be)
09:16:03 cads joins (~cads@ip-64-72-99-232.lasvegas.net)
09:18:38 m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
09:25:25 dhil joins (~dhil@195.213.192.34)
09:26:28 <hyiltiz> anyone with any experience/comment on the roundtrip (-string or -aeson) library? It seems like it is rarely used by any other packages, and mostly remains as an academic exercise, no?
09:29:37 × Lord_of_Life quits (~Lord@46.217.217.114) (Changing host)
09:29:37 Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362)
09:30:09 <maerwald> what library?
09:30:28 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
09:32:12 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds)
09:33:10 Kaiepi joins (~Kaiepi@47.54.252.148)
09:34:56 christo joins (~chris@81.96.113.213)
09:36:09 jamm_ joins (~jamm@unaffiliated/jamm)
09:36:13 mbomba joins (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
09:45:50 × abhixec quits (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Ping timeout: 244 seconds)
09:51:33 heatsink joins (~heatsink@2600:1700:bef1:5e10:c0d0:4847:f8e3:32ca)
09:52:08 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-bjtotidkjwptzxld) (Quit: Connection closed for inactivity)
09:54:52 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
09:54:56 × Neo-- quits (~neo@188-230-138-83.dynamic.t-2.net) (Ping timeout: 240 seconds)
09:56:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:c0d0:4847:f8e3:32ca) (Ping timeout: 264 seconds)
09:58:56 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
09:59:36 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
10:01:02 fendor joins (~fendor@77.119.129.145.wireless.dyn.drei.com)
10:03:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:04:18 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
10:04:44 <tomjaguarpaw> https://hackage.haskell.org/package/roundtrip https://hackage.haskell.org/package/roundtrip-aeson and https://hackage.haskell.org/package/roundtrip-string, presumably
10:04:59 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
10:07:18 Amras joins (~Amras@unaffiliated/amras)
10:08:24 × rprije quits (~rprije@14-201-170-17.tpgi.com.au) (Ping timeout: 256 seconds)
10:08:48 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 256 seconds)
10:09:13 × jchia quits (~jchia@58.32.35.91) (Read error: Connection reset by peer)
10:10:46 wei2912 joins (~wei2912@unaffiliated/wei2912)
10:11:49 jchia joins (~jchia@45.32.62.73)
10:12:50 × jchia quits (~jchia@45.32.62.73) (Remote host closed the connection)
10:13:11 × wei2912 quits (~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
10:13:29 jchia joins (~jchia@45.32.62.73)
10:14:31 × jchia quits (~jchia@45.32.62.73) (Remote host closed the connection)
10:14:33 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
10:15:17 jchia joins (~jchia@45.32.62.73)
10:16:18 × jchia quits (~jchia@45.32.62.73) (Remote host closed the connection)
10:17:11 jchia joins (~jchia@58.32.35.91)
10:23:51 knupfer joins (~Thunderbi@200116b82ce66f00d0a0befffe0a90d9.dip.versatel-1u1.de)
10:23:55 × knupfer quits (~Thunderbi@200116b82ce66f00d0a0befffe0a90d9.dip.versatel-1u1.de) (Client Quit)
10:24:10 knupfer joins (~Thunderbi@i59F7FFAD.versanet.de)
10:24:51 jedws joins (~jedws@121.209.181.215)
10:28:35 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
10:28:36 tensegrist joins (b28016fd@178.128.22.253)
10:28:56 kritzefitz joins (~kritzefit@212.86.56.80)
10:29:23 christo joins (~chris@81.96.113.213)
10:30:48 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Quit: mputz)
10:31:06 alp joins (~alp@88.126.45.36)
10:34:51 LKoen joins (~LKoen@73.174.9.109.rev.sfr.net)
10:35:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:36:29 tintinthong joins (3c35076a@60.53.7.106)
10:36:29 × Amras quits (~Amras@unaffiliated/amras) (Remote host closed the connection)
10:36:49 justinthong joins (~justintho@2001:e68:5442:b278:d500:5960:c253:e4cd)
10:36:59 <justinthong> hi @tintinthong
10:37:20 × justinthong quits (~justintho@2001:e68:5442:b278:d500:5960:c253:e4cd) (Remote host closed the connection)
10:38:44 Gianluca250888 joins (~Username@host-82-60-47-183.retail.telecomitalia.it)
10:38:59 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 3.0)
10:46:11 × Gianluca250888 quits (~Username@host-82-60-47-183.retail.telecomitalia.it) (Quit: Going offline, see ya! (www.adiirc.com))
10:49:33 × tintinthong quits (3c35076a@60.53.7.106) (Remote host closed the connection)
10:49:33 × alp quits (~alp@88.126.45.36) (Quit: Leaving)
10:50:42 alp joins (~alp@2a01:e0a:58b:4920:a876:242c:b63f:f4da)
10:51:32 wei2912 joins (~wei2912@unaffiliated/wei2912)
10:52:18 × alp quits (~alp@2a01:e0a:58b:4920:a876:242c:b63f:f4da) (Client Quit)
10:52:23 alp- joins (~alp@163.172.83.213)
10:52:42 alp- is now known as alp
10:54:05 Amras joins (~Amras@unaffiliated/amras)
10:55:19 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
10:55:33 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
11:00:38 × alp quits (~alp@163.172.83.213) (Read error: Connection reset by peer)
11:00:56 alp joins (~alp@163.172.83.213)
11:08:27 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
11:09:53 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
11:09:58 livvy joins (~livvy@gateway/tor-sasl/livvy)
11:11:25 × maralorn quits (maralornma@gateway/shell/matrix.org/x-qiuviuxllrzzhqdo) (Ping timeout: 240 seconds)
11:11:36 × jesser[m] quits (jessermatr@gateway/shell/matrix.org/x-sjfbluokfqydziao) (Ping timeout: 246 seconds)
11:11:36 × sm[m] quits (simonmicma@gateway/shell/matrix.org/x-pnthkezdxbpznobc) (Ping timeout: 246 seconds)
11:11:36 × hyiltiz-M quits (hyiltizkde@gateway/shell/kde/matrix/x-antijvnmdrsgjnly) (Ping timeout: 246 seconds)
11:11:36 × ComaGrayce[m] quits (commagrays@gateway/shell/matrix.org/x-rgzepedcrcqimjdb) (Ping timeout: 246 seconds)
11:11:41 × psamim quits (samimpmatr@gateway/shell/matrix.org/x-krmmfkjnfdrrbytd) (Ping timeout: 244 seconds)
11:11:41 × rednaZ[m] quits (r3dnazmatr@gateway/shell/matrix.org/x-ucrtzpurrvrdgbsf) (Ping timeout: 244 seconds)
11:11:45 × aloiscochard[m] quits (aloiscocha@gateway/shell/matrix.org/x-pkhjmcxyixjezljv) (Ping timeout: 240 seconds)
11:11:57 × michaelpj quits (michaelpjm@gateway/shell/matrix.org/x-gxhxrzrfmkyfygya) (Ping timeout: 246 seconds)
11:11:57 × wi[m] quits (w1gzmatrix@gateway/shell/matrix.org/x-hvilmvtprutlggan) (Ping timeout: 246 seconds)
11:11:57 × alexfmpe quits (alexfmpema@gateway/shell/matrix.org/x-dharghhrczrbdwpt) (Ping timeout: 246 seconds)
11:11:58 × PotatoHatsue quits (berbermanp@gateway/shell/matrix.org/x-pgpiepqlttziknti) (Ping timeout: 260 seconds)
11:12:01 × rab24ack[m] quits (rab24ackma@gateway/shell/matrix.org/x-auwpzeruqhjinztt) (Ping timeout: 268 seconds)
11:12:04 × pqwy[m] quits (pqwymatrix@gateway/shell/matrix.org/x-lqkhfpwghttgzcww) (Ping timeout: 240 seconds)
11:12:05 × siraben quits (sirabenmat@gateway/shell/matrix.org/x-zqeievqiualvamus) (Ping timeout: 240 seconds)
11:12:07 × lambdaclan quits (lambdaclan@gateway/shell/matrix.org/x-bcmaxmksxtqadatv) (Ping timeout: 244 seconds)
11:12:07 × Hanma[m] quits (hanmamatri@gateway/shell/matrix.org/x-gsuncxeehyodgkwd) (Ping timeout: 244 seconds)
11:12:07 × kadoban quits (kadobanmat@gateway/shell/matrix.org/x-smliontovhsjofmu) (Ping timeout: 244 seconds)
11:12:07 × jtojnar quits (jtojnarmat@gateway/shell/matrix.org/x-odbepyltoezqkxgi) (Ping timeout: 244 seconds)
11:12:12 × jeffcasavant[m] quits (jeffcasava@gateway/shell/matrix.org/x-ocdaojbqtvzkcwus) (Ping timeout: 244 seconds)
11:12:12 × alephu5[m] quits (alephu5mat@gateway/shell/matrix.org/x-aercnrduxrfbvkwy) (Ping timeout: 244 seconds)
11:12:12 × mikr[m] quits (mikrdavral@gateway/shell/matrix.org/x-knmpvjrudfvaghww) (Ping timeout: 244 seconds)
11:12:12 × patier[m] quits (patiermatr@gateway/shell/matrix.org/x-vlhbzdwxhpzvyynq) (Ping timeout: 244 seconds)
11:12:12 × tersetears[m] quits (tersetears@gateway/shell/matrix.org/x-gskureyyzbunuhmw) (Ping timeout: 244 seconds)
11:12:13 × camlriot42 quits (camlriotma@gateway/shell/matrix.org/x-qnrookqqtxtksytk) (Ping timeout: 244 seconds)
11:12:17 × lnxw37d4 quits (lnxw37d4ma@gateway/shell/matrix.org/x-dlqnhxhuabqsxfuc) (Ping timeout: 246 seconds)
11:12:18 × domenkozar[m] quits (domenkozar@NixOS/user/domenkozar) (Ping timeout: 246 seconds)
11:12:18 × srid quits (sridmatrix@gateway/shell/matrix.org/x-ihrygjdlnbozwtjk) (Ping timeout: 246 seconds)
11:12:18 × dyniec[m] quits (dyniecmatr@gateway/shell/matrix.org/x-axzvldhyxjesbgkx) (Ping timeout: 246 seconds)
11:12:18 × TekShifter[m] quits (tekshifter@gateway/shell/matrix.org/x-pjjmyvioalvivqgb) (Ping timeout: 246 seconds)
11:12:32 × theduke quits (thedukem1@gateway/shell/matrix.org/x-sexqsjdnjitytpbp) (Ping timeout: 260 seconds)
11:12:32 × boistordu quits (boistordum@gateway/shell/matrix.org/x-qisdfgjhwtgbhgjm) (Ping timeout: 260 seconds)
11:12:32 × itai33[m] quits (itai33matr@gateway/shell/matrix.org/x-hbawltlorgahcecl) (Ping timeout: 260 seconds)
11:12:32 × dominicusin[m] quits (dominicusi@gateway/shell/matrix.org/x-vcoaftteusesgvai) (Ping timeout: 260 seconds)
11:12:38 × andreabedini[m] quits (andreabedi@gateway/shell/matrix.org/x-lbginztlvjpljpan) (Ping timeout: 268 seconds)
11:12:38 × johnnyboy[m] quits (gifumatrix@gateway/shell/matrix.org/x-vacyeklvxcuwrdpb) (Ping timeout: 268 seconds)
11:12:38 × jkaye[m] quits (jkayematri@gateway/shell/matrix.org/x-skotoydfoufsqldx) (Ping timeout: 268 seconds)
11:12:38 × ThaEwat quits (thaewraptm@gateway/shell/matrix.org/x-hwkysomttqzqctxo) (Ping timeout: 268 seconds)
11:12:38 × CRTified[m] quits (schnecfkru@gateway/shell/matrix.org/x-pojsifoicrnfbiru) (Ping timeout: 268 seconds)
11:12:38 × themsay[m] quits (themsaymat@gateway/shell/matrix.org/x-ntvrkrbtrqlxxjfp) (Ping timeout: 268 seconds)
11:12:38 × doct0rhu[m] quits (doct0rhumo@gateway/shell/matrix.org/x-tjezwjmljqaegekd) (Ping timeout: 268 seconds)
11:12:38 × zerstroyer[m] quits (zerstroyer@gateway/shell/matrix.org/x-uvziduqqpveqecsi) (Ping timeout: 268 seconds)
11:12:43 × hsiktas[m] quits (hsiktasmat@gateway/shell/matrix.org/x-nbwomcltkxmmxmak) (Ping timeout: 244 seconds)
11:12:44 × fgaz quits (fgazmatrix@gateway/shell/matrix.org/x-urmkblempjoidfpt) (Ping timeout: 240 seconds)
11:13:00 × berberman[T] quits (berberma4@gateway/shell/matrix.org/x-frqpzbxlqadgittv) (Ping timeout: 246 seconds)
11:13:00 × iinuwa quits (iinuwamatr@gateway/shell/matrix.org/x-ipassifbnrgnzhtq) (Ping timeout: 246 seconds)
11:13:07 × psydruid quits (psydruidma@gateway/shell/matrix.org/x-xrerkddykdfqobox) (Ping timeout: 260 seconds)
11:13:09 × mang0[m] quits (dea223matr@gateway/shell/matrix.org/x-mptmksumjgntagzy) (Ping timeout: 244 seconds)
11:13:14 × BenSima[m] quits (bensimatim@gateway/shell/matrix.org/x-umqofddrxzxxxopi) (Ping timeout: 244 seconds)
11:13:15 × unclechu quits (unclechuma@gateway/shell/matrix.org/x-pgxospnfpnngufam) (Ping timeout: 268 seconds)
11:13:21 × drozdziak1 quits (drozdziak1@gateway/shell/matrix.org/x-yctuipwfnhbsurol) (Ping timeout: 246 seconds)
11:13:41 × Ericson2314 quits (ericson231@gateway/shell/matrix.org/x-tpaglddbbaarshkp) (Ping timeout: 246 seconds)
11:13:42 × falling-edge[m] quits (falling-ed@gateway/shell/matrix.org/x-raeghvrbhfpgtupx) (Ping timeout: 260 seconds)
11:14:33 × Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 260 seconds)
11:15:42 Cthalupa joins (~cthulhu@47.186.47.75)
11:15:50 × knupfer quits (~Thunderbi@i59F7FFAD.versanet.de) (Ping timeout: 256 seconds)
11:18:22 Jonkimi727406120 joins (~Jonkimi@223.213.165.31)
11:18:33 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
11:22:07 × Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 265 seconds)
11:22:37 Cthalupa joins (~cthulhu@47.186.47.75)
11:22:43 fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
11:22:50 × ericsagnes quits (~ericsagne@2405:6580:0:5100:cd57:3434:c0d0:b946) (Ping timeout: 264 seconds)
11:23:00 × pavonia quits (~user@unaffiliated/siracusa) (Ping timeout: 272 seconds)
11:24:05 urek joins (~urek@2804:7f1:e10a:a8d:dc47:5170:f5a9:5634)
11:26:04 × fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Read error: Connection reset by peer)
11:26:15 hyiltiz-M joins (hyiltizkde@gateway/shell/kde/matrix/x-geyejkuncnhxmpdr)
11:26:23 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
11:26:34 fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
11:27:47 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
11:28:05 × Jonkimi727406120 quits (~Jonkimi@223.213.165.31) (Ping timeout: 240 seconds)
11:28:32 ComaGrayce[m] joins (commagrays@gateway/shell/matrix.org/x-wnllrsfagmchmmsu)
11:28:51 sord937 joins (~sord937@gateway/tor-sasl/sord937)
11:28:58 sm[m] joins (simonmicma@gateway/shell/matrix.org/x-tslfcdwovccelfgc)
11:29:15 michaelpj joins (michaelpjm@gateway/shell/matrix.org/x-xwhhblcpkqxivscq)
11:29:25 maralorn joins (maralornma@gateway/shell/matrix.org/x-wfwnvstmnifltoqx)
11:29:36 berberman[T] joins (berberma4@gateway/shell/matrix.org/x-vsysrbilolopjofm)
11:29:36 alexfmpe joins (alexfmpema@gateway/shell/matrix.org/x-gowqrzcegnrjuszh)
11:29:40 iinuwa joins (iinuwamatr@gateway/shell/matrix.org/x-lmbenmarrebbdhru)
11:30:30 × hexfive quits (~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
11:30:40 Ericson2314 joins (ericson231@gateway/shell/matrix.org/x-gsevokzxekchjacg)
11:31:39 × Varis quits (~Tadas@unaffiliated/varis) (Read error: Connection reset by peer)
11:31:46 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
11:31:47 jesser[m] joins (jessermatr@gateway/shell/matrix.org/x-fzvpwsyxxfsxfljc)
11:32:16 rednaZ[m] joins (r3dnazmatr@gateway/shell/matrix.org/x-hfgocjsopdawrtek)
11:32:39 domenkozar[m] joins (domenkozar@NixOS/user/domenkozar)
11:32:51 fgaz joins (fgazmatrix@gateway/shell/matrix.org/x-yxipcpeduqjuvcow)
11:33:08 dyniec[m] joins (dyniecmatr@gateway/shell/matrix.org/x-qfhwjklxapmkgusb)
11:33:17 TekShifter[m] joins (tekshifter@gateway/shell/matrix.org/x-whcsjptmuuxhmcff)
11:33:26 srid joins (sridmatrix@gateway/shell/matrix.org/x-bgcumtwxpughvykl)
11:34:15 ericsagnes joins (~ericsagne@2405:6580:0:5100:5e7a:6b93:86d8:5cb1)
11:34:22 psamim joins (samimpmatr@gateway/shell/matrix.org/x-flynuotvhbmrlxjh)
11:35:23 wi[m] joins (w1gzmatrix@gateway/shell/matrix.org/x-vhbfmwpsvmrdtwkw)
11:37:09 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 246 seconds)
11:37:16 jtojnar joins (jtojnarmat@gateway/shell/matrix.org/x-fmmuispbmxgnkzny)
11:37:22 pqwy[m] joins (pqwymatrix@gateway/shell/matrix.org/x-vnqaotfsxzdmunat)
11:37:33 pavonia joins (~user@unaffiliated/siracusa)
11:37:35 patier[m] joins (patiermatr@gateway/shell/matrix.org/x-vnsjzoxsrzoienfx)
11:37:38 aloiscochard[m] joins (aloiscocha@gateway/shell/matrix.org/x-jabkszfxgnkdhvro)
11:37:51 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:37:58 tersetears[m] joins (tersetears@gateway/shell/matrix.org/x-djplfbkhyixflrhq)
11:37:58 borne joins (~fritjof@200116b8649d08009ba1d43461655289.dip.versatel-1u1.de)
11:38:03 siraben joins (sirabenmat@gateway/shell/matrix.org/x-lezecatojskrdazl)
11:38:37 kadoban joins (kadobanmat@gateway/shell/matrix.org/x-kvlzxytjycizhbef)
11:38:51 Varis joins (~Tadas@unaffiliated/varis)
11:40:19 unclechu joins (unclechuma@gateway/shell/matrix.org/x-twjgulyebrjbbbcd)
11:41:06 BenSima[m] joins (bensimatim@gateway/shell/matrix.org/x-gsvyurbvvhccmgvr)
11:41:31 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
11:41:35 × jedws quits (~jedws@121.209.181.215) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:41:52 jpds joins (~jpds@gateway/tor-sasl/jpds)
11:42:00 rab24ack[m] joins (rab24ackma@gateway/shell/matrix.org/x-xexybdvzbhtsmpoc)
11:42:06 camlriot42 joins (camlriotma@gateway/shell/matrix.org/x-oczhhosnsfdjctzy)
11:42:20 mang0[m] joins (dea223matr@gateway/shell/matrix.org/x-neesfcqailnhhnob)
11:42:21 lambdaclan joins (lambdaclan@gateway/shell/matrix.org/x-sbddbzdmvxmmvpbc)
11:42:22 Vulfe joins (~vulfe@2600:1702:31b0:34e0:7588:30bb:c072:52a)
11:42:27 Hanma[m] joins (hanmamatri@gateway/shell/matrix.org/x-xirqpfxzlgorfgfx)
11:42:37 alephu5[m] joins (alephu5mat@gateway/shell/matrix.org/x-sazbrzymzspemrdm)
11:42:41 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
11:42:43 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
11:43:03 lnxw37d4 joins (lnxw37d4ma@gateway/shell/matrix.org/x-cfpajotnlvpvilyo)
11:43:17 jeffcasavant[m] joins (jeffcasava@gateway/shell/matrix.org/x-cmekccjvauwyyqfu)
11:43:39 mikr[m] joins (mikrdavral@gateway/shell/matrix.org/x-rozxfutgcwhtyosh)
11:43:42 themsay[m] joins (themsaymat@gateway/shell/matrix.org/x-cjdoxrvdegoiyqvf)
11:43:55 PotatoHatsue joins (berbermanp@gateway/shell/matrix.org/x-zegdpocllywoosgz)
11:44:12 hsiktas[m] joins (hsiktasmat@gateway/shell/matrix.org/x-glefifefdwscjcqe)
11:44:33 doct0rhu[m] joins (doct0rhumo@gateway/shell/matrix.org/x-sarufxwodykorttc)
11:44:57 Jonkimi727406120 joins (~Jonkimi@223.213.165.31)
11:45:06 zerstroyer[m] joins (zerstroyer@gateway/shell/matrix.org/x-sagppnyewsjacbwk)
11:45:08 whatisRT joins (~whatisRT@2002:5b41:6a33:0:5e3:170b:26c2:19e9)
11:46:01 andreabedini[m] joins (andreabedi@gateway/shell/matrix.org/x-hjtxhxhwobrdxypa)
11:46:38 johnnyboy[m] joins (gifumatrix@gateway/shell/matrix.org/x-mpuodigaaerwmayk)
11:46:49 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:7588:30bb:c072:52a) (Ping timeout: 244 seconds)
11:46:55 drozdziak1 joins (drozdziak1@gateway/shell/matrix.org/x-kopfdlgfyhfmispl)
11:46:59 psydruid joins (psydruidma@gateway/shell/matrix.org/x-strapbsmwdglzvet)
11:47:01 ThaEwat joins (thaewraptm@gateway/shell/matrix.org/x-ufbnzjraelhohfix)
11:47:03 __monty__ joins (~toonn@unaffiliated/toonn)
11:47:24 itai33[m] joins (itai33matr@gateway/shell/matrix.org/x-lwyfghxaoeqylvet)
11:48:20 CRTified[m] joins (schnecfkru@gateway/shell/matrix.org/x-vrozfuovpxunwnos)
11:48:30 jkaye[m] joins (jkayematri@gateway/shell/matrix.org/x-mmksapnwkzwrlfaf)
11:48:40 boistordu joins (boistordum@gateway/shell/matrix.org/x-dtootmkcjgdppcmk)
11:49:18 falling-edge[m] joins (falling-ed@gateway/shell/matrix.org/x-rfbansvrujteeerw)
11:49:20 dominicusin[m] joins (dominicusi@gateway/shell/matrix.org/x-cmzyfydfwudbfyjq)
11:49:45 theduke joins (thedukem1@gateway/shell/matrix.org/x-phrgqvuukcgbupcm)
11:52:59 heatsink joins (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
11:54:38 darjeeling_ joins (~darjeelin@122.245.218.196)
11:55:21 × Jonkimi727406120 quits (~Jonkimi@223.213.165.31) (Ping timeout: 246 seconds)
11:55:24 drbean joins (~drbean@TC210-63-209-94.static.apol.com.tw)
11:56:30 × tensegrist quits (b28016fd@178.128.22.253) (Remote host closed the connection)
11:57:35 × heatsink quits (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Ping timeout: 244 seconds)
11:57:53 × clever_ quits (~clever@142.68.248.92) (Changing host)
11:57:53 clever_ joins (~clever@NixOS/user/clever)
11:57:57 clever_ is now known as clever
12:00:59 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
12:02:18 livvy joins (~livvy@gateway/tor-sasl/livvy)
12:03:21 × borne quits (~fritjof@200116b8649d08009ba1d43461655289.dip.versatel-1u1.de) (Ping timeout: 244 seconds)
12:05:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
12:07:29 <nf> cross-post from #haskell-lens: if i have a getter and a setter for Set ( folded and sets Set.map respectively), can i turn them into a single "thing" that i can use (^..) and (%~) on? (preferably using microlens)
12:09:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:09:31 jedws joins (~jedws@121.209.181.215)
12:11:03 <kuribas> nf: you want to traverse the Set?
12:11:42 <nf> i don't know
12:11:51 <nf> i want to combine these two actions into one "thing"
12:12:00 <nf> is that a traversal? is there something intermediate?
12:13:02 <kuribas> not sure that satisfies the lens laws...
12:14:45 <kuribas> https://hackage.haskell.org/package/lens-4.16/docs/Data-Set-Lens.html
12:15:53 infinity0 joins (~infinity0@freenet/developer/infinity0)
12:15:55 × britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
12:15:59 <kuribas> it looks like setmapped is what you want
12:16:25 <nf> that's only the setter part, not the getter
12:16:32 <nf> "Sadly, you can't create a valid Traversal for a Set"
12:16:43 <kuribas> indeed
12:17:00 nf checks the Traversal laws
12:17:13 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
12:17:14 nowhere_man joins (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155)
12:17:47 livvy joins (~livvy@gateway/tor-sasl/livvy)
12:18:00 <nf> i guess the issue is the lack of an Ord constraint
12:18:14 <nf> but i'm working with a single known type so maybe i can circumvent that
12:18:26 <kuribas> no, the issue is that the set can shrink when mapping it.
12:18:47 <kuribas> you can make an unlawful traversal though...
12:20:04 <nf> ooh and that violates the second law because some effects could be executed less times than required? i think i get it
12:24:17 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
12:25:27 × paolo|out quits (~paolo|out@185.163.110.125) (Remote host closed the connection)
12:28:57 <kuribas> "The laws for a Traversal t follow from the laws for Traversable as stated in "The Essence of the Iterator Pattern"."
12:29:04 <kuribas> fmap (t f) . t g ≡ getCompose . t (Compose . fmap f . g)
12:29:13 <kuribas> "One consequence of this requirement is that a Traversal needs to leave the same number of elements as a candidate for subsequent Traversal that it started with. Another testament to the strength of these laws is that the caveat expressed in section 5.5 of the "Essence of the Iterator Pattern" about exotic Traversable instances that traverse the same entry multiple times was actually already ruled out by the second law
12:29:13 <kuribas> paper!"
12:29:39 <kuribas> http://hackage.haskell.org/package/lens-4.19.2/docs/Control-Lens-Traversal.html
12:31:36 <nf> i just read https://artyom.me/lens-over-tea-2#traversal-laws, i'll read that now
12:34:15 joaj joins (~joaj@2001:818:e326:8200:9fc:6bde:c18a:1771)
12:34:50 × joaj quits (~joaj@2001:818:e326:8200:9fc:6bde:c18a:1771) (Client Quit)
12:35:44 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds)
12:35:59 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
12:36:31 ironmarx joins (~ironmarx@178.239.168.171)
12:37:42 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
12:38:02 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
12:39:12 Jonkimi727406120 joins (~Jonkimi@223.213.165.31)
12:39:49 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
12:43:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
12:43:48 <nf> is this proved somewhere? that the 5.5 caveat was already excluded by the second law?
12:44:00 × whatisRT quits (~whatisRT@2002:5b41:6a33:0:5e3:170b:26c2:19e9) (Ping timeout: 246 seconds)
12:44:35 × wwwww quits (~wwwww@unaffiliated/wwwww) (Ping timeout: 272 seconds)
12:45:10 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:45:37 wwwww joins (~wwwww@unaffiliated/wwwww)
12:47:17 <nf> i guess if i don't care about being lawful i can always do fmap Set.fromList . traverse f . Set.toList
12:51:16 × Guest34720 quits (~chris@bras-vprn-nwmkon8540w-lp130-10-142-112-210-136.dsl.bell.ca) (Ping timeout: 240 seconds)
12:51:20 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
12:52:26 <kuribas> yes
12:57:04 jmchael joins (~jmchael@87.112.60.168)
13:02:04 christo joins (~chris@81.96.113.213)
13:02:09 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
13:04:05 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
13:04:43 × incertia quits (~incertia@d4-50-26-103.nap.wideopenwest.com) (Ping timeout: 246 seconds)
13:05:16 fendor_ joins (~fendor@77.119.131.148.wireless.dyn.drei.com)
13:06:36 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
13:07:52 × fendor quits (~fendor@77.119.129.145.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
13:08:52 × Rudd0 quits (~Rudd0@185.189.115.98) (Remote host closed the connection)
13:11:57 × kuribas quits (~user@ptr-25vy0i7m6krsx7uawj2.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
13:16:23 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
13:17:51 × bliminse quits (~bliminse@host86-134-63-68.range86-134.btcentralplus.com) (Read error: Connection reset by peer)
13:18:36 neiluj joins (~jco@91-167-203-101.subs.proxad.net)
13:18:36 × neiluj quits (~jco@91-167-203-101.subs.proxad.net) (Changing host)
13:18:36 neiluj joins (~jco@unaffiliated/neiluj)
13:23:43 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
13:27:02 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
13:27:27 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
13:28:39 Kaivo joins (~Kaivo@104-200-86-99.mc.derytele.com)
13:33:48 opFez joins (opFez@gateway/vpn/mullvad/opfez)
13:36:25 × Neuromancer quits (~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 240 seconds)
13:36:42 × sagax quits (~sagax_nb@213.138.71.146) (Remote host closed the connection)
13:37:56 jedai joins (~jedai@lfbn-dij-1-708-251.w90-100.abo.wanadoo.fr)
13:37:56 × jedai quits (~jedai@lfbn-dij-1-708-251.w90-100.abo.wanadoo.fr) (Client Quit)
13:40:21 Neo-- joins (~neo@188-230-138-83.dynamic.t-2.net)
13:41:22 Vulfe joins (~vulfe@2600:1702:31b0:34e0:7588:30bb:c072:52a)
13:42:26 Neuromancer joins (~Neuromanc@unaffiliated/neuromancer)
13:47:05 ambidextrose joins (~fut-learn@mobile-166-170-48-20.mycingular.net)
13:47:10 × opFez quits (opFez@gateway/vpn/mullvad/opfez) (Quit: leaving)
13:48:54 <dminuoso> Mmm. Bidrectional pattern synonyms or prisms...
13:49:08 hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net)
13:49:13 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
13:49:22 <dminuoso> Seems like prisms are just more potent since you parametrize your code over arbitrary prisms.
13:49:27 × drbean quits (~drbean@TC210-63-209-94.static.apol.com.tw) (Ping timeout: 260 seconds)
13:49:39 <dminuoso> You *can
13:50:44 pjb joins (~t@2a01cb04063ec5000d865f68245bcc45.ipv6.abo.wanadoo.fr)
13:51:38 <[exa]> prisms!
13:51:42 <__monty__> Is there another name for `concatWith :: (a -> a -> a) -> t a -> a` as a generalisation of mconcat?
13:51:48 × HarveyPwca quits (~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net) (Quit: Leaving)
13:51:54 × Jonkimi727406120 quits (~Jonkimi@223.213.165.31) (Ping timeout: 246 seconds)
13:52:36 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:7588:30bb:c072:52a) (Remote host closed the connection)
13:52:42 zangi joins (~azure@180.247.190.63)
13:52:46 <__monty__> Oh, that's just foldr1, isn't it?
13:53:52 <dminuoso> Not quite
13:54:04 <dminuoso> foldr is the generalization
13:54:17 <dminuoso> With mconcat you have the implicit argument of foldr already
13:54:20 heatsink joins (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
13:54:22 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
13:54:37 × jedws quits (~jedws@121.209.181.215) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:54:41 <dminuoso> So a true generalizatoin of mconcat would be `concatWith :: (a -> a -> a) -> a -> t a -> a`
13:54:43 <dminuoso> % :t foldr
13:54:43 <yahb> dminuoso: Foldable t => (a -> b -> b) -> b -> t a -> b
13:55:06 <dminuoso> (because what does mconcat do on an empty list?)
13:55:07 <zangi> > map (+1) [1..10]
13:55:09 <lambdabot> [2,3,4,5,6,7,8,9,10,11]
13:55:17 <zangi> @
13:55:27 <zangi> @help
13:55:27 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
13:55:33 <dminuoso> [exa]: Yeah Im thinking prisms too.
13:55:36 <zangi> @list
13:55:36 <lambdabot> What module? Try @listmodules for some ideas.
13:55:46 <zangi> @help list
13:55:47 <lambdabot> list [module|command]. Show commands for [module] or the module providing [command].
13:55:47 <__monty__> dminuoso: Yep, you're right, I did realize that when writing it. Partiality is why I usually pretend foldr1 doesn't exist.
13:55:56 <zangi> list
13:55:56 Vulfe joins (~vulfe@2600:1702:31b0:34e0:7588:30bb:c072:52a)
13:56:09 <dminuoso> zangi: You can chat with lambdabot in a private message/query
13:56:17 <dminuoso> For experimentation
13:56:40 <zangi> dminuoso: how? I'm new to irc
13:56:52 <dminuoso> zangi: Which IRC client do you use?
13:56:59 <zangi> weechat
13:57:01 <xsperry> try /query lambdabot
13:57:57 <__monty__> dminuoso: In this case though I need a different base case for an empty list than a full list, `[] -> S.empty; as -> foldr1 S.intersect as`
13:58:25 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 264 seconds)
13:58:38 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
13:58:38 × zangi quits (~azure@180.247.190.63) (Read error: Connection reset by peer)
13:58:50 × heatsink quits (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Ping timeout: 264 seconds)
13:59:04 <dminuoso> __monty__: That's no longer mconcat then.
13:59:10 zangi joins (~azure@103.154.230.250)
14:00:56 × jchia quits (~jchia@58.32.35.91) (Read error: Connection reset by peer)
14:01:02 <__monty__> Yeah, my mistaken reasoning was "Hmm, I want to mconcat this list of Sets with intersection."
14:01:26 jchia joins (~jchia@58.32.35.91)
14:02:16 toast52 joins (97c0a219@151.192.162.25)
14:02:26 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
14:02:46 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
14:02:47 × XR0DRiG0 quits (~Farinhoca@softbank126057187159.bbtec.net) (Quit: Leaving)
14:02:53 × zangi quits (~azure@103.154.230.250) (Client Quit)
14:03:03 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
14:03:33 <toast52> Hey I'm a long time stack user but in my new setup I'm trying out ghcup + cabal
14:03:38 <ephemient> https://mail.haskell.org/pipermail/libraries/2020-December/030951.html
14:04:08 <toast52> I'm not sure how to do things with the cabal new commands
14:04:24 <merijn> toast52: Can you be more specific? :)
14:04:48 <toast52> with stack you specify src directory where all your modules go, and to add dependencies just edit the package.yaml right?
14:04:55 <toast52> Whats the equivalent in cabal
14:05:12 <toast52> and should I use the v2 commands, the new commands or just the bare commands?
14:05:21 cosimone joins (~cosimone@93-47-228-249.ip115.fastwebnet.it)
14:05:26 <merijn> toast52: Do you have cabal-install 3.0 or later?
14:05:31 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
14:05:38 <__monty__> toast52: For cabal 3.0+ those are all the same commands.
14:05:38 <toast52> Yeah I believe I am on 3.2.0.0
14:05:42 <merijn> (probably yes, but best to check)
14:05:54 <merijn> toast52: From 3.0 on the commands *are* the v2 versions
14:06:03 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
14:06:08 × ambidextrose quits (~fut-learn@mobile-166-170-48-20.mycingular.net) (Quit: leaving)
14:06:11 <ephemient> if you're using ghc 8.10+, you don't have any choice but cabal 3.2+ anyhow :D
14:06:12 <merijn> toast52: v2 is just around for scripts that need to be compatible across multiple cabal versions
14:06:25 <merijn> toast52: Anyway, lemme first point you here: https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07
14:06:34 <__monty__> new-* is only around for hysterical raisins, v2-* is an immutable reference so to speak, the others are shorter for interactive use.
14:07:34 <__monty__> ephemient: Some important distros don't update GHC all that fast, debian for example.
14:08:06 <ephemient> __monty__: toast52 mentioned ghcup so presumably they're not relying on the distro ghc anyhow
14:08:49 <toast52> so with cabal-install do we modify the cabal file directly?
14:08:54 <merijn> toast52: Yeah
14:09:13 <ephemient> you could still use hpack if you want, you just have to run it manually
14:09:14 <merijn> You can use "cabal init --interactive --cabal-version=3.2" to create a new one from scratch
14:09:18 <__monty__> ephemient: Though since they're migrating from stack they might want to stick to the latest LTS compiler.
14:10:11 <merijn> ephemient: But you shouldn't, because hpack is bad :D
14:11:22 × jathan quits (~jathan@69.61.93.38) (Quit: WeeChat 2.3)
14:12:54 <toast52> hmmm. cabal install is used to install libraries or executables globally right
14:13:09 <merijn> toast52: tbh, only executables
14:13:18 <toast52> do nix style builds share libs?
14:13:31 <merijn> toast52: Yes, when possible
14:13:50 Lord_of_Life_ joins (~Lord@46.217.217.114)
14:14:36 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds)
14:14:42 <merijn> toast52: Basically, there's a single global store (in ~/.cabal/store/ghc-version) and every library that gets installed gets tagged with a hash of its version, flags, config and transitive dependencies and installed there. If two packages/projects/whatever use the exact same configuration they will reuse the existing install.
14:15:09 <merijn> toast52: So you can have, essentially, infinitely many different versions/configurations of any package without conflicts
14:16:56 <toast52> Ok I think I more or less get it. Last question: In stack we just declare the src directory and have as many modules inside as we want. But it appears in a cabal file each module must be declared in other-modules?
14:17:42 <ephemient> https://github.com/haskell/cabal/issues/5343
14:18:15 <merijn> toast52: For libraries You've got "exposed-modules" these are what other packages can access and "other-modules" (these are internal). For executable you have Main and "other-modules"
14:18:30 <merijn> ephemient: It's not happening
14:18:48 <ephemient> right, I think there's decent justification in the linked issue
14:20:04 <merijn> Like, I get why people find it annoying to manually list modules. But sometimes you gotta trade off immediate convenience for future sanity. But that's apparently a hard thing to accept for many people :p
14:20:56 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
14:21:15 <ephemient> well, pretty much the only haskell code I work on these days is for advent of code, and I only need to keep it running for a month. so I have sympathy for that too
14:22:27 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:a9cd:5081:c991:1e35:d185)
14:23:02 <merijn> ephemient: tbh, I also feel people *massively* overstate how annoying it actually is
14:23:10 × dhil quits (~dhil@195.213.192.34) (Ping timeout: 256 seconds)
14:24:30 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
14:24:33 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
14:25:08 × urek quits (~urek@2804:7f1:e10a:a8d:dc47:5170:f5a9:5634) (Read error: Connection reset by peer)
14:25:17 <merijn> ephemient: My biggest project is about 110 files/modules big, but it's not like you're writing those out every day. You start with a handful and incrementally add a few every few days or something. And if you important existing code you can just quickly sed it in once. In practice it's just not that big a deal
14:26:01 <ephemient> it might also be a matter of what other systems people came from
14:26:06 urek joins (~urek@2804:7f1:e10a:a8d:dc47:5170:f5a9:5634)
14:26:29 × rurt91 quits (~rurt91@gateway/tor-sasl/rurt91) (Quit: Leaving)
14:26:33 sagax joins (~sagax_nb@213.138.71.146)
14:26:43 <ephemient> build systems for C/C++ tend to require being explicit, and Rust's modules are also completely explicit, but Java and JS are typically always automatic discovery
14:26:57 <merijn> ephemient: A lot of systems do, in fact, go for immediate convenience over long term sanity, which is why Python is on their, like, 15th package manager and it's *still* a pain :p
14:27:01 clemopemo joins (54ba165a@p54ba165a.dip0.t-ipconnect.de)
14:28:19 alfredo_dslv joins (6b48b289@107.72.178.137)
14:29:56 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
14:29:58 × alfredo_dslv quits (6b48b289@107.72.178.137) (Remote host closed the connection)
14:31:02 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
14:31:18 dansho joins (~dansho@ec2-52-193-196-85.ap-northeast-1.compute.amazonaws.com)
14:32:45 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
14:34:22 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
14:35:16 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
14:35:35 Jonkimi727406120 joins (~Jonkimi@223.213.165.31)
14:37:11 × wei2912 quits (~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
14:37:38 <toast52> But specifying the src directory is still pretty explicit no?
14:38:27 <toast52> In fact Haskell's unqualified imports by default are a pretty good example why implicit is bad imo
14:38:28 shatriff joins (~vitaliish@176.52.219.10)
14:39:42 <merijn> toast52: There's actually a better explanation why not to do that here: https://github.com/haskell/cabal/issues/7016#issuecomment-678609993
14:40:26 <toast52> ahhh. That's true. I guess thats the point of something like hpack
14:40:46 <toast52> so the reference cabal file is still there
14:41:01 <toast52> while its painless to add modules
14:41:30 <toast52> not that adding a line to the cabal file is a pain really. I guess I'm just unused
14:42:42 × Neo-- quits (~neo@188-230-138-83.dynamic.t-2.net) (Ping timeout: 265 seconds)
14:43:09 <toast52> its just my prior experience telling me that these config files are usually not manually edited but handled by the CLI tool
14:43:22 <merijn> toast52: As phadej points out in the issues, he's not opposed to a "cabal update-modules" command which dynamically updates the list in the cabal file explicitly (which is sorta what "cabal init" already does)
14:43:56 <merijn> But the cabal codebase is...kinda legacy, so such command isn't trivial to implement :)
14:44:14 × srk quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
14:44:14 × hexo quits (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
14:44:53 srk joins (~sorki@gateway/tor-sasl/sorki)
14:44:59 hexo joins (~hexo@gateway/tor-sasl/hexo)
14:45:38 <merijn> The basic tension point is that for *developers* it's easy to have everything automatic and never have to do everything. But for *packaging*, especially long term archiving and distribution on many systems having everything *explicit* (locations, modules, flags, options, etc.) makes live much easier
14:46:33 <merijn> If you look at for example Python, Ruby, JS, etc. developing is easy, but packaging is such a nightmare that the "normal" default way to do it now is "ship an entire docker container, because we have no clue which files need to be packaged"
14:47:03 <dcoutts> merijn: btw, I was looking at the Cabal lib codebase last night. It's surprisingly clean. Oleg, Mikhail and others have done a great job there.
14:47:12 <toast52> Yeah I get that
14:47:36 <merijn> dcoutts: It's getting better, for sure. But it has quite a road to go :p
14:48:07 <toast52> Maybe I'm clueless here but my impression was that that's what lock files are for
14:48:19 <merijn> The problem is we only have one Oleg and one hvr to help people get up to speed :)
14:48:27 <dcoutts> I think one of the hard things is going to be ditching legacy features, like migrating away from build-type Custom.
14:48:33 <hpc> arguably, for developers it's easier to be explicit too - i am constantly running into issues where i am unable to build working git-cloned code
14:48:35 <merijn> Which bottlenecks the influx of people helping :)
14:48:41 <merijn> hpc: Sure
14:48:54 × Jonkimi727406120 quits (~Jonkimi@223.213.165.31) (Ping timeout: 256 seconds)
14:48:54 <merijn> hpc: But it's hard getting that through their skulls ;)
14:48:55 <dcoutts> And people kicked up quite a stink when Oleg wanted to remove the cabal sandbox feature (that's subsumed by the v2 features)
14:49:53 <merijn> dcoutts: Well, the problem is that until the environment stuff is finished and gives people a nice way to install libs into a semi-global environment there's some workflows underserved and cabal sandbox + v1 could be used to deal with that
14:50:30 <merijn> dcoutts: Lots of beginners want to "just install quickcheck and play in ghci" and that is currently, unfortunately, rather cumbersome
14:50:51 <dcoutts> fair enough, but that's what we have to push on to be able to reduce complexity
14:50:57 <merijn> But yeah, I think for "real" work v2 completely obsoletes sandboxes
14:51:16 _mefairS` joins (~st_ars@110.54.218.138)
14:51:25 <merijn> dcoutts: Sure, I'm not disagreeing with the choice nor disparage the minor miracles Oleg is achieving :)
14:51:36 × rotaerk quits (~rotaerk@ender.afternet.org) (Ping timeout: 240 seconds)
14:51:39 taio joins (~enrik@p200300ceaf0f3900597c3397d589339d.dip0.t-ipconnect.de)
14:51:57 <merijn> dcoutts: It's just unfortunate to not have a good story for beginners wanting to play in ghci
14:52:19 <hpc> sudo apt install libghc-quickcheck2-dev # :D
14:52:28 <dcoutts> indeed, and the v2 design is intended to be able to cover those use cases too
14:53:00 texasmynsted joins (~texasmyns@212.102.45.103)
14:53:14 <merijn> dcoutts: I mean, you're preaching to the choir with me, I dropped sandboxes and all my hdevtools based editor tooling back in 2016 just so I could use v2-build :p
14:53:24 × _mefairS` quits (~st_ars@110.54.218.138) (Excess Flood)
14:53:32 <merijn> And only this year with ghcide has my editor started recovering :p
14:53:46 <dcoutts> :-)
14:53:58 _mefairS` joins (~st_ars@110.54.218.138)
14:54:19 <toast52> Honestly I had no problems in the past simply installing ghc to use ghci, nor simply "upgrading" to stack and using stack repl
14:54:27 <toast52> I would say it is pretty easy to get started
14:55:10 <merijn> toast52: Yeah, but with v2 there isn't a super good story for "globally install this library to play with" the easiest (implemented) workflow is "just define a cabal package and use that"
14:55:18 × _mefairS` quits (~st_ars@110.54.218.138) (Remote host closed the connection)
14:55:43 heatsink joins (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
14:56:03 <merijn> Which isn't too bad, almost anything with more than 2 modules or any dependencies should have a cabal file anyway, but it's not great for beginners who know feel like they first need to learn cabal-install before they can get to the fun coding
14:56:35 rif joins (~rif@c-24-4-99-49.hsd1.ca.comcast.net)
14:57:08 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
14:57:17 Tario joins (~Tario@201.192.165.173)
14:57:29 _mefairS` joins (~st_ars@110.54.218.138)
14:57:33 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
14:57:47 britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch)
14:58:03 × dxld quits (~dxld@rush.pub.dxld.at) (Quit: Bye)
14:58:56 × texasmynsted quits (~texasmyns@212.102.45.103) (Ping timeout: 240 seconds)
14:59:29 dxld joins (~dxld@rush.pub.dxld.at)
15:00:13 geekosaur joins (ae68c070@cpe-174-104-192-112.neo.res.rr.com)
15:00:38 × heatsink quits (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Ping timeout: 264 seconds)
15:01:13 × _mefairS` quits (~st_ars@110.54.218.138) (Read error: Connection reset by peer)
15:03:32 × britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
15:03:35 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:03:37 <adamCS> Related: Even as a somewhat experienced coder, the overhead of new cabal-file, etc. often leads me to jam vaguely-related-things into an existing library until it's obviously silly and then split it out, rather than start it on its own. Which is my problem, I know, but I would love an easier path for that too. Also not complaining! Cabal has come so far!
15:03:55 × nowhere_man quits (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Ping timeout: 272 seconds)
15:04:01 <merijn> adamCS: to be fair, that doesn't sound necessarily as a bad thing
15:04:53 × cosimone quits (~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
15:05:28 × rif quits (~rif@c-24-4-99-49.hsd1.ca.comcast.net) (Quit: Leaving)
15:05:43 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds)
15:06:55 <adamCS> merjin: Sometimes. But it's often sub-optimal, especially since by the time I realize I need/ought to split it out, I'm often no longer as immersed in it and it also makes one less disciplined about keeping dependencies down, etc. I guess if I had good practice about a couple more things it might all make me less grumpy.
15:07:02 <adamCS> merijn: ^
15:07:04 <adamCS> sorry
15:08:10 <merijn> adamCS: Well, if you're no longer as immersed in it nor planning to reuse it, is there really any point in cleaning it up/splitting it off?
15:08:59 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
15:09:28 <merijn> Like, that just sounds like "in retrospect I am not quite happy with my final choice of architecture", but if the code is abandonned then that's just "I have progressed and learned" rather than something that actually needs to be cleaned up? :)
15:10:38 <merijn> In the past decade I've only split off and packaged, like, 4 packages. 3 of which are only a single module.
15:10:44 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
15:11:03 <merijn> No point in packaging things unless you actually plan to reuse them :p
15:11:04 <adamCS> merijn: Right. But the case I run across is not-immersed but often-using. So I maybe want to put on hackage or just keep cleaner boundaries and think harder about abstractions. But now it's sort of lazily intertwined. So the energy required to get it right is higher than it would've been if I'd kept it clean from the jump. But you may be right, that the cost is recouped over all the times that code ends up abandoned.
15:11:20 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
15:11:34 danza joins (~francesco@151.37.86.29)
15:11:36 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
15:12:41 × clemopemo quits (54ba165a@p54ba165a.dip0.t-ipconnect.de) (Remote host closed the connection)
15:12:47 <adamCS> merijn: Yeah. Perhaps what I am saying is that I wish the new-library route was just easy enough to inspire me to be a more disciplined coder in the first place. Which I stand by! But am also slightly ashamed of. Sigh.
15:12:48 nowhere_man joins (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155)
15:13:15 <merijn> adamCS: I mean, you can now split off into a separate library in the same package as a sort of intermediate step!
15:13:54 <adamCS> merijn: Yes! I haven't tried that yet but it might be the ticket.
15:14:13 <merijn> adamCS: You can have multiple (internal) libraries in a package in more recent cabal-install's, so you can "split it off, while still keeping it in", which makes splitting it off into a proper package easier
15:14:16 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
15:15:34 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
15:15:52 <adamCS> merijn: Yeah. I have a good test case for that which is approaching the, gosh why is this in the same place as everything else, stage. Maybe I will try an in-package split to learn how. Thanks!
15:16:23 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
15:18:10 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
15:19:34 sord937 joins (~sord937@gateway/tor-sasl/sord937)
15:19:50 × nowhere_man quits (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Remote host closed the connection)
15:20:12 nowhere_man joins (~pierre@2a01:e0a:3c7:60d0:8e6f:ae06:e9b9:b7ab)
15:21:13 × s00pcan quits (~chris@107.181.165.217) (Ping timeout: 246 seconds)
15:22:31 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Quit: mputz)
15:22:47 × ericsagnes quits (~ericsagne@2405:6580:0:5100:5e7a:6b93:86d8:5cb1) (Ping timeout: 244 seconds)
15:23:02 solonarv joins (~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr)
15:23:21 s00pcan joins (~chris@075-133-056-178.res.spectrum.com)
15:23:35 rotaerk joins (rotaerk@2600:3c02::f03c:91ff:fe70:4a45)
15:26:34 bitmagie joins (~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de)
15:27:19 × bitmagie quits (~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de) (Client Quit)
15:27:40 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:a9cd:5081:c991:1e35:d185) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:27:55 texasmynsted joins (~texasmyns@212.102.45.103)
15:30:22 Deide joins (~Deide@217.155.19.23)
15:30:52 bitmagie joins (~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de)
15:31:14 fendor_ is now known as fendor
15:35:06 ericsagnes joins (~ericsagne@2405:6580:0:5100:fba4:3346:4adb:38f7)
15:35:12 Saukk joins (~Saukk@2001:998:ec:954:1c59:9bb5:b94c:3)
15:36:16 × texasmynsted quits (~texasmyns@212.102.45.103) (Ping timeout: 240 seconds)
15:36:19 toast52 parts (97c0a219@151.192.162.25) ()
15:38:38 hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net)
15:39:10 softwarm joins (4408f588@ip68-8-245-136.sd.sd.cox.net)
15:41:13 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
15:41:36 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
15:42:29 machinedgod joins (~machinedg@24.105.81.50)
15:44:12 jrm2 joins (~jrm@freebsd/developer/jrm)
15:44:50 × jrm quits (~jrm@freebsd/developer/jrm) (Ping timeout: 256 seconds)
15:44:51 jrm2 is now known as jrm
15:46:21 dhil joins (~dhil@195.213.192.34)
15:47:16 taio is now known as riko
15:54:38 ClaudiusMaximus joins (~claude@223.153.198.146.dyn.plus.net)
15:54:46 × ClaudiusMaximus quits (~claude@223.153.198.146.dyn.plus.net) (Changing host)
15:54:46 ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus)
15:55:12 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
15:55:18 urodna joins (~urodna@unaffiliated/urodna)
15:56:25 heatsink joins (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
15:57:01 <zincy__> What are the main advantages of separating pure from impure code? In Haskell this really means monadic vs non-monadic right as opposed to pure/impure? Pure code is easier to reason about and easier to test, is there anything else?
15:57:25 <dminuoso> That's it, pretty much.
15:57:34 <merijn> zincy__: Nitpick: There is no impure code in Haskell (ignoring unsafe*), that's the entire point of having IO in the first place
15:58:04 <merijn> People like to say "impure" when they mean "IO based", but IO *isn't* impure, that's the entire point
15:58:19 <dminuoso> zincy__: Equational reasoning is priceless, it happens in all of our heads constantly.
15:58:29 <dminuoso> Even in yours.
15:58:36 <dminuoso> It might be as simple as
15:58:55 <merijn> Equational reasoning is great, and the entire benefit of having IO as type is that it doesn't break purity and just allows you to keep equational reasoning
15:59:30 <dminuoso> "transforming `f x y (g a b) (g a b)` into `let g' = g a b in f x y g' g'` is legitimate because of the properties of haskell
15:59:52 <dminuoso> Its little things of refactoring you probably do every day already
16:00:00 × coot quits (~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
16:01:09 texasmynsted joins (~texasmyns@212.102.45.103)
16:01:14 × heatsink quits (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Ping timeout: 264 seconds)
16:01:19 Ariakenom joins (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se)
16:01:37 <zincy__> merijn: Yeah I am aware of this nitpick :)
16:01:47 <merijn> zincy__: It's an important one, though :)
16:01:55 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
16:02:01 <riko> What did the "makers of Haskell" think of allowing such mutually recursive definitions?
16:02:05 <riko> f = g
16:02:07 <zincy__> I was wondering do people mean IO or monadic code in general when they say "impure"?
16:02:09 <riko> g = f
16:02:16 <zincy__> In fact screw what people say
16:02:22 <merijn> riko: I mean you can even skip a step there
16:02:24 <dminuoso> riko: it's things like `repeat`
16:02:30 <merijn> > let f = f in f
16:02:33 <lambdabot> *Exception: <<loop>>
16:02:49 <merijn> riko: The reason to allow that is because you can do incredibly useful things like:
16:02:51 <dminuoso> riko: f = g; g = f is allowed just because it wouldnt make sense to forbid it, and detecting when to forbid is is impossible in the general case
16:02:54 <dminuoso> (because halting problem)
16:02:55 <merijn> > let ones = 1 : ones in ones
16:02:57 <lambdabot> [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1...
16:03:08 <zincy__> We should strive to separate effectful (monadic) code from non-effectful (non monadic) code right?
16:03:13 <riko> when I query the type, I get f :: t
16:03:14 <riko> and in GHCi the call does not terminate. very strange: D
16:03:29 <merijn> zincy__: meh
16:03:39 <merijn> zincy__: Not really, imo
16:03:51 <zincy__> Ok what if you specialise that argument to IO
16:03:56 <merijn> zincy__: https://twitter.com/k0001/status/1295846402648682496 :)
16:03:58 <zincy__> Separate IO from non IO
16:04:31 <merijn> zincy__: Separating IO from non-IO is generally good. But I feel many beginners over value it, to the point where it harms their productivity
16:05:02 × bitmagie quits (~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
16:05:07 <merijn> Writing Haskell with IO everywhere >> getting stuck unable to anything using Haskell :)
16:05:14 <zincy__> This begins to become a tricky nuanced rule the "pure core/imperative shell" mindset. Since everything is pure
16:05:17 <zincy__> I am confused
16:05:43 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
16:05:59 <merijn> zincy__: I write lots of concurrent/network-y/file-y/spawning other process-y code. It has IO everywhere and it's perfectly pleasant to work with
16:06:32 <zincy__> So there is no cast iron rule saying thou shalt split IO code from non-io code where possible
16:06:33 <merijn> zincy__: My point was simply that "writing code" >> "worrying about how you should be writing code" in terms of both productivity and learning :)
16:06:45 bitmagie joins (~Thunderbi@200116b80605380085ee684ceb032ce1.dip.versatel-1u1.de)
16:06:48 <zincy__> hehe :D
16:07:21 <merijn> zincy__: Is overuse of IO "not great"? Sure. But the best way to figure out why/when it sucks is to just write it and find out the hard way
16:07:32 <zincy__> Isn't there a big argument for this separation because then you can rely less on mocking?
16:07:38 <merijn> Does it help to stop and think if you can split the IO and logic? Sure it does!
16:07:52 <ephemient> even when mutability is required, plenty of stuff works fine in ST
16:08:08 <merijn> But you know, sometimes you wanna have a feeling of actually *doing* something and doing *something* with IO everywhere is better than *not* doing it :)
16:08:10 <ephemient> free tries to get you the best of both worlds, being pure and providing access to IO equivalents
16:08:15 <merijn> ephemient: Sure
16:09:09 <merijn> ephemient: But so many beginners get paralysed by this idea of "avoiding IO at all costs", I think it's much more helpful in "unstucking" people to help them realise there's a time and place for everything and there's nothing wrong with "imperative Haskell" :)
16:10:09 <ephemient> I think it depends on the code
16:10:26 <ephemient> if IO is the only monad you're working with, then yeah it's not so bad
16:10:30 <zincy__> Code with IO is harder to test
16:10:53 <merijn> Same thing I keep saying about converting C people, maybe instead of focussing on "how safe" haskell is, we should be telling them how unsafe you can be if needed! unsafeCoerce, unsafePerformIO, accursedUnutterablePerformIO! So many escape hatches and unlifted types for your high performance needs!
16:10:56 <zincy__> So minimising the surface area of IO does make your program easier to test
16:11:02 Lycurgus joins (~niemand@cpe-45-46-137-210.buffalo.res.rr.com)
16:11:15 <zincy__> merijn: I like that argument
16:11:17 <merijn> zincy__: Sure, but you find that out quick enough when writing IO heavy code and you will have learned something :)
16:11:46 × s00pcan quits (~chris@075-133-056-178.res.spectrum.com) (Remote host closed the connection)
16:12:00 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
16:12:00 <zincy__> Right so when it comes to learning just take action is the general motto
16:12:01 <merijn> zincy__: Once you "give up" on being pure all the time and start writing code you will quickly find that actually a lot of your code is *still* pure and get a better sense of managing where/when of IO
16:12:02 <ephemient> if it's performance you're after, though... haskell IO isn't great
16:12:11 <merijn> ephemient: pfft
16:12:13 <merijn> ephemient: It's fine
16:12:16 <ephemient> it forces sequencing where equivalent code in C would allow for reordering
16:12:23 cosimone joins (~cosimone@93-47-228-249.ip115.fastwebnet.it)
16:12:29 <dolio> How do you know?
16:12:49 <merijn> ephemient: You can almost never reorder C and the place where you can the same can easily happen with IO
16:13:10 <ephemient> IORef can not be reordered
16:13:24 <ephemient> memory reads/writes, up to memory barriers, can
16:13:34 <merijn> ephemient: Neither can accesses in C within a single thread
16:13:44 <merijn> And if you're writing threaded C you're already fucked :p
16:13:50 amir__ joins (~amir@37.98.47.224)
16:14:38 <ephemient> C compiler is allowed to move, repeat, and elide memory access as it wants, as long as single-threaded observed behavior is equivalent
16:14:50 <ephemient> e.g. it may reload, or it may lift stores and loads
16:14:51 ambidextrose joins (~fut-learn@mobile-166-170-51-98.mycingular.net)
16:15:06 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
16:15:19 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:15:24 <ephemient> IORef is forced by IO's sequencing to be... well, sequential
16:15:37 <merijn> "kinda"
16:16:03 <merijn> Because then you get in the murky waters of CPU guaranteed consistency models :p
16:16:11 <dolio> ephemient: This is false.
16:16:36 <dolio> It's like saying that C can't reorder things because you typed it into the file in a certain order.
16:17:05 hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
16:17:29 <adamCS> When I started writing Haskell, a lot was in IO. Understanding how to move much of it out was the first time I had an assortment of "aha!" moments about functor and monad. There were more to follow, to be sure. Since IO is comparatively opaque, you really want to get things out of it sometimes so you figure out how when it wasn't necessary in the first place. And that is educational. Or it was for me, anyway.
16:18:15 × Lycurgus quits (~niemand@cpe-45-46-137-210.buffalo.res.rr.com) (Quit: Exeunt)
16:18:45 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
16:19:16 <ephemient> c <- newIORef 0; forM_ [0..9] $ \i -> readIORef c >>= print
16:19:20 <ephemient> vs static int c; for (int i = 0; i < 10; i++) printf("%d\n", c);
16:21:13 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8)
16:31:48 lightwave joins (~chris@bras-vprn-nwmkon8540w-lp130-10-142-112-210-136.dsl.bell.ca)
16:32:45 <lightwave> Stack newbie question: I tried to 'stack install cabal-install' but got the following error. What do I do to resolve the version conflict/requirement?
16:32:55 <lightwave> Error: While constructing the build plan, the following exceptions were encountered:
16:32:56 <lightwave>
16:32:56 <lightwave> In the dependencies for cabal-install-3.2.0.0:
16:32:56 <lightwave> Cabal-3.0.1.0 from stack configuration does not match ==3.2.* (latest matching version is 3.2.1.0)
16:32:57 <lightwave> needed since cabal-install is a build target.
16:33:25 <maerwald> lightwave: don't install cabal that way
16:33:36 <maerwald> download the binary or use ghcup
16:34:23 <lightwave> I'm following the "Haskell Tutorial and Cookbook" book...
16:34:43 <merijn> lightwave: Well, the book is wrong on how to install things then :)
16:35:17 <lightwave> What's the relation between ghcup & stack & cabal?
16:35:19 <merijn> lightwave: Basically, Cabal-3.0 is the latest on stackage, afaict, but cabal-install isn't on there. So it blindly tries to build the latest versions (3.2) using stackage's dependencies (3.0)
16:35:32 <merijn> lightwave: https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07
16:35:56 <merijn> I should make an "hours of typing I saved myself" counter on that link :>
16:36:28 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
16:36:30 christo joins (~chris@81.96.113.213)
16:36:39 <lightwave> LOL
16:36:53 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
16:39:42 knupfer joins (~Thunderbi@200116b82ce66f004c0142fffe7f139f.dip.versatel-1u1.de)
16:41:13 <fuzzypixelz> how do I auto-add signatures in haskell-mode, I'm using (doom) emacs
16:41:14 × acidjnk_new quits (~acidjnk@p200300d0c719ff043467fd7c213734d3.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
16:41:32 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
16:41:40 <lightwave> Is ghcup the first thing to install for haskell beginner? Then stack?
16:42:04 × DavidEichmann quits (~david@62.110.198.146.dyn.plus.net) (Ping timeout: 246 seconds)
16:42:06 × knupfer quits (~Thunderbi@200116b82ce66f004c0142fffe7f139f.dip.versatel-1u1.de) (Remote host closed the connection)
16:42:08 <merijn> lightwave: ghcup is a tool for easily installing GHC and cabal-install
16:42:20 knupfer joins (~Thunderbi@200116b82ce66f0091fa5495f7f0c4f9.dip.versatel-1u1.de)
16:42:26 <lightwave> I thought stack also install ghc?
16:42:28 <merijn> lightwave: stack manages GHC directly and will install it as needed
16:43:05 <merijn> If you play to use stack you don't need ghcup or cabal-install. If you plan to use cabal-install, the easiest way to install GHC & cabal-install is probably ghcup
16:43:10 <merijn> s/play/plan
16:43:11 <lightwave> merijn: So ghcup install ghc & cabal-install globally while stack manage ghc locally at the project level?
16:43:22 <merijn> lightwave: Pretty much
16:43:35 <lightwave> Can I have both?
16:43:41 <merijn> Sure
16:43:41 × m4lvin quits (~m4lvin@w4eg.de) (Quit: m4lvin)
16:43:53 <lightwave> Will my head explode if they are both install on my laptop?
16:44:03 m4lvin joins (~m4lvin@w4eg.de)
16:44:03 <maerwald> no
16:44:07 <ephemient> stack will cache the ghc etc. it downloads, so if you have multiple stack projects using the same versions it should reuse it
16:44:14 <maerwald> they're completely independent
16:44:40 <lightwave> Thank you guys for saving my head
16:44:42 <ephemient> stack and system ghc won't interact at all, unless you use --system-ghc
16:53:51 × Amras quits (~Amras@unaffiliated/amras) (Remote host closed the connection)
16:55:02 <fuzzypixelz> https://stackoverflow.com/questions/8963488/automatically-add-type-signatures-to-top-level-functions suggests I do C-c C-t but that just shows the type signature in the bottom of my buffer
16:55:24 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
16:56:21 <fuzzypixelz> I want it to be automagically added
16:56:24 × Saukk quits (~Saukk@2001:998:ec:954:1c59:9bb5:b94c:3) (Remote host closed the connection)
16:56:28 <lightwave> Good lord... my ~/.ghcup directory is 4.5G That's much bigger than I expected.
16:56:55 christo joins (~chris@81.96.113.213)
16:57:17 heatsink joins (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
16:57:32 × knupfer quits (~Thunderbi@200116b82ce66f0091fa5495f7f0c4f9.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
16:58:08 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
16:58:10 <merijn> lightwave: GHC is about 1-1.5 GB so if you got 2 or 3 GHCs installed that sounds about right
16:58:17 × kupi quits (uid212005@gateway/web/irccloud.com/x-ilpqogltmhlqsyet) (Quit: Connection closed for inactivity)
16:58:39 <lightwave> Only has 8.8.4 installed.
16:59:03 Tario joins (~Tario@201.192.165.173)
16:59:09 conal joins (~conal@64.71.133.70)
16:59:22 <merijn> hmm, "du -d 1 -h" inside that directory to see where all the space is going ;)
17:01:50 × heatsink quits (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Ping timeout: 264 seconds)
17:02:09 × softwarm quits (4408f588@ip68-8-245-136.sd.sd.cox.net) (Ping timeout: 245 seconds)
17:02:24 xyggos joins (uid216035@gateway/web/irccloud.com/x-ojvoeipqhxhkiuhf)
17:02:30 xyggos is now known as shenyi
17:02:38 <lightwave> I think majority of the space were taken up by various verions of haskell-language-server
17:02:58 knupfer joins (~Thunderbi@200116b82ce66f00c03c85fffe61b3bd.dip.versatel-1u1.de)
17:03:08 <merijn> ah, possibly
17:03:25 × knupfer quits (~Thunderbi@200116b82ce66f00c03c85fffe61b3bd.dip.versatel-1u1.de) (Remote host closed the connection)
17:03:38 knupfer joins (~Thunderbi@200116b82ce66f00891d43401c35143c.dip.versatel-1u1.de)
17:03:57 <lightwave> Kind of weird how it install all the versions even though I only have ghc v8.8.4 installed.
17:05:14 zaquest joins (~notzaques@5.128.210.178)
17:05:28 × zaquest quits (~notzaques@5.128.210.178) (Read error: Connection reset by peer)
17:06:13 × amir__ quits (~amir@37.98.47.224) (Remote host closed the connection)
17:06:42 × Guest60204 quits (~michael@142.93.75.170) (Quit: WeeChat 2.8)
17:07:22 × bitmagie quits (~Thunderbi@200116b80605380085ee684ceb032ce1.dip.versatel-1u1.de) (Quit: bitmagie)
17:07:25 on_ joins (~michael@142.93.75.170)
17:11:53 <maerwald> if you're concerned about disk space, haskell will not be for you :p
17:12:12 <maerwald> wait until you actually build a project
17:12:17 <merijn> maerwald: It's really not that bad, tbh
17:12:48 × dolio quits (~dolio@haskell/developer/dolio) (Quit: ZNC 1.8.2 - https://znc.in)
17:12:58 <maerwald> merijn: it is. I installed one project with stack and my .stack is 4.4 GB :)
17:13:02 <merijn> "ooh...GHC is so massive...it's one whole GB!", meanwhile my stripped minimal clang++ install is freaking 1.9 GB. The one I had to build from source is 5 GB
17:13:13 <maerwald> I installed *several* projects with cargo and .cargo is 418mb
17:13:27 <merijn> But people install clang/LLVM via their package manager and don't see it's size
17:14:52 <lightwave> I told my wife that I need a bigger Macbook under the christmas tree... She's pretending she didn't hear me. LOL
17:15:26 <maerwald> yeah, I just got a thinkpad X1 extreme, so I can do haskell stuff on my laptopt without crying
17:15:45 <maerwald> 32gb is minimum IMO
17:15:56 × ambidextrose quits (~fut-learn@mobile-166-170-51-98.mycingular.net) (Ping timeout: 240 seconds)
17:16:04 <merijn> It's 2020, what are you doing without a 1 TB SSD in your laptop? >.>
17:16:06 <maerwald> unfortunately, you can't upgrade macbooks
17:16:08 <lightwave> I suspect I'd still cry. I'm never satisify with my new toy.
17:16:15 <maerwald> merijn: lol, I have that one too
17:16:21 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
17:16:37 <lightwave> I have 1TB on my MBP... but it's a nice excuse to buy a new one. LOL
17:16:44 <maerwald> X1 extreme is in the same price range as macbook, but I can upgrade the ram... so why would I
17:17:00 × cheater quits (~user@unaffiliated/cheater) (Ping timeout: 260 seconds)
17:17:29 <lightwave> TBH, I never find myself needing to upgrade RAM in my dev machines.
17:18:56 <maerwald> ok, start haskell-language-server
17:19:40 <maerwald> also, firefox decided to run an entire OS per tab, so
17:19:50 <lightwave> It can't be worse than the LSP for typescript... loller_
17:20:01 <lightwave> s/loller_/LOL
17:20:52 dolio joins (~dolio@haskell/developer/dolio)
17:21:01 <maerwald> and then run a few electron apps
17:21:31 <maerwald> your gtk theme leaks memory and `rg` blows up the rest
17:21:50 <maerwald> (yeah, rg isn't linear in memory)
17:22:53 × mounty quits (~mounty@210.1.196.133) (Ping timeout: 256 seconds)
17:23:01 <maerwald> oh, I forgot... make sure to use coc.nvim, because you want to run a few million lines of javascript inside your editor
17:23:04 <lightwave> Chrome (any chromium browsers) & node are the worst on my bx.
17:23:13 <dminuoso> 18:19:45 maerwald | [17:16:06] unfortunately, you can't upgrade macbooks
17:23:31 <dminuoso> It's a well known fact that SSDs are non-upgradeable. It's physics
17:23:33 <dminuoso> Physics of money.
17:23:37 <loller_> lightwave: lol
17:23:39 <loller_> XD
17:23:44 <maerwald> dminuoso: loller_
17:24:14 <lightwave> dminuoso: LOL
17:24:19 bliminse joins (~bliminse@host86-134-63-68.range86-134.btcentralplus.com)
17:25:56 <lightwave> The Apple M1 chip is onto something. No longer is my lap getting BBQ by the Intel chip. I'm playing with one on loan to me from my wife's company.
17:26:46 foobarblob joins (188838c2@ip24-136-56-194.ga.at.cox.net)
17:29:15 Kronic joins (~Kronic___@84.203.103.100)
17:29:54 cheater joins (~user@unaffiliated/cheater)
17:30:26 juuandyy joins (~juuandyy@90.166.144.65)
17:30:45 <Kronic> Hey there, I´m a little bit confused when it comes to parsers. I understand the concept, and I think it is something that given enough time, I could understand well, but what I really don´t get outright is which library to start with. I seemed to be spoiled for choice. Is it okay to just come to terms with parsec at first?
17:31:03 <dminuoso> Kronic: Megaparsec is a safe default.
17:31:06 abhixec joins (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net)
17:31:09 <dminuoso> Parsec is dated and not a good starting place IMO.
17:31:22 <dminuoso> (There's also attparsec to consider if you're dealing with binary data rather)
17:31:44 <dminuoso> But if you just want a "give me a single library damnit", then look no further than megaparsec.
17:32:12 <koz_> Megaparsec also has an extensive tutorial.
17:32:18 <Kronic> Ah thank you, that makes sense, I noticed the documentation for that one seemed a little better (I only took a glance really, so I could be wrong!). I will get working on that
17:33:23 × lightwave quits (~chris@bras-vprn-nwmkon8540w-lp130-10-142-112-210-136.dsl.bell.ca) (Remote host closed the connection)
17:33:42 <dminuoso> Kronic: Another library to keep in mind that augments megaparsec nicely is parser-combinators.
17:34:37 <dminuoso> (Im not actually sure how much overlap there is with megaparsec)
17:35:44 × mcginleyr1 quits (uid475794@gateway/web/irccloud.com/x-kmepugnonanirpgl) (Quit: Connection closed for inactivity)
17:35:55 × urek quits (~urek@2804:7f1:e10a:a8d:dc47:5170:f5a9:5634) (Ping timeout: 272 seconds)
17:40:49 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
17:41:12 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
17:43:56 <cads> hey all, anyone here use haskell to make python libraries before? What did you use? would you say it was pretty hellish, or that it was significantly (and surprisingly) less than hellish?
17:45:02 <cads> I see missingpy exists, but that nobody has touched it in 8 years. So I don't think that's the current path for embedding haskell into python
17:45:17 bitmagie joins (~Thunderbi@200116b80605380085ee684ceb032ce1.dip.versatel-1u1.de)
17:46:42 <cads> probably haskell can publish to some standard FFI technology, and python can import those libraries - my issue seems to be that I don't know what those techs are called, and so few people are writing about it that I can't easily google search it
17:47:27 <cads> https://wiki.haskell.org/Applications_and_libraries/Interfacing_other_languages just found
17:49:12 × lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Ping timeout: 260 seconds)
17:50:03 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
17:50:28 <jackhill> cads: I've seen some good posts on crating a c shared library/calling haskell form c in the past, but I can't really find those now. I turned this up: https://wiki.haskell.org/Calling_Haskell_from_C
17:51:38 <jackhill> I had to give up on my project because I didn't really knwo C well enough :/ I now even less about how Python integrates with C libraries or if there is a better way of integrating Haskell and Python. Maybe that's enough to get you started though.
17:51:49 <cads> looks like one path (still terrifyingly complex) is to generate a C interface with c2hs, and then use python's CTYPES to reconstitute any facilities that might be "lost in translation"
17:53:23 × zebrag quits (~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
17:53:47 zebrag joins (~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr)
17:53:50 <cads> jackhill, thanks, I think doing C hax might be the best shortcut at this time
17:54:03 × newsham quits (~ubuntu@ec2-18-218-216-88.us-east-2.compute.amazonaws.com) (Ping timeout: 256 seconds)
17:54:51 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
17:55:14 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
17:55:22 <cads> Here is the story for writing a python module backed by rust: https://mycognosist.github.io/tutorial-rust-python-lib.html
17:56:01 newsham joins (~ubuntu@ec2-18-218-216-88.us-east-2.compute.amazonaws.com)
17:57:52 <jackhill> cool
17:57:58 <cads> that depends on a rust crate called cpython. This appears to wrap python objects in a rustic interface, so that rust code can receive and return them http://dgrunwald.github.io/rust-cpython/doc/cpython/
17:57:59 heatsink joins (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
17:59:40 <cads> perhaps I need a haskell value that represents a python objects. I am rather vague about the machinery that rust.cpython uses to actually produce python modules out of that code, but I'll keep reading.
17:59:46 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
18:01:29 notzmv joins (~user@unaffiliated/zmv)
18:02:04 × heatsink quits (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Ping timeout: 240 seconds)
18:03:26 × ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection)
18:04:54 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
18:05:08 ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
18:05:18 hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
18:06:01 Jeanne-Kamikaze joins (~Jeanne-Ka@66.115.189.175)
18:09:54 × notzmv quits (~user@unaffiliated/zmv) (Read error: No route to host)
18:09:55 × texasmynsted quits (~texasmyns@212.102.45.103) (Remote host closed the connection)
18:10:11 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
18:10:38 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
18:10:53 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
18:11:18 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
18:11:43 notzmv joins (~user@unaffiliated/zmv)
18:14:04 isovector1 joins (~isovector@172.103.216.166.cable.tpia.cipherkey.com)
18:14:20 isovector1 parts (~isovector@172.103.216.166.cable.tpia.cipherkey.com) ("Leaving")
18:14:36 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
18:16:55 elliott__ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
18:17:00 mrchampion_ joins (~mrchampio@38.18.109.23)
18:17:18 urek joins (~urek@179.187.232.25.dynamic.adsl.gvt.net.br)
18:18:21 <merijn> cads: Ok, so, pragmatic solution
18:18:39 <merijn> cads: Do what I did and just spawn a python subprocess using whatever library you need
18:19:31 <merijn> cads: Directly calling python means basically exporting your python interface to C first and then calling the C interface from Haskell's FFI, as C is the only well defined ABI and all other languages pretty much only support FFI to C
18:20:00 × mrchampion quits (~mrchampio@216-211-54-88.dynamic.tbaytel.net) (Ping timeout: 260 seconds)
18:20:02 × wagle quits (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
18:20:03 <merijn> Which, honestly, all sounds like much more work than "write a minimal Python script and call that"
18:20:33 wagle joins (~wagle@quassel.wagle.io)
18:22:14 <koz_> merijn: Oof, yeah, that sounds... not fun.
18:22:31 <koz_> Definitely not the sort of thing you wanna do by hand.
18:22:38 <koz_> . o O (inline-python?)
18:22:48 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
18:23:23 jollygood2 joins (~bc8165ab@217.29.117.252)
18:23:31 <jollygood2> wasn't there something like this already?
18:23:57 <jollygood2> (1, 2) -> (2, 1)
18:24:20 <koz_> :t swap
18:24:22 <lambdabot> (a, b) -> (b, a)
18:24:33 <jollygood2> of course :). thanks
18:24:43 × ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds)
18:25:06 ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
18:33:49 × danza quits (~francesco@151.37.86.29) (Ping timeout: 264 seconds)
18:34:30 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:7588:30bb:c072:52a) (Read error: Connection reset by peer)
18:36:26 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
18:40:44 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-blqgdwgqtvmgdyih)
18:40:56 × juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 240 seconds)
18:40:59 <cads> merijn, I want the opposite - build some heavy number crunching code in haskell, give python users an easy to use interface
18:41:21 <merijn> cads: That's about as hard as calling C from python
18:41:25 juuandyy joins (~juuandyy@90.166.144.65)
18:41:38 <cads> know anyone who wants to make it easier?
18:41:41 <merijn> cads: Basically, exposing Haskell functions to C is fairly trivial
18:42:01 <merijn> So the most annoying/hard part is getting python to call those "C" functions
18:42:11 <xerox_> @index swap
18:42:12 <lambdabot> Data.Tuple
18:42:45 <xerox_> not a huge package
18:42:59 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
18:43:22 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
18:43:32 <cads> merijn, right - in the C part of python, there is a special way of handling python objects - so the python part of the code can call those C functions as if they're python methods, in the sense that they return python objects
18:44:37 <cads> but it still requires some pretty subtle magic to take those c functions and wrap the pythonobject C-type into an actual, live, python object
18:45:12 <cads> real "breathing life into clay" kinda stuff, and I bet that the rust cpython crate does the same thing
18:45:13 <Rembane> cads: Can you create an interface using cython?
18:45:19 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
18:45:29 <merijn> cads: Right, my point was that Haskell functions exported via the FFI are "indistinguishable" from C code from the python side :)
18:45:47 heatsink joins (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
18:46:25 <merijn> cads: So if you wanna call Haskell from Python there's not that much to do, unless you wanna be able to "call back" into python and, tbh, even that is fairly straightforward if you can expose the callbacks as C code
18:46:25 Guest_82 joins (47e39310@c-71-227-147-16.hsd1.wa.comcast.net)
18:46:53 <merijn> cads: so this is more of a "python problem" than a "haskell problem" :)
18:47:07 danza joins (~francesco@151.43.197.171)
18:47:37 <merijn> cads: On the Haskell side the only thing you need (besides foreign exporting the Haskell functions) is to make sure you call some wrappers to setup the Haskell RTS before calling code
18:47:38 <cads> well, hold on, because what I want is my python to call the haskell C interface and get python objects back. I think I need a python object "boxed type" in haskell land.
18:47:52 <cads> oh, I think we just said the same thing
18:47:57 × LKoen quits (~LKoen@73.174.9.109.rev.sfr.net) (Remote host closed the connection)
18:48:02 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
18:48:06 <merijn> I made a minimal-ish example of calling Haskell from C here: https://gist.github.com/merijn/4a0fee2b3a5ef3476aa4
18:48:29 <cads> http://dgrunwald.github.io/rust-cpython/doc/cpython/py_class/index.html
18:48:30 <Guest_82> I just tried installing ghcup via the command on the website and get an error on MacOS: https://pastebin.com/f3pWYu71 basically, it hardcodes $HOME as /home/johannd, which doesn't exist and isn't writeable on MacOS. I can't seem to find any bug reports about this. Is it a known problem?
18:49:07 <cads> there's the ref for the rust equivalent of what I'd probably need to make this thing a usable tool rather than an unsustainable one time hack
18:49:09 <merijn> cads: Right, but wrapping Haskell into python objects should happen on the python/C side of things, not on the Haskell side
18:49:26 <maerwald> Guest_82: no, it doesn't hardcode anything, your environment variable HOME points to a non-existing directory
18:49:40 <maerwald> or...
18:49:46 <merijn> cads: I mean, I guess you could theoretically do it on the Haskell side, but that'll be a pain
18:49:54 <cads> merijn, I have two implementations (CPython and Rust.cpython) that do it the other way, so why?
18:49:54 <maerwald> "Operation not supported" sounds like some other problem
18:50:11 <cads> I don't think it's because these communities intentionally want pain
18:50:31 euisuny joins (~euisuny@2601:47:4500:2140:c192:2e54:b4ff:5cb)
18:50:44 <merijn> cads: CPython *does* do it on the C side...their entire implementation is "C side"
18:51:00 <maerwald> Guest_82: fix your environment variable
18:51:09 <cads> maybe I get more control and the python part is much easier to write if I make the haskell code responsible for producing a coherent python object
18:51:22 <Guest_82> maerwald `echo $HOME` -> `/Users/johannd`
18:51:35 <merijn> cads: A "python object" is just a C data structure with some stuff in it
18:51:47 softwarm joins (4408f588@ip68-8-245-136.sd.sd.cox.net)
18:52:15 <merijn> cads: Generally manipulating C data structures is much less painful in *C*. It *can* be done in Haskell, but it's miserable, and there's almost no point if you're going to hand it over to C/Python afterwards
18:52:25 <cads> merijn, I'm saying they do it on the C side as in they have built in the hosting language (c), an abstraction of python objects. And I'm saying that doing so in haskell should also be a thing.
18:52:40 <Guest_82> maerwald even when I exec `sh`, which is piped to after curl, `echo $HOME` -> `/Users/johannd`
18:52:42 <merijn> cads: So you write some C code that turns the Haskell "C" functions into an object and hand that to python
18:52:45 <geekosaur> wondering if /etc/passwd (which is legacy on OS X, but tools like git won't know that) has /home/jdahm in it
18:52:58 <maerwald> Guest_82: well, it definitely is not hardcoded
18:53:12 <merijn> cads: You *can* do it Haskell, but I'm saying you shouldn't, because there is no reason to
18:53:15 <geekosaur> the user database probably has the right value in it
18:53:27 <merijn> cads: But if you like pain, whatever floats your boat
18:53:32 <cads> merijn, I want ppl in haskell land to be explicitly working with a python return type. That way we know when interfaces are expected to touch python, and when they are "pure"
18:53:46 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
18:53:50 <merijn> cads: Well, that's just going to straight up suck
18:53:51 <cads> does that sound like a benefit?
18:53:59 <cads> why?
18:54:02 <merijn> cads: No, it sounds like massive amounts of pain :)
18:54:07 <cads> okay, but why?
18:54:22 <merijn> cads: Because it involves lots of operating on C structs from Haskell, which is the most painful part of FFI
18:54:24 <cads> why don't you want your types to reflect when a function needs to worry about python, vs when it can just be pure?
18:54:32 <cads> I feel that is important documentation
18:55:08 <cads> ie, suppose I can have 5 python touching functions (the interfaces), and 20 pure ones (the kernel)
18:55:25 <cads> what if I /want/ to enforce that and document that?
18:55:28 <merijn> cads: I'd say your Haskell numerical code shouldn't reflect python *at all* it should just operate on integers, arrays and matrices and then wrap that into a high level interface in C that gets passed to python
18:55:50 × fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Read error: Connection reset by peer)
18:56:24 <merijn> like, why would it matter that those 20 pure functions eventually get called from C/Python? That's irrelevant for what they do
18:56:32 <cads> how then will my python code can never inspect an object that the user gives it? I have to break down the types into primitive matrices and tensors, and lose my user's object semantics
18:56:41 <cads> I need these things to be python objects
18:56:45 <merijn> cads: Oh
18:56:52 <merijn> cads: Well...then RIP your sanity
18:56:57 <cads> not something that I've temporarily forgotten is a python object
18:57:00 <cads> lol
18:57:09 <cads> merijn, I don't think it's that bad, because after all, cpython does it
18:57:21 <merijn> cads: Because then you've gotta interact with those C structs from python and call functions on them and it will be a big hassle
18:57:30 <cads> and cpython code is actually pretty clean to read, for all that it's C and abstracting python objects
18:57:34 <merijn> cads: CPython does it from C and all of CPython is C
18:57:44 <cads> I think haskell code that abstracts python objects will be if anything nicer than the cpython code
18:57:52 <merijn> lol
18:57:53 <merijn> no
18:57:54 <cads> thought the kernel may have some mind bending insanity in it
18:57:57 LKoen joins (~LKoen@73.174.9.109.rev.sfr.net)
18:58:01 <cads> merijn, why?
18:58:10 <merijn> Clearly you haven't seen the insanity that C++ objects wrapped in Haskell looks like
18:58:27 <cads> why would C be able to wrap python more elegantly than haskell can wrap python?
18:58:34 <cads> we're talking about C
18:59:08 <merijn> Because it's not wrapping python
18:59:09 <cads> I find this highly ironic that C, the anti-abstraction, would be better at providing an abstraction layer than haskell, the language OF abstraction
18:59:24 <cads> but hey, I would love that as a joke, so tell me the punchline
18:59:37 <merijn> cads: CPython is a python interpreter written in C. It's not "wrapping" python, it just calling directly into interpreter implementation details
18:59:59 <merijn> The reason it's "more elegant" is because there's no pretension at wrapping at all
19:00:24 <merijn> You don't "wrap" python objects, you just directly call your (C) interpreter implementation details on objects that exist
19:00:24 <cads> merijn, I'm not talking about the interpreter, I'm talking about the common library code that is written in C
19:00:40 <merijn> cads: Right, but that library code does the same thing
19:00:59 <cads> functions absolutely do wrap python objects inside the functions they work on native c types, and then when the function returns, it wraps it in a pythonobject struct
19:01:07 <merijn> cads: Your Haskell code will not be wrapping Python either. It will be wrapping the C interpreter bits
19:01:26 <cads> Look at the rust library
19:02:09 <merijn> I mean, you don't have to take my word for it. God knows most people on the world don't listen to me :)
19:02:13 <cads> it wraps the c interpreter bits too (because that's all it is really emitting), but it also wraps a python object type, so that users can actually extend functionality for python objects, like any real library must
19:02:52 <cads> merijn, it's just that you're telling me that I don't get to have something I get to take for granted in other languages like rust, because I'd have to work too hard to get it. And the argument is falling flat, yes.
19:03:02 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
19:03:17 <cads> you see how you're trying to discourage me for no real reason, right?
19:03:18 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
19:03:25 <merijn> Anyway, either 1) you're misunderstanding what I'm saying, 2) I'm misunderstanding your description what you wanna do
19:03:32 berberman joins (~berberman@unaffiliated/berberman)
19:03:39 <cads> okay, look at the rust code, and lets discuss it later
19:08:52 britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch)
19:14:10 × britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
19:14:38 × Guest_82 quits (47e39310@c-71-227-147-16.hsd1.wa.comcast.net) (Remote host closed the connection)
19:14:58 Lord_of_Life_ is now known as Lord_of_Life
19:16:10 × Lord_of_Life quits (~Lord@46.217.217.114) (Changing host)
19:16:10 Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362)
19:18:02 <dminuoso> 10:41:21 <cads> merijn, I want the opposite - build some heavy number crunching code in haskell, give python users an easy to use interface
19:18:22 <dminuoso> If you want that, perhaps expose your Haskell code as a service to consumer, say over a unix domain socket?
19:18:34 <cads> huh, or microservice
19:18:40 p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
19:18:45 <dminuoso> Then you can have a well defined API to program against, without all the idiosyncracies of having to deal with crossing FFI.
19:19:04 <jollygood2> I'm writing json using aeson, someone remind me, how can I control the order of fields in the json file?
19:19:23 <merijn> Man...
19:19:29 <cads> it kind of collapses the richness of the datypes of each repsective language, and I have to reason across a set of json interfaces. That's not so bad at all, acutally
19:19:40 <cads> gets rid of a LOT of pain
19:19:44 <merijn> You ever read a question and go "well...this sounds like a rabbithole of depressing tech issues.."? :p
19:19:54 michaelh joins (~user@81-234-107-251-no522.tbcn.telia.com)
19:19:54 <cads> merijn, yes
19:19:56 <cads> lol
19:20:11 <dminuoso> I mean Haskell and cpython interacting with each other is *not* fun.
19:20:13 <merijn> If you need to control order of fields in your JSON file you're already boned
19:20:51 × evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in)
19:20:52 <Chousuke> I can see reasons to do it that aren't altogether insane
19:21:11 <merijn> cads: "it collapses the richness of datatypes of each respective language" <- well, yes, this is a fundamental limitation of FFI
19:21:22 <Chousuke> you might want to programmatically modify a JSON file without causing too large a diff for example.
19:21:41 <merijn> Chousuke: I'm vaguely aware of some...insert adjective here...IBM code that relied on something like that for XML or JSON, so...
19:21:47 <cads> so I have to give up the idea that I'll be able to get a python object, and interrogate it in haskell land
19:22:25 <cads> that changes how I write my python, because I'm used to passing python objects, and methods doing a number of queries and commands on them via that object's methods
19:22:36 <merijn> cads: It's *theoretically* possible, but how would you even expose/use that information without reimplementing the entire python OO interface in Haskell?
19:22:42 evanjs joins (~evanjs@075-129-098-007.res.spectrum.com)
19:23:07 <dminuoso> cads: By the way, consider CBOR over JSON if you can still decide on things
19:23:38 <dminuoso> Especially if you want to deal with numbers.
19:24:00 × darjeeling_ quits (~darjeelin@122.245.218.196) (Ping timeout: 265 seconds)
19:24:05 × juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 256 seconds)
19:24:05 britva joins (~britva@2a02:aa13:7240:2980:6477:78c0:db0c:39cf)
19:24:17 × toorevitimirp quits (~tooreviti@117.182.181.85) (Remote host closed the connection)
19:24:25 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
19:24:31 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
19:24:53 <yushyin> cbor++ ;)
19:25:09 Sheilong joins (uid293653@gateway/web/irccloud.com/x-ttkevgswiiluxpdp)
19:25:57 × dansho quits (~dansho@ec2-52-193-196-85.ap-northeast-1.compute.amazonaws.com) (Quit: Leaving)
19:26:09 darjeeling_ joins (~darjeelin@122.245.218.196)
19:26:47 <cads> I convert things to toml any time a human has to see them, but I have been looking for a versatile binary wire format, thanks
19:26:49 dansho joins (~dansho@ec2-52-193-196-85.ap-northeast-1.compute.amazonaws.com)
19:27:40 × lpy quits (~nyd@unaffiliated/elysian) (Quit: lpy)
19:27:56 <cads> Looks like remarhsal can do the Toml <-> Cbor <-> Yaml <-> Json interop (lol @ how we no longer include XML in that list)
19:28:23 Tario joins (~Tario@201.192.165.173)
19:28:52 cads started encountering Yaml in microservices land, hates it, and is generally much happier /w toml substitutes for confs
19:29:09 Varis joins (~Tadas@unaffiliated/varis)
19:29:40 <cads> you know, the idea that a haskell entity should be big and bad enough to warrant its own microservice? I don't think I'll have trouble finding applications to fill those shoes
19:29:58 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
19:30:39 <Rembane> cads: If you really want to fall down the configuration language rabbit hole: https://dhall-lang.org/
19:31:57 <cads> as a haskell <-> python interop layer it doesn't do what I originally wanted it. But it is so much cheaper that I could have my first application /today/. That makes me like it. And that even makes me feel like it saves me from overengineering something that /even I/ could see was going to be miserable
19:32:01 <michaelh> I have a list of fields which I want to use to populate a record. The list is obtained from parsing a file, so if some fields are missing, I won't create he record. This is a shortened example of how I solved it: https://pastebin.com/ud39S66b As you can see I pattern match on instances of the `Field` type i a list, which causes a lot of boiler plate. Is there a way to avoid that boiler plate? Is there a better way to do this overall?
19:32:01 <michaelh> I'm a Haskell beginner :-)
19:32:14 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
19:32:26 × ericsagnes quits (~ericsagne@2405:6580:0:5100:fba4:3346:4adb:38f7) (Ping timeout: 264 seconds)
19:32:48 <michaelh> The fields that I parse can be in any order btw
19:32:56 <Rembane> michaelh: Hi! What's the format of the file?
19:33:12 <merijn> > (,) <$> Just 2 <*> Just True
19:33:14 <lambdabot> Just (2,True)
19:33:18 <merijn> > (,) <$> Just 2 <*> Nothing
19:33:20 <lambdabot> Nothing
19:33:35 <merijn> michaelh: You probably wanna have a look at Applicative and <$> and <*> :)
19:34:01 <michaelh> Rembane: Custom format. Looking like this: "abc:123 def:Hello"
19:34:04 <merijn> michaelh: Also, oof :)
19:34:10 <michaelh> Actually, Advent of code, day 4
19:34:15 <merijn> michaelh: ReadP is notoriously tricking and confusing :)
19:34:44 <merijn> michaelh: I'd probably try using parsec/attoparsec/megaparsec instead :)
19:35:18 <michaelh> merijn: Sure, I use applicative a bit too, not in this example here though. Will that help me remove all those get... functions?
19:35:19 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
19:35:58 × britva quits (~britva@2a02:aa13:7240:2980:6477:78c0:db0c:39cf) (Quit: This computer has gone to sleep)
19:36:20 <merijn> oh, wait, I think I misparsed the bottom function
19:36:20 <cads> micheal, it feels like each of those functions should be a pattern matching clause of a larger function
19:36:41 <merijn> michaelh: Aren't you missing an fs on each function there?
19:36:58 <cads> that might conceptually unify the four get_functions into a getField function, for instance
19:36:59 <Rembane> michaelh: I primarily used this combination of functions, but my code has more of a hm... Perl feeling to it: concatMap (map (second tail . span (/= ':')) . words)
19:37:06 <merijn> michaelh: You could basically write "Record <$> getAbc fs <*> getDef fs <*> getGhi fs" was my point :)
19:37:12 <michaelh> merijn: oh, I totally do. `fs` should go after each one. Sorry about that.
19:37:13 <cads> err, three
19:38:22 × abhixec quits (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Quit: leaving)
19:39:10 × MarcelineVQ quits (~anja@198.254.202.72) (Ping timeout: 246 seconds)
19:39:39 <michaelh> merijn: Sure! That's neater. But I'll still have all those similar get-functions, that's the one thats making me think perhaps I'm doing this wrong.
19:39:53 <cads> oh, the individual functions have meanings, but currently you have them named after the alphabet (AbcDefGhi). How about: getAbc => getInt, getDef => getString, getGhi => getBool
19:40:29 acidjnk_new joins (~acidjnk@p200300d0c719ff8291316ca5b709066d.dip0.t-ipconnect.de)
19:40:37 <michaelh> cads: But they all return different types, so how would I combine them into one?
19:40:44 <cads> then merijn's code becomes: Record <$> getInt fs <*> getString fs <*> getBool fs -- highly readable
19:40:48 abhixec joins (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net)
19:41:06 <merijn> michaelh: you could derive Ord for Field and instead of having a list like you have now, use a "Map Field Value" and do lookups, but I suppose that doesn't work with different field types
19:41:35 <merijn> michaelh: tbh, the AoC exercise is on the awkward cusp of almost, but not quite, allowing a nice Haskell solution but not being worth the boilerplate
19:41:50 <michaelh> cads: Yeah, that was just some bogus names I picked for now.
19:41:52 <merijn> michaelh: I just used "Map Field String" and then did validation on the strings directly :p
19:42:14 Rembane agrees with merijn
19:42:49 <cads> michaelh, oh, right, the composite function would have to return some strange maybe type, then you'd have to handle it. Maybe not the best. I now prefer the "merijn pipe" architecture
19:43:11 × nullheroes quits (~danielvu@168.235.66.22) (Quit: WeeChat 2.9)
19:44:30 ericsagnes joins (~ericsagne@2405:6580:0:5100:a371:8651:d375:8998)
19:44:31 <cads> michaelh, after debogonizing + applicative chaining, that is code I would be proud of in my own production
19:44:41 <michaelh> Yeah. My starting point was, "I want to pracitice Haskell and at the same time learn to use Text.ParserCombinators.ReadP", while doing AoC. I realize this might give quite a bit of resistance :-) I was also thinking about using, for instance, Map String String, and work with that. But I wanted to try to parse as much as possible. Perhaps not such a great idea
19:45:12 <merijn> michaelh: tbh, ReadP is terrible and the problem isn't supper suitable for it, so you're fighting 2 problems at once :p
19:45:14 MarcelineVQ joins (~anja@198.254.202.72)
19:46:32 <cads> merijn, which are lighter parser combinators to use for a problem like this? also interested for my own use
19:46:45 <merijn> Light in which sense?
19:46:52 <cads> conceptually
19:47:10 <michaelh> Okay. Thanks for helping me realize that! :)
19:47:10 <cads> and simple easy to write
19:47:18 <merijn> attoparsec is probably the smallest/cleanest parser combinator library for simple formats
19:47:44 <merijn> michaelh: I can link you my megaparsec solution, but that's of course a massive spoiler :p
19:48:33 <michaelh> merijn: Sure, I'd be happy to see that. I've already solved the problem, so I don't need to worry about that.
19:48:52 cads wants to see too, also has no qualms /w spoilers
19:48:59 <merijn> michaelh: https://github.com/merijn/AdventOfCode2020/blob/master/Day4.hs
19:50:42 <michaelh> merijn: Thanks! I'll take closer look in a bit. By the way, now that I understand that fighting ReadP wasn't all my fault, can you recommend any of the Parsec-libraries for a newbie? I just want to get some more general parser combinator experience.
19:51:18 DavidEichmann joins (~david@62.110.198.146.dyn.plus.net)
19:52:31 <trepanger> What does "debogonize" mean?
19:52:59 <glguy> ReadP would be fine for parsing AoC. All of the AoC formats are simple enough that any choice of parser combinator library is going to be fine.
19:53:17 <glguy> Where ReadP falls down is that it doesn't give good error messages, which can be helpful to debug your parser when you write it incorrectly
19:53:20 <merijn> michaelh: tbh, the high level design is pretty much identical for all of them, it's the gritty details that differ. Parsec is a bit dated, having symbols conflicting with Prelude (due to predating Applicative/Alternative) and generally not being worked on anymore. Megaparsec is probably the most "industrial" library with the most features, but it's docs are a bit of a mess currently (they do have a bunch
19:53:26 <merijn> of tutorial linked from the repo), attoparsec is rather minimalist, but very clear
19:53:30 notzmv` joins (~user@201-43-52-72.dsl.telesp.net.br)
19:53:50 <merijn> michaelh: The design is so identical, in fact, that the parser-combinators library abstracts tons of functionality for all of them :p
19:54:14 Amras joins (~Amras@unaffiliated/amras)
19:54:54 × notzmv quits (~user@unaffiliated/zmv) (Ping timeout: 256 seconds)
19:55:55 <cads> Rembane, now I'm craving Dhall's semantic hashing. That's pretty fucking snazzy.
19:56:54 <Rembane> cads: Muaha! They are indeed. And the types and the grumpy type checker and the syntax and the... it's a lovely language. ^^
19:57:29 <Rembane> cads: And also, it isn't Turing complete by mistake.
19:58:22 <cads> any way to banish the curly brackets? That is the main reason I ditched json in favor of toml
19:58:44 <Rembane> You can always write a preprocessor.
19:59:12 <cads> or I can write a semantic hashing function for toml
19:59:14 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
19:59:17 <Rembane> Yes. :D
19:59:46 <cads> that's a realy killer feature, lol, I could leave the fact that it's executable (which actually scares me shitless)
20:00:08 × bitmagie quits (~Thunderbi@200116b80605380085ee684ceb032ce1.dip.versatel-1u1.de) (Quit: bitmagie)
20:00:09 <michaelh> Alright, thanks again, all of you :)
20:00:14 × cp- quits (~cp-@b157153.ppp.asahi-net.or.jp) (Remote host closed the connection)
20:00:26 <monochrom> Do so much hate against curly braces.
20:00:36 <monochrom> Pascal bannished curly braces.
20:00:47 <monochrom> made you write "begin" and "end" instead.
20:00:54 <aldum> pascal did a lot of unsavory things
20:01:27 <aldum> to this day I occasionally muck up equality checking in C-style languages
20:01:29 <trepanger> curly brace syntax is a hell of a lot easier to parse than whitespace, though
20:01:37 <cads> technically toml does you dirty in order to give you a brace free experience. But I won't say how.
20:02:41 <trepanger> (easier to write a parser for, I mean)
20:02:41 <monochrom> And why so much hate against parentheses too.
20:02:55 cads thinks the trend of ppl putting the wellbeing of parsers ahead of humans should end
20:03:11 <trepanger> cads: yeah, you have a point
20:03:14 <monochrom> COBOL bannishes curly braces, parentheses, and "begin" and "end". In fact, it bannishes all line noises.
20:03:25 <aldum> cads: I think I read someone argue this
20:03:36 <trepanger> but JSON is mostly for machines
20:03:36 <monochrom> You write "multiply x by y into z" instead. It's pure English. No symbols allowed.
20:03:41 <Rembane> monochrom: Doesn't COBOL banish almost everything?
20:03:53 <aldum> we have two povs here, and we can't ditch human-readability
20:04:01 <MarcelineVQ> humans probably aren't as good at reading as they think they are
20:04:07 <cads> trepanger, I think it was xml that was mostly for machines - json took over because it was /partially/ for humans ;)
20:04:30 <cads> rip xml *touchies fingers to lips, then to sky*
20:04:50 <trepanger> haha, xml was a pain to parse for a machine also
20:05:38 <cads> also there is no fun canonical way to turn xml into json :(
20:05:49 <aldum> human processing takes shortcuts
20:05:55 <Rembane> There's no canonical way to turn xml into anything.
20:06:42 <cads> well there is, it's just creates lots of extra nodes that you don't want
20:07:03 <cads> so then you filter the nodes. Boom, you lost the ability to convert back
20:07:11 <aldum> https://eev.ee/blog/2016/12/01/lets-stop-copying-c/#braces-and-semicolons
20:07:32 <Rembane> cads: That's quite fun in a derpy way. :)
20:07:44 <monochrom> I have much doubt that xml was for machines. A binary format would be for machines. xml is everything but binary.
20:08:02 <cads> i think xml was for schemas
20:08:05 <aldum> xml was for the enterprise :D
20:08:21 <cads> and that, or the same thing honestly
20:09:03 <monochrom> Every time you see a syntax design supporting, even optimizing for, "meaningful" identifiers, you know it's designed for humans.
20:09:05 <trepanger> I'm not convinced that whitespace *is* more readable in general. Particularly for deeply nested data structures.
20:09:29 <aldum> I used to like XML, before I saw better designs, and before I had to do an XSLT/Xpath assignment for a class
20:09:42 <Chousuke> I feel like YAML is popular only because JSON doesn't support comments and doesn't support trailing commas in maps and lists.
20:09:46 <cads> I think we had a need for a really extensible, self referential, self documenting, and discoverable data format , and I think binary formats weren pretty terrible for that
20:09:59 <Rembane> I think LISP would've been a better choice
20:10:26 <aldum> Chousuke: then why not json5 or HOCON?
20:10:37 <Chousuke> because YAML exists.
20:10:45 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
20:10:45 <Chousuke> json5 is too late :)
20:10:47 vicfred joins (~vicfred@unaffiliated/vicfred)
20:11:03 <aldum> well, I like HOCON :)
20:11:17 <cads> Chousuke, and toml is popular (or hopefully getting so) basically because it also has comments and trailing commas, but doesn't have self Yaml's brand of referential madness
20:11:20 MarcelineVQ lights the candle at the altar of .ini
20:11:29 <cads> self-referential madness* even
20:11:32 notzmv` is now known as notzmv
20:11:56 × notzmv quits (~user@201-43-52-72.dsl.telesp.net.br) (Changing host)
20:11:56 notzmv joins (~user@unaffiliated/zmv)
20:12:28 × mounty1 quits (~mounty@210.1.196.133) (Ping timeout: 256 seconds)
20:12:36 <aldum> what's the take on dhall around here?
20:13:49 <monochrom> Haskell shows that you can allow both curly braces and space layout.
20:13:52 <dminuoso> This channel is frequently used for dhall related questions, because apparently it's mostly haskellers that use Dhall?
20:13:59 <cads> Chousuke, fwiw, I'm going around my infrastructure religiously converting my yaml into toml and loving every second of it, so imho yaml's days in the sun are also numbered
20:14:02 <merijn> monochrom: And absolutely no one will use the braces ;)
20:14:09 <aldum> that's why I ask
20:14:17 <monochrom> Aww, you forgot SPJ.
20:14:28 <dminuoso> cads: cant beat ini for configuration files!
20:14:40 <monochrom> Also, I sometimes use them when the space layout rules are against my code structure.
20:15:13 <dminuoso> Though lately I've started preferring just environment variables.
20:15:20 <monochrom> or rather, s/code/conceptual/
20:15:36 <cads> dminuoso, toml manages to, because it lets you create entries into deeply nested lists, where ini would have nothing for you
20:15:51 <aldum> I did some (rudimentary) toml today, it was just like ini
20:15:52 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 256 seconds)
20:15:54 <monochrom> dminuoso: Wait, how much information do you pack into those poor environment variables? :)
20:15:54 <dminuoso> cads: Sure, by that I meant to include toml since I consider it an ini-style language
20:15:59 <dminuoso> monochrom: A lot.
20:16:05 <Chousuke> cads: I'm not convinced about toml either. It seems weird in its own way, too
20:16:23 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
20:16:32 <Chousuke> I prefer software that doesn't need configuration, or if it does, as little of it as possible :P
20:16:34 <monochrom> OK I guess if TERMCAP can do it then you can do it too.
20:16:52 <cads> Chousuke, I have some reservations, yes - but fewer than with yaml, json and xml - I can say I am "happy" with my metadata format today, insofar as it's humanly possible to be happy with such
20:16:52 <monochrom> Do you need to use an IDE to edit the stuff you put in your env variables? :)
20:17:06 <dminuoso> monochrom: Much of our haskell software is deployed in docker, so environment variables fit well into the tooling.
20:17:23 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
20:17:29 <dminuoso> And honestly I had all configuration file formats with a passion. Some just less than others like ini-styles (including toml)
20:17:35 <cads> Chousuke, I prefer software that I can bill customers for, and those usually have configurations ;)
20:17:41 <Chousuke> environment variables are kind of so-so because they're difficult to discover
20:17:44 <dminuoso> I'd love to actually bake configuration into the software (which is ideal)..
20:17:48 doct0rhu joins (~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net)
20:18:04 <monochrom> OK I guess you can create many, many env vars.
20:18:08 <dminuoso> Yes.
20:18:26 <dminuoso> We configure our software with .env files that are essentially just lines of `FOO=bar`
20:18:28 doctorhu joins (~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net)
20:18:33 <Chousuke> cads: most software requires configuration, but there's tons of software that requires you to configure things that you just shouldn't need to ever touch.
20:18:46 <Chousuke> because they have either no defaults, or insane ones.
20:18:47 <monochrom> I was nerdily thinking "use just one env var but you take a 1000-line Haskell source code and compress it and that's the value of the env var"
20:18:52 <dminuoso> It's far from ideal, but at the very least we dont drag a pile of dependency nonsense just to parse a damn config file
20:19:00 <dminuoso> oh haha
20:20:09 <Chousuke> so then you try to get the software running but you're missing some frobnicateWidgets = 16 from the configuration that must be exactly 16 because it defaults to 8 but that doesn't actually work
20:21:18 <cads> dminuoso, I like to have one config file that parses into a conf object that I can work with like conf.client.id and conf.server.ip and so on
20:21:39 <Chousuke> or you have software that has 700 optional modules and enables 300 of them by default but the defaults are insane and you really just need 5 modules
20:21:43 <cads> but that's basically what ini does
20:22:12 <dminuoso> Chousuke: We've really played with the idea of putting *all* configuration into source code.
20:22:22 rprije joins (~rprije@14-201-170-17.tpgi.com.au)
20:22:22 <dminuoso> Except for secrets.
20:22:54 <Chousuke> dminuoso: Have you ever used Clear Linux? They basically made a goal to make /etc empty by default.
20:23:10 <dminuoso> yeah
20:23:17 <dminuoso> well, not used but heard of it
20:23:20 <MarcelineVQ> ~/etc/...
20:23:42 fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
20:23:53 <Chousuke> it's not really wrong to have configuration files since of course you need to configure things like what IPs a service will listen on etc, but a lot of the defaults can be compiled in
20:23:55 × fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Read error: Connection reset by peer)
20:24:00 <cads> Chousuke, I've recently run into a similar phenomenon auditing my /etc in alpine linux. I got to the etc/-groups and etc/groups files and lost it, because I had groups for software systems from the 80s that will NEVER run on my system
20:24:07 <Chousuke> or should at least be read from static files somewhere that don't change.
20:24:17 fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
20:24:46 <cads> I get that the dead configuration isn't causing any pain in production, but it sure does make it hard to audit the configuration for correctness
20:24:49 <Chousuke> cads: lots of those groups are probably standardized in POSIX or something :ÖP
20:24:55 <cads> yeah, they were
20:25:19 <dminuoso> Chousuke: Well, the question is what belongs into a configuration file and what does not.
20:25:24 <monochrom> oooohhhh an oxygen atom that wants to donate 4 electrons....
20:25:43 <Chousuke> :P
20:25:52 <cads> dminuoso, as in, is the behavior easier to audit when you now have to audit code instead of confs
20:26:35 <dminuoso> cads: With code we have traceable artifacts.
20:26:41 × doctorhu quits (~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net) (Quit: Leaving)
20:26:57 <Chousuke> dminuoso: you can have 2 kinds of configuration files: user-modifiable ones and the kind you ship with the software that the user should not touch, ever. Just don't put them in the same place :)
20:27:03 <cads> deployed configuration needs to come from a traceable place too
20:27:08 <dminuoso> Say, if I tell you what's the sum in this `\x -> x + 4` you'd have to tell me "it depends on what x is"
20:27:17 <cads> ie, keep it in source countrol as well
20:27:20 <dminuoso> that is, it depends on how you resolve the dependency on x
20:27:45 <dminuoso> Chousuke: If its not user modifiable, it belongs into the software for sure.
20:27:57 <dminuoso> The entire point of a configuratoin file is so you can modify it.
20:28:20 <dminuoso> Im a proponent of packing everything into the binary for most casual applications.
20:28:21 <cads> it should be in a configuration file that only exists in production
20:28:25 <Chousuke> yeah, but often there's configuration that really is not meant to be modified by the end user
20:28:43 <Chousuke> I'm thinking of something like tomcat's XML files.
20:29:06 <monochrom> and plain.tex :)
20:29:11 <Chousuke> those are configuration for *developers*, not end users
20:30:12 × fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Read error: Connection reset by peer)
20:30:17 <cads> say you have an app, and part of the build is that you create a windows .msi package. for that you have to name the package and tell the install generator where the package should keep its registry keys, and what script should run to uninstall the package.
20:30:36 fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
20:30:38 <cads> This is part of the project's build time configuration... why not keep that in configuration files? why put that in code?
20:30:45 × fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Read error: Connection reset by peer)
20:31:19 <Chousuke> you usually don't ship that with the software though.
20:32:01 <cads> I'm trying to give an example of a configuration file that the end user never even sees, but which developers might occasionally wish to adjust
20:32:24 drincruz_ joins (~adriancru@ool-44c748be.dyn.optonline.net)
20:32:54 <hpc> just imagine source code as a set of configuration files for the compiler
20:32:59 <Chousuke> I'm just thinking about interfaces here. Lots of software exposes settings where if you actually change any of them from whatever the developers have set, the software will break.
20:33:08 <hpc> also configuration files are just a domain-specific declarative language
20:33:14 <cads> hpc, yep
20:33:57 <cads> it's a language for the configuration domain of an app, designed to convey absolutely zero logic
20:34:08 <cads> or as little logic as possible
20:34:22 × Cale quits (~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Remote host closed the connection)
20:34:28 <Chousuke> cads: Tomcat / Wildfly XML files are things I wish I could avoid seeing, but the developers obviously need to work with to get their software deployed on the platform :P
20:35:15 <cads> that way the configuration domain can stay far away from the logic domain, and you can cleanly interface between the two domains instead of smearing configuration through your logic like a turd in your pants
20:35:19 <Chousuke> in the admin role I don't think I should have to worry about what classes and modules wildfly loads to run whatever software I'm configuring.
20:35:39 sparsity joins (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
20:35:55 <Chousuke> but often that configuration is mixed with things I actually *do* have to modify, like database settings
20:36:17 <monochrom> Imagine runghc reading your Haskell code from an env var / It is not hard if you try / No more border between program and data / Down that road is Lisp ...
20:36:24 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
20:36:35 <cads> Chousuke, I think that if I were coming from those platforms my crusade for readable conf files would still exist, but be of an opposite polarity
20:36:37 <hpc> down that road is PAM, where the configuration files are a list of .so files to load :D
20:36:49 <monochrom> haha you win
20:37:44 <cads> hpc, I've recently stopped maintaining a single shell profile, and now I just add shell profile modules to my /etc/profile.d/ directory. I feel I have matoored
20:37:47 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
20:37:47 <Chousuke> hpc: or things like Jenkins, which is basically useless by itself, but you can make it into a CI system by loading just the right plugins.
20:38:26 × euisuny quits (~euisuny@2601:47:4500:2140:c192:2e54:b4ff:5cb) (Remote host closed the connection)
20:39:15 <hpc> the funny thing is i actually like jenkins, just not as a CI system
20:39:17 <cads> Chousuke, in those systems does it help to have a base configuration that has been winnowed down to have the absolute minimum BS boilerplate, plus a live configuration of all the parameters that you actually /want/ to see when you open the conf file?
20:39:43 <cads> Chousuke, that kind of hides the technical debt in a place you won't think about... and where it'll fester
20:40:02 <cads> but it gives you a better day to day experience
20:40:36 cads is afraid their own configurations are going to baloon like this, now that they are moving to micoservices and kubernetes
20:41:38 <cads> I'm going to be working hard to deduplicate configuration, and to not have any configurations that I can't clearly explain what value they provide and why we want to have them
20:41:47 olligobber joins (~olligobbe@unaffiliated/olligobber)
20:41:54 <Chousuke> cads: one way to do it sanely is to have the "default" config in /usr/share or something, load it, and then just override things from /etc
20:42:44 <Chousuke> and if there's no way to provide a sane default configuration for something, just... don't.
20:42:58 <Chousuke> abort startup and complain if the user hasn't configured it :)
20:43:26 × xerox_ quits (~xerox@unaffiliated/xerox) (Quit: leaving)
20:43:58 <cads> Chousuke, I am okay with that solution from a security perspective with the proviso that security auditors /must/ inspect computed configurations so as to include the portions inherited from default (they cannot audit the conf file alone)
20:44:08 × knupfer quits (~Thunderbi@200116b82ce66f00891d43401c35143c.dip.versatel-1u1.de) (Remote host closed the connection)
20:44:16 knupfer joins (~Thunderbi@200116b82ce66f00913d35fb7b6361ca.dip.versatel-1u1.de)
20:44:59 <Chousuke> some software can dump the full configuration they would use. That's pretty nice.
20:45:19 <cads> Chousuke, I dare say that the "complain and bail" or just "complain and keep running if possible" should be the default even in many cases you or I might be tempted to provide a "canonical" default behavior
20:45:29 <cads> ie, yagi principle
20:45:35 <Chousuke> eg. "doveconf -n"
20:46:21 <Chousuke> yeah. It's always a tradeoff
20:46:52 xerox_ joins (~xerox@unaffiliated/xerox)
20:46:59 <cads> Chousuke, if you have a config module that unifies config from multiple places, I would say it makes sense to log the computed config on your debug level
20:47:08 <Chousuke> it's convenient not having to configure something but there are things you just have to, because it's so heavily environment-dependent.
20:48:06 <Chousuke> bad defaults are worse than no defaults :P
20:48:20 <cads> then sec auditor audits that. If the config is simply loaded from a single conf file, then I don't think you need to log the config. If you have a commit hash for that instance's config, the auditor can audit that config file directly.
20:48:53 <cads> so there's a little less security compliance tooling involved, which is nice, because how often will people invest in compliance tooling
20:48:54 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
20:48:58 <gentauro> is it "safe" to delete snapshots in the `~/.stack/snapshots` folder? I think 119 snapshots using 15 GB of my hardrive is a bit to much …
20:49:04 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
20:49:40 <Chousuke> cads: on the other hand if you have all kinds of "irrelevant" configuration in your configuration file it's hard for an auditor to tell what's actually been modified from the defaults.
20:51:34 <cads> Chousuke, one thing that has helped me (when working with my own configurations) is to split the configuration into clean and nonintersecting subdomains (typically related to the subdomains that make up your app's concerns). But I don't have any legacy systems whos configurations have grown out of control. I think that tends to happen though, and I don't know if refactoring can hold it off forever.
20:53:14 Tops2 joins (~Tobias@dyndsl-095-033-018-252.ewe-ip-backbone.de)
20:54:34 <sm[m]> gentauro: yes, stack will just reinstall them if needed
20:54:42 <gentauro> sm[m]: cool
20:54:52 <sm[m]> ncdu is good for browsing & deleting
20:55:19 × nowhere_man quits (~pierre@2a01:e0a:3c7:60d0:8e6f:ae06:e9b9:b7ab) (Remote host closed the connection)
20:55:42 nowhere_man joins (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155)
20:56:21 × michaelh quits (~user@81-234-107-251-no522.tbcn.telia.com) (Quit: ERC (IRC client for Emacs 26.1))
20:57:45 <cads> ncdu++, also take a look at bootandy's 'dust': https://github.com/bootandy/dust
20:59:57 <cads> (for when you want a deep usage graph, but don't need to delete things)
21:03:20 × monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER)
21:05:04 texasmynsted joins (~texasmyns@212.102.45.103)
21:05:34 monochrom joins (trebla@216.138.220.146)
21:08:13 danso joins (~dan@69-165-210-185.cable.teksavvy.com)
21:09:21 ducaale joins (56897b9d@host86-137-123-157.range86-137.btcentralplus.com)
21:09:25 <cads> dminuoso, are you and the team specifically implementing configuration as code practice? Ie, according to Paul Hammant that is " the formal migration of config between environments, backed by a version control system." https://rollout.io/blog/configuration-as-code-everything-need-know/
21:10:09 × L29Ah quits (~L29Ah@unaffiliated/l29ah) (Ping timeout: 260 seconds)
21:12:00 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
21:13:00 hexfive joins (~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
21:14:29 <cads> by keeping conf tomls in vcs (except my secrets), it seems I already do that. I thought config as code meant writing all your config into constants sprinkled throughout the code, as if we're all learning to code for the first time and we're back to making rookie mistakes..
21:16:07 × knupfer quits (~Thunderbi@200116b82ce66f00913d35fb7b6361ca.dip.versatel-1u1.de) (Quit: knupfer)
21:16:15 knupfer joins (~Thunderbi@200116b82ce66f005834defffe90090d.dip.versatel-1u1.de)
21:16:18 × knupfer quits (~Thunderbi@200116b82ce66f005834defffe90090d.dip.versatel-1u1.de) (Client Quit)
21:16:24 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
21:16:33 knupfer joins (~Thunderbi@i59F7FFAD.versanet.de)
21:17:34 × riko quits (~enrik@p200300ceaf0f3900597c3397d589339d.dip0.t-ipconnect.de) (Quit: Konversation terminated!)
21:18:08 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-ttkevgswiiluxpdp) ()
21:19:58 × heatsink quits (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Remote host closed the connection)
21:20:00 <cads> oh, in this approach we keep a separate repo for configs, so that our dev doesn't have to be affected by the churn of production's current "flavor of the week" configuration
21:20:43 fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
21:20:55 <cads> his could be an issue, if the config your code encounters in dev and testing does not reflect the real world config
21:21:11 <fuzzypixelz> sorry to be asking this again, but how do I get automatic type signature added in emacs?
21:21:15 <fuzzypixelz> I'm using haskell-mode
21:24:30 × ducaale quits (56897b9d@host86-137-123-157.range86-137.btcentralplus.com) (Remote host closed the connection)
21:25:11 × ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: ...zzzZZZ)
21:25:55 × knupfer quits (~Thunderbi@i59F7FFAD.versanet.de) (Ping timeout: 246 seconds)
21:29:02 Nahra joins (~Nahra@unaffiliated/nahra)
21:29:58 <cads> fuzzypixelz, hmm, I could use that functionality too - are you sure haskell-mode is supposed to provide it?
21:31:08 heatsink joins (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
21:32:55 × geekosaur quits (ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Remote host closed the connection)
21:32:56 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds)
21:33:22 <cads> fuzzypixelz, The issue you're having is that when you do C-u C-c C-t, you get the type annotation (of the current function) in the bottom of the buffer. But what you want is for every nondecorated function in the file to become fully and permanently annotated. Is that correct?
21:33:27 × acidjnk_new quits (~acidjnk@p200300d0c719ff8291316ca5b709066d.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
21:36:55 <koz_> :kind! 'Just 'True
21:37:04 <koz_> > :kind! 'Just 'True
21:37:08 <lambdabot> <hint>:1:1: error: <hint>:1:1: error: parse error on input ‘:’
21:37:17 <koz_> > :k 'Just 'True
21:37:20 × danza quits (~francesco@151.43.197.171) (Ping timeout: 272 seconds)
21:37:20 <lambdabot> <hint>:1:1: error: <hint>:1:1: error: parse error on input ‘:’
21:37:55 <cads> https://github.com/jaspervdj/stylish-haskell
21:38:03 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:38:43 <cads> fuzzypixelz, I'm thinking that if we have to implement this ourselves, the most maintable way might be to write a stylish-haskell plugin
21:39:40 × z0k quits (~user@115.186.169.31) (Quit: WeeChat 3.0)
21:40:05 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
21:42:06 <cads> hmm... would it be unusual or at all a bad idea to repurpose a code beautifier into a code preprocessor for an experimental haskell syntax extension?
21:42:29 <cads> I should say, to repurpose stylish-haskell
21:44:25 × heatsink quits (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Remote host closed the connection)
21:45:40 GuerrillaMonkey joins (~Jeanne-Ka@66.115.189.207)
21:46:22 × mp___313 quits (~mp@hell.cx) (Ping timeout: 256 seconds)
21:46:59 mirrorbird joins (~psutcliff@h85-8-41-6.cust.a3fiber.se)
21:47:17 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:47:56 × Jeanne-Kamikaze quits (~Jeanne-Ka@66.115.189.175) (Ping timeout: 240 seconds)
21:48:04 parsnip joins (sid147265@gateway/web/irccloud.com/x-ijryicdhhvmgitdg)
21:48:22 heatsink joins (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
21:49:12 benjamingr__ joins (uid23465@gateway/web/irccloud.com/x-vecwnwhdvzjuawlu)
21:50:54 L29Ah joins (~L29Ah@unaffiliated/l29ah)
21:54:18 × LKoen quits (~LKoen@73.174.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
21:55:20 <fuzzypixelz> cads: yes! exactly!
21:58:21 <fuzzypixelz> cads: I wouldn't say reusing stylish-haskell is a bad idea
21:58:26 <dminuoso> cads: Yes because it cant do what you want it to do. Assmuing you're still chasing this import business, then it's not sufficient.
21:58:47 <dminuoso> stylish-haskell uses ghc-lib-parser, so it can only parse what GHC can parse (under all possible extensions)
21:58:51 <dsal> Is there not a thing in Ix to go the other way? i.e., can (drop n . range) but can I just ask what n would be? It seems no from the docs, but I might be missing something.
21:59:03 <sm[m]> cads: thanks for the dust tip. It's.. interesting! Going to stare at it a bit
21:59:23 <dminuoso> dsal: What do you mean by "other way"?
21:59:44 <dminuoso> Oh, different Ix sorry.
21:59:49 <dminuoso> dsal: Use DOwn
22:00:18 <dminuoso> % range (Down (1, 10))
22:00:18 <yahb> dminuoso: ; <interactive>:57:8: error:; * Couldn't match expected type `(a, a)' with actual type `Down (a0, b0)'; * In the first argument of `range', namely `(Down (1, 10))'; In the expression: range (Down (1, 10)); In an equation for `it': it = range (Down (1, 10)); * Relevant bindings include it :: [a] (bound at <interactive>:57:1)
22:00:18 <dsal> I mean it maps from the range a value. I want to know where a value would exist within that range.
22:00:49 <dsal> I can do this by asking for the range as a list and dropping n elements from it. But that seems silly.
22:01:26 <dminuoso> Oh wait, Down doesnt do what I want
22:01:42 britva joins (~britva@2a02:aa13:7240:2980:6477:78c0:db0c:39cf)
22:01:55 <dminuoso> dsal: Do you need this polymorphic over any Ix, or can you monomorphize?
22:02:31 × doct0rhu quits (~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net) (Quit: Leaving)
22:02:34 <dsal> Yeah, this is a bit abstract. In *practice*, it's Char and pretty obvious what to do. By definition, that's not a requirement.
22:02:40 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
22:03:38 <dminuoso> dsal: So this is an odd question but...
22:03:41 <dminuoso> What's wrong with..
22:03:44 <dminuoso> % :t index
22:03:44 <yahb> dminuoso: Ix a => (a, a) -> a -> Int
22:03:56 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
22:04:04 <dsal> I want Int -<> a
22:04:07 <dsal> er, Int -> a
22:04:37 <dminuoso> That doesnt work on Ix
22:04:46 <dminuoso> Ix does not even guarantee its bounded
22:05:06 <dminuoso> Or it could perhaps me a cyclic structure
22:05:16 bitmapper joins (uid464869@gateway/web/irccloud.com/x-hbidpjgwzfhutzyx)
22:05:25 <iqubic> Ix a does require that there's an Ord instance for a, right?
22:05:46 <dminuoso> Right
22:07:13 × Nahra quits (~Nahra@unaffiliated/nahra) (Quit: leaving)
22:08:01 <dminuoso> dsal: A sort of "half way there" is Enum.
22:08:19 blah59 joins (4a4047b5@cpe-74-64-71-181.hvc.res.rr.com)
22:08:50 <dminuoso> Overall I dislike Enum because it admits partiality, and people use it as a poor mans "C enum" which it's not meant to be.
22:08:52 × heatsink quits (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Remote host closed the connection)
22:09:09 <cads> sm[m], I was out on my desert balcony and I wiped my finger and noticed "hmm, dusti". So I invented an idea for interactive dust (dust plus a ncurses cursor that lets you pick files, delete them, expand directories that dust has collapsed, and so on.). Could be a fun first rust project, but I digress.
22:09:16 <dsal> Yeah, I was hoping there was Enum here. Ix is even more magic to me now.
22:09:51 <cads> sm[m], if dust were dusti, it would replace ncdu for me I think
22:09:57 <dsal> Oh, I see. range is defined by the instance, so it gets to use Enum, but I don't.
22:10:06 <sm[m]> cads: I like it, but unfortunately find the display too unintuitive. Perhaps with more docs it'll stick
22:11:01 <dminuoso> dsal: Right, there's no coherence laws with Enum, and Enum itself is sort of lawless
22:11:37 <dsal> I'm also a bit of an anarchist.
22:12:42 <cads> sm[m], I feel confident I could improve dust's display while i'm making it interactive, but since ncdu's code is in C I want it to rot in obscurity without my even reading it
22:12:47 bgamari joins (~bgamari@2001:470:e438::1)
22:12:56 × cyphase quits (~cyphase@unaffiliated/cyphase) (Ping timeout: 240 seconds)
22:13:49 <cads> but yeah, it's currently ugly, and I think what I see when I look at it is more its potential
22:14:01 × bgamari_ quits (~bgamari@72.65.103.183) (Ping timeout: 264 seconds)
22:15:18 <cads> and the fact that it's rust is huge, because I can work with rust. And the visual mapping gives me new information about files underneath a given directory level - that's novel, and makes me want to explore and improve the visual presentation.
22:16:36 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
22:17:21 cyphase joins (~cyphase@unaffiliated/cyphase)
22:17:28 borne joins (~fritjof@200116b8649d08009ba1d43461655289.dip.versatel-1u1.de)
22:17:31 <sm[m]> it is definitely informative, even without understanding the output in full. Will keep!
22:17:59 <sm[m]> who will make duhst :)
22:18:24 × britva quits (~britva@2a02:aa13:7240:2980:6477:78c0:db0c:39cf) (Quit: This computer has gone to sleep)
22:18:25 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
22:18:42 heatsink joins (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
22:19:20 × notzmv quits (~user@unaffiliated/zmv) (Read error: No route to host)
22:20:55 notzmv joins (~user@unaffiliated/zmv)
22:22:15 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
22:22:37 <cads> sm[m], are you familiar with the output of the tree -L 2 command? This uses ascii pipe, elbow and tee characters to visualizes the top two levels. That is the current directory plus the immediate descendants of files in that directory. If you can visualize such a truncated file tree, note that each item is on its own row by convention
22:24:07 <cads> Each row contains a file or a directory. We can annotate that row with an indicator of that item's size. We use either the file size or the composite size of a directory's descendants.
22:25:24 mounty joins (~mounty@2001:8000:2f59:0:a42d:288d:66cb:9dc6)
22:25:28 × drincruz_ quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 256 seconds)
22:25:53 <cads> dust can group directories by level or by the size of the directory contents. That means for instance that if a directory is very large, we do not display its contents, but display the size indicator for that entire directory
22:26:21 × hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Disconnected by services)
22:26:22 hyperisco_ joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net)
22:30:38 <cads> dminuoso no, I want to help fuzzypixelz do his type encrichment tool using something better than manual cut past automation of .hs files via perl, which is the current suggested solution according to stack exchange (only don't use it on qualified imports because it's broken)
22:32:04 × fendor quits (~fendor@77.119.131.148.wireless.dyn.drei.com) (Remote host closed the connection)
22:33:46 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
22:34:03 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
22:35:48 <cads> fuzzypixelz's issue is that there are some functions - those whose types come from qualified imports - that the current perl based solution bonks on, because parsing qualified names is not implemented
22:37:40 <cads> what should we call this? automatic type documentation?
22:38:01 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
22:39:38 × mirrorbird quits (~psutcliff@h85-8-41-6.cust.a3fiber.se) (Quit: Leaving)
22:41:33 × dxld quits (~dxld@rush.pub.dxld.at) (Quit: Bye)
22:43:11 dxld joins (~dxld@rush.pub.dxld.at)
22:43:13 falafel joins (~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
22:45:03 × Ariakenom quits (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Quit: Leaving)
22:45:40 conal joins (~conal@64.71.133.70)
22:46:28 falafel_ joins (~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
22:48:10 × falafel quits (~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
22:48:11 blah59 parts (4a4047b5@cpe-74-64-71-181.hvc.res.rr.com) ()
22:48:29 × GuerrillaMonkey quits (~Jeanne-Ka@66.115.189.207) (Quit: Leaving)
22:48:35 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
22:48:39 Jeanne-Kamikaze joins (~Jeanne-Ka@66.115.189.207)
22:48:59 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
22:49:35 TommyC7 joins (~TommyC@unaffiliated/sepulchralbloom)
22:50:56 × abhixec quits (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
22:52:28 drincruz_ joins (~adriancru@ool-44c748be.dyn.optonline.net)
22:52:56 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Read error: Connection reset by peer)
22:53:22 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
22:53:33 <hyiltiz> maerwald tomjaguarpaw: yeah, https://hackage.haskell.org/package/roundtrip https://hackage.haskell.org/package/roundtrip-aeson and https://hackage.haskell.org/package/roundtrip-string were the libs I were referring to
22:53:56 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
22:54:40 <hyiltiz> Anyone with any experience using 'em? The glaringly sparse documentation is a bit prohibitive, and seems like the libs were a result of an academic excercise
23:00:52 × texasmynsted quits (~texasmyns@212.102.45.103) (Remote host closed the connection)
23:03:18 × Airscape quits (~Airscape@4e69b241.skybroadband.com) (Ping timeout: 260 seconds)
23:03:21 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
23:03:29 × fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
23:03:33 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:04:19 conal joins (~conal@64.71.133.70)
23:04:41 × conal quits (~conal@64.71.133.70) (Client Quit)
23:05:50 × heatsink quits (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Remote host closed the connection)
23:07:23 conal joins (~conal@64.71.133.70)
23:07:56 euisuny joins (~euisuny@2601:47:4500:2140:c192:2e54:b4ff:5cb)
23:10:10 × cyphase quits (~cyphase@unaffiliated/cyphase) (Ping timeout: 256 seconds)
23:10:44 × falafel_ quits (~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
23:10:46 × on_ quits (~michael@142.93.75.170) (Quit: WeeChat 2.8)
23:11:06 on_ joins (~michael@142.93.75.170)
23:16:58 florian_ joins (~florian@2a01:e35:2fe9:ecb0:c158:40c4:7378:c970)
23:25:51 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
23:26:52 × kritzefitz quits (~kritzefit@212.86.56.80) (Quit: Leaving)
23:27:25 cyphase joins (~cyphase@unaffiliated/cyphase)
23:28:41 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:28:52 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
23:32:06 conal joins (~conal@64.71.133.70)
23:33:38 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
23:37:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
23:39:30 abhixec joins (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net)
23:40:08 × solonarv quits (~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr) (Ping timeout: 260 seconds)
23:40:43 × Amras quits (~Amras@unaffiliated/amras) (Ping timeout: 272 seconds)
23:41:47 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
23:44:01 heatsink joins (~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
23:48:08 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
23:55:02 mp___ joins (~mp@hell.cx)
23:55:36 × p8m_ quits (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 240 seconds)
23:58:09 texasmynsted joins (~texasmyns@212.102.45.103)
23:59:44 × drincruz_ quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 260 seconds)

All times are in UTC on 2020-12-06.