2020/12/18

2020-12-18 00:02:44 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 268 seconds)
2020-12-18 00:03:06 +0100notzmv(~user@unaffiliated/zmv)
2020-12-18 00:03:13 +0100 <koz_> I need naming advice. I keep running into this type: data Foo a = None | ExactlyOne a | TooMany.
2020-12-18 00:03:18 +0100 <koz_> What's a good name for this?
2020-12-18 00:05:16 +0100tumdedum(~tumdedum@unaffiliated/espiral) (Ping timeout: 240 seconds)
2020-12-18 00:05:41 +0100 <EvanR> Maybe (Maybe a) ? :P
2020-12-18 00:06:24 +0100tumdedum(~tumdedum@unaffiliated/espiral)
2020-12-18 00:06:40 +0100 <koz_> EvanR: Isomorphism is not naming. :P
2020-12-18 00:06:53 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2020-12-18 00:06:56 +0100 <EvanR> or Maybe on top of the zero or one type of your choice
2020-12-18 00:07:15 +0100 <EvanR> the TooMany seems like an add-on
2020-12-18 00:07:30 +0100 <justsomeguy> koz_: I saw a video where edwin brady mentions a particular name for this from whatever fancy type system he's basing his language on.
2020-12-18 00:07:36 +0100 <dolio> It's the flat lattice on `a`.
2020-12-18 00:07:38 +0100justsomeguytries to remember the name he used...
2020-12-18 00:08:06 +0100 <koz_> dolio: What's a flat lattice?
2020-12-18 00:08:52 +0100 <dolio> It's got a bottom and a top and a single layer of 'totally defined values' in the middle, which are all incomparable.
2020-12-18 00:09:04 +0100 <koz_> dolio: TIL, thanks.
2020-12-18 00:09:31 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:a1f6:288c:9ca1:722b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 00:09:31 +0100 <dolio> Like the integers as a lattice.
2020-12-18 00:10:52 +0100 <dolio> People describe the Haskell integers as a "flat domain", because there's no top.
2020-12-18 00:11:07 +0100justsomeguywould probably just call it Quantity
2020-12-18 00:12:19 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-18 00:12:42 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 00:13:42 +0100 <EvanR> data Goldilocks a = TooFew | JustRight a | TooMany
2020-12-18 00:15:39 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-12-18 00:16:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-18 00:17:37 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2020-12-18 00:18:16 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2020-12-18 00:18:46 +0100borne(~fritjof@200116b864804800c0a3d285e8e687f4.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2020-12-18 00:20:01 +0100 <koz_> EvanR: Good enough for me!
2020-12-18 00:23:16 +0100terrorjack(~terrorjac@static.23.111.201.195.clients.your-server.de) (Quit: Ping timeout (120 seconds))
2020-12-18 00:24:12 +0100 <koz_> justsomeguy: If you find out what Edwin named it, I'd be curious to hear.
2020-12-18 00:24:16 +0100terrorjack(~terrorjac@static.23.111.201.195.clients.your-server.de)
2020-12-18 00:24:46 +0100 <justsomeguy> koz_: In this paper he calls it multiplicity https://dl.acm.org/doi/10.1145/3209108.3209189
2020-12-18 00:24:56 +0100 <koz_> Yeah, that works too.
2020-12-18 00:25:16 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de) (Quit: Ping timeout (120 seconds))
2020-12-18 00:25:46 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2020-12-18 00:25:52 +0100xff0x(~fox@2001:1a81:5260:ab00:82ea:b3e3:e22c:7f9) (Ping timeout: 260 seconds)
2020-12-18 00:26:00 +0100 <EvanR> ThisMany Int a
2020-12-18 00:26:10 +0100michalz(~user@185.246.204.59) (Remote host closed the connection)
2020-12-18 00:26:15 +0100 <EvanR> -> Multiplicity a
2020-12-18 00:26:24 +0100 <justsomeguy> "Briefly, in QTT a variable has a multiplicity: 0, 1 or unrestricted (ω)."
2020-12-18 00:26:26 +0100 <EvanR> or some such
2020-12-18 00:26:34 +0100xff0x(~fox@2001:1a81:5260:ab00:97f1:2be1:c9ad:fa5c)
2020-12-18 00:26:43 +0100 <koz_> So 0, 1 and too many. :P
2020-12-18 00:28:30 +0100 <hpc> "there are 3 numbers in programming: 0, 1, and infinity" :D
2020-12-18 00:28:51 +0100TMA(tma@twin.jikos.cz) (Ping timeout: 265 seconds)
2020-12-18 00:29:03 +0100TMA(tma@twin.jikos.cz)
2020-12-18 00:29:28 +0100borne(~fritjof@200116b864804800c0a3d285e8e687f4.dip.versatel-1u1.de)
2020-12-18 00:29:42 +0100fryguybob(~fryguybob@cpe-74-65-31-113.rochester.res.rr.com) (Quit: leaving)
2020-12-18 00:30:45 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 240 seconds)
2020-12-18 00:32:52 +0100 <justsomeguy> I really hope that Idris becomes a useable language for practical things in my lifetime. (Maybe it already is?)
2020-12-18 00:33:14 +0100jespada(~jespada@90.254.245.49)
2020-12-18 00:33:16 +0100 <koz_> justsomeguy: Libraries and tooling, yo.
2020-12-18 00:33:32 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-12-18 00:33:34 +0100 <justsomeguy> Yeah, also better performance.
2020-12-18 00:34:01 +0100 <hpc> just do what python programmers do and write C instead :D
2020-12-18 00:34:26 +0100 <hpc> (or haskell) and then ffi it
2020-12-18 00:35:12 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net)
2020-12-18 00:35:26 +0100u0_a298(~user@65.35.205.131) (Ping timeout: 272 seconds)
2020-12-18 00:36:41 +0100justsomeguyis super interested, but will probably never get around to it. He's already putting a bunch of time in to figure out Haskell, which is already pretty far removed from the mindshare of people who do simple sysadmin things.
2020-12-18 00:37:10 +0100 <justsomeguy> I almost picked go or rust, but haskell was just too interesting.
2020-12-18 00:37:22 +0100 <koz_> justsomeguy: I'll pick 'can do this at all' before 'can do this fast'.
2020-12-18 00:37:38 +0100 <koz_> Having to roll your own... everything is the biggest impediment to Idris' success IMHO.
2020-12-18 00:38:00 +0100 <EvanR> success at being an interesting research project, check
2020-12-18 00:38:04 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-12-18 00:38:25 +0100 <EvanR> success at being promoted to de facto next big thing by fans, check
2020-12-18 00:38:52 +0100 <EvanR> it's failed to avoid success already!
2020-12-18 00:39:14 +0100 <koz_> EvanR: 'Avoid success at any cost' is not the Idris motto last I checked. :P
2020-12-18 00:39:23 +0100 <hpc> justsomeguy: there's a surprising amount of overlap between haskell and puppet, i have found
2020-12-18 00:39:28 +0100 <EvanR> exactly
2020-12-18 00:42:54 +0100ubert(~Thunderbi@p200300ecdf35147ee6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-18 00:43:29 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
2020-12-18 00:43:43 +0100 <justsomeguy> hpc: I thought Haskell would be great for writing small cli utilities that are easy to test and easier to distribute than Python, which is what I'm using now. (Well, sort of, I'm a terrible programmer, so I don't write too much to begin with.)
2020-12-18 00:43:51 +0100daGrevis(~daGrevis@unaffiliated/dagrevis) (Quit: Ping timeout (120 seconds))
2020-12-18 00:44:03 +0100daGrevis(~daGrevis@unaffiliated/dagrevis)
2020-12-18 00:46:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 00:48:07 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-18 00:48:24 +0100texasmynsted(~texasmyns@92.119.17.139) (Remote host closed the connection)
2020-12-18 00:49:01 +0100 <Boarders> what is the idiomatic way with a bytestring to drop the first line (everything up to and including the first \n)
2020-12-18 00:49:01 +0100texasmynsted(~texasmyns@92.119.17.139)
2020-12-18 00:51:01 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
2020-12-18 00:51:23 +0100 <Rembane> Boarders: I use drop 1 . dropWhile (/= '\n'), but I'm not sure it's the best way.
2020-12-18 00:51:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-18 00:51:56 +0100 <Boarders> I reach for something similar but with Bytestring.break (== '/n')
2020-12-18 00:52:06 +0100 <Boarders> but unclear if there is something more appropriate
2020-12-18 00:52:41 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 268 seconds)
2020-12-18 00:52:49 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 00:53:16 +0100 <Rembane> Boarders: break lets you keep the first line, you can throw it away immediately by using dropWhile instead
2020-12-18 00:53:48 +0100texasmynsted(~texasmyns@92.119.17.139) (Ping timeout: 272 seconds)
2020-12-18 00:55:34 +0100 <Boarders> fair point
2020-12-18 00:57:12 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
2020-12-18 00:57:19 +0100wonko7(~wonko7@lns-bzn-55-82-255-183-4.adsl.proxad.net) (Ping timeout: 256 seconds)
2020-12-18 00:57:59 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2020-12-18 00:58:29 +0100 <justsomeguy> Does “{-# LANGUAGE FlexibleInstances #-}” just allow you to write concrete compound types in instance declarations? Am I understanding this correctly?
2020-12-18 00:59:26 +0100 <justsomeguy> So I can do something like “instance Something [Char] { ... }” rather than “instance Something [a] { ... }”?
2020-12-18 01:00:02 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-12-18 01:00:25 +0100 <justsomeguy> Ok, testing it out, that seems to be correct.
2020-12-18 01:00:49 +0100 <sm[m]> justsomeguy: distribution is a bit harder than python in some ways, isn't it ?
2020-12-18 01:00:58 +0100 <ddellacosta> I think it also allows more arbitrary levels of nesting
2020-12-18 01:01:04 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
2020-12-18 01:03:04 +0100 <justsomeguy> sm[m]: I get the impression that setting up CI could be complicated. My use case is basically "ship a single static binary of a simple utility to other similar linux VMs", though.
2020-12-18 01:03:34 +0100nineonine(~nineonine@50.216.62.2)
2020-12-18 01:03:43 +0100 <sm[m]> Ah, that's easy enough then
2020-12-18 01:04:19 +0100 <hpc> sm[m]: even if you package it in a deb or something, you don't need to give it any dependencies
2020-12-18 01:04:23 +0100 <hpc> just plop it in /usr/bin
2020-12-18 01:04:25 +0100 <justsomeguy> Probably any compiled language could boast the same benefit, but I only know Python (and a smidgen of JS/ruby/shell) at this point.
2020-12-18 01:04:46 +0100 <hpc> any compiled and static linked language
2020-12-18 01:05:01 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 268 seconds)
2020-12-18 01:05:33 +0100 <hpc> dynamic linked, and you get stuff like most C++ software, where you're pulling in dozens of libfoo packages for any given tool
2020-12-18 01:05:58 +0100 <dolio> The Haskell report says that all instances must be like `T x y z ...` where `T` is a concrete thing, and the variables `x, y, z, ...` are all distinct. So anything that isn't like that requires flexible instances.
2020-12-18 01:06:37 +0100 <sm[m]> hpc: I'm thinking about the difficulty of sharing not-entirely-static binaries on machines of different vintage, distro or architecture, and the effort required to build if you ship source instead. Compared to a python script
2020-12-18 01:08:34 +0100 <koz_> Hoogle appears down?
2020-12-18 01:08:53 +0100 <justsomeguy> Thanks dolio
2020-12-18 01:10:05 +0100mirrorbird(~psutcliff@2a00:801:447:b1bf:a43d:1573:86a9:1f86) (Quit: Leaving)
2020-12-18 01:11:45 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.7.1)
2020-12-18 01:12:05 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2020-12-18 01:12:06 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2020-12-18 01:12:19 +0100 <hpc> ah, fair
2020-12-18 01:13:16 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds)
2020-12-18 01:14:32 +0100_linker_(~linker@2a02:a31a:a041:9a80:3db8:9890:7378:91f0) (Remote host closed the connection)
2020-12-18 01:20:20 +0100 <dminuoso> justsomeguy: Setting up the CI can be quite simple. Here, we have a gitlab-ci runner that does nothing but just run a simple shell command `cabal build` and that's it!
2020-12-18 01:21:22 +0100 <dminuoso> One of our main projects just does a simple `cabal v2-build -j4 odin && cp $(cabal-plan list-bin odin) bin/odin` - that's it! :)
2020-12-18 01:22:37 +0100johnw(~johnw@haskell/developer/johnw)
2020-12-18 01:23:08 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2020-12-18 01:23:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 01:24:13 +0100 <dminuoso> So distributing it as simple as just giving you the elf binary, with the added understanding that the target system must provide for glibc/libgmp, and whatever other shared libraries you may need.
2020-12-18 01:24:22 +0100 <dminuoso> But that's no different than any other binary distribution.
2020-12-18 01:26:39 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-12-18 01:27:59 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:28dc:ced:c9c6:912b)
2020-12-18 01:28:13 +0100 <justsomeguy> Sounds relatively simple!
2020-12-18 01:31:48 +0100 <dminuoso> Static builds are possible too, https://www.tweag.io/blog/2020-09-30-bazel-static-haskell/ has some useful information on this.
2020-12-18 01:32:03 +0100 <dminuoso> Though they do it with nix, you can do it with musl inside say a docker container too
2020-12-18 01:32:06 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat)
2020-12-18 01:32:36 +0100 <justsomeguy> I've heard that one way to do it is by building in an alpine linux container (which uses musl). Haven't tried it yet, though.
2020-12-18 01:33:10 +0100 <justsomeguy> Tweag does some interesting things with its build system.
2020-12-18 01:33:18 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2020-12-18 01:33:32 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:28dc:ced:c9c6:912b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 01:36:01 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Client Quit)
2020-12-18 01:38:52 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-12-18 01:42:28 +0100 <koz_> justsomeguy: I have tried the Alpine container method. It actually works pretty well.
2020-12-18 01:44:40 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 246 seconds)
2020-12-18 01:46:24 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 260 seconds)
2020-12-18 01:50:11 +0100stef204(~stef204@unaffiliated/stef-204/x-384198) (Quit: WeeChat 2.9)
2020-12-18 01:51:16 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-zusnndplrgkopqpl)
2020-12-18 01:51:43 +0100xcmw(~textual@2603-6011-2200-f103-8011-a882-4e38-cf45.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 01:52:26 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:28dc:ced:c9c6:912b)
2020-12-18 01:55:26 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-18 01:55:38 +0100Deide1(~Deide@217.155.19.23)
2020-12-18 01:56:33 +0100 <towel> Haskell wiki is down for me: https://wiki.haskell.org/
2020-12-18 01:56:36 +0100 <towel> Anyone else?
2020-12-18 01:56:54 +0100Deide(~Deide@217.155.19.23) (Ping timeout: 260 seconds)
2020-12-18 01:56:55 +0100 <yushyin> for me too
2020-12-18 01:56:56 +0100 <monochrom> Yeah 503 backend unavailable
2020-12-18 01:57:08 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.7.1)
2020-12-18 01:57:14 +0100 <Boarders> does anyone know how to benchmark something that consumes stdin (with getContents). Currently I get: " Data.ByteString.hGetLine: illegal operation (handle is closed)"
2020-12-18 01:57:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-18 01:57:29 +0100statusfailed(~statusfai@statusfailed.com) (Ping timeout: 260 seconds)
2020-12-18 01:58:04 +0100statusfailed(~statusfai@statusfailed.com)
2020-12-18 01:58:25 +0100 <ezzieyguywuf> where can I read up more about how cabal and ghc-pkg (they're related, right?!) figure out dependencies and handle conflicts?
2020-12-18 01:59:05 +0100 <ezzieyguywuf> i.e. if one package depends on <QuickCheck2.14 and another on >=QuickCheck2.14, I'm interested how they can both peacefully coexist, and even depend on each other
2020-12-18 01:59:16 +0100 <MarcelineVQ> "<justsomeguy> I really hope that Idris becomes a useable language for practical things in my lifetime. (Maybe it already is?)" give it a try
2020-12-18 01:59:26 +0100olligobber(~olligobbe@unaffiliated/olligobber)
2020-12-18 01:59:26 +0100mirrorbird(~psutcliff@2a00:801:447:b1bf:a43d:1573:86a9:1f86)
2020-12-18 02:03:08 +0100Deide1(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-12-18 02:03:46 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds)
2020-12-18 02:04:44 +0100 <monochrom> ezzieyguywuf: I don't have a page to refer you to. If they never seen each other, they coexist fine. If you want them to depend on each other, or a 3rd package that depends on them both, that is disallowed.
2020-12-18 02:04:56 +0100mimi_vx(~mimi@2a01:490:16:1026:d923:3519:de60:eb74) (Quit: WeeChat 3.0)
2020-12-18 02:05:29 +0100 <ezzieyguywuf> monochrom: ah hah.
2020-12-18 02:05:59 +0100olligobber(~olligobbe@unaffiliated/olligobber) (Remote host closed the connection)
2020-12-18 02:06:11 +0100 <ezzieyguywuf> monochrom: I feel like I saw an instance where a packages main executable depended on a recent version of some dependency, but the test executable depended on an older version
2020-12-18 02:06:17 +0100cheater(~user@unaffiliated/cheater)
2020-12-18 02:06:26 +0100 <ezzieyguywuf> is that common/allowed, or did I perhaps just misread something?
2020-12-18 02:06:44 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:cecf:c08c:a5a2:10fd:4192)
2020-12-18 02:07:08 +0100 <monochrom> Perhaps the author forgot to update.
2020-12-18 02:07:18 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 268 seconds)
2020-12-18 02:07:27 +0100 <ezzieyguywuf> ah, i see.
2020-12-18 02:07:34 +0100 <monochrom> But I guess my granularity was too coarse.
2020-12-18 02:07:54 +0100Deide(~Deide@217.155.19.23)
2020-12-18 02:08:21 +0100 <monochrom> An exe component can be independent of a test component. They are built separately anyway.
2020-12-18 02:08:32 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 268 seconds)
2020-12-18 02:09:02 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-12-18 02:09:12 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2020-12-18 02:13:41 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2020-12-18 02:13:56 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:cecf:c08c:a5a2:10fd:4192) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 02:15:40 +0100xcmw(~textual@2603-6011-2200-f103-8011-a882-4e38-cf45.res6.spectrum.com)
2020-12-18 02:19:01 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-18 02:19:46 +0100alice1(~alice@2a01cb0409c990003ccf6635f6976a70.ipv6.abo.wanadoo.fr)
2020-12-18 02:22:55 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:cecf:c08c:a5a2:10fd:4192)
2020-12-18 02:26:56 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds)
2020-12-18 02:27:20 +0100aev_software(~Admin@pool-108-5-152-94.nwrknj.fios.verizon.net)
2020-12-18 02:28:36 +0100alice1Seiryn
2020-12-18 02:28:38 +0100iqubic`(~user@2601:602:9500:4870:ea80:52c0:6e0b:7c11)
2020-12-18 02:28:50 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-18 02:29:06 +0100 <aev_software> Hey folks: anyone familiar with running haskell compiled on Windows? I'm creating a text-adventure dungeon game. It requires an i/o loop. After each putStrLn I have it print a 2nd newline. But sometimes it duplicates the last couple of letters.
2020-12-18 02:29:47 +0100 <aev_software> Is there anything I can do to fix that?
2020-12-18 02:30:43 +0100 <xsperry> are you calling putStrLn from multiple threads?
2020-12-18 02:31:00 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Remote host closed the connection)
2020-12-18 02:31:06 +0100 <aev_software> xsperry: not on purpose. I have programmed no threads.
2020-12-18 02:31:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 02:31:25 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds)
2020-12-18 02:32:26 +0100 <Seiryn> Hmm, I don't know how it's implemented, but maybe because Windows use CRLF instead of LF ?
2020-12-18 02:32:57 +0100iqubic(~user@2601:602:9500:4870:bec7:122b:1c06:a2d0) (Ping timeout: 258 seconds)
2020-12-18 02:33:16 +0100 <aev_software> Seiryn: yes, that's a good possibility. Does haskell have a cross-platform newline?
2020-12-18 02:33:26 +0100 <xsperry> I've used haskell on windows and I never experienced that before. CRLF vs LF shouldn't be causing it
2020-12-18 02:34:16 +0100 <aev_software> For context: I'm in a command prompt with codepage 65001 for unicode.
2020-12-18 02:34:39 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net) ()
2020-12-18 02:35:02 +0100 <ezzieyguywuf> aev_software: I've ran into issues with printing to the cli (on linux mind you) in a weird order. something about having to call hflush
2020-12-18 02:35:13 +0100 <jollygood2> aev_software do you have a tests case?
2020-12-18 02:35:14 +0100 <Seiryn> Sometimes CRLF vs LF mess around, depending of your configuration
2020-12-18 02:35:25 +0100 <jollygood2> test case*
2020-12-18 02:36:17 +0100columbarius(~columbari@87.123.198.173) (Ping timeout: 268 seconds)
2020-12-18 02:36:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-18 02:37:36 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 02:38:19 +0100columbarius(~columbari@mue-88-130-54-018.dsl.tropolys.de)
2020-12-18 02:38:35 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-18 02:39:51 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-18 02:40:01 +0100 <aev_software> hflush to flush the output buffer? I could do that. I'll also look for a cross-platform newline. Otherwise I might have to program an OS-dependent function, and I'm not looking forwardto that.
2020-12-18 02:40:47 +0100 <aev_software> jollygood2: Not really. You can download my program and run it yourself to duplicate the problem, I guess.
2020-12-18 02:41:18 +0100 <aev_software> I have it up on SourceHut: https://sr.ht/~aev/maskies
2020-12-18 02:41:28 +0100 <fuzzypixelz> if only there were a python-to-haskell translator
2020-12-18 02:42:02 +0100 <jollygood2> iirc \n is converted to system dependent sequence of characters on streams opened in text mode
2020-12-18 02:42:09 +0100sm2n_(~sm2n@bras-base-hmtnon1497w-grc-44-69-156-5-58.dsl.bell.ca) (Ping timeout: 256 seconds)
2020-12-18 02:42:22 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)
2020-12-18 02:43:48 +0100 <aev_software> jollygood: there is at least 1 person on StackOverflow who says that, too. Looking for a reference.
2020-12-18 02:43:52 +0100 <exarkun> fuzzypixelz: I'm working on it
2020-12-18 02:45:40 +0100 <aev_software> Yes: Newline conversion is documented. https://downloads.haskell.org/~ghc/8.8.1/docs/html/libraries/base-4.13.0.0/System-IO.html#g:25
2020-12-18 02:47:06 +0100Seiryn(~alice@2a01cb0409c990003ccf6635f6976a70.ipv6.abo.wanadoo.fr) (Quit: WeeChat 2.9)
2020-12-18 02:48:17 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 02:49:15 +0100guest1216(~user@49.5.6.87)
2020-12-18 02:49:39 +0100 <guest1216> why spaces consume newline in parser?
2020-12-18 02:49:53 +0100 <aev_software> The base recognizes the Windows OS by looking at whether or not the constant mingw32_HOST_OS got defined? I hope it can have varying values?
2020-12-18 02:50:05 +0100 <guest1216> parse (spaces >> anyChar) "" "\na" == Right 'a'
2020-12-18 02:50:33 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-12-18 02:51:10 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 246 seconds)
2020-12-18 02:51:54 +0100Lord_of_Life_Lord_of_Life
2020-12-18 02:52:56 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 268 seconds)
2020-12-18 02:53:41 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 02:53:59 +0100 <xsperry> spaces is short for white-spaces
2020-12-18 02:54:29 +0100 <guest1216> xsperry: newline is white-spaces?
2020-12-18 02:54:40 +0100 <xsperry> yes
2020-12-18 02:54:58 +0100 <jle`> > isSpace '\n'
2020-12-18 02:55:01 +0100 <lambdabot> True
2020-12-18 02:55:08 +0100 <guest1216> wt...
2020-12-18 02:55:12 +0100 <jle`> > filter isSpace [minBound..]
2020-12-18 02:55:14 +0100 <lambdabot> "\t\n\v\f\r \160\5760\8192\8193\8194\8195\8196\8197\8198\8199\8200\8201\8202...
2020-12-18 02:55:38 +0100 <guest1216> why people think newline is space...
2020-12-18 02:55:51 +0100 <exarkun> It has been considered space basically forever
2020-12-18 02:56:15 +0100mirrorbird(~psutcliff@2a00:801:447:b1bf:a43d:1573:86a9:1f86) (Quit: Leaving)
2020-12-18 02:56:27 +0100 <jle`> it's considered a space in the Unicode standard
2020-12-18 02:56:34 +0100 <guest1216> exceput ' ' and newline are white-sapces, any others?
2020-12-18 02:56:45 +0100 <exarkun> lambdabot just gave you a partial list above
2020-12-18 02:56:45 +0100 <jle`> i was listening them above
2020-12-18 02:56:47 +0100 <guest1216> > isSpace '\r'
2020-12-18 02:56:49 +0100 <lambdabot> True
2020-12-18 02:56:51 +0100 <jle`> *listing
2020-12-18 02:57:04 +0100Mikagami(~MOSCOS@152.32.70.55)
2020-12-18 02:57:04 +0100 <exarkun> There are quite a lot of them in unicode.
2020-12-18 02:57:07 +0100porvak(~porvak@84.39.117.57) (Remote host closed the connection)
2020-12-18 02:57:11 +0100 <jle`> > filter isSpace [minBound..] -- gives the list of all char's considered spaces according to haskell's impl of the unicode standard
2020-12-18 02:57:14 +0100 <lambdabot> "\t\n\v\f\r \160\5760\8192\8193\8194\8195\8196\8197\8198\8199\8200\8201\8202...
2020-12-18 02:57:18 +0100 <guest1216> ok
2020-12-18 02:57:20 +0100 <jle`> > length (filter isSpace [minBound..])
2020-12-18 02:57:22 +0100 <lambdabot> 22
2020-12-18 02:57:24 +0100 <aev_software> Nope, it's mingw32_HOST_OS no matter the Windows edition. There's other constants that hint at the architecture.
2020-12-18 02:57:28 +0100 <jle`> just 22 apparently
2020-12-18 02:57:37 +0100 <exarkun> You'd think 21 would be enough for anyone
2020-12-18 02:57:38 +0100 <guest1216> isSpace '\22'
2020-12-18 02:57:46 +0100 <guest1216> > isSpace '\22'
2020-12-18 02:57:49 +0100 <lambdabot> False
2020-12-18 02:57:51 +0100 <jle`> i meant, there are 22 characters that are considered spaces
2020-12-18 02:58:02 +0100 <guest1216> > isSpaces '\8196'
2020-12-18 02:58:03 +0100 <jollygood2> aev_software, can you try reproducing your issue with no more than dozen or two lines of code?
2020-12-18 02:58:05 +0100 <lambdabot> error:
2020-12-18 02:58:06 +0100 <lambdabot> • Variable not in scope: isSpaces :: Char -> t
2020-12-18 02:58:06 +0100 <lambdabot> • Perhaps you meant ‘isSpace’ (imported from Data.Char)
2020-12-18 02:58:26 +0100 <guest1216> ok
2020-12-18 02:58:31 +0100Mikagami(~MOSCOS@152.32.70.55) (Read error: Connection reset by peer)
2020-12-18 02:58:35 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-12-18 02:59:38 +0100Mikagami(~MOSCOS@152.32.70.55)
2020-12-18 03:00:01 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 03:00:16 +0100 <aev_software> jollygood2: yes, I could. It'll take a bit of time.
2020-12-18 03:00:57 +0100MOSCOS(~MOSCOS@122.54.107.175) (Ping timeout: 268 seconds)
2020-12-18 03:01:03 +0100 <guest1216> I think I should use ' ' to match empty spaces, spaces is too many
2020-12-18 03:02:28 +0100tff^(tff@ip98-184-89-2.mc.at.cox.net)
2020-12-18 03:07:34 +0100guest1216(~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1))
2020-12-18 03:08:35 +0100xff0x(~fox@2001:1a81:5260:ab00:97f1:2be1:c9ad:fa5c) (Ping timeout: 272 seconds)
2020-12-18 03:09:05 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:28dc:ced:c9c6:912b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 03:09:25 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-18 03:09:47 +0100xff0x(~fox@2001:1a81:5299:4500:9c52:d530:bd81:84ac)
2020-12-18 03:09:56 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-18 03:10:02 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-12-18 03:10:38 +0100 <fuzzypixelz> exarkun: reall? can I take a look?
2020-12-18 03:11:11 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Remote host closed the connection)
2020-12-18 03:11:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 03:11:43 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:8475:afe3:1ef1:874d)
2020-12-18 03:12:55 +0100 <dsal> Guest62909: space comes in both horizontal and vertical varieties.
2020-12-18 03:13:02 +0100 <dsal> wrong guest.
2020-12-18 03:13:43 +0100 <aev_software> Huh. I'm using the wrong version of my own executable, aren't I?
2020-12-18 03:14:06 +0100 <dsal> I do that sometimes. Takes forever to fix bugs.
2020-12-18 03:15:08 +0100hf69(~haskeller@ip72-205-40-121.dc.dc.cox.net) (Ping timeout: 268 seconds)
2020-12-18 03:17:29 +0100texasmynsted(~texasmyns@92.119.17.139)
2020-12-18 03:17:36 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 268 seconds)
2020-12-18 03:17:45 +0100Bille(~Bille@217.146.82.202)
2020-12-18 03:18:42 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0)
2020-12-18 03:18:48 +0100texasmynsted(~texasmyns@92.119.17.139) (Remote host closed the connection)
2020-12-18 03:19:00 +0100Entertainment(~entertain@104.246.132.210) ()
2020-12-18 03:19:09 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2020-12-18 03:21:12 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 03:22:36 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds)
2020-12-18 03:26:08 +0100jollygood2(~bc8165ab@217.29.117.252) (Quit: http://www.okay.uz/ (Ping timeout))
2020-12-18 03:26:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 268 seconds)
2020-12-18 03:26:33 +0100xsperry(~as@unaffiliated/xsperry) (Remote host closed the connection)
2020-12-18 03:27:23 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-18 03:28:14 +0100xsperry(~as@unaffiliated/xsperry)
2020-12-18 03:28:47 +0100jollygood2(~bc8165ab@217.29.117.252)
2020-12-18 03:29:01 +0100prion(~prion@142.167.179.124)
2020-12-18 03:29:26 +0100 <aev_software> xsperry: I'm compiling it multi-threaded. I'll omit that and see what happens.
2020-12-18 03:30:00 +0100 <prion> i just discovered Data.Set.mapMonotonic and i can't figure out where it would be useful
2020-12-18 03:30:50 +0100olligobber(~olligobbe@unaffiliated/olligobber)
2020-12-18 03:32:16 +0100 <MarcelineVQ> it's big-O complexity is lower than non-monotonic
2020-12-18 03:32:55 +0100 <MarcelineVQ> iow it's potentially faster to use than regular map for Set but requires you to be careful about its use
2020-12-18 03:33:24 +0100drincruz(~adriancru@ool-44c748be.dyn.optonline.net)
2020-12-18 03:34:24 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection)
2020-12-18 03:34:41 +0100 <MarcelineVQ> have never used it myself fwiw
2020-12-18 03:34:45 +0100iqubic`(~user@2601:602:9500:4870:ea80:52c0:6e0b:7c11) (Quit: ERC (IRC client for Emacs 28.0.50))
2020-12-18 03:35:14 +0100iqubic(~user@2601:602:9500:4870:ea80:52c0:6e0b:7c11)
2020-12-18 03:35:24 +0100EyalSK(~EyalSK@2a10:8003:484:0:4115:4a5e:3b48:e14e)
2020-12-18 03:35:34 +0100EyalSK(~EyalSK@2a10:8003:484:0:4115:4a5e:3b48:e14e) (Client Quit)
2020-12-18 03:36:06 +0100aev_software(~Admin@pool-108-5-152-94.nwrknj.fios.verizon.net) (Ping timeout: 268 seconds)
2020-12-18 03:39:13 +0100drincruz(~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 264 seconds)
2020-12-18 03:41:29 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 03:42:13 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Ping timeout: 256 seconds)
2020-12-18 03:43:31 +0100renzhi(~renzhi@2607:fa49:6500:ac00::bfed)
2020-12-18 03:46:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-12-18 03:46:17 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)
2020-12-18 03:48:45 +0100solonarv(~solonarv@astrasbourg-157-1-27-135.w90-40.abo.wanadoo.fr) (Ping timeout: 240 seconds)
2020-12-18 03:49:37 +0100esotericn(~daniel@5.148.79.26) (Ping timeout: 246 seconds)
2020-12-18 03:49:49 +0100aev_software(~Admin@pool-108-5-152-94.nwrknj.fios.verizon.net)
2020-12-18 03:52:10 +0100carlomagno(~cararell@148.87.23.9) (Remote host closed the connection)
2020-12-18 03:52:36 +0100 <aev_software> Hmm... my program also duplicates the last bytes of output when not compiled with threading.
2020-12-18 03:52:58 +0100 <aev_software> But not all the time.
2020-12-18 03:53:02 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 272 seconds)
2020-12-18 03:53:21 +0100esotericn(~daniel@5.148.79.26)
2020-12-18 03:53:52 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-12-18 03:55:04 +0100carlomagno(~cararell@148.87.23.9)
2020-12-18 03:56:23 +0100shikamaru(~user@222.85.230.142)
2020-12-18 03:57:07 +0100shikamaru(~user@222.85.230.142) (Remote host closed the connection)
2020-12-18 03:58:21 +0100 <ezzieyguywuf> is there a way to tell `cabal test` to skip one particular test suite?
2020-12-18 03:59:49 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2020-12-18 04:00:42 +0100tenniscp25(~tenniscp2@134.196.209.118)
2020-12-18 04:01:39 +0100nineonine(~nineonine@50.216.62.2)
2020-12-18 04:01:48 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 04:05:31 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2020-12-18 04:06:42 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)
2020-12-18 04:07:44 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-18 04:08:20 +0100glowpelt(~myst@focks.pw) (Max SendQ exceeded)
2020-12-18 04:08:41 +0100toorevitimirp(~tooreviti@117.182.182.252)
2020-12-18 04:08:55 +0100glowpelt(~myst@focks.pw)
2020-12-18 04:10:26 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-12-18 04:11:15 +0100esotericn(~daniel@5.148.79.26) (Ping timeout: 268 seconds)
2020-12-18 04:11:52 +0100 <monochrom> I think no.
2020-12-18 04:13:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 04:13:43 +0100prion(~prion@142.167.179.124) (Ping timeout: 268 seconds)
2020-12-18 04:15:39 +0100 <ezzieyguywuf> monochrom: yea doesn't seem like
2020-12-18 04:15:45 +0100 <ezzieyguywuf> I looked through the cabal documentation
2020-12-18 04:16:00 +0100 <ezzieyguywuf> seems like it'd be handy
2020-12-18 04:16:05 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-18 04:16:18 +0100 <ezzieyguywuf> the best alternative I could think of is explicitly listing each test to run, but this seems error prone
2020-12-18 04:16:49 +0100 <dsal> Just always run all the tests.
2020-12-18 04:16:59 +0100 <dsal> Though I do limit it to just one when I'm trying to be fast.
2020-12-18 04:17:20 +0100esotericn(~daniel@5.148.79.26)
2020-12-18 04:18:39 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-12-18 04:19:00 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-12-18 04:19:12 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-zusnndplrgkopqpl) ()
2020-12-18 04:19:16 +0100theDon(~td@muedsl-82-207-238-174.citykom.de) (Ping timeout: 268 seconds)
2020-12-18 04:19:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-18 04:19:53 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 268 seconds)
2020-12-18 04:20:21 +0100cheater(~user@unaffiliated/cheater)
2020-12-18 04:20:30 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 268 seconds)
2020-12-18 04:20:58 +0100theDon(~td@muedsl-82-207-238-130.citykom.de)
2020-12-18 04:21:44 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 268 seconds)
2020-12-18 04:22:08 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 04:22:54 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2020-12-18 04:22:54 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (rothfuss.freenode.net (Nickname regained by services)))
2020-12-18 04:22:54 +0100xirhtogallagothrix
2020-12-18 04:24:52 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-12-18 04:26:30 +0100drbean(~drbean@TC210-63-209-216.static.apol.com.tw)
2020-12-18 04:26:40 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 268 seconds)
2020-12-18 04:27:23 +0100teardown(~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
2020-12-18 04:28:08 +0100 <ezzieyguywuf> dsal: I'm working on packaging some haskell stuff in gentoo. sometimes, for example, a test requires access to the network which our build system doesn't allow
2020-12-18 04:28:16 +0100 <ezzieyguywuf> these tests make sense during development but not during packaging
2020-12-18 04:29:12 +0100 <dsal> Yeah, that's kind of a bad test.
2020-12-18 04:30:12 +0100 <dsal> Well, I was going to say I did something more clever in my mqttd, but apparently I'm just using a free port on localhost. I *can* do better.
2020-12-18 04:31:36 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2020-12-18 04:31:56 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-18 04:32:21 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-12-18 04:32:48 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-18 04:39:48 +0100tenniscp25(~tenniscp2@134.196.209.118) (Remote host closed the connection)
2020-12-18 04:40:01 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-12-18 04:40:04 +0100tenniscp25(~tenniscp2@134.196.209.118)
2020-12-18 04:41:33 +0100tenniscp25(~tenniscp2@134.196.209.118) (Client Quit)
2020-12-18 04:42:52 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-12-18 04:44:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 04:47:19 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2020-12-18 04:47:24 +0100Mikagami(~MOSCOS@152.32.70.55) (Remote host closed the connection)
2020-12-18 04:47:45 +0100Mikagami(~MOSCOS@152.32.70.55)
2020-12-18 04:48:46 +0100ezzieyguywufnods
2020-12-18 04:49:07 +0100 <ezzieyguywuf> hoogle was the one I was dealing with yesterday, needing network access
2020-12-18 04:49:34 +0100 <ezzieyguywuf> even Cabal has a hackage-tests suite, which while it doesn't require network (I think? didn't get that far...) it assumes that ~/.cabal/config exists
2020-12-18 04:51:49 +0100borne(~fritjof@200116b864804800c0a3d285e8e687f4.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2020-12-18 04:53:31 +0100machinedgod(~machinedg@24.105.81.50)
2020-12-18 04:54:36 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 04:55:29 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:8475:afe3:1ef1:874d) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 04:56:48 +0100guest1218(~user@49.5.6.87)
2020-12-18 04:58:19 +0100 <guest1218> parse (sepBy (many (noneOf "\n")) newline) "" "server = abc.net\nport = 6667\n" == Right ["server = abc.net", "port = 6667", ""]
2020-12-18 04:58:26 +0100 <guest1218> how to remove the last ""?
2020-12-18 04:58:36 +0100Kronic(~Kronic___@84.203.96.46) (Quit: Leaving)
2020-12-18 04:58:50 +0100 <guest1218> why sepBy would do this?
2020-12-18 04:59:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-12-18 04:59:21 +0100yitz(~yitz@unaffiliated/yitz) ()
2020-12-18 04:59:38 +0100 <jle`> try using some instead of many
2020-12-18 04:59:47 +0100 <jle`> since "" matches `many (noneOf "\n")`
2020-12-18 05:00:22 +0100 <jle`> many = 0 or more
2020-12-18 05:00:27 +0100 <jle`> so it's like * in regexps
2020-12-18 05:01:49 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 268 seconds)
2020-12-18 05:02:49 +0100 <guest1218> jle`: how
2020-12-18 05:03:13 +0100 <jle`> instead of `many`, use `some`
2020-12-18 05:03:17 +0100 <jle`> many is 0 or more
2020-12-18 05:03:19 +0100 <jle`> some is 1 or more
2020-12-18 05:03:43 +0100 <guest1218> jle`: some == many1?
2020-12-18 05:04:02 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-12-18 05:07:22 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 268 seconds)
2020-12-18 05:08:49 +0100 <jle`> yeah, many1 should work too :)
2020-12-18 05:08:55 +0100 <guest1218> jle`: I use Control.Applicative.some, that would be unexpected end of input
2020-12-18 05:11:20 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 256 seconds)
2020-12-18 05:12:16 +0100 <guest1218> jle`: some and many1 would be error
2020-12-18 05:12:55 +0100olligobber(~olligobbe@unaffiliated/olligobber) (Ping timeout: 268 seconds)
2020-12-18 05:14:12 +0100Tario(~Tario@201.192.165.173)
2020-12-18 05:14:26 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-12-18 05:18:00 +0100 <guest1218> jle`: I change sepBy to endBy, it works
2020-12-18 05:18:19 +0100 <guest1218> this is same problem with splitOn
2020-12-18 05:18:43 +0100 <guest1218> > splitOn "\n" "a\nb\n"
2020-12-18 05:18:46 +0100 <lambdabot> ["a","b",""]
2020-12-18 05:18:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-18 05:19:13 +0100 <guest1218> sepBy and splitOn have the same issue
2020-12-18 05:25:45 +0100olligobber(~olligobbe@unaffiliated/olligobber)
2020-12-18 05:27:09 +0100shf(~sheaf@2a01:cb19:80cc:7e00:3d51:cce0:e1c5:49b6)
2020-12-18 05:35:02 +0100dolio(~dolio@haskell/developer/dolio) (Quit: ZNC 1.8.2 - https://znc.in)
2020-12-18 05:35:32 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 256 seconds)
2020-12-18 05:42:27 +0100dolio(~dolio@haskell/developer/dolio)
2020-12-18 05:43:27 +0100argento(~argent0@168.227.96.53)
2020-12-18 05:44:59 +0100esotericn(~daniel@5.148.79.26) (Ping timeout: 268 seconds)
2020-12-18 05:47:18 +0100esotericn(~daniel@5.148.79.26)
2020-12-18 05:49:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 05:52:23 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 268 seconds)
2020-12-18 05:54:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2020-12-18 05:56:34 +0100 <glguy> guest1218, you just don't use splitOn or sepBy for line *terminators*
2020-12-18 05:56:47 +0100 <glguy> guest1218, for parser combinators you'd use endBy instead
2020-12-18 05:56:57 +0100 <glguy> > lines "a\nb\n"
2020-12-18 05:56:59 +0100 <lambdabot> ["a","b"]
2020-12-18 06:00:41 +0100texasmynsted(~texasmyns@92.119.17.139)
2020-12-18 06:02:11 +0100texasmyn_(~texasmyns@184.75.212.155)
2020-12-18 06:04:36 +0100texasmynsted(~texasmyns@92.119.17.139) (Ping timeout: 240 seconds)
2020-12-18 06:07:18 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:cc57:4a3f:14e6:d0d5)
2020-12-18 06:09:02 +0100Wuzzy(~Wuzzy@p5b0df87d.dip0.t-ipconnect.de) (Quit: Wuzzy)
2020-12-18 06:12:38 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-12-18 06:13:21 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 268 seconds)
2020-12-18 06:13:36 +0100texasmyn_(~texasmyns@184.75.212.155) (Remote host closed the connection)
2020-12-18 06:15:44 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-12-18 06:19:42 +0100texasmynsted(~texasmyns@184.75.212.155)
2020-12-18 06:21:54 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
2020-12-18 06:22:36 +0100olligobber(~olligobbe@unaffiliated/olligobber) (Ping timeout: 240 seconds)
2020-12-18 06:23:08 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 06:23:13 +0100esotericn(~daniel@5.148.79.26) (Ping timeout: 268 seconds)
2020-12-18 06:23:21 +0100texasmynsted(~texasmyns@184.75.212.155) (Remote host closed the connection)
2020-12-18 06:24:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 06:26:41 +0100 <pavonia> When you Data.Binary.encode (1 :: Double), the result has a length of 25 bytes. Shouldn't that be 8 bytes at most?
2020-12-18 06:27:39 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 06:28:20 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-18 06:28:39 +0100MOSCOS(~MOSCOS@122.54.107.175) (Read error: Connection reset by peer)
2020-12-18 06:30:18 +0100Mikagami(~MOSCOS@152.32.70.55) (Read error: Connection reset by peer)
2020-12-18 06:30:28 +0100texasmynsted(~texasmyns@184.75.212.155)
2020-12-18 06:31:19 +0100MOSCOS(~MOSCOS@152.32.70.55)
2020-12-18 06:32:13 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)
2020-12-18 06:33:40 +0100MOSCOS(~MOSCOS@152.32.70.55) (Read error: Connection reset by peer)
2020-12-18 06:34:21 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-18 06:35:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-12-18 06:37:53 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-12-18 06:43:15 +0100MOSCOS(~MOSCOS@122.54.107.175) (Read error: Connection reset by peer)
2020-12-18 06:43:51 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-18 06:44:12 +0100 <guest1218> glguy: ok
2020-12-18 06:46:16 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-12-18 06:48:00 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 06:48:40 +0100texasmynsted(~texasmyns@184.75.212.155) (Remote host closed the connection)
2020-12-18 06:48:56 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2020-12-18 06:52:22 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)
2020-12-18 06:53:22 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-12-18 06:55:28 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 06:56:52 +0100texasmynsted(~texasmyns@184.75.212.155)
2020-12-18 06:58:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-18 06:58:37 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 246 seconds)
2020-12-18 07:00:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-12-18 07:01:08 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 272 seconds)
2020-12-18 07:01:18 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
2020-12-18 07:02:57 +0100prion(~prion@142.167.179.124)
2020-12-18 07:03:38 +0100Mikagami(~MOSCOS@152.32.70.55)
2020-12-18 07:05:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-18 07:06:45 +0100MOSCOS(~MOSCOS@122.54.107.175) (Ping timeout: 240 seconds)
2020-12-18 07:07:37 +0100todda7(~torstein@ppp-2-84-17-53.home.otenet.gr) (Ping timeout: 268 seconds)
2020-12-18 07:08:21 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 07:09:49 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2020-12-18 07:09:50 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-18 07:11:57 +0100melosense_(~melosense@4e69b241.skybroadband.com)
2020-12-18 07:12:30 +0100Mikagami(~MOSCOS@152.32.70.55) (Read error: Connection reset by peer)
2020-12-18 07:13:07 +0100Mikagami(~MOSCOS@152.32.70.55)
2020-12-18 07:13:10 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 268 seconds)
2020-12-18 07:14:18 +0100Guest95606(~melosense@4e69b241.skybroadband.com) (Ping timeout: 256 seconds)
2020-12-18 07:14:18 +0100Mikagami(~MOSCOS@152.32.70.55) (Read error: Connection reset by peer)
2020-12-18 07:14:44 +0100Mikagami(~MOSCOS@152.32.70.55)
2020-12-18 07:16:03 +0100proteusguy(~proteusgu@cm-58-10-154-202.revip7.asianet.co.th) (Remote host closed the connection)
2020-12-18 07:16:52 +0100MOSCOS(~MOSCOS@122.54.107.175) (Ping timeout: 268 seconds)
2020-12-18 07:17:39 +0100nineonine(~nineonine@50.216.62.2)
2020-12-18 07:17:55 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-18 07:20:34 +0100Mikagami(~MOSCOS@152.32.70.55) (Ping timeout: 268 seconds)
2020-12-18 07:21:03 +0100texasmynsted(~texasmyns@184.75.212.155) (Remote host closed the connection)
2020-12-18 07:21:07 +0100nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-12-18 07:21:16 +0100guest1218(~user@49.5.6.87) (Remote host closed the connection)
2020-12-18 07:21:24 +0100nineonine(~nineonine@50.216.62.2)
2020-12-18 07:21:26 +0100guest1218(~user@49.5.6.87)
2020-12-18 07:21:33 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-18 07:24:49 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2020-12-18 07:25:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 07:28:22 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 246 seconds)
2020-12-18 07:28:39 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 07:30:10 +0100mrchampion(~mrchampio@38.18.109.23) (Ping timeout: 256 seconds)
2020-12-18 07:30:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-12-18 07:32:08 +0100prion(~prion@142.167.179.124) (Quit: WeeChat 2.8)
2020-12-18 07:32:10 +0100xcmw(~textual@2603-6011-2200-f103-8011-a882-4e38-cf45.res6.spectrum.com) (Quit: Textual IRC Client: www.textualapp.com)
2020-12-18 07:32:13 +0100todda7(~torstein@ppp-2-84-17-53.home.otenet.gr)
2020-12-18 07:33:12 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)
2020-12-18 07:35:52 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-18 07:36:56 +0100proteusguy(~proteusgu@cm-58-10-154-202.revip7.asianet.co.th)
2020-12-18 07:39:43 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-12-18 07:41:23 +0100sis7(~user@2001:15e8:110:473e::1) (Remote host closed the connection)
2020-12-18 07:43:20 +0100Foritus(~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net) (Quit: ლ(ಠ益ಠლ) .:. <Ashley> my porn is hidden in a folder called "BBC Micro Emulator")
2020-12-18 07:45:38 +0100Foritus(~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net)
2020-12-18 07:47:59 +0100 <glguy> pavonia: it works via encodeFloat
2020-12-18 07:48:48 +0100 <glguy> Binary is for when you don't care how your data is encoded
2020-12-18 07:49:40 +0100tff^(tff@ip98-184-89-2.mc.at.cox.net) ()
2020-12-18 07:51:37 +0100vs^(vs@ip98-184-89-2.mc.at.cox.net)
2020-12-18 07:52:42 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:cc57:4a3f:14e6:d0d5) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 07:53:37 +0100 <glguy> > encodeFloat pi
2020-12-18 07:53:39 +0100 <lambdabot> error:
2020-12-18 07:53:39 +0100 <lambdabot> • Could not deduce (Floating Integer) arising from a use of ‘pi’
2020-12-18 07:53:40 +0100 <lambdabot> from the context: RealFloat a
2020-12-18 07:53:49 +0100olligobber(~olligobbe@unaffiliated/olligobber)
2020-12-18 07:54:01 +0100 <glguy> > decodeFloat pi
2020-12-18 07:54:04 +0100 <lambdabot> (7074237752028440,-51)
2020-12-18 07:54:51 +0100 <pavonia> > decodeFloat 0
2020-12-18 07:54:53 +0100 <lambdabot> (0,0)
2020-12-18 07:55:00 +0100 <pavonia> > decodeFloat 1
2020-12-18 07:55:03 +0100 <lambdabot> (4503599627370496,-52)
2020-12-18 07:55:08 +0100 <pavonia> O.o
2020-12-18 07:55:48 +0100 <pavonia> So the Integer is what bloats the encode result apparently
2020-12-18 07:58:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 07:58:41 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer) (Remote host closed the connection)
2020-12-18 08:00:56 +0100 <glguy> cereal uses the ieee format by default
2020-12-18 08:01:11 +0100 <glguy> There's another package for that for binary
2020-12-18 08:01:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-18 08:01:36 +0100 <glguy> I think cborg does it compactly by default
2020-12-18 08:03:14 +0100oish(~charlie@228.25.169.217.in-addr.arpa)
2020-12-18 08:04:54 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-18 08:05:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2020-12-18 08:11:08 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 268 seconds)
2020-12-18 08:11:40 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 08:12:03 +0100CMCDragonkai2(~Thunderbi@124.19.3.250)
2020-12-18 08:13:16 +0100argento(~argent0@168.227.96.53) (Quit: leaving)
2020-12-18 08:13:48 +0100phasespace(~sar@89-162-33-21.fiber.signal.no) (Ping timeout: 256 seconds)
2020-12-18 08:14:55 +0100CMCDragonkai2(~Thunderbi@124.19.3.250) (Remote host closed the connection)
2020-12-18 08:16:22 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)
2020-12-18 08:16:23 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:cecf:c08c:a5a2:10fd:4192) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 08:18:05 +0100mrchampion(~mrchampio@38.18.109.23)
2020-12-18 08:21:18 +0100mounty(~mounty@2001:8000:2f59:0:6c2e:3caf:57c1:9c66) (Ping timeout: 260 seconds)
2020-12-18 08:27:16 +0100todda7(~torstein@ppp-2-84-17-53.home.otenet.gr) (Ping timeout: 272 seconds)
2020-12-18 08:28:56 +0100MOSCOS(~MOSCOS@122.54.107.175) (Read error: Connection reset by peer)
2020-12-18 08:28:59 +0100jollygood2(~bc8165ab@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2020-12-18 08:29:38 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-18 08:32:00 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 08:32:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2020-12-18 08:36:38 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 264 seconds)
2020-12-18 08:39:18 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:4535:f480:7dff:b3b5)
2020-12-18 08:39:24 +0100asheshambasta(~user@ptr-e1lysaxt4bg7tmaahx1.18120a2.ip6.access.telenet.be)
2020-12-18 08:43:24 +0100Bille(~Bille@217.146.82.202) (Remote host closed the connection)
2020-12-18 08:43:43 +0100phasespace(~sar@80-89-47-117.inet.signal.no)
2020-12-18 08:46:33 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2020-12-18 08:52:19 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 08:53:36 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-18 08:54:18 +0100vilpan(~0@212.117.1.172)
2020-12-18 08:56:19 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 08:57:12 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)
2020-12-18 09:00:43 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-12-18 09:01:14 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-12-18 09:03:23 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-18 09:04:45 +0100da39a3ee5e6b4b0d(~da39a3ee5@49.228.254.151)
2020-12-18 09:07:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 09:08:45 +0100brodie(~brodie@207.53.253.137)
2020-12-18 09:10:10 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-12-18 09:12:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-18 09:13:52 +0100oish(~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 256 seconds)
2020-12-18 09:15:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 09:16:58 +0100 <guest1218> what does it mean to put <*> and <$> in parser?
2020-12-18 09:17:15 +0100 <dsal> guest1218: same thing it means anywhere else
2020-12-18 09:17:17 +0100 <guest1218> now I know *> and <|>
2020-12-18 09:17:42 +0100 <dsal> :t (<$>)
2020-12-18 09:17:44 +0100 <lambdabot> Functor f => (a -> b) -> f a -> f b
2020-12-18 09:17:55 +0100 <guest1218> what this mean? parse ((,) <$> char 'a' <*> char 'b') "ab"
2020-12-18 09:18:00 +0100 <dsal> :t (<*>)
2020-12-18 09:18:01 +0100 <lambdabot> Applicative f => f (a -> b) -> f a -> f b
2020-12-18 09:19:02 +0100 <dsal> > (,) <$> pure 'a' <*> pure 'b'
2020-12-18 09:19:05 +0100 <lambdabot> error:
2020-12-18 09:19:05 +0100 <lambdabot> • Ambiguous type variable ‘f0’ arising from a use of ‘show_M613650078549...
2020-12-18 09:19:05 +0100 <lambdabot> prevents the constraint ‘(Show
2020-12-18 09:19:19 +0100 <dsal> Yeah, that's a bit too ambiguous
2020-12-18 09:19:23 +0100 <guest1218> (,) is a function, char 'a' is a parser
2020-12-18 09:19:59 +0100 <guest1218> and also $>
2020-12-18 09:20:21 +0100 <dsal> It just means run the two parsers and if they both succeed, give them to (,)
2020-12-18 09:20:42 +0100 <dsal> $> is just half of <$>
2020-12-18 09:20:56 +0100 <dsal> :t ($>)
2020-12-18 09:20:57 +0100 <lambdabot> Functor f => f a -> b -> f b
2020-12-18 09:21:30 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-12-18 09:21:31 +0100 <guest1218> wait a minute, I saw that <$> and <*> before, it's liftA2?
2020-12-18 09:21:33 +0100plutoniix(~q@184.82.207.11)
2020-12-18 09:21:52 +0100 <dsal> :t liftA2
2020-12-18 09:21:53 +0100 <lambdabot> Applicative f => (a -> b -> c) -> f a -> f b -> f c
2020-12-18 09:22:43 +0100drbean(~drbean@TC210-63-209-216.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin1 - https://znc.in)
2020-12-18 09:23:01 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2020-12-18 09:23:18 +0100 <guest1218> parse (char 'a', char 'b') "ab"?
2020-12-18 09:23:18 +0100 <dsal> > liftA2 (,) "a" "b"
2020-12-18 09:23:21 +0100 <lambdabot> [('a','b')]
2020-12-18 09:23:34 +0100oish(~charlie@228.25.169.217.in-addr.arpa)
2020-12-18 09:23:51 +0100 <dsal> I don't think a tuple is a parser
2020-12-18 09:24:20 +0100 <guest1218> (,) <$> char 'a' = ?
2020-12-18 09:24:42 +0100heatsink(~heatsink@2600:1700:bef1:5e10:64b4:1541:658f:e8d8) (Remote host closed the connection)
2020-12-18 09:24:56 +0100 <dsal> :t (,) <$> "a"
2020-12-18 09:24:57 +0100 <lambdabot> [b -> (Char, b)]
2020-12-18 09:25:08 +0100jmchael_(~jmchael@87.112.46.194) (Ping timeout: 268 seconds)
2020-12-18 09:25:37 +0100 <guest1218> > (+) <$> (Just 3) <*> (Just 7)
2020-12-18 09:25:39 +0100 <lambdabot> Just 10
2020-12-18 09:25:43 +0100 <dsal> That's possibly confusing using list instead of parser, but it's easier if you understand the fundamentals first
2020-12-18 09:25:45 +0100 <guest1218> this one I understand
2020-12-18 09:25:52 +0100jmchael(~jmchael@81.174.180.109)
2020-12-18 09:26:08 +0100 <guest1218> (+) <$> (Just 3) == Just (+3)
2020-12-18 09:26:20 +0100 <guest1218> Just (+3) <*> Just 7 = Just 10
2020-12-18 09:26:25 +0100 <dsal> :t (+) <$> Just 1
2020-12-18 09:26:26 +0100 <lambdabot> Num a => Maybe (a -> a)
2020-12-18 09:27:11 +0100 <guest1218> (,) <$> "a" == \x -> (a,x)
2020-12-18 09:27:25 +0100 <dsal> > (+) <$> Just 3 :: Expr
2020-12-18 09:27:28 +0100 <lambdabot> error:
2020-12-18 09:27:28 +0100 <lambdabot> • Couldn't match expected type ‘Expr’
2020-12-18 09:27:28 +0100 <lambdabot> with actual type ‘Maybe (a0 -> a0)’
2020-12-18 09:27:28 +0100 <guest1218> no
2020-12-18 09:27:38 +0100 <dsal> Bah, nope
2020-12-18 09:27:56 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
2020-12-18 09:28:19 +0100 <guest1218> "a" == ['a']
2020-12-18 09:28:22 +0100 <dsal> > ((+) <$> Just 3) :: Expr
2020-12-18 09:28:24 +0100 <lambdabot> error:
2020-12-18 09:28:24 +0100 <lambdabot> • Couldn't match expected type ‘Expr’
2020-12-18 09:28:24 +0100 <lambdabot> with actual type ‘Maybe (a0 -> a0)’
2020-12-18 09:28:41 +0100 <guest1218> (,) <$> "a" == [(,) 'a']
2020-12-18 09:29:17 +0100 <dsal> > (,) 'a' 'b'
2020-12-18 09:29:20 +0100 <lambdabot> ('a','b')
2020-12-18 09:29:35 +0100 <dsal> Not sure where you got that list
2020-12-18 09:29:54 +0100 <guest1218> dsal: what list?
2020-12-18 09:30:34 +0100 <dsal> Oh, because you fmapped into a list. It's late. Heh
2020-12-18 09:31:20 +0100 <dsal> <$> is just fmap
2020-12-18 09:31:30 +0100 <guest1218> (,) <$> "a" == [(,) 'a'], (,) <$> "a" <*> "b" == [(,) 'a' 'b'] = [('a','b')]
2020-12-18 09:31:43 +0100 <dsal> Yeah.
2020-12-18 09:31:47 +0100lamasnik(~Nikolas@195.191.146.23)
2020-12-18 09:32:10 +0100 <guest1218> dsal: but I don't understand what it mean when put this on parser
2020-12-18 09:32:27 +0100 <dsal> Which part?
2020-12-18 09:32:37 +0100 <guest1218> (,) <$> char 'a'
2020-12-18 09:32:40 +0100 <dsal> A parser is a lot like Maybe
2020-12-18 09:33:05 +0100 <dsal> > succ <$> Just 'a'
2020-12-18 09:33:08 +0100 <lambdabot> Just 'b'
2020-12-18 09:33:35 +0100 <dsal> You can transform values within the parser the same way you do with Maybe
2020-12-18 09:33:39 +0100 <guest1218> dsal: (,) <$> char 'a' == char (,) 'a'?
2020-12-18 09:34:12 +0100kuribas(~user@ptr-25vy0i76oze9u46tlnk.18120a2.ip6.access.telenet.be)
2020-12-18 09:34:19 +0100 <guest1218> dsal: char 'a' , is not a value constructor
2020-12-18 09:34:36 +0100 <dsal> No, char is a function
2020-12-18 09:34:38 +0100 <guest1218> Just is a value constructor, [] is
2020-12-18 09:35:28 +0100 <dsal> > let char = Just in succ <$> char 'a'
2020-12-18 09:35:30 +0100 <lambdabot> Just 'b'
2020-12-18 09:36:14 +0100 <guest1218> (,) <$> char 'a' means (,) (char 'a')'s result?
2020-12-18 09:36:45 +0100Guest11594(~AntiSpamM@84.39.117.57)
2020-12-18 09:36:57 +0100 <guest1218> dsal: this char is same?
2020-12-18 09:37:10 +0100 <dsal> It means the same thing it means anywhere else. Parser might as well be Maybe. There's no conceptual difference.
2020-12-18 09:37:13 +0100jedws(~jedws@121.209.189.201)
2020-12-18 09:37:16 +0100lamasnik(~Nikolas@195.191.146.23) (Quit: WeeChat 2.8)
2020-12-18 09:39:47 +0100 <guest1218> dsal: what about $>
2020-12-18 09:40:18 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
2020-12-18 09:41:36 +0100jedws(~jedws@121.209.189.201) (Ping timeout: 240 seconds)
2020-12-18 09:44:28 +0100 <merijn> guest1218: You seem to be confused by even very basic concepts these past days. I recommend grabbing a decent book and starting from the basics instead of trying to figure out definitions by asking if 10 random interpretations are correct and waiting for people to correct you
2020-12-18 09:44:33 +0100 <guest1218> dsal: <$> <*> can work on different parsers's result, what $> is used to parser?
2020-12-18 09:45:24 +0100 <guest1218> merijn: I finished learn yourself a haskell for good
2020-12-18 09:46:01 +0100 <guest1218> and there's no lots of concepts in it
2020-12-18 09:46:23 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-18 09:46:24 +0100todda7(~torstein@ppp-2-84-17-53.home.otenet.gr)
2020-12-18 09:46:28 +0100 <guest1218> a decent book you mean realworld haskell?
2020-12-18 09:47:12 +0100bliminse(~bliminse@host109-158-129-129.range109-158.btcentralplus.com)
2020-12-18 09:47:13 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-18 09:48:09 +0100 <dsal> :t ($>)
2020-12-18 09:48:10 +0100 <lambdabot> Functor f => f a -> b -> f b
2020-12-18 09:48:12 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-18 09:48:28 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-18 09:48:40 +0100 <dsal> > Just 4 $> 'x'
2020-12-18 09:48:42 +0100 <lambdabot> Just 'x'
2020-12-18 09:49:20 +0100 <guest1218> parse (char 'a' $> 'b') "" "ac" == Right 'b', it's like if-else
2020-12-18 09:49:50 +0100 <guest1218> if char 'a' consumed, then return with 'b'
2020-12-18 09:50:23 +0100 <dsal> What's else?
2020-12-18 09:50:28 +0100 <pavonia> When converting a signed Integer to a Word (to store it as byte sequence), fromInteger seem to do the correct conversion. How do you go the opposite way?
2020-12-18 09:51:11 +0100 <guest1218> dsal: consturct 'b' with char 'a''s context?
2020-12-18 09:51:34 +0100 <guest1218> I'd like to environement, I don't know if it's proper
2020-12-18 09:51:56 +0100 <idnar> :t fromIntegral -- @pavonia
2020-12-18 09:51:57 +0100 <lambdabot> (Integral a, Num b) => a -> b
2020-12-18 09:53:15 +0100 <pavonia> idnar: No, that doesn't work, it always gives an unsigned Integer
2020-12-18 09:54:08 +0100 <dsal> pavonia: there's a binary package that does all the conversions, including endianness
2020-12-18 09:55:30 +0100 <idnar> pavonia: oh I see what you mean
2020-12-18 09:55:39 +0100 <dsal> @hackage binary
2020-12-18 09:55:39 +0100 <lambdabot> https://hackage.haskell.org/package/binary
2020-12-18 09:56:19 +0100 <idnar> pavonia: I think you want Int* instead of Word*
2020-12-18 09:57:46 +0100 <pavonia> How would you do it if you've got a Word* from a foreign library?
2020-12-18 09:58:34 +0100 <idnar> > fromInteger (-1) :: Word8
2020-12-18 09:58:36 +0100 <lambdabot> 255
2020-12-18 09:59:33 +0100 <idnar> > let x = fromInteger (-1) :: Word8 in toInteger (fromIntegral x :: Int8)
2020-12-18 09:59:35 +0100 <lambdabot> -1
2020-12-18 10:00:05 +0100camlriot42(camlriotma@gateway/shell/matrix.org/x-oczhhosnsfdjctzy) (Quit: Idle for 30+ days)
2020-12-18 10:00:06 +0100Hanma[m](hanmamatri@gateway/shell/matrix.org/x-xirqpfxzlgorfgfx) (Quit: Idle for 30+ days)
2020-12-18 10:00:39 +0100 <idnar> from the Data.Int docs: "Coercing word types (see Data.Word) to and from integer types preserves representation, not sign."
2020-12-18 10:00:54 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:4535:f480:7dff:b3b5) (Ping timeout: 268 seconds)
2020-12-18 10:01:43 +0100 <pavonia> Ah, thanks
2020-12-18 10:01:55 +0100 <idnar> just make sure you go via the same-sized Int* type
2020-12-18 10:03:30 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-18 10:04:34 +0100oish(~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 260 seconds)
2020-12-18 10:05:17 +0100bl4nkz3r0(~bl4nkz3r0@195.40.187.81.in-addr.arpa)
2020-12-18 10:06:20 +0100 <pavonia> I have to memorize that fromIntegral = fromInteger . toInteger
2020-12-18 10:07:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-12-18 10:09:12 +0100 <dminuoso> Does aeson have an interface to deal with objects that have duplicate keys?
2020-12-18 10:09:20 +0100 <idnar> note that there are some rewrite rules and specializations that make it perform better than its expansion
2020-12-18 10:09:31 +0100shf(~sheaf@2a01:cb19:80cc:7e00:3d51:cce0:e1c5:49b6) (Read error: Connection reset by peer)
2020-12-18 10:10:16 +0100aev_software(~Admin@pool-108-5-152-94.nwrknj.fios.verizon.net) (Ping timeout: 240 seconds)
2020-12-18 10:10:27 +0100 <dminuoso> type Object = HashMap Text Value
2020-12-18 10:10:29 +0100 <dminuoso> Haha nevermind I guess
2020-12-18 10:10:36 +0100 <dminuoso> So you cant parse all valid JSON with aeson. That sucks
2020-12-18 10:11:38 +0100 <idnar> dminuoso: https://hackage.haskell.org/package/aeson-1.5.4.1/docs/Data-Aeson-Parser.html#v:jsonWith
2020-12-18 10:11:39 +0100 <merijn> guest1218: I mean Bird's "Thinking Functionally With Haskell", Hutton's "Programming in Haskell", or "Haskell From First Principles", LYAH is not a particularly good book, tbh
2020-12-18 10:12:09 +0100 <merijn> pavonia: fromIntegral is the more generic version of fromInteger
2020-12-18 10:12:25 +0100 <merijn> Oh, wait, someone already said that :p
2020-12-18 10:12:28 +0100 <dminuoso> idnar: Mmm, strange. Alright
2020-12-18 10:12:30 +0100 <dminuoso> Thanks!
2020-12-18 10:12:50 +0100 <int-e> @src fromIntegral
2020-12-18 10:12:51 +0100 <lambdabot> fromIntegral = fromInteger . toInteger
2020-12-18 10:17:48 +0100jneira(501e6453@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.83) (Quit: Connection closed)
2020-12-18 10:17:56 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 10:21:08 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-18 10:21:17 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:9c60:5f28:257e:410b)
2020-12-18 10:22:43 +0100esp32_prog(yoann@gateway/vpn/protonvpn/esp32prog/x-46565127)
2020-12-18 10:22:50 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 264 seconds)
2020-12-18 10:23:08 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
2020-12-18 10:24:25 +0100 <gentauro> lambdabot: :|
2020-12-18 10:24:34 +0100 <gentauro> was happening !!!
2020-12-18 10:25:04 +0100heatsink(~heatsink@2600:1700:bef1:5e10:59b6:d0f8:85fa:e454)
2020-12-18 10:25:59 +0100esp32_prog(yoann@gateway/vpn/protonvpn/esp32prog/x-46565127) (Client Quit)
2020-12-18 10:26:25 +0100esp32_prog(yoann@gateway/vpn/protonvpn/esp32prog/x-46565127)
2020-12-18 10:29:57 +0100heatsink(~heatsink@2600:1700:bef1:5e10:59b6:d0f8:85fa:e454) (Ping timeout: 260 seconds)
2020-12-18 10:31:37 +0100mounty(~mounty@210.1.196.133)
2020-12-18 10:35:06 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-18 10:36:07 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-18 10:36:11 +0100dyeplexer(~lol@unaffiliated/terpin)
2020-12-18 10:36:51 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-18 10:37:10 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-18 10:37:30 +0100gxt(~gxt@gateway/tor-sasl/gxt) (Quit: WeeChat 2.9)
2020-12-18 10:37:39 +0100bl4nkz3r0(~bl4nkz3r0@195.40.187.81.in-addr.arpa) (Quit: bl4nkz3r0)
2020-12-18 10:37:56 +0100bl4nkz3r0(~bl4nkz3r0@195.40.187.81.in-addr.arpa)
2020-12-18 10:38:16 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 10:38:39 +0100bl4nkz3r0(~bl4nkz3r0@195.40.187.81.in-addr.arpa) (Client Quit)
2020-12-18 10:39:51 +0100michalz(~user@185.246.204.56)
2020-12-18 10:39:52 +0100Boomerang(~Boomerang@2a05:f6c7:2179:0:d811:4796:d80c:9d85)
2020-12-18 10:40:16 +0100u0_a203(~u0_a203@37.98.47.224)
2020-12-18 10:40:26 +0100u0_a203(~u0_a203@37.98.47.224) (Client Quit)
2020-12-18 10:41:53 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-evqgdihcidrcilck) (Quit: Connection closed for inactivity)
2020-12-18 10:42:27 +0100thc202(~thc202@unaffiliated/thc202)
2020-12-18 10:42:47 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)
2020-12-18 10:44:29 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
2020-12-18 10:46:32 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 268 seconds)
2020-12-18 10:46:35 +0100berberman_(~berberman@unaffiliated/berberman)
2020-12-18 10:46:43 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-12-18 10:47:39 +0100 <ph88> does anyone know how to use this function ? https://hackage.haskell.org/package/vinyl-0.13.0/docs/Data-Vinyl-Lens.html#v:rlensC i get one field from the row this works. But then how do i get the value of that field ? when i traceShow i see something like: MyColumn -> "myData" but i only need "myData"
2020-12-18 10:49:55 +0100 <dminuoso> ph88: Presumably with `view` or (^.) from say lens/microlens?
2020-12-18 10:50:16 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2020-12-18 10:50:56 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-12-18 10:52:14 +0100 <ph88> i could try that ye, not sure yet how to ... but that's a bit surprising because rgetC has as describtion: For Vinyl users who are not using the lens package, we provide a getter.
2020-12-18 10:52:59 +0100 <kuribas> merijn: it's a shame Real World haskell never got updated, because I liked that approach.
2020-12-18 10:53:02 +0100da39a3ee5e6b4b0d(~da39a3ee5@49.228.254.151) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 10:55:27 +0100 <merijn> kuribas: There is a (partially?) updated RWH
2020-12-18 10:56:15 +0100 <merijn> kuribas: https://github.com/tssm/up-to-date-real-world-haskell
2020-12-18 10:57:14 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 10:57:26 +0100 <idnar> ph88: the getter is rgetC
2020-12-18 10:58:35 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 11:00:27 +0100ubert(~Thunderbi@p200300ecdf3514e7e6b318fffe838f33.dip0.t-ipconnect.de)
2020-12-18 11:02:06 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-12-18 11:03:11 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 268 seconds)
2020-12-18 11:06:37 +0100borne(~fritjof@200116b864c24e00c0a3d285e8e687f4.dip.versatel-1u1.de)
2020-12-18 11:13:47 +0100 <kuribas> can you coerce functions?
2020-12-18 11:16:31 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-12-18 11:17:59 +0100 <kuribas> ah seems I can :-)
2020-12-18 11:18:16 +0100 <lortabac> kuribas: what do you mean?
2020-12-18 11:18:39 +0100 <kuribas> "f a b" where a and b are newtypes
2020-12-18 11:18:46 +0100 <lortabac> coerce between functions whose arguments are coercible?
2020-12-18 11:18:49 +0100 <kuribas> yes
2020-12-18 11:18:50 +0100 <lortabac> ok
2020-12-18 11:19:03 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 11:20:13 +0100 <lortabac> I guess it works because (->) is considered as a type constructor
2020-12-18 11:21:33 +0100 <nshepperd2> i think (->) is considered representational
2020-12-18 11:21:56 +0100 <nshepperd2> in its type parameters
2020-12-18 11:22:40 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it)
2020-12-18 11:23:29 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 258 seconds)
2020-12-18 11:23:43 +0100 <lortabac> from the GHC manual: "(->) has two representational parameters"
2020-12-18 11:23:48 +0100dragestil(~quassel@fsf/member/dragestil) (Remote host closed the connection)
2020-12-18 11:24:58 +0100dragestil(~quassel@fsf/member/dragestil)
2020-12-18 11:25:20 +0100hiroaki(~hiroaki@ip4d16fa3b.dynamic.kabel-deutschland.de)
2020-12-18 11:26:28 +0100heatsink(~heatsink@2600:1700:bef1:5e10:59b6:d0f8:85fa:e454)
2020-12-18 11:30:02 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-12-18 11:31:12 +0100heatsink(~heatsink@2600:1700:bef1:5e10:59b6:d0f8:85fa:e454) (Ping timeout: 260 seconds)
2020-12-18 11:31:19 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer)
2020-12-18 11:31:50 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Quit: Reconnecting)
2020-12-18 11:31:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-18 11:32:16 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-12-18 11:33:03 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-12-18 11:33:11 +0100brodie(~brodie@207.53.253.137) (Quit: brodie)
2020-12-18 11:33:47 +0100brodie(~brodie@207.53.253.137)
2020-12-18 11:39:19 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net)
2020-12-18 11:43:26 +0100brodie(~brodie@207.53.253.137) (Quit: brodie)
2020-12-18 11:44:10 +0100 <dminuoso> Let's say I have two `IntMap T` and I want to act on all values that are on the left side, values on the right side, and values that are on both sides separately.
2020-12-18 11:45:06 +0100 <dminuoso> Options I see include turning both into ascending lists and running Diff ontop of them
2020-12-18 11:46:58 +0100hiroaki(~hiroaki@ip4d16fa3b.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
2020-12-18 11:47:26 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 256 seconds)
2020-12-18 11:49:34 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-18 11:50:22 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net)
2020-12-18 11:51:22 +0100 <opqdonut> dminuoso: why not union / difference for IntMaps?
2020-12-18 11:51:23 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-12-18 11:51:48 +0100 <dminuoso> opqdonut: I feel like Im doing unnecessary work that way
2020-12-18 11:52:07 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-18 11:52:38 +0100 <opqdonut> something like unionWith would help you classify values into these three buckets
2020-12-18 11:52:56 +0100 <opqdonut> so you'd need only one intmap operation
2020-12-18 11:53:23 +0100 <tomsmeding> diffing the ascending lists is probably the most efficient choice, but possibly not the most ergonomic
2020-12-18 11:53:23 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Ping timeout: 240 seconds)
2020-12-18 11:53:39 +0100 <opqdonut> mmh, yeah
2020-12-18 11:53:50 +0100 <tomsmeding> also dminuoso, T = Int?
2020-12-18 11:54:19 +0100 <tomsmeding> though I guess it doesn't really matter as long as you can define your "values that are on both sides" suitably
2020-12-18 11:54:19 +0100 <opqdonut> hmm right operate on all values, not all keys
2020-12-18 11:55:00 +0100 <dminuoso> Yeah, what I have right now is `comparingRR :: RR -> RR -> a -> a -> a -> a` as a continuation based equality with handrolled equality checking
2020-12-18 11:55:11 +0100 <dminuoso> The thing is, the notion of equality I have is based on just some fields of RR.
2020-12-18 11:55:47 +0100 <dminuoso> tomsmeding: The representation is not fixed really. Right now it's a pair of Text.
2020-12-18 11:56:16 +0100 <tomsmeding> so, when you say "values that are on both sides", do you mean values that occur both as key and as value in the IntMap?
2020-12-18 11:56:27 +0100 <tomsmeding> because that's what I understood, but that makes no sense if T ~= (Text, Text)
2020-12-18 11:56:35 +0100 <dminuoso> Ah! Let me rephrase
2020-12-18 11:58:21 +0100 <dminuoso> tomsmeding: Assume that I have two lists of type [(Text, RR)]
2020-12-18 11:58:33 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-18 11:58:35 +0100 <dminuoso> With a notion of equality on the first element of the tuple
2020-12-18 11:59:11 +0100 <dminuoso> but I guess my original function
2020-12-18 11:59:28 +0100 <dminuoso> `comparingRR :: (Text, RR) -> (Text, RR) -> a -> a -> a -> a` gives me everything I want in the spot Im at
2020-12-18 12:00:12 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de)
2020-12-18 12:00:18 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2020-12-18 12:00:47 +0100 <tomsmeding> unsure how the a -> a -> a -> a helps here (the free theorem on comparingRR tells that it can't do anything useful with those a's), but I think what you're asking is "how do I diff these lists with a custom equality function" -- well, diff them :p
2020-12-18 12:00:59 +0100 <tomsmeding> though to be able to diff them, you do need an ordering compatible with your equality relation
2020-12-18 12:01:32 +0100 <tomsmeding> either that or a compatible hashing, in which a hash map can work
2020-12-18 12:01:50 +0100 <dminuoso> the hashing would have to be perfect, Id have to dig deep into RFCs to know whether that could be done
2020-12-18 12:01:53 +0100 <tomsmeding> having neither basically forces you to an n^2 algorithm
2020-12-18 12:02:08 +0100 <tomsmeding> the hashing only has to be sufficient, in that a = b => H(a) = H(b)
2020-12-18 12:02:16 +0100 <tomsmeding> though the better it is, the more efficient :p
2020-12-18 12:03:17 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2020-12-18 12:03:49 +0100 <dminuoso> no, it has to be perfect, otherwise it could conflate things into being equal that are not equal
2020-12-18 12:04:05 +0100 <dminuoso> (forcing me to test for equality again)
2020-12-18 12:04:40 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-12-18 12:05:11 +0100 <tomsmeding> a hashmap requires both Hash and Eq :p
2020-12-18 12:05:35 +0100guest1218(~user@49.5.6.87) (Remote host closed the connection)
2020-12-18 12:05:41 +0100 <tomsmeding> so you'll need the equality anyway
2020-12-18 12:05:42 +0100 <dminuoso> Ah.
2020-12-18 12:06:08 +0100 <tomsmeding> no hashmap ever relies on the fact that the hash is perfect (because usually it can't be), and double-checks with the real equality check
2020-12-18 12:06:19 +0100dminuosoneeds vacation
2020-12-18 12:06:36 +0100 <tomsmeding> which is fortunately coming up
2020-12-18 12:06:46 +0100 <tomsmeding> at least for the non-students among us
2020-12-18 12:07:19 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-12-18 12:07:28 +0100knupfer(~Thunderbi@200116b82c44cd00ec7cdffffe542d68.dip.versatel-1u1.de)
2020-12-18 12:08:07 +0100knupfer(~Thunderbi@200116b82c44cd00ec7cdffffe542d68.dip.versatel-1u1.de) (Remote host closed the connection)
2020-12-18 12:08:20 +0100knupfer(~Thunderbi@200116b82c44cd0088bdee5ac2ca8198.dip.versatel-1u1.de)
2020-12-18 12:08:30 +0100 <tomsmeding> if you have a compatible ordering, the algorithm would be: sort both [(Text, RR)] lists by (yourOrdering . fst), then do a single-pass linear diff (a la merge phase in merge sort) to construct your partitioning
2020-12-18 12:08:43 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-12-18 12:09:16 +0100 <tomsmeding> if you have a compatible hashing, the algorithm would be: make a HashSet of both lists, and loop over both lists individually, checking for each item whether it's contained in the other set
2020-12-18 12:09:55 +0100 <tomsmeding> I think you need at least one of those, except if you know of a different kind of data structure that I've never seen
2020-12-18 12:11:35 +0100tomsmedingexplained something to a regular, is proud
2020-12-18 12:11:40 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Quit: Nice weekend)
2020-12-18 12:12:52 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2020-12-18 12:13:17 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.29.10)
2020-12-18 12:15:28 +0100 <dminuoso> tomsmeding: there is a third alternative, which is a bit crazier
2020-12-18 12:15:39 +0100 <dminuoso> Im really itching for this one
2020-12-18 12:15:49 +0100 <dminuoso> https://hackage.haskell.org/package/discrimination-0.4/docs/Data-Discrimination.html#v:joining
2020-12-18 12:15:54 +0100 <dminuoso> I *think* this one would work
2020-12-18 12:16:37 +0100 <dminuoso> because if I sort first, and then compare again I throw away knowledge
2020-12-18 12:17:05 +0100__monty__(~toonn@unaffiliated/toonn)
2020-12-18 12:18:02 +0100 <dminuoso> In constant time :D
2020-12-18 12:18:16 +0100 <dminuoso> Err. linear hah
2020-12-18 12:19:05 +0100 <tomsmeding> I have no idea what 1. Decidable is, and 2. how to read the definition of joining
2020-12-18 12:19:13 +0100 <tomsmeding> but that looks cool
2020-12-18 12:19:50 +0100 <dminuoso> tomsmeding: The rough idea is that you can sort many data in linear time.
2020-12-18 12:20:07 +0100 <tomsmeding> like, I think I understand what the function _should_ be doing
2020-12-18 12:20:10 +0100solonarv(~solonarv@astrasbourg-157-1-27-135.w90-40.abo.wanadoo.fr)
2020-12-18 12:20:18 +0100 <tomsmeding> but I can't see through the spanEither &&& <$> in that definition :p
2020-12-18 12:21:46 +0100 <boxscape> If I derive Show and Read, am I right in thinking that "read . show" should always be id and never result in a parse error?
2020-12-18 12:22:20 +0100 <tomsmeding> no upon reflection I don't understand what 'joining' is supposed to be doing with just its arguments and the 'disc' function
2020-12-18 12:22:25 +0100rprije(~rprije@14-203-203-69.tpgi.com.au) (Ping timeout: 240 seconds)
2020-12-18 12:22:31 +0100 <dminuoso> boxscape: Yes.
2020-12-18 12:22:34 +0100 <tomsmeding> boxscape: I believe that's a guarantee that ghc gives you
2020-12-18 12:22:42 +0100 <boxscape> hmm I'm getting a parse error :(
2020-12-18 12:22:42 +0100 <dminuoso> That's mandated by Haskell2010
2020-12-18 12:22:52 +0100 <boxscape> let me post the type
2020-12-18 12:22:54 +0100 <dminuoso> boxscape: you probably have some transitive type that *does* not follow it
2020-12-18 12:23:06 +0100 <dminuoso> boxscape: it only holds if the entire tree of data types uses deriving generated show/read instances
2020-12-18 12:23:09 +0100 <boxscape> the only transitive type is Int
2020-12-18 12:24:05 +0100 <boxscape> % infixl 6 :+; data Test = Int :+ Int deriving (Show, Read)
2020-12-18 12:24:05 +0100 <yahb> boxscape:
2020-12-18 12:24:21 +0100 <boxscape> wait let me make sure this is what I'm thinking of
2020-12-18 12:24:46 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 12:25:10 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
2020-12-18 12:25:19 +0100 <dminuoso> % read (show (1 :+ 2)) :: Test
2020-12-18 12:25:19 +0100 <yahb> dminuoso: 1 :+ 2
2020-12-18 12:25:29 +0100 <tomsmeding> % read (show (1 :+ ((2 :+ 3) :+ 4))) :: Test
2020-12-18 12:25:29 +0100 <yahb> tomsmeding: ; <interactive>:39:19: error:; * Couldn't match expected type `Int' with actual type `Test'; * In the second argument of `(:+)', namely `((2 :+ 3) :+ 4)'; In the first argument of `show', namely `(1 :+ ((2 :+ 3) :+ 4))'; In the first argument of `read', namely `(show (1 :+ ((2 :+ 3) :+ 4)))'; <interactive>:39:20: error:; * Couldn't match expected type `Int' with actual type `Test
2020-12-18 12:25:39 +0100 <dminuoso> boxscape: Note, that GHC will *not* preserve the exact shape of the AST.
2020-12-18 12:25:41 +0100 <tomsmeding> oh it's just Int
2020-12-18 12:25:44 +0100 <dminuoso> So you could write:
2020-12-18 12:25:49 +0100 <dminuoso> % read (show ((:+) 1 2)) :: Test
2020-12-18 12:25:49 +0100 <yahb> dminuoso: 1 :+ 2
2020-12-18 12:26:07 +0100todda7(~torstein@ppp-2-84-17-53.home.otenet.gr) (Ping timeout: 265 seconds)
2020-12-18 12:26:14 +0100 <tomsmeding> you can't observe the way the literal is written in the source code anyway
2020-12-18 12:26:27 +0100olligobber(~olligobbe@unaffiliated/olligobber) (Remote host closed the connection)
2020-12-18 12:26:27 +0100 <dminuoso> huh?
2020-12-18 12:26:29 +0100 <dminuoso> of course it could
2020-12-18 12:26:39 +0100 <dminuoso> it's not source code, its just a string
2020-12-18 12:26:43 +0100 <dminuoso> oh
2020-12-18 12:26:46 +0100 <dminuoso> for show you mean
2020-12-18 12:26:48 +0100 <dminuoso> mmm, yeah
2020-12-18 12:26:49 +0100 <tomsmeding> yes
2020-12-18 12:26:59 +0100 <tomsmeding> and the question was read . show :p
2020-12-18 12:27:23 +0100 <tomsmeding> for all you know it was head (zipWith (:+) [1..] [2..])
2020-12-18 12:27:32 +0100 <boxscape> hmm it works if I try it in a fresh ghci, might be some extension
2020-12-18 12:27:40 +0100darjeeling_(~darjeelin@122.245.217.210) (Ping timeout: 268 seconds)
2020-12-18 12:27:55 +0100 <tomsmeding> wat
2020-12-18 12:27:56 +0100 <dminuoso> boxscape: Im betting it's MMR!
2020-12-18 12:27:58 +0100 <dminuoso> :p
2020-12-18 12:28:02 +0100 <dminuoso> The usual culprit
2020-12-18 12:28:10 +0100 <tomsmeding> oh!
2020-12-18 12:28:22 +0100 <dminuoso> (A mixture of MMR and type defaulting)
2020-12-18 12:28:29 +0100 <tomsmeding> yes indeed, boxscape the parse error that you get, could that be because the inferred type of the read call is wrong
2020-12-18 12:28:34 +0100 <boxscape> hmm or wait maybe I was just being stupid because it seems to work now
2020-12-18 12:28:54 +0100 <tomsmeding> schrödinger errors
2020-12-18 12:29:10 +0100 <dminuoso> Heisenbug
2020-12-18 12:29:30 +0100 <dminuoso> That term even has a wikipedia article :)
2020-12-18 12:30:07 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2020-12-18 12:31:33 +0100 <boxscape> Okay it was a combination of being surprised that Read doesn't work if you don't put in parentheses and forgetting the type annotation when trying `read . show`
2020-12-18 12:33:25 +0100bliminse(~bliminse@host109-158-129-129.range109-158.btcentralplus.com) (Ping timeout: 240 seconds)
2020-12-18 12:34:39 +0100bliminse(~bliminse@host109-158-129-129.range109-158.btcentralplus.com)
2020-12-18 12:37:16 +0100howdoi(uid224@gateway/web/irccloud.com/x-jyxgencxqnzavabz) (Quit: Connection closed for inactivity)
2020-12-18 12:37:46 +0100flatmap(~flatmap@p200300dd371871004132f49785e35f6d.dip0.t-ipconnect.de)
2020-12-18 12:39:44 +0100 <tomsmeding> boxscape: yeah the Read instance doesn't take into account associativity, so you have the use explicit parentheses
2020-12-18 12:39:51 +0100 <boxscape> okay
2020-12-18 12:39:54 +0100 <boxscape> unfortunate
2020-12-18 12:39:58 +0100 <tomsmeding> or, well, the auto-generated instance doesn't
2020-12-18 12:40:02 +0100 <boxscape> right
2020-12-18 12:42:54 +0100jamm(~jamm@unaffiliated/jamm)
2020-12-18 12:44:57 +0100darjeeling_(~darjeelin@122.245.217.210)
2020-12-18 12:45:21 +0100 <kuribas> Is using a lifted DataKind considered "not boring haskell"?
2020-12-18 12:45:39 +0100ulidtko(~ulidtko@194.54.80.38) (Ping timeout: 256 seconds)
2020-12-18 12:45:53 +0100 <kuribas> "data Nullable; data NotNull" vs "data Nullable = Nullable | NotNull"
2020-12-18 12:46:20 +0100 <kuribas> IMO the lifted datakind would *improve* on error messages.
2020-12-18 12:46:30 +0100 <kuribas> as you can never use the wrong kind.
2020-12-18 12:48:25 +0100MOSCOS(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-18 12:48:25 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.29.10) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 12:48:50 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-18 12:49:25 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2020-12-18 12:49:36 +0100drbean(~drbean@TC210-63-209-72.static.apol.com.tw)
2020-12-18 12:49:56 +0100ulidtko(~ulidtko@194.54.80.38)
2020-12-18 12:50:41 +0100 <tomsmeding> now that I understand how DataKinds work, I would consider that fairly "boring haskell", as long as the lifted type is just a simple numeration, as in your example
2020-12-18 12:50:48 +0100 <tomsmeding> but this is heavily opinion-based :p
2020-12-18 12:50:56 +0100 <tomsmeding> also experience-dependent
2020-12-18 12:51:02 +0100 <kuribas> true
2020-12-18 12:52:36 +0100 <merijn> tomsmeding: DataKinds is fairly simple, the big problem is everyone "wanting to make it do too much" :p
2020-12-18 12:53:10 +0100 <tomsmeding> see also perhaps the discussion here about the L and R types: https://github.com/haskell/containers/pull/340#pullrequestreview-43164
2020-12-18 12:53:19 +0100 <tomsmeding> (search for "apropos of" on the page)
2020-12-18 12:53:47 +0100christo(~chris@81.96.113.213)
2020-12-18 12:54:02 +0100 <merijn> tomsmeding: Well, the thing is that DataKinds isn't Haskell2010 and containers as-is works fine with UHC and something GHC specific like DataKinds would break that
2020-12-18 12:54:31 +0100 <tomsmeding> ah good point
2020-12-18 12:55:26 +0100 <merijn> So it basically means "do we literally abandon any and all hope any Haskell code can ever use anything other than GHC"
2020-12-18 12:55:42 +0100Tario(~Tario@201.192.165.173)
2020-12-18 12:56:01 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-12-18 12:56:07 +0100 <lortabac> forall A. now that I understand how A works, I consider A easy :)
2020-12-18 12:56:25 +0100 <merijn> lortabac: No
2020-12-18 12:56:54 +0100 <tomsmeding> "If quantum mechanics hasn't profoundly shocked you, you haven't understood it yet." -- Niels Bohr
2020-12-18 12:57:07 +0100 <merijn> lortabac: I understand how impredicative types work and I still don't "get it" :p
2020-12-18 12:57:21 +0100 <lortabac> fair point :)
2020-12-18 12:57:27 +0100Guest11594(~AntiSpamM@84.39.117.57) (Remote host closed the connection)
2020-12-18 12:57:33 +0100 <merijn> tomsmeding: to be fair, Bohr was ancient and this view is largely incorrect nowadays
2020-12-18 12:57:51 +0100 <tomsmeding> quote was mostly in jest, but thought it was sort-of relevant :)
2020-12-18 12:58:01 +0100 <merijn> By now all the phycisists who consider QM shocking are all dead :p
2020-12-18 12:58:31 +0100ph88(~ph88@2a02:8109:9e00:7e5c:d5e6:6f2:2e3f:fbbc) (Remote host closed the connection)
2020-12-18 12:58:58 +0100ph88(~ph88@ip5f5af6cd.dynamic.kabel-deutschland.de)
2020-12-18 13:00:03 +0100 <__monty__> That's news to me.
2020-12-18 13:00:17 +0100 <merijn> __monty__: How so?
2020-12-18 13:00:27 +0100 <__monty__> It's about it being shocking when you first learn about it not after spending a couple years in physics education.
2020-12-18 13:00:49 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2020-12-18 13:00:49 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2020-12-18 13:00:49 +0100mouseghost(~draco@wikipedia/desperek)
2020-12-18 13:01:12 +0100 <merijn> __monty__: I doubt Bohr's quote was about that, rather than being about the large number of "anti-" quantum mechanics phycisists at the time Bohr was alive
2020-12-18 13:01:36 +0100 <merijn> Also, why is QM *shocking* when you first learn it? Confusing? Sure. But shocking and controversial? No.
2020-12-18 13:02:28 +0100 <__monty__> You don't think it's shocking to find out energy is quantized?
2020-12-18 13:02:29 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
2020-12-18 13:02:59 +0100 <dminuoso> tomsmeding: Boring haskell is what drives this, right? https://lh3.googleusercontent.com/proxy/RlGRUeGa4FgaOzeuZPp6j1iNNbQugc8ZKi2o2RcLEyUpTyEFjbLDskWLbb…
2020-12-18 13:03:11 +0100 <merijn> __monty__: Not moreso than the original Bohr-ian notion of fixed orbits for electrons
2020-12-18 13:03:29 +0100glguy(x@freenode/staff/haskell.developer.glguy) (Read error: Connection reset by peer)
2020-12-18 13:03:39 +0100 <kuribas> merijn: spooky action at a distance is rather weird though
2020-12-18 13:03:48 +0100 <dminuoso> kuribas: No it's not.
2020-12-18 13:03:58 +0100 <kuribas> merijn: also the ability for information to go backwards in time.
2020-12-18 13:04:01 +0100 <merijn> Anyway, this is drifting off topic
2020-12-18 13:04:27 +0100 <dminuoso> The term "weird" tends to suggest there's something off about it, when in fact it's you who has a wrong and incorrect intuition/view of the world.
2020-12-18 13:04:32 +0100vs^(vs@ip98-184-89-2.mc.at.cox.net) ()
2020-12-18 13:06:32 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
2020-12-18 13:06:36 +0100 <lortabac> tomsmeding: DataKinds is simple until your boss suddenly introduces the new requirement that your items of type 'data Label (a :: Color)' have to be deserialized from a JSON file
2020-12-18 13:07:00 +0100 <tomsmeding> fair point
2020-12-18 13:07:01 +0100 <lortabac> then you have to bring down the whole singletons machinery :)
2020-12-18 13:07:21 +0100 <tomsmeding> for some definition of "have to"
2020-12-18 13:07:23 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-18 13:07:28 +0100glguy(x@freenode/staff/haskell.developer.glguy)
2020-12-18 13:08:00 +0100 <tomsmeding> a GADT modelling reflecting a single value on the type level is easily written, and needs no singetons baggage
2020-12-18 13:08:13 +0100 <tomsmeding> if your whole application does this >20 times, then sure, use singletons
2020-12-18 13:08:36 +0100 <tomsmeding> but yes you suddenly arrive in the territory of existential types and GADTs
2020-12-18 13:08:54 +0100 <lortabac> by "singletons" I meant the technique, not the library
2020-12-18 13:08:56 +0100 <tomsmeding> which is not really "boring haskell" anymore
2020-12-18 13:09:09 +0100dhil(~dhil@78.156.97.38)
2020-12-18 13:09:10 +0100 <tomsmeding> fair
2020-12-18 13:09:38 +0100 <tomsmeding> on a related note, do "singletons" and "reified types" refer to the same kind of thing?
2020-12-18 13:10:21 +0100 <lortabac> I don't know what "reified types" means
2020-12-18 13:10:49 +0100plutoniix(~q@184.82.207.11) (Quit: Leaving)
2020-12-18 13:10:52 +0100todda7(~torstein@ppp-2-84-17-53.home.otenet.gr)
2020-12-18 13:11:30 +0100 <tomsmeding> these are referred to as reified types: https://github.com/AccelerateHS/accelerate/blob/master/src/Data/Array/Accelerate/Type.hs#L109-L151
2020-12-18 13:12:16 +0100 <tomsmeding> perhaps ignore the VectorType, it's weird
2020-12-18 13:12:34 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0)
2020-12-18 13:14:25 +0100Entertainment(~entertain@104.246.132.210)
2020-12-18 13:14:32 +0100 <lortabac> yes, I'd say these are singletons
2020-12-18 13:14:43 +0100 <lortabac> it's a sort of hand-made TypeRep
2020-12-18 13:15:40 +0100 <tomsmeding> this particular library dates from slightly before the singletons library, so some overlapping terminology is to be expected, I suppose
2020-12-18 13:15:44 +0100 <merijn> tomsmeding: "reified" is just the opposite of abstraction
2020-12-18 13:15:57 +0100 <merijn> Well, of "abstracted" I suppose
2020-12-18 13:16:59 +0100 <tomsmeding> thing is I understand this trick but I don't know the details about singletons, so knowing it's, on a high level, the same trick is reassuring :p
2020-12-18 13:17:05 +0100 <merijn> The singletons library relies on singleton (i.e. globally unique) values to be able to reify types
2020-12-18 13:17:25 +0100 <merijn> (and values, I suppose?)
2020-12-18 13:17:44 +0100 <tomsmeding> not sure if "reifying values" makes sense, but sure
2020-12-18 13:18:01 +0100 <tomsmeding> but thanks :)
2020-12-18 13:18:11 +0100 <merijn> tomsmeding: Sure it does
2020-12-18 13:18:34 +0100 <lortabac> tomsmeding: the 'singletons' library is a generalization of this technique + a bunch of useful tools for working with these "reified" types
2020-12-18 13:18:41 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-12-18 13:18:48 +0100 <merijn> tomsmeding: Suppose you have "Proxy :: Proxy (5 :: Nat)" you often want to reify the type 5 as value 5
2020-12-18 13:18:56 +0100 <tomsmeding> lortabac: I see, makes sense
2020-12-18 13:19:12 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Read error: Connection reset by peer)
2020-12-18 13:19:23 +0100 <tomsmeding> merijn: then you're still reifying a type though, not a value
2020-12-18 13:20:05 +0100 <nshepperd2> you reify a type by turning it into a value. you reify a value by sending it to the printer :)
2020-12-18 13:21:12 +0100 <dminuoso> nshepperd2: Trick question. How does one reify ()?
2020-12-18 13:21:37 +0100 <merijn> tomsmeding: What? No
2020-12-18 13:21:43 +0100 <nshepperd2> by realizing that you're standing in it
2020-12-18 13:21:44 +0100 <merijn> tomsmeding: You're materialising a *value*
2020-12-18 13:22:09 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-12-18 13:22:10 +0100 <merijn> tomsmeding: When I make soup, I'm not making the ingredients
2020-12-18 13:22:23 +0100 <merijn> tomsmeding: When I reify, I reify the *result* not the inputs
2020-12-18 13:22:49 +0100 <merijn> If I create a value 5 out of "Proxy :: Proxy 5" I'm reifying a value
2020-12-18 13:23:04 +0100 <merijn> If I'm turning value 5 into the type 5, then I reify a type
2020-12-18 13:23:21 +0100 <nshepperd2> that doesn't sound right
2020-12-18 13:24:02 +0100 <merijn> nshepperd2: Well, I guess it's more like "if I turn unknown value 'x' into a type corresponding to 'x'"
2020-12-18 13:24:50 +0100 <nshepperd2> you yourself said "reify the type 5 as value 5" where the direct object was the type
2020-12-18 13:24:52 +0100phillip(~phillip@217.146.82.202)
2020-12-18 13:25:12 +0100 <merijn> "Proxy (n :: Nat) -> Integer" and "Integer -> SomeNat"
2020-12-18 13:25:19 +0100mastarija(~mastarija@93-136-24-74.adsl.net.t-com.hr)
2020-12-18 13:26:46 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net) (Remote host closed the connection)
2020-12-18 13:27:01 +0100 <merijn> nshepperd2: I stand by my earlier comparison "want to make tomato puree into soup" "want to reify the type 5 into value 5" :p
2020-12-18 13:27:43 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net)
2020-12-18 13:27:45 +0100 <nshepperd2> the verb 'make' has a lot of senses
2020-12-18 13:28:00 +0100 <merijn> So does reify :p
2020-12-18 13:28:04 +0100heatsink(~heatsink@2600:1700:bef1:5e10:59b6:d0f8:85fa:e454)
2020-12-18 13:28:30 +0100 <lortabac> "reify" is second only to "lift" :D
2020-12-18 13:28:31 +0100 <merijn> In fact, I'd argue they are very similar :p
2020-12-18 13:28:54 +0100 <nshepperd2> you would say 'reify the value 5 from the type 5' if it was as you describe
2020-12-18 13:29:08 +0100 <nshepperd2> not 'reify the type 5 into the value 5'
2020-12-18 13:29:26 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2020-12-18 13:29:33 +0100 <merijn> reify, verb: to convert into or regard as a concrete thing
2020-12-18 13:29:54 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 13:30:53 +0100 <lortabac> the documentation of Data.Reflection.reify says "Reify a value at the type level", the object is "value" but the result is a type
2020-12-18 13:31:26 +0100 <lortabac> in my experience this is the most common way of using this term
2020-12-18 13:32:21 +0100glguy(x@freenode/staff/haskell.developer.glguy) (Read error: Connection reset by peer)
2020-12-18 13:33:01 +0100 <lortabac> but merijn's definition seems more accurate as far as natural language is concerned
2020-12-18 13:33:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:59b6:d0f8:85fa:e454) (Ping timeout: 268 seconds)
2020-12-18 13:34:17 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)
2020-12-18 13:34:45 +0100 <nshepperd2> when you "make tomato puree into soup" you're not "making tomato puree"
2020-12-18 13:35:28 +0100glguy(x@freenode/staff/haskell.developer.glguy)
2020-12-18 13:36:39 +0100 <nshepperd2> but most other english words don't work that way
2020-12-18 13:36:39 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-12-18 13:39:50 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-18 13:40:21 +0100Tario(~Tario@201.192.165.173)
2020-12-18 13:41:18 +0100metamod(uid478611@gateway/web/irccloud.com/x-sbvlqgnmuennsspc)
2020-12-18 13:41:18 +0100 <nshepperd2> (that's a special syntactic form, like "making your kid go to school". but you can also say "making soup from tomato puree" which is less grammatically special)
2020-12-18 13:41:55 +0100maybefbi(~maybefbi@49.245.66.163)
2020-12-18 13:42:21 +0100ubert(~Thunderbi@p200300ecdf3514e7e6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-18 13:42:40 +0100ubert(~Thunderbi@p200300ecdf3514e7e6b318fffe838f33.dip0.t-ipconnect.de)
2020-12-18 13:43:06 +0100hiroaki(~hiroaki@ip4d16fa3b.dynamic.kabel-deutschland.de)
2020-12-18 13:43:12 +0100geekosaur(ac3a3b16@172.58.59.22)
2020-12-18 13:43:17 +0100 <maybefbi> I tried writing a nested while loop inside a state monad: https://pastebin.com/7ipnWCFu It is ugly. Any tips on making it pretty?
2020-12-18 13:46:25 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-12-18 13:46:47 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-12-18 13:46:51 +0100 <dminuoso> maybefbi: looks fine to me
2020-12-18 13:47:01 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it) (Quit: Leaving)
2020-12-18 13:47:12 +0100 <tomsmeding> merijn: so it comes down to terminology :)
2020-12-18 13:47:29 +0100 <tomsmeding> but I guess we've agreed that the concepts, if not the precise terminology, are quite related
2020-12-18 13:47:32 +0100 <tomsmeding> which was my question :)
2020-12-18 13:48:10 +0100 <maybefbi> dminuoso: instead of storing local variables in the state monad using a tuple, is there a better datastructure?
2020-12-18 13:48:12 +0100 <dminuoso> maybefbi: Oh you mean the code below?
2020-12-18 13:48:12 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-12-18 13:48:34 +0100 <maybefbi> dminuoso: i meant this: https://pastebin.com/7ipnWCFu
2020-12-18 13:48:50 +0100 <maybefbi> yeah the main function below
2020-12-18 13:49:04 +0100 <maybefbi> it has a nested while loop with i and j
2020-12-18 13:49:19 +0100 <maybefbi> it prints 1 to 100
2020-12-18 13:49:26 +0100 <dminuoso> maybefbi: Looks fine in principle. You could perhaps try floating it into separate bindings.
2020-12-18 13:49:53 +0100 <maybefbi> ok
2020-12-18 13:49:56 +0100 <tomsmeding> maybefbi: is it important that the loops start at the current state, even if j is reset to 1 after each inner loop?
2020-12-18 13:49:59 +0100 <dminuoso> There's some tweaks one could do with monad-loops and lens perhaps, but that might be overkill
2020-12-18 13:50:13 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 13:50:36 +0100 <tomsmeding> if they always start at (1,1) anyway, you can do something like: forM_ [(i, j) | i <- [1..m-1], j <- [1..m]] $ \(i,j) -> do put (i,j) ; ...
2020-12-18 13:50:51 +0100 <dminuoso> The main problem here is the usage of State in the first place.
2020-12-18 13:50:58 +0100 <dminuoso> But, I dont know the context of your problem
2020-12-18 13:51:16 +0100 <maybefbi> tomsmeding: i was aiming for an imperative style. just to get used to use monad transformer stacks
2020-12-18 13:51:25 +0100 <tomsmeding> (yes, if you don't need State for another reason, do away with that 'put' and don't use State at all :)
2020-12-18 13:51:26 +0100 <tomsmeding> )
2020-12-18 13:51:35 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-12-18 13:51:38 +0100 <maybefbi> tomsmeding: besides i can implement competitive programming problems in imperative style
2020-12-18 13:51:57 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-12-18 13:52:03 +0100 <tomsmeding> using haskell imperatively using State to solve CP problems is perhaps not the most efficient way :p
2020-12-18 13:52:07 +0100 <tomsmeding> rather use C++ directly
2020-12-18 13:52:08 +0100 <maybefbi> dminuoso: the context of the problem is just to create an imperative environment
2020-12-18 13:52:45 +0100 <dminuoso> maybefbi: So you want to drag a State throughout some large program?
2020-12-18 13:52:52 +0100dminuosohas had plenty of bad experiences with that approach
2020-12-18 13:53:44 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection)
2020-12-18 13:53:55 +0100 <tomsmeding> maybefbi: notice we're pushing back on the basic idea of using State like this; however, if your whole point is to play around with State, by all means go ahead :p
2020-12-18 13:54:08 +0100dddddd(~dddddd@unaffiliated/dddddd) (Ping timeout: 256 seconds)
2020-12-18 13:54:51 +0100 <maybefbi> yeah i know it sucks. i was thinking of netsting ReaderT (ExceptT (WriterT (StateT IO... until i can write everything like an imperative program. the state variable should be some data structure that simulates a stack i think so we can really have local variables.
2020-12-18 13:55:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 268 seconds)
2020-12-18 13:55:23 +0100 <merijn> You can just use only IO and write everything like an imperative program
2020-12-18 13:55:29 +0100 <merijn> Why bother with all the rest? :p
2020-12-18 13:55:41 +0100 <maybefbi> tomsmeding: i am just playing around for now. hope to learn something from it
2020-12-18 13:56:11 +0100 <maybefbi> merijn: better type signatures, Java like exception throwing type signatures
2020-12-18 13:56:11 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-18 13:56:20 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-18 13:56:51 +0100 <dminuoso> maybefbi: We have mutable references with IORef.
2020-12-18 13:57:13 +0100 <maybefbi> dminuoso: hmm yeah you are right
2020-12-18 13:57:14 +0100 <maybefbi> what transformer stack to production programmers use?
2020-12-18 13:57:22 +0100 <dminuoso> Whatever you need/want
2020-12-18 13:57:23 +0100 <maybefbi> s/to/do/
2020-12-18 13:57:27 +0100 <dminuoso> You don't need any.
2020-12-18 13:57:47 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-12-18 13:57:52 +0100 <maybefbi> surely there is some transformer stack which is like Spring framework for Java
2020-12-18 13:58:01 +0100 <maybefbi> which covers almost all cases
2020-12-18 13:58:03 +0100 <dminuoso> No, transformer stacks are about something else. :)
2020-12-18 13:58:18 +0100 <dminuoso> If you want a safe default, use IO.
2020-12-18 13:58:19 +0100 <boxscape> is there a function like delete in base that removes every element, not just the first one?
2020-12-18 13:58:30 +0100 <maybefbi> dminuoso: hmm ok
2020-12-18 13:58:42 +0100 <hpc> boxscape: in a list? use filter
2020-12-18 13:58:44 +0100 <dminuoso> boxscape: deleteBy
2020-12-18 13:58:58 +0100dddddd(~dddddd@unaffiliated/dddddd)
2020-12-18 13:58:59 +0100 <dminuoso> or filter, yeah
2020-12-18 13:59:04 +0100 <merijn> maybefbi: There is not universal stack, in fact, if you have a single stack used in your entire application, that's probably a code smell :p
2020-12-18 13:59:07 +0100 <boxscape> ah, thanks
2020-12-18 13:59:10 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 13:59:13 +0100 <hpc> if you want to be literal about "removes every element", const []
2020-12-18 13:59:13 +0100 <hpc> :D
2020-12-18 13:59:22 +0100 <dminuoso> merijn: Arguably. I know there's some strong proponents for application wide stacks.
2020-12-18 13:59:26 +0100 <maybefbi> merijn: i see
2020-12-18 13:59:31 +0100 <dminuoso> Cale likes them I think
2020-12-18 13:59:34 +0100 <merijn> dminuoso: These people are wrong :p
2020-12-18 13:59:40 +0100 <dminuoso> yeah well.
2020-12-18 13:59:44 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.29-10.dynamic.3bb.co.th)
2020-12-18 13:59:45 +0100 <merijn> dminuoso: No he doesn't?
2020-12-18 13:59:51 +0100 <maybefbi> merijn: dminuoso: George Wilson and Ben Kolera likes it in Australia
2020-12-18 13:59:58 +0100 <maybefbi> likes application wide stacks
2020-12-18 14:00:04 +0100 <boxscape> hpc wow that's so performant!
2020-12-18 14:00:14 +0100 <merijn> dminuoso: He likes class based DSLs, iirc
2020-12-18 14:00:23 +0100 <dminuoso> merijn: Mmm. Maybe I misremember. Anyway
2020-12-18 14:00:26 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
2020-12-18 14:00:29 +0100 <boxscape> hm that might not be an English word
2020-12-18 14:00:40 +0100 <merijn> dminuoso: Like my MonadSql thing, as in tagless stuff
2020-12-18 14:00:47 +0100darjeeling_(~darjeelin@122.245.217.210) (Ping timeout: 268 seconds)
2020-12-18 14:01:07 +0100 <merijn> dminuoso: He also likes "a single newtype, rather than (visible) transformer stacks", which I also agree with :p
2020-12-18 14:01:29 +0100 <dminuoso> maybefbi: The point of monad transformers is usually not that they "give you something you couldn't do otherwise", it's rather that sometimes they give you an expressive way to talk about a problem.
2020-12-18 14:02:45 +0100tzlil(~tzlil@unaffiliated/tzlil)
2020-12-18 14:02:52 +0100 <hpc> or depending on how you think about such things, they take one thing and put it everywhere in an action
2020-12-18 14:03:17 +0100 <maybefbi> merijn: single newtype App derives all possible monad typeclasses. use lenses and prisms to create Has* and As* instances for error types, configuration data structure. then use typeclass constraints on every method to compose it all into one big program
2020-12-18 14:03:17 +0100 <hpc> like MaybeT adding "this can exit early"
2020-12-18 14:03:32 +0100 <tzlil> hello, im trying to learn haskell and i wrote a function, but im getting syntax errors, http://0x0.st/iF52.txt can anyone tell me whats wrong with this code?
2020-12-18 14:03:49 +0100 <dminuoso> tzlil: drop the `= element list` at the beginning
2020-12-18 14:03:52 +0100 <merijn> tzlil: You have that in a .hs file?
2020-12-18 14:04:00 +0100 <dminuoso> tzlil: you may not have a definition before a guard.
2020-12-18 14:04:03 +0100 <tzlil> im getting `parse error on line 3`
2020-12-18 14:04:05 +0100 <tzlil> oh!
2020-12-18 14:04:08 +0100 <dminuoso> Its funny because I regularly do this mistake too! :)
2020-12-18 14:04:11 +0100 <merijn> tzlil: Because that final line is also not allowed :p
2020-12-18 14:04:11 +0100 <hpc> elem element list = ...
2020-12-18 14:04:16 +0100 <hpc> and no comma on the last line
2020-12-18 14:04:54 +0100 <boxscape> tzlil you also don't need the parentheses in `head(list)`, you can write `head list`
2020-12-18 14:05:02 +0100 <merijn> Also, probably avoid the parenthesis in "head(list)", that's bad style and the quicker you get used to no parentheses for functions, the better
2020-12-18 14:05:02 +0100shf(~sheaf@2a01:cb19:80cc:7e00:3d51:cce0:e1c5:49b6)
2020-12-18 14:05:04 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-18 14:05:16 +0100 <merijn> And even more better: Don't use null and/or head, but use pattern matching :p
2020-12-18 14:05:21 +0100 <boxscape> though I suspect this function will loop infinitely
2020-12-18 14:05:32 +0100 <tzlil> thanks everyone, merijn i will look into that
2020-12-18 14:06:16 +0100 <dminuoso> It's quite interesting how many mistakes one can write in so little code.
2020-12-18 14:06:25 +0100 <dminuoso> tzlil: You did well, it's a record! :)
2020-12-18 14:06:49 +0100 <tzlil> getting another error, `Parse error: module header, import declaration, or top-level declaration expected` on line 7 (aka the function call)
2020-12-18 14:06:53 +0100mastarija(~mastarija@93-136-24-74.adsl.net.t-com.hr) (Quit: Leaving)
2020-12-18 14:06:57 +0100borne(~fritjof@200116b864c24e00c0a3d285e8e687f4.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2020-12-18 14:07:03 +0100 <merijn> tzlil: You can't have code at the top level
2020-12-18 14:07:11 +0100 <merijn> tzlil: You can't just write expressions and code in files
2020-12-18 14:07:12 +0100 <tzlil> should i do `main =` ?
2020-12-18 14:07:31 +0100 <merijn> tzlil: Probably you wanna do something like "main = print (elem 5 [1,5])"
2020-12-18 14:07:47 +0100 <merijn> tzlil: Or simply load the file into ghci and use functions interactively
2020-12-18 14:08:05 +0100dminuosowishes JSON was abolished
2020-12-18 14:08:08 +0100 <tzlil> im using repl.it right now
2020-12-18 14:08:09 +0100 <dminuoso> Is there any JSON parser that has useful diagnostics?
2020-12-18 14:08:45 +0100 <merijn> No clue what the repl.it interface looks like
2020-12-18 14:08:45 +0100 <tomsmeding> the syntax highlighter in your editor?
2020-12-18 14:08:51 +0100 <tomsmeding> dminuoso: ^
2020-12-18 14:08:58 +0100 <merijn> tzlil: "main = print (elem 5 [1,5])" will work, though :)
2020-12-18 14:09:09 +0100 <boxscape> tzlil I believe repl.it is also based on ghci, which, if true, means you should be able to enter "elem5 [1,5]" on the right-hand side window
2020-12-18 14:09:13 +0100mounty(~mounty@210.1.196.133) (Ping timeout: 264 seconds)
2020-12-18 14:09:27 +0100 <boxscape> haven't used repl.it since they started requiring a login though
2020-12-18 14:09:43 +0100 <tzlil> they dont? im using it without a login right now
2020-12-18 14:09:47 +0100 <boxscape> hmm
2020-12-18 14:10:02 +0100 <boxscape> then I must just be misunderstanding how to use the site
2020-12-18 14:10:22 +0100 <tzlil> oh, i made an endless loop, i forgot to cut the list when i recurse
2020-12-18 14:10:33 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 14:10:37 +0100 <dminuoso> tomsmeding: heh
2020-12-18 14:10:43 +0100knupfer(~Thunderbi@200116b82c44cd0088bdee5ac2ca8198.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-12-18 14:10:47 +0100 <dminuoso> tomsmeding: I cant even get access to the raw JSON.
2020-12-18 14:10:56 +0100 <dminuoso> Well. I have to hack around servant now
2020-12-18 14:12:05 +0100flatmap(~flatmap@p200300dd371871004132f49785e35f6d.dip0.t-ipconnect.de) (Quit: Textual IRC Client: www.textualapp.com)
2020-12-18 14:13:04 +0100NikolayRocketman(5f1fdef4@95-31-222-244.broadband.corbina.ru)
2020-12-18 14:13:38 +0100kritzefitz(~kritzefit@fw-front.credativ.com)
2020-12-18 14:14:11 +0100 <tzlil> okay, my code works now, thanks everyone
2020-12-18 14:16:08 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-18 14:16:36 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 240 seconds)
2020-12-18 14:17:30 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 272 seconds)
2020-12-18 14:17:39 +0100NikolayRocketman(5f1fdef4@95-31-222-244.broadband.corbina.ru) ()
2020-12-18 14:18:14 +0100darjeeling_(~darjeelin@122.245.217.210)
2020-12-18 14:18:21 +0100 <fuzzypixelz> I have a question
2020-12-18 14:18:37 +0100hiroaki(~hiroaki@ip4d16fa3b.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2020-12-18 14:18:39 +0100 <fuzzypixelz> > twice f x = f . f $ x
2020-12-18 14:18:42 +0100 <lambdabot> <hint>:1:11: error: <hint>:1:11: error: parse error on input ‘=’
2020-12-18 14:18:56 +0100 <fuzzypixelz> wait what
2020-12-18 14:19:06 +0100 <geekosaur> lambdabot is not ghci
2020-12-18 14:19:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 264 seconds)
2020-12-18 14:19:23 +0100 <geekosaur> it evaluates expressions, not definitions
2020-12-18 14:20:24 +0100 <geekosaur> % twice f x = f . f $ x
2020-12-18 14:20:24 +0100 <yahb> geekosaur:
2020-12-18 14:20:29 +0100 <geekosaur> yahb is ghci
2020-12-18 14:20:44 +0100 <fuzzypixelz> % :t twice
2020-12-18 14:20:45 +0100 <yahb> fuzzypixelz: (b -> b) -> b -> b
2020-12-18 14:20:46 +0100 <geekosaur> (with limitations)
2020-12-18 14:21:08 +0100 <fuzzypixelz> here, b can be any type, including aother functions right?
2020-12-18 14:21:22 +0100 <dminuoso> Yes.
2020-12-18 14:21:33 +0100 <tomsmeding> % :t twice (.)
2020-12-18 14:21:33 +0100 <yahb> tomsmeding: ; <interactive>:1:7: error:; * Occurs check: cannot construct the infinite type: c ~ a -> c; Expected type: ((a -> b) -> a -> c) -> (a -> b) -> a -> c; Actual type: (b -> c) -> (a -> b) -> a -> c; * In the first argument of `twice', namely `(.)'; In the expression: twice (.)
2020-12-18 14:21:40 +0100 <tomsmeding> oh right
2020-12-18 14:21:55 +0100 <fuzzypixelz> what if we typed,
2020-12-18 14:22:05 +0100 <fuzzypixelz> % twice' f = f . f
2020-12-18 14:22:06 +0100 <yahb> fuzzypixelz:
2020-12-18 14:22:15 +0100 <fuzzypixelz> % :t twice'
2020-12-18 14:22:15 +0100 <yahb> fuzzypixelz: (b -> b) -> b -> b
2020-12-18 14:22:22 +0100 <fuzzypixelz> oh yeah same thing
2020-12-18 14:22:35 +0100 <fuzzypixelz> this confused me a lot
2020-12-18 14:22:36 +0100 <tomsmeding> % :t twice (\f -> succ . f)
2020-12-18 14:22:37 +0100 <yahb> tomsmeding: Enum c => (a -> c) -> a -> c
2020-12-18 14:22:50 +0100 <tomsmeding> % :t twice (\f -> succ . f) succ
2020-12-18 14:22:50 +0100 <yahb> tomsmeding: Enum c => c -> c
2020-12-18 14:22:56 +0100 <tomsmeding> % twice (\f -> succ . f) succ 3
2020-12-18 14:22:57 +0100 <yahb> tomsmeding: 6
2020-12-18 14:23:26 +0100 <tomsmeding> that's (succ . succ . succ) 3
2020-12-18 14:23:40 +0100 <boxscape> % :t f f
2020-12-18 14:23:40 +0100 <yahb> boxscape: ; <interactive>:1:1: error: Variable not in scope: f :: t0 -> t; <interactive>:1:3: error: Variable not in scope: f
2020-12-18 14:23:45 +0100 <boxscape> % :t twice twice
2020-12-18 14:23:45 +0100 <yahb> boxscape: (b -> b) -> b -> b
2020-12-18 14:24:30 +0100 <tomsmeding> % twice twice succ 3
2020-12-18 14:24:30 +0100 <yahb> tomsmeding: 7
2020-12-18 14:24:48 +0100jchia__(~jchia@58.32.37.146) (Ping timeout: 258 seconds)
2020-12-18 14:24:55 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com)
2020-12-18 14:28:42 +0100 <bitmapper> i now have a copy of hugs haskell 1.3... that implements AMP
2020-12-18 14:28:48 +0100son0p(~son0p@181.136.122.143)
2020-12-18 14:29:01 +0100 <gentauro> 14:08 * dminuoso wishes JSON was abolished
2020-12-18 14:29:13 +0100 <gentauro> dminuoso: I'm guessing you are a fan of IBMS JSONx righ?
2020-12-18 14:29:13 +0100 <gentauro> :P
2020-12-18 14:29:23 +0100 <geekosaur> someone's maintaining hugs?
2020-12-18 14:29:26 +0100 <bitmapper> nope!
2020-12-18 14:29:31 +0100 <bitmapper> i'm just messing with old hugs
2020-12-18 14:29:32 +0100 <gentauro> https://www.ibm.com/support/knowledgecenter/SS9H2Y_10.0/com.ibm.dp.doc/json_jsonx.html
2020-12-18 14:29:53 +0100 <gentauro> mye eyes, they are bleeding !!! https://www.ibm.com/support/knowledgecenter/SS9H2Y_10.0/com.ibm.dp.doc/json_jsonxconversionexample…
2020-12-18 14:29:56 +0100 <gentauro> :|
2020-12-18 14:30:27 +0100phillip(~phillip@217.146.82.202) (Remote host closed the connection)
2020-12-18 14:30:31 +0100 <tomsmeding> beautiful dynamic loading of a completely non-dynamic webpage
2020-12-18 14:30:39 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de)
2020-12-18 14:30:56 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 14:31:08 +0100Jaykul1(~Jaykul@185.103.96.147)
2020-12-18 14:31:33 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it)
2020-12-18 14:34:12 +0100jchia__(~jchia@jungle.jchia.net)
2020-12-18 14:35:25 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Remote host closed the connection)
2020-12-18 14:35:31 +0100Vulfe_(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 14:35:43 +0100son0p(~son0p@181.136.122.143) (Ping timeout: 246 seconds)
2020-12-18 14:37:44 +0100son0p(~son0p@181.136.122.143)
2020-12-18 14:39:38 +0100esp32_prog(yoann@gateway/vpn/protonvpn/esp32prog/x-46565127) (Ping timeout: 268 seconds)
2020-12-18 14:40:15 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-18 14:40:16 +0100kam1(~kam1@24.231.108.143)
2020-12-18 14:41:10 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.29-10.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 14:42:54 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.29.10)
2020-12-18 14:46:07 +0100kritzefitz(~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
2020-12-18 14:46:41 +0100machinedgod(~machinedg@24.105.81.50)
2020-12-18 14:48:04 +0100drbean(~drbean@TC210-63-209-72.static.apol.com.tw) (Ping timeout: 260 seconds)
2020-12-18 14:49:25 +0100knupfer(~Thunderbi@87.123.206.174)
2020-12-18 14:49:25 +0100carlomagno(~cararell@148.87.23.9) (Remote host closed the connection)
2020-12-18 14:51:58 +0100christo(~chris@81.96.113.213)
2020-12-18 14:52:14 +0100kam1(~kam1@24.231.108.143) (Quit: Quit)
2020-12-18 14:52:28 +0100kam1(~kam1@24.231.108.143)
2020-12-18 14:58:12 +0100cybai(~cybai@2400:4050:3122:900:f184:f643:35b2:1419) (Quit: Leaving...)
2020-12-18 15:01:20 +0100kam1(~kam1@24.231.108.143) (Quit: Quit)
2020-12-18 15:01:33 +0100kam1(~kam1@24.231.108.143)
2020-12-18 15:01:56 +0100urodna(~urodna@unaffiliated/urodna)
2020-12-18 15:06:53 +0100 <boxscape> Is there a downside to marking functions as INLINEABLE? Longer compile times, maybe?
2020-12-18 15:06:54 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-12-18 15:07:41 +0100 <geekosaur> yes, longer compile times
2020-12-18 15:07:53 +0100 <boxscape> I see
2020-12-18 15:07:57 +0100 <geekosaur> bigger .hi files which slows things down a bit
2020-12-18 15:08:01 +0100 <boxscape> okay
2020-12-18 15:09:57 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Leaving)
2020-12-18 15:10:17 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-12-18 15:12:23 +0100jamm_(~jamm@unaffiliated/jamm)
2020-12-18 15:12:44 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-12-18 15:14:32 +0100texasmynsted(~texasmyns@184.75.212.155)
2020-12-18 15:15:02 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection)
2020-12-18 15:15:17 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-18 15:15:38 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2020-12-18 15:17:58 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: Textual IRC Client: www.textualapp.com)
2020-12-18 15:18:08 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2020-12-18 15:21:36 +0100mounty(~mounty@210.1.196.133)
2020-12-18 15:26:18 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-18 15:26:40 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 15:27:13 +0100gxt(~gxt@gateway/tor-sasl/gxt)
2020-12-18 15:29:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:59b6:d0f8:85fa:e454)
2020-12-18 15:31:01 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
2020-12-18 15:31:17 +0100da39a3ee5e6b4b0d(~da39a3ee5@171.5.29.10) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 15:31:56 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net) (Remote host closed the connection)
2020-12-18 15:31:56 +0100Boomerang_(~Boomerang@xd520f68c.cust.hiper.dk)
2020-12-18 15:34:07 +0100heatsink(~heatsink@2600:1700:bef1:5e10:59b6:d0f8:85fa:e454) (Ping timeout: 260 seconds)
2020-12-18 15:34:27 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.29-10.dynamic.3bb.co.th)
2020-12-18 15:34:43 +0100Boomerang(~Boomerang@2a05:f6c7:2179:0:d811:4796:d80c:9d85) (Ping timeout: 260 seconds)
2020-12-18 15:35:51 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-12-18 15:36:49 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2020-12-18 15:38:12 +0100quintasa1(~quintasan@89-171-24-90.static.ip.netia.com.pl)
2020-12-18 15:39:16 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.29-10.dynamic.3bb.co.th) (Ping timeout: 240 seconds)
2020-12-18 15:41:15 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.29-10.dynamic.3bb.co.th)
2020-12-18 15:41:36 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
2020-12-18 15:44:06 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-12-18 15:45:52 +0100jollygood2(~bc8165ab@217.29.117.252)
2020-12-18 15:45:54 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net)
2020-12-18 15:47:02 +0100geekosaur(ac3a3b16@172.58.59.22) (Remote host closed the connection)
2020-12-18 15:48:20 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-12-18 15:49:05 +0100 <jollygood2> hi. I am using stack, all of my projects use very old snapshot and ghc version. I want to upgrade, but keep my old code compilable without upgrading. my question is, what am I supposed to do with my library code, on local computer, that is used by most of my projects? if I update it, it won't work with old ghc. I could just copy everything to a new directory, change name to mylibcode2, but it seems like there should be a better way
2020-12-18 15:49:16 +0100kupi(uid212005@gateway/web/irccloud.com/x-wadzwexudygkrdgs)
2020-12-18 15:50:19 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:cc57:4a3f:14e6:d0d5)
2020-12-18 15:50:33 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 268 seconds)
2020-12-18 15:51:49 +0100quintasa1(~quintasan@89-171-24-90.static.ip.netia.com.pl) (Quit: WeeChat 2.6)
2020-12-18 15:52:13 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-18 15:52:18 +0100 <merijn> jollygood2: Specify a specific git commit to depend on (pretty sure stack can handle that?)
2020-12-18 15:52:21 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:cc57:4a3f:14e6:d0d5) (Client Quit)
2020-12-18 15:52:47 +0100christo(~chris@81.96.113.213)
2020-12-18 15:54:41 +0100wonko7(~wonko7@69.75.150.77.rev.sfr.net)
2020-12-18 15:54:47 +0100 <jollygood2> is it possible to do it locally? I'm not currently using git
2020-12-18 15:56:00 +0100zephyz(~zephyz@51.198.99.196)
2020-12-18 15:56:51 +0100 <merijn> Eh, use #ifdefs so that the same code works on both versions
2020-12-18 15:57:06 +0100christo(~chris@81.96.113.213) (Ping timeout: 256 seconds)
2020-12-18 15:57:22 +0100 <jollygood2> can't I have multiple versions of same library locally? I guess I could just include version in the name
2020-12-18 15:57:29 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 15:57:30 +0100 <merijn> Also, for your sake, I hope "not using git" means "because I'm using a more pleasant version control" >.>
2020-12-18 15:58:14 +0100sgibber2018(~arch-gibb@208.85.237.137) (Ping timeout: 256 seconds)
2020-12-18 15:59:06 +0100Lowl3v3l(~Lowl3v3l@2001:638:1558:99f8::5) (Ping timeout: 258 seconds)
2020-12-18 16:00:03 +0100Lowl3v3l(~Lowl3v3l@dslb-002-203-233-025.002.203.pools.vodafone-ip.de)
2020-12-18 16:01:21 +0100toorevitimirp(~tooreviti@117.182.182.252) (Remote host closed the connection)
2020-12-18 16:01:54 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2020-12-18 16:03:32 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net) (Remote host closed the connection)
2020-12-18 16:03:55 +0100phasespace(~sar@80-89-47-117.inet.signal.no) (Ping timeout: 246 seconds)
2020-12-18 16:04:02 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-12-18 16:04:47 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:9c60:5f28:257e:410b) (Quit: Leaving)
2020-12-18 16:05:11 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-18 16:06:31 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:3120:8946:e899:8a57)
2020-12-18 16:06:47 +0100avdb(~avdb@213.177.155.250)
2020-12-18 16:06:52 +0100hf69(~haskeller@ip72-205-40-121.dc.dc.cox.net)
2020-12-18 16:07:03 +0100hf69(~haskeller@ip72-205-40-121.dc.dc.cox.net) (Client Quit)
2020-12-18 16:09:25 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:cc57:4a3f:14e6:d0d5)
2020-12-18 16:10:01 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2020-12-18 16:10:41 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0)
2020-12-18 16:10:50 +0100sgibber2018(~arch-gibb@208.85.237.137)
2020-12-18 16:12:40 +0100carlomagno(~cararell@148.87.23.7)
2020-12-18 16:12:47 +0100hf69(~haskeller@ip72-205-40-121.dc.dc.cox.net)
2020-12-18 16:14:24 +0100hf69(~haskeller@ip72-205-40-121.dc.dc.cox.net) (Client Quit)
2020-12-18 16:15:07 +0100hf69(~haskeller@ip72-205-40-121.dc.dc.cox.net)
2020-12-18 16:17:08 +0100 <texasmynsted> okay, you got me. What is a more pleasant version control than git?
2020-12-18 16:17:38 +0100 <merijn> texasmynsted: Mercurial, Fossil, darcs, pijul...
2020-12-18 16:17:53 +0100 <merijn> texasmynsted: tbh, it's shorter to ask "what's worse than git?" because git is just freaking terrible
2020-12-18 16:18:28 +0100 <merijn> (RCS, CVS, and subversion are probably worse, but in their defense they predate git by a few decades...)
2020-12-18 16:18:32 +0100 <texasmynsted> Hm. I like git
2020-12-18 16:18:34 +0100tabemann_(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-18 16:18:38 +0100 <ephemient> git has a pretty good data model, it's just the ui that's all sorts of inconsistent
2020-12-18 16:19:04 +0100 <ephemient> so I've got a good amount of tools that just just git's low-level plumbing to do what I want it to
2020-12-18 16:19:08 +0100 <merijn> ephemient: It's data model is basically the same as the other non-patch based VCS (i.e. Mercurial and Fossil), so that's pretty unimportant
2020-12-18 16:19:21 +0100 <merijn> texasmynsted: How many other version control systems have you used, though?
2020-12-18 16:19:38 +0100 <merijn> The only reason git is popular is GitHub + the mythical aura of "the linux kernel uses it!"
2020-12-18 16:19:47 +0100 <texasmynsted> The first one I used was RCS.
2020-12-18 16:19:53 +0100 <merijn> texasmynsted: oof
2020-12-18 16:20:21 +0100 <ephemient> sure, but mercurial doesn't expose its internals to me unless I write a proper extension while git is happy to spill its guts out
2020-12-18 16:20:22 +0100 <texasmynsted> I have used many.
2020-12-18 16:20:32 +0100 <ephemient> (I suppose that could be taken as both good and bad)
2020-12-18 16:20:35 +0100 <maerwald> merijn: nah, git performance is very good and it's one of the most feature complete ones
2020-12-18 16:20:42 +0100 <merijn> ephemient: I've never needed that, tbh
2020-12-18 16:20:59 +0100 <texasmynsted> i have not used mecurial, but it sounds good
2020-12-18 16:21:27 +0100 <merijn> maerwald: Git's performance is irrelevant for 90% of codebases, since 90% of codebases aren't linux kernel sized
2020-12-18 16:21:37 +0100 <texasmynsted> I have an old version of pijul. It looks promising
2020-12-18 16:21:40 +0100hf69(~haskeller@ip72-205-40-121.dc.dc.cox.net) (Quit: WeeChat 3.0)
2020-12-18 16:21:59 +0100hf69(~haskeller@ip72-205-40-121.dc.dc.cox.net)
2020-12-18 16:22:18 +0100 <ephemient> I did use darcs as my primary vcs, many years ago. I recall it wasn't hard to start running into performance walls with it…
2020-12-18 16:22:23 +0100 <merijn> maerwald: And I'd rather see more work go into the Rust core for Mercurial to speed that up then git :p
2020-12-18 16:22:48 +0100 <merijn> ephemient: I haven't used darcs much, but in practice Mercurial's performance is fine for most projects
2020-12-18 16:23:49 +0100 <ephemient> yeah, it's usually within a constant factor of what git could do
2020-12-18 16:24:04 +0100hf69fengh
2020-12-18 16:24:36 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 240 seconds)
2020-12-18 16:24:42 +0100 <kuribas> merijn: git is not "basically the same model". In git I can amend my working patches to get a clean history, but still go back to the history if I want.
2020-12-18 16:24:59 +0100 <merijn> Mercurial's "slowness" is mostly an issue for use in tooling, which is something they're aware off and working on solving, but in practice the "slowness" has never annoyed me more than git's UI
2020-12-18 16:25:07 +0100 <kuribas> merijn: in mercurial amending would be irreversable.
2020-12-18 16:25:15 +0100 <merijn> kuribas: Not anymore
2020-12-18 16:25:30 +0100 <merijn> kuribas: That hasn't been the case for close to a decade with Changeset Evolution
2020-12-18 16:25:52 +0100 <merijn> Which is clearly a superior way to handle history mutation then the clusterfuck that git has >.>
2020-12-18 16:26:01 +0100 <merijn> Anyway, that's fairly off topic
2020-12-18 16:26:51 +0100fengh(~haskeller@ip72-205-40-121.dc.dc.cox.net) (Client Quit)
2020-12-18 16:26:55 +0100 <kuribas> I agree with ephemient, the UI for git sucks, but the model is pretty ok.
2020-12-18 16:27:09 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-18 16:27:11 +0100hf69(~haskeller@ip72-205-40-121.dc.dc.cox.net)
2020-12-18 16:27:31 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 16:29:35 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-18 16:29:52 +0100jonrh(sid5185@gateway/web/irccloud.com/x-znmjmvidrdlxlhvb) (Ping timeout: 272 seconds)
2020-12-18 16:30:07 +0100jonrh(sid5185@gateway/web/irccloud.com/x-hntqrgohvgwoczvy)
2020-12-18 16:30:37 +0100hf69(~haskeller@ip72-205-40-121.dc.dc.cox.net) (Client Quit)
2020-12-18 16:30:55 +0100hf69(~haskeller@ip72-205-40-121.dc.dc.cox.net)
2020-12-18 16:30:57 +0100heatsink(~heatsink@2600:1700:bef1:5e10:59b6:d0f8:85fa:e454)
2020-12-18 16:31:53 +0100phasespace(~sar@89-162-33-21.fiber.signal.no)
2020-12-18 16:34:05 +0100hf69(~haskeller@ip72-205-40-121.dc.dc.cox.net) (Client Quit)
2020-12-18 16:35:07 +0100Kronic(~Kronic___@84.203.96.46)
2020-12-18 16:35:42 +0100heatsink(~heatsink@2600:1700:bef1:5e10:59b6:d0f8:85fa:e454) (Ping timeout: 260 seconds)
2020-12-18 16:36:25 +0100fengh(~haskeller@ip72-205-40-121.dc.dc.cox.net)
2020-12-18 16:36:27 +0100texasmynsted(~texasmyns@184.75.212.155) (Remote host closed the connection)
2020-12-18 16:36:33 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-12-18 16:36:43 +0100fengh(~haskeller@ip72-205-40-121.dc.dc.cox.net) (Client Quit)
2020-12-18 16:37:05 +0100fengh(~haskeller@ip72-205-40-121.dc.dc.cox.net)
2020-12-18 16:39:36 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2020-12-18 16:39:54 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-18 16:40:45 +0100dbmikus(~dbmikus@c-174-49-172-14.hsd1.pa.comcast.net)
2020-12-18 16:41:35 +0100maybefbi(~maybefbi@49.245.66.163) ()
2020-12-18 16:43:42 +0100 <Kronic> does anyone know what this user meant here? https://github.com/haskell/haskell-language-server/issues/590#issuecomment-725935928
2020-12-18 16:44:05 +0100 <Kronic> I read the context and I do not understand what the workaround to solve this issue is
2020-12-18 16:44:24 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-18 16:44:46 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 16:45:56 +0100 <Kronic> ah I guess pragma for lambdacase at the top of the file
2020-12-18 16:46:05 +0100 <boxscape> yeah
2020-12-18 16:46:29 +0100 <Kronic> Doesn't solve my issue unfortunately, this apply hints bug is really very annoying
2020-12-18 16:48:20 +0100 <merijn> Kronic: What's the problem?
2020-12-18 16:49:10 +0100 <Kronic> Using neovim or vscode with the haskell extension will provide hints to improve your code from hlint, I'm new so of course I want to take advantage of these to get better but automatic application of hints is broken
2020-12-18 16:49:25 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2020-12-18 16:49:35 +0100 <merijn> "improve"
2020-12-18 16:49:35 +0100 <Kronic> Upgrading to 8.10.2 did not fix it, nor did the suggested work around so I'm just going to install the package and use it via the command line for now
2020-12-18 16:49:57 +0100fendor(~fendor@178.115.129.197.wireless.dyn.drei.com)
2020-12-18 16:50:27 +0100 <merijn> Kronic: Not really a solution for your problem, but note that hlint's suggestions are far from universally accepted :)
2020-12-18 16:51:14 +0100 <Kronic> I'd imagine that's true but from what I can see they're usually better than my code
2020-12-18 16:51:41 +0100 <merijn> Sure, just approach with healthy skepticism :)
2020-12-18 16:51:52 +0100sgibber2018(~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9)
2020-12-18 16:53:51 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 16:55:18 +0100asheshambasta(~user@ptr-e1lysaxt4bg7tmaahx1.18120a2.ip6.access.telenet.be) (Ping timeout: 268 seconds)
2020-12-18 16:56:36 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2020-12-18 16:58:47 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-18 16:58:49 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-12-18 16:59:10 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 16:59:26 +0100bennofs|ALLES(~quassel@2a01:4f8:c17:5579::1)
2020-12-18 17:00:19 +0100zephyz(~zephyz@51.198.99.196) (Quit: zephyz)
2020-12-18 17:00:27 +0100Rudd0(~Rudd0@185.189.115.108)
2020-12-18 17:00:47 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net)
2020-12-18 17:02:07 +0100kam1(~kam1@24.231.108.143)
2020-12-18 17:02:29 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net) (Remote host closed the connection)
2020-12-18 17:04:07 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net)
2020-12-18 17:05:06 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net) (Remote host closed the connection)
2020-12-18 17:13:00 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-18 17:13:09 +0100skiold(~skiold@gateway/tor-sasl/skiold) (Quit: WeeChat 2.3)
2020-12-18 17:17:55 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-12-18 17:19:00 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.29-10.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 17:19:14 +0100kuribas(~user@ptr-25vy0i76oze9u46tlnk.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2020-12-18 17:21:28 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-12-18 17:22:34 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2020-12-18 17:23:05 +0100 <fresheyeball> so I want to add a nice expando-collapsing thing to my chrome extension, for showing Haskell data structures
2020-12-18 17:23:16 +0100 <fresheyeball> And started looking into prior art
2020-12-18 17:23:32 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2020-12-18 17:23:43 +0100 <fresheyeball> what in the heck is going on in pretty printing land in Haskell? There a tons of them, and nothing looks particularly good.
2020-12-18 17:23:57 +0100 <merijn> Define "pretty printing"
2020-12-18 17:24:20 +0100revprez_anzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
2020-12-18 17:24:23 +0100 <merijn> Or did you mean, like, the 100 prettyprinter packages?
2020-12-18 17:24:29 +0100 <fresheyeball> layout of code in a manner to enhance readablity and understanding
2020-12-18 17:24:32 +0100 <fresheyeball> yes, there are tons
2020-12-18 17:24:42 +0100 <fresheyeball> I did a quick experiment with prettyprinter
2020-12-18 17:24:54 +0100 <fresheyeball> and it's totally unacceptable for developer tooling
2020-12-18 17:25:03 +0100 <fresheyeball> it prints `Nothing` as "" for example
2020-12-18 17:25:24 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-18 17:25:29 +0100 <fresheyeball> I also don't see a clear way to derive the `Pretty` type class, which is a real problem if this is for developer tooling
2020-12-18 17:26:02 +0100 <fresheyeball> I took a look at pretty-simple, but it relys on Show, which is sketchy
2020-12-18 17:26:13 +0100 <merijn> fresheyeball: Deriving "pretty printing" is kind of a weird requirement
2020-12-18 17:26:29 +0100 <dolio> It makes very little sense to derive.
2020-12-18 17:26:40 +0100 <fresheyeball> if I am developing an application
2020-12-18 17:26:51 +0100 <merijn> fresheyeball: Pretty printed data is always context dependent, thus custom
2020-12-18 17:26:52 +0100 <fresheyeball> and just want to see the type in a readable way
2020-12-18 17:27:15 +0100 <merijn> fresheyeball: oh, you don't want pretty printing then, lemme look up the library you want
2020-12-18 17:27:19 +0100 <fresheyeball> I don't want to hand write instances for every single type in my system before it's useful for debugging
2020-12-18 17:27:24 +0100 <nshepperd> you want Show but with nice layout?
2020-12-18 17:27:32 +0100 <merijn> fresheyeball: You want https://hackage.haskell.org/package/pretty-show
2020-12-18 17:27:41 +0100 <merijn> fresheyeball: That's "Show, but with prettier formatting"
2020-12-18 17:27:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-18 17:27:55 +0100 <merijn> fresheyeball: The pretty printing libraries are for formatting user output
2020-12-18 17:28:34 +0100 <sm[m]> or pretty-simple, which works with things which don't have readable show output
2020-12-18 17:28:35 +0100 <merijn> fresheyeball: Lemme also plug: https://hackage.haskell.org/package/tree-diff
2020-12-18 17:28:58 +0100 <merijn> fresheyeball: Which lets you print diffs of arbitrary values
2020-12-18 17:29:07 +0100 <dolio> Have you used groom? Is pretty-show better?
2020-12-18 17:29:30 +0100 <merijn> I haven't used groom, pretty-show was the first thing I found and I've been happy enough with it
2020-12-18 17:29:50 +0100 <fresheyeball> pretty-show looks like it might be it
2020-12-18 17:29:52 +0100 <dolio> Oh, pretty-show has a little more going on.
2020-12-18 17:30:02 +0100 <fresheyeball> but now I am confused about what prettyprinter is even for
2020-12-18 17:30:06 +0100 <dolio> groom just tweaks strings.
2020-12-18 17:30:27 +0100 <merijn> fresheyeball: prettyprinter is for "I wanna output complicated/structured text to, say, a terminal and get sensible linewrapping"
2020-12-18 17:30:33 +0100ggVGc(~ggVGc@unaffiliated/walt) (Ping timeout: 272 seconds)
2020-12-18 17:30:45 +0100 <sm[m]> I was happy with it too but not being able to format anything containing a Day was a hassle
2020-12-18 17:30:49 +0100 <merijn> fresheyeball: Stuff like the commandline help that optparse generates
2020-12-18 17:31:00 +0100 <sm[m]> that's where pretty-simple is better
2020-12-18 17:31:11 +0100jophish(~jophish@2400:8901::f03c:91ff:fe39:7a9) (Ping timeout: 272 seconds)
2020-12-18 17:31:22 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-12-18 17:31:33 +0100 <merijn> fresheyeball: Or stuff like "printing out indented and aligned text", etc.
2020-12-18 17:31:53 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-12-18 17:31:54 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-18 17:32:01 +0100 <fresheyeball> hmm I would have called that "formatting"
2020-12-18 17:32:31 +0100 <fresheyeball> for some reason, pretty printing, in my mind is an alternative to ugly printing, which we would just call the `print` functino
2020-12-18 17:32:58 +0100 <sm[m]> fresheyeball: it's a bit confusing.. historical terminology
2020-12-18 17:33:07 +0100jophish(~jophish@li1766-207.members.linode.com)
2020-12-18 17:33:11 +0100 <fresheyeball> well that explains why I was so confused
2020-12-18 17:33:20 +0100 <merijn> fresheyeball: All those 100 prettyprinter libraries are dealing with that kinda formatting :p
2020-12-18 17:33:45 +0100 <fresheyeball> the only issue I see with pretty-show
2020-12-18 17:33:48 +0100 <fresheyeball> is the Doc type
2020-12-18 17:33:59 +0100 <fresheyeball> appears to be opaque, and I would want to use it to generate HTML
2020-12-18 17:34:42 +0100 <fresheyeball> oh it actually has it's own html renderer
2020-12-18 17:34:45 +0100avdb(~avdb@213.177.155.250) (Read error: No route to host)
2020-12-18 17:34:56 +0100xcmw(~textual@2603-6011-2200-f103-8011-a882-4e38-cf45.res6.spectrum.com)
2020-12-18 17:36:22 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 260 seconds)
2020-12-18 17:36:41 +0100avdb(~avdb@213.177.155.250)
2020-12-18 17:37:45 +0100 <fresheyeball> I guess the question with this lib is to use the `PrettyVal` type class with Generic deriving
2020-12-18 17:37:51 +0100son0p(~son0p@181.136.122.143) (Ping timeout: 268 seconds)
2020-12-18 17:37:54 +0100 <fresheyeball> or to use the reify function which only needs `Show`
2020-12-18 17:39:04 +0100ggVGc(~ggVGc@a.lowtech.earth)
2020-12-18 17:39:47 +0100matryoshka(~matryoshk@184.75.223.227)
2020-12-18 17:40:41 +0100heatsink(~heatsink@2600:1700:bef1:5e10:59b6:d0f8:85fa:e454)
2020-12-18 17:41:53 +0100 <fresheyeball> the output is identical, woah
2020-12-18 17:42:05 +0100 <boxscape> kind of interesting that there isn't a single library on hackage AFAICT that defines (<<) either as flip (>>) or as (<*)
2020-12-18 17:42:22 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net)
2020-12-18 17:42:28 +0100 <merijn> :t (<<)
2020-12-18 17:42:30 +0100 <lambdabot> error:
2020-12-18 17:42:30 +0100 <lambdabot> • Variable not in scope: <<
2020-12-18 17:42:30 +0100 <lambdabot> • Perhaps you meant one of these:
2020-12-18 17:42:45 +0100 <merijn> heh, could've sworn that was just in Prelude
2020-12-18 17:43:00 +0100 <sm[m]> me too
2020-12-18 17:43:29 +0100 <dolio> It's been talked about, but I think there was some controversy about which of those two things it should be.
2020-12-18 17:43:45 +0100 <dolio> Even though `flip (>>)` matches (=<<) better.
2020-12-18 17:44:13 +0100 <boxscape> yeah personally I'd expect flip (>>)
2020-12-18 17:44:23 +0100 <dolio> Which is probably the only reason I'd want it.
2020-12-18 17:44:43 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Quit: ZNC 1.8.1 - https://znc.in)
2020-12-18 17:45:00 +0100dmiles(~dmiles@c-98-232-203-165.hsd1.wa.comcast.net) (Ping timeout: 256 seconds)
2020-12-18 17:45:04 +0100 <merijn> :t getDual . (mappend `on` Dual) -- >.>
2020-12-18 17:45:06 +0100 <lambdabot> error:
2020-12-18 17:45:06 +0100 <lambdabot> • Couldn't match type ‘a -> Dual a’ with ‘Dual c’
2020-12-18 17:45:06 +0100 <lambdabot> Expected type: a -> Dual c
2020-12-18 17:45:18 +0100 <merijn> Oh, no, that only works for, like, 'IO ()'
2020-12-18 17:46:15 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net)
2020-12-18 17:46:30 +0100 <nshepperd> i think the fact that (<<) could be read as either of those is a good reason for it not to exist
2020-12-18 17:46:55 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-18 17:46:56 +0100 <boxscape> tbh I've never actually missed it
2020-12-18 17:47:06 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-12-18 17:47:25 +0100 <dolio> I don't use (>>) much anymore, really.
2020-12-18 17:47:56 +0100LKoen(~LKoen@29.248.88.92.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.”)
2020-12-18 17:48:49 +0100vilpan(~0@212.117.1.172) ()
2020-12-18 17:48:49 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
2020-12-18 17:49:37 +0100 <boxscape> dolio because you use do, *>, or some other reason?
2020-12-18 17:49:40 +0100 <dolio> I guess you could write confusing code if you wanted to. All the applicative operators are designed to work together, and the monad ones work together, but monad is lower precedence than applicative.
2020-12-18 17:50:03 +0100 <dolio> Yeah, I'd probably use *> now that it exists.
2020-12-18 17:50:09 +0100 <boxscape> I see
2020-12-18 17:50:28 +0100 <dolio> Also, like I said above. (>>) is too low precedence to mix with applicative operators.
2020-12-18 17:50:37 +0100 <dolio> At least reliably.
2020-12-18 17:52:28 +0100 <Kronic> what do you use instead? Just do notation ?
2020-12-18 17:52:42 +0100 <boxscape> Kronic *>
2020-12-18 17:53:08 +0100 <Kronic> ah fair enough
2020-12-18 17:53:33 +0100 <dolio> If I'm using monad operators directly, it often wouldn't matter whether I use *> or >>, because if it did, I'd probably switch to do to be clearer.
2020-12-18 17:55:13 +0100 <dolio> I guess the only time it actually matters is if you write: expr1 >>= expr2 >> expr3
2020-12-18 17:55:22 +0100 <dolio> Which is kind of unusual.
2020-12-18 17:55:57 +0100geekosaur(42d52137@66.213.33.55)
2020-12-18 17:56:18 +0100 <lambda> is there a nice package for fixed-length lists/vectors? I'm implementing a custom class on n*Int tuples right now, but that of course needs a separate instance per tuple arity. Something that just takes a type parameter for the size would be great
2020-12-18 17:56:34 +0100 <dolio> vector?
2020-12-18 17:56:43 +0100kam1(~kam1@24.231.108.143) (Remote host closed the connection)
2020-12-18 17:56:45 +0100 <dolio> Oh, type parameter.
2020-12-18 17:57:01 +0100 <merijn> vector-sized
2020-12-18 17:57:02 +0100 <dminuoso> lambda: vector-sized
2020-12-18 17:57:26 +0100 <dolio> Does it need to act like a list? Inductively defined?
2020-12-18 17:58:03 +0100kam1(~kam1@24.231.108.143)
2020-12-18 17:59:24 +0100 <dolio> I guess if it's replacing tuples, then probably not.
2020-12-18 17:59:37 +0100 <lambda> dolio: maybe not necessarily, there's only a few operations I need to be able to do on them
2020-12-18 17:59:57 +0100 <Taneb> lambda: depending on what you're after, vector-sized or linear
2020-12-18 18:00:31 +0100 <lambda> thanks, I'll check both of those out :)
2020-12-18 18:00:51 +0100 <Taneb> (in linear, especially Linear.V)
2020-12-18 18:00:53 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-12-18 18:01:26 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2020-12-18 18:01:54 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 268 seconds)
2020-12-18 18:01:58 +0100borne(~fritjof@200116b864c24e00c0a3d285e8e687f4.dip.versatel-1u1.de)
2020-12-18 18:02:13 +0100Lord_of_Life_Lord_of_Life
2020-12-18 18:04:27 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net)
2020-12-18 18:07:03 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-12-18 18:07:12 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-18 18:07:36 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 18:08:02 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 272 seconds)
2020-12-18 18:09:02 +0100xff0x(~fox@2001:1a81:5299:4500:9c52:d530:bd81:84ac) (Ping timeout: 260 seconds)
2020-12-18 18:09:59 +0100xff0x(~fox@2001:1a81:5299:4500:d633:3a50:dda4:7bce)
2020-12-18 18:12:33 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-12-18 18:13:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:59b6:d0f8:85fa:e454) (Ping timeout: 264 seconds)
2020-12-18 18:14:29 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-18 18:16:47 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 18:25:41 +0100jespada(~jespada@90.254.245.49) (Quit: Leaving)
2020-12-18 18:27:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-12-18 18:28:49 +0100Deide(~Deide@217.155.19.23)
2020-12-18 18:29:52 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it) (Quit: Leaving)
2020-12-18 18:33:05 +0100jophish(~jophish@li1766-207.members.linode.com) (Ping timeout: 240 seconds)
2020-12-18 18:33:40 +0100kam1(~kam1@24.231.108.143)
2020-12-18 18:33:57 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-12-18 18:35:09 +0100ggVGc(~ggVGc@a.lowtech.earth) (Ping timeout: 272 seconds)
2020-12-18 18:38:17 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2020-12-18 18:38:40 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-18 18:38:45 +0100christo(~chris@81.96.113.213)
2020-12-18 18:39:15 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net) (Quit: WeeChat 2.9)
2020-12-18 18:40:36 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-18 18:42:36 +0100carthia(~carthia@gateway/tor-sasl/carthia)
2020-12-18 18:42:48 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 256 seconds)
2020-12-18 18:45:29 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-18 18:45:50 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 18:47:01 +0100Boomerang_(~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 246 seconds)
2020-12-18 18:47:09 +0100 <shapr> byorgey: I once saw a web based interactive diagrams editor, does that still exist?
2020-12-18 18:47:28 +0100matryoshka(~matryoshk@184.75.223.227) (Ping timeout: 265 seconds)
2020-12-18 18:49:48 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net) (Remote host closed the connection)
2020-12-18 18:49:53 +0100mimi_vx(~mimi@2a01:490:16:1026:ad8e:aaec:b83:b6c3)
2020-12-18 18:50:34 +0100jophish(~jophish@2400:8901::f03c:91ff:fe39:7a9)
2020-12-18 18:50:35 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-12-18 18:52:49 +0100mimi_vx(~mimi@2a01:490:16:1026:ad8e:aaec:b83:b6c3) (Client Quit)
2020-12-18 18:52:58 +0100mimi_vx(~mimi@2a01:490:16:1026:ad8e:aaec:b83:b6c3)
2020-12-18 18:55:33 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2020-12-18 18:56:05 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net)
2020-12-18 18:56:38 +0100LKoen(~LKoen@29.248.88.92.rev.sfr.net) (Remote host closed the connection)
2020-12-18 18:58:27 +0100ggVGc(~ggVGc@a.lowtech.earth)
2020-12-18 19:02:04 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2020-12-18 19:02:35 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2020-12-18 19:03:03 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-12-18 19:03:34 +0100 <nf> trying to run lambdabot on NixOS, i'm getting mueval-core: NotAllowed "These modules are not interpreted:\nL\n"
2020-12-18 19:03:43 +0100 <nf> (ping int-e)
2020-12-18 19:04:08 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 260 seconds)
2020-12-18 19:04:19 +0100Tario(~Tario@200.119.187.93)
2020-12-18 19:06:37 +0100ggVGc(~ggVGc@a.lowtech.earth) (Ping timeout: 246 seconds)
2020-12-18 19:06:39 +0100Tario(~Tario@200.119.187.93) (Read error: Connection reset by peer)
2020-12-18 19:06:52 +0100Tario(~Tario@186.176.130.227)
2020-12-18 19:07:22 +0100jophish(~jophish@2400:8901::f03c:91ff:fe39:7a9) (Ping timeout: 260 seconds)
2020-12-18 19:09:53 +0100jophish(~jophish@li1766-207.members.linode.com)
2020-12-18 19:11:47 +0100zv(~zv@unaffiliated/zv)
2020-12-18 19:12:45 +0100kritzefitz_(~kritzefit@fw-front.credativ.com)
2020-12-18 19:12:49 +0100ubert(~Thunderbi@p200300ecdf3514e7e6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-18 19:13:13 +0100ubert(~Thunderbi@p200300ecdf3514e7e6b318fffe838f33.dip0.t-ipconnect.de)
2020-12-18 19:13:48 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 19:14:04 +0100ggVGc(~ggVGc@a.lowtech.earth)
2020-12-18 19:14:23 +0100dyeplexer(~lol@unaffiliated/terpin) (Remote host closed the connection)
2020-12-18 19:14:38 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2020-12-18 19:15:11 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-18 19:15:24 +0100nineonine(~nineonine@50.216.62.2)
2020-12-18 19:17:00 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit)
2020-12-18 19:17:23 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 19:18:42 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Quit: Curry, you fools!)
2020-12-18 19:20:04 +0100Feuermagier(~Feuermagi@213.178.26.41)
2020-12-18 19:21:07 +0100Tario(~Tario@186.176.130.227) (Ping timeout: 256 seconds)
2020-12-18 19:21:43 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit)
2020-12-18 19:22:02 +0100cosimone_(~cosimone@5.170.241.36)
2020-12-18 19:22:05 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 19:22:08 +0100Tario(~Tario@200.119.187.93)
2020-12-18 19:24:12 +0100Tario(~Tario@200.119.187.93) (Read error: Connection reset by peer)
2020-12-18 19:24:33 +0100Tario(~Tario@200.119.187.93)
2020-12-18 19:25:20 +0100Tario(~Tario@200.119.187.93) (Read error: Connection reset by peer)
2020-12-18 19:25:45 +0100Tario(~Tario@201.192.165.173)
2020-12-18 19:25:46 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Ping timeout: 268 seconds)
2020-12-18 19:25:46 +0100cosimone_cosimone
2020-12-18 19:26:22 +0100 <shapr> nf: oh wow, I had no idea lambdabot had a nixos package!
2020-12-18 19:27:07 +0100 <nf> it even has a module!
2020-12-18 19:27:45 +0100 <shapr> so I can import it into my next Haskell program?
2020-12-18 19:31:38 +0100solonarv(~solonarv@astrasbourg-157-1-27-135.w90-40.abo.wanadoo.fr) (Ping timeout: 272 seconds)
2020-12-18 19:32:54 +0100solonarv(~solonarv@adijon-656-1-25-229.w90-13.abo.wanadoo.fr)
2020-12-18 19:35:01 +0100knupfer(~Thunderbi@87.123.206.174) (Ping timeout: 268 seconds)
2020-12-18 19:37:19 +0100drincruz(~adriancru@ool-44c748be.dyn.optonline.net)
2020-12-18 19:38:40 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-18 19:39:56 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
2020-12-18 19:43:08 +0100shf(~sheaf@2a01:cb19:80cc:7e00:3d51:cce0:e1c5:49b6) (Read error: Connection reset by peer)
2020-12-18 19:44:30 +0100son0p(~son0p@181.136.122.143)
2020-12-18 19:49:43 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
2020-12-18 19:51:31 +0100Boomerang(~Boomerang@xd520f68c.cust.hiper.dk)
2020-12-18 19:51:36 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it)
2020-12-18 19:51:50 +0100danso(~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
2020-12-18 19:53:32 +0100thc202(~thc202@unaffiliated/thc202) (Quit: thc202)
2020-12-18 19:54:02 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
2020-12-18 19:56:00 +0100juri_(~juri@178.63.35.222) (Ping timeout: 258 seconds)
2020-12-18 19:57:10 +0100geekosaur(42d52137@66.213.33.55) (Ping timeout: 245 seconds)
2020-12-18 19:58:35 +0100kiltzman(~k1ltzman@195.189.99.96)
2020-12-18 20:00:48 +0100juuandyy(~juuandyy@90.166.144.65)
2020-12-18 20:03:33 +0100berberman(~berberman@unaffiliated/berberman)
2020-12-18 20:04:32 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
2020-12-18 20:05:00 +0100howdoi(uid224@gateway/web/irccloud.com/x-flzdypyjqdvdjthv)
2020-12-18 20:07:59 +0100juri_(~juri@178.63.35.222)
2020-12-18 20:08:15 +0100kritzefitz_(~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
2020-12-18 20:08:31 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com) (Quit: WeeChat 2.9)
2020-12-18 20:09:16 +0100esph(~weechat@unaffiliated/esph) (Ping timeout: 240 seconds)
2020-12-18 20:11:49 +0100melosense_(~melosense@4e69b241.skybroadband.com) (Ping timeout: 260 seconds)
2020-12-18 20:12:04 +0100Boomerang_(~Boomerang@2a05:f6c7:2179:0:d811:4796:d80c:9d85)
2020-12-18 20:14:00 +0100xcmw(~textual@2603-6011-2200-f103-8011-a882-4e38-cf45.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 20:14:14 +0100Jaykul1(~Jaykul@185.103.96.147) (Remote host closed the connection)
2020-12-18 20:14:29 +0100Boomerang(~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 268 seconds)
2020-12-18 20:14:54 +0100tri0dE(~melosense@51.194.80.91)
2020-12-18 20:15:06 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 268 seconds)
2020-12-18 20:16:17 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net) (Remote host closed the connection)
2020-12-18 20:16:28 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
2020-12-18 20:18:48 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 268 seconds)
2020-12-18 20:19:19 +0100esph(~weechat@unaffiliated/esph)
2020-12-18 20:19:24 +0100prinned(~prinned@103.206.114.104)
2020-12-18 20:19:30 +0100 <prinned> WHAT THE FUCK IS A MONAD
2020-12-18 20:19:55 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-18 20:20:29 +0100 <Logio> just a monoid in the category of endofunctors
2020-12-18 20:20:51 +0100 <prinned> oh thank you, it all makes sense now
2020-12-18 20:20:55 +0100 <merijn> prinned: A useful abstract interface
2020-12-18 20:21:16 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 268 seconds)
2020-12-18 20:21:26 +0100 <merijn> With absolutely no point in asking what it is without first learning the basics of types and type classes
2020-12-18 20:22:12 +0100 <merijn> See also: "what the fuck is a group?", "what the fuck is a lattice?", "what the fuck is a ring?", and countless other abstract defintitions
2020-12-18 20:22:16 +0100 <Logio> or alternatively, algebra, group theory and categories
2020-12-18 20:23:23 +0100 <[exa]> prinned: overloaded semicolon&assignment interface for programs
2020-12-18 20:24:34 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-12-18 20:24:36 +0100 <merijn> [exa]: tbh, I think that in general that description is more harmful than helpful
2020-12-18 20:25:15 +0100 <monochrom> Yes but not in this case.
2020-12-18 20:25:26 +0100 <monochrom> Nothing is harmful in this case.
2020-12-18 20:27:22 +0100prinned(~prinned@103.206.114.104) (Quit: WeeChat 2.9)
2020-12-18 20:27:40 +0100 <shapr> prinned: It's a 'magic semicolon' where you can insert a piece of code between calls
2020-12-18 20:27:57 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-18 20:28:19 +0100geekosaur(42d52137@66.213.33.55)
2020-12-18 20:28:31 +0100 <shapr> for example, instead of a bunch of nested if-then-else calls, you could use the Maybe monad to bail out as soon as you get a failing result.
2020-12-18 20:29:05 +0100 <shapr> yeah, what [exa] said
2020-12-18 20:29:42 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat)
2020-12-18 20:31:12 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2020-12-18 20:31:25 +0100 <monochrom> I think if you improve "assignment" to "static single assignment", then Moggi would approve, because that's what he did.
2020-12-18 20:32:06 +0100 <monochrom> Our "do { x <- xxx; y <- yyy; zzz }" becomes his "let x = xxx; y = yyy in zzz".
2020-12-18 20:34:50 +0100NikolaiToryzin(~NikolaiTo@195.140.213.38)
2020-12-18 20:35:47 +0100mrchampion(~mrchampio@38.18.109.23) (Remote host closed the connection)
2020-12-18 20:37:48 +0100sfvm(~sfvm@37.228.215.77)
2020-12-18 20:39:29 +0100knupfer(~Thunderbi@200116b82c44cd0074f48ffffe7fe867.dip.versatel-1u1.de)
2020-12-18 20:39:30 +0100knupfer(~Thunderbi@200116b82c44cd0074f48ffffe7fe867.dip.versatel-1u1.de) (Client Quit)
2020-12-18 20:39:43 +0100knupfer(~Thunderbi@87.123.206.174)
2020-12-18 20:40:26 +0100 <emmanuel_erc> Has anyone here experienced any issues with groundhog in GHC8.6?
2020-12-18 20:40:38 +0100sgibber2018(~arch-gibb@208.85.237.137)
2020-12-18 20:41:34 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 256 seconds)
2020-12-18 20:44:14 +0100mrchampion(~mrchampio@38.18.109.23)
2020-12-18 20:44:35 +0100cosimone(~cosimone@5.170.241.36) (Quit: cosimone)
2020-12-18 20:47:04 +0100pfurla_(~pfurla@129.15.195.173.client.static.strong-in52.as13926.net)
2020-12-18 20:48:24 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 268 seconds)
2020-12-18 20:49:32 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com)
2020-12-18 20:49:48 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com) (Client Quit)
2020-12-18 20:50:12 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com)
2020-12-18 20:51:18 +0100 <exarkun> What is the correct answer for SSL/TLS in Haskell?
2020-12-18 20:52:05 +0100 <glguy> exarkun: I like HsOpenSSL for my own projects
2020-12-18 20:52:58 +0100 <glguy> which is how I'm talking to you now
2020-12-18 20:53:53 +0100 <exarkun> Should I worry that https://hackage.haskell.org/package/HsOpenSSL-0.11.5.1/docs/OpenSSL.html says "Features that aren't (yet) supported: SSL network connection"? If you're using it right now that seems to suggest a very subtle reading of this claim required.
2020-12-18 20:54:04 +0100knupfer(~Thunderbi@87.123.206.174) (Read error: Connection reset by peer)
2020-12-18 20:55:06 +0100knupfer(~Thunderbi@87.123.206.174)
2020-12-18 20:55:11 +0100 <ephemient> if it does what you need, good; if it doesn't, dig in and add some bindings
2020-12-18 20:55:13 +0100 <glguy> exarkun: It's covered enough
2020-12-18 20:55:27 +0100 <glguy> I've had to add a couple bindings for more esoteric things I wanted
2020-12-18 20:55:46 +0100sgibber2018(~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9)
2020-12-18 20:55:51 +0100 <glguy> but none of the alternatives comes close to coverage
2020-12-18 20:55:56 +0100 <exarkun> Okay, cool
2020-12-18 20:55:57 +0100 <glguy> to its*
2020-12-18 20:56:50 +0100 <shapr> I wish we had an index for questions like this "What's the best library for X purpose?"
2020-12-18 20:57:05 +0100 <merijn> Best is a highly subjective definition
2020-12-18 20:57:08 +0100 <glguy> shapr: I think in general it would be hard to get agreement
2020-12-18 20:57:20 +0100 <merijn> A lot of people claim "beam" is the best Haskell database library
2020-12-18 20:57:21 +0100 <shapr> perhaps a feature matrix specific to each purpose?
2020-12-18 20:57:40 +0100 <merijn> *I* say it's an atrocious mess of unreadable types I wouldn't inflict on my worst enemy >.>
2020-12-18 20:58:18 +0100 <exarkun> And then ... is there some trick that people use to deal with the fact that `Socket` and `SSL` are not the same type?
2020-12-18 20:58:26 +0100 <monochrom> Don't worry, your worse enemies would inflict it on themselves. :)
2020-12-18 20:58:30 +0100 <merijn> shapr: That implies amount of features is more important than robustness, performance, pleasantness of abstraction, ease of extension, etc.
2020-12-18 20:58:37 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 246 seconds)
2020-12-18 20:58:46 +0100 <exarkun> If I'm using a library that works on `Socket` then I'm probably just out of luck when it comes to TLS?
2020-12-18 20:58:57 +0100 <merijn> shapr: Working out how Hackage's voting/vetting mechanism should work is probably best :p
2020-12-18 20:59:15 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-12-18 20:59:44 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2020-12-18 20:59:46 +0100 <merijn> exarkun: You're not, but you're gonna have to get your hands dirty and possibly give up on Windows support :p
2020-12-18 20:59:54 +0100 <merijn> Oh, wait, no
2020-12-18 21:00:20 +0100 <merijn> exarkun: Or did you mean the library you use wants to directly talk to the socket?
2020-12-18 21:00:33 +0100 <glguy> If the library wants a literal 'Socket' you're SOL
2020-12-18 21:00:39 +0100 <exarkun> Okay let me dig out the actual types that are involved here
2020-12-18 21:00:43 +0100 <glguy> In that case you can do something externally with socat
2020-12-18 21:01:39 +0100 <exarkun> oh, I assumed it worked on `Socket` itself because I saw `Socket` in one place but I was looking in the wrong place, I guess it has a layer of indirection between the Socket and all the rest of the app code
2020-12-18 21:01:54 +0100 <exarkun> So I guess it's actually fine
2020-12-18 21:07:08 +0100avdb(~avdb@213.177.155.250) (Ping timeout: 256 seconds)
2020-12-18 21:07:22 +0100 <exarkun> the indirection is Data.Streaming.Network.AppData but there is no public AppData constructor?
2020-12-18 21:09:05 +0100pfurla_(~pfurla@129.15.195.173.client.static.strong-in52.as13926.net) (Ping timeout: 240 seconds)
2020-12-18 21:09:31 +0100 <merijn> It usually helps to clue people in which package a module is from ;)
2020-12-18 21:10:25 +0100 <exarkun> sorry, streaming-commons
2020-12-18 21:10:45 +0100 <exarkun> https://hackage.haskell.org/package/streaming-commons-0.2.2.1/docs/Data-Streaming-Network.html#t:A…
2020-12-18 21:11:03 +0100jneira(501e6453@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.83)
2020-12-18 21:11:46 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2020-12-18 21:12:52 +0100 <exarkun> Okay I accidentally stumbled across https://hackage.haskell.org/package/network-conduit-tls-1.3.2/docs/Data-Conduit-Network-TLS.html
2020-12-18 21:13:05 +0100 <exarkun> But that just means network-conduit-tls uses the internal AppData constructor right?
2020-12-18 21:13:43 +0100 <exarkun> which I guess is possible because snoyman is maintainer on both of them
2020-12-18 21:13:58 +0100Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Remote host closed the connection)
2020-12-18 21:14:13 +0100 <exarkun> but surely I'm not supposed to reach into Data.Streaming.Network.Internet to get that constructor
2020-12-18 21:14:39 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
2020-12-18 21:15:31 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
2020-12-18 21:18:33 +0100xcmw(~textual@2603-6011-2200-f103-5cc1-e708-14f1-cedf.res6.spectrum.com)
2020-12-18 21:19:00 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-18 21:20:01 +0100drincruz(~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 264 seconds)
2020-12-18 21:20:09 +0100avdb(~avdb@213.177.155.250)
2020-12-18 21:22:41 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-xugolrqxaepfynua)
2020-12-18 21:22:55 +0100hidedagger(~nate@unaffiliated/hidedagger)
2020-12-18 21:23:20 +0100NikolaiToryzin(~NikolaiTo@195.140.213.38) (Remote host closed the connection)
2020-12-18 21:27:03 +0100aev_software(~Admin@pool-108-5-152-94.nwrknj.fios.verizon.net)
2020-12-18 21:27:40 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 246 seconds)
2020-12-18 21:27:45 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
2020-12-18 21:29:04 +0100Tario(~Tario@200.119.187.80)
2020-12-18 21:29:55 +0100knupfer(~Thunderbi@87.123.206.174) (Quit: knupfer)
2020-12-18 21:30:08 +0100knupfer(~Thunderbi@87.123.206.174)
2020-12-18 21:32:13 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
2020-12-18 21:37:21 +0100texasmynsted(~texasmyns@184.75.212.155)
2020-12-18 21:38:21 +0100texasmynsted(~texasmyns@184.75.212.155) (Remote host closed the connection)
2020-12-18 21:38:56 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2020-12-18 21:38:56 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2020-12-18 21:38:56 +0100mouseghost(~draco@wikipedia/desperek)
2020-12-18 21:41:52 +0100avdb(~avdb@213.177.155.250) (Quit: avdb)
2020-12-18 21:44:10 +0100robotadam1(~robotadam@178.239.168.171)
2020-12-18 21:45:41 +0100jollygood2(~bc8165ab@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2020-12-18 21:47:29 +0100Psychiatrist(~Psych@233-43-196-88.dyn.estpak.ee)
2020-12-18 21:47:50 +0100Psychiatrist(~Psych@233-43-196-88.dyn.estpak.ee) (Remote host closed the connection)
2020-12-18 21:49:22 +0100son0p(~son0p@181.136.122.143) (Remote host closed the connection)
2020-12-18 21:49:26 +0100MOSCOS(~MOSCOS@122.54.107.175) (Remote host closed the connection)
2020-12-18 21:49:49 +0100MOSCOS(~MOSCOS@122.54.107.175)
2020-12-18 21:51:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-12-18 21:54:22 +0100ubert(~Thunderbi@p200300ecdf3514e7e6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-18 21:54:42 +0100ubert(~Thunderbi@p200300ecdf3514e7e6b318fffe838f33.dip0.t-ipconnect.de)
2020-12-18 22:00:55 +0100unpppa(591088f8@89.16.136.248)
2020-12-18 22:02:05 +0100justsomeguy(~justsomeg@216.186.218.241)
2020-12-18 22:02:05 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2020-12-18 22:02:05 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-12-18 22:02:19 +0100texasmynsted(~texasmyns@184.75.212.155)
2020-12-18 22:02:20 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-12-18 22:02:24 +0100borne(~fritjof@200116b864c24e00c0a3d285e8e687f4.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2020-12-18 22:03:57 +0100 <dminuoso> exarkun: If you have security relevant software, you should ffi into openssl.
2020-12-18 22:04:56 +0100 <dminuoso> Oh shoot, I was scrolled up again
2020-12-18 22:06:01 +0100dontworry(4e967043@host-78-150-112-67.as13285.net)
2020-12-18 22:06:06 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2020-12-18 22:06:55 +0100 <dontworry> can i talk here
2020-12-18 22:06:59 +0100 <dminuoso> Yes.
2020-12-18 22:07:23 +0100 <aev_software> Yes
2020-12-18 22:07:27 +0100 <dontworry> kl half the other ircs didnt let me talk
2020-12-18 22:09:01 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 258 seconds)
2020-12-18 22:10:03 +0100 <lambda> what's the prettiest way to get `[[a]] -> [((Int, Int), a)]`, i.e. flattening a 2d list while keeping the indices?
2020-12-18 22:10:05 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds)
2020-12-18 22:10:39 +0100Franciman(~francesco@host-82-49-79-73.retail.telecomitalia.it) (Quit: Leaving)
2020-12-18 22:10:40 +0100 <glguy> lambda: I liked parse input = [(x,y) | (y,line) <- zip [0..] input, (x,'#') <- zip [0..] line]
2020-12-18 22:11:04 +0100 <lambda> glguy: hm, yeah, that works well
2020-12-18 22:11:10 +0100 <lambda> I keep forgetting about list comprehensions
2020-12-18 22:11:25 +0100dontworry(4e967043@host-78-150-112-67.as13285.net) (Remote host closed the connection)
2020-12-18 22:12:11 +0100 <glguy> > itoListOf (folded Control.Lens.<.> folded) ["one","two"]
2020-12-18 22:12:13 +0100 <lambdabot> [((0,0),'o'),((0,1),'n'),((0,2),'e'),((1,0),'t'),((1,1),'w'),((1,2),'o')]
2020-12-18 22:12:42 +0100 <lambda> I think the first one might be more readable ;)
2020-12-18 22:12:56 +0100 <dminuoso> Well, if you drop the qualifier, it's just
2020-12-18 22:13:06 +0100 <dminuoso> itoListOf (folded <.> folded)
2020-12-18 22:13:16 +0100 <dminuoso> If you're versed in lens, it's quite readable :)
2020-12-18 22:13:26 +0100 <lambda> I'm not, so that might be why
2020-12-18 22:15:58 +0100zv(~zv@unaffiliated/zv) (Ping timeout: 268 seconds)
2020-12-18 22:16:04 +0100kupi(uid212005@gateway/web/irccloud.com/x-wadzwexudygkrdgs) (Quit: Connection closed for inactivity)
2020-12-18 22:19:10 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-12-18 22:19:52 +0100aev_software(~Admin@pool-108-5-152-94.nwrknj.fios.verizon.net) (Read error: Connection reset by peer)
2020-12-18 22:21:23 +0100Entertainment(~entertain@104.246.132.210) ()
2020-12-18 22:26:36 +0100dbmikus(~dbmikus@c-174-49-172-14.hsd1.pa.comcast.net) (Ping timeout: 240 seconds)
2020-12-18 22:26:44 +0100Vulfe_(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Remote host closed the connection)
2020-12-18 22:29:32 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Read error: Connection reset by peer)
2020-12-18 22:29:50 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-18 22:30:28 +0100zv(~zv@unaffiliated/zv)
2020-12-18 22:31:15 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 22:31:48 +0100ubert(~Thunderbi@p200300ecdf3514e7e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-12-18 22:34:04 +0100ubert(~Thunderbi@p200300ecdf3514e7e6b318fffe838f33.dip0.t-ipconnect.de)
2020-12-18 22:35:58 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-12-18 22:36:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 264 seconds)
2020-12-18 22:38:03 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
2020-12-18 22:39:54 +0100 <glguy> lambda: is that for adventofcode?
2020-12-18 22:40:11 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-12-18 22:40:50 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-18 22:41:12 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-18 22:41:52 +0100mimi_vx(~mimi@2a01:490:16:1026:ad8e:aaec:b83:b6c3) (Ping timeout: 268 seconds)
2020-12-18 22:42:00 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 22:42:47 +0100pavonia(~user@unaffiliated/siracusa)
2020-12-18 22:43:05 +0100 <ph88> Does anyone know how i can get the value after using this lens getter ? https://hackage.haskell.org/package/vinyl-0.13.0/docs/Data-Vinyl-Lens.html#v:rgetC
2020-12-18 22:46:11 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 268 seconds)
2020-12-18 22:46:42 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)
2020-12-18 22:47:26 +0100 <dsal> ph88: didn't you ask that a few hours ago? Did none of the suggestions work?
2020-12-18 22:47:53 +0100 <ph88> dsal, yes i did .. don't remmember suggestions, maybe i missed them. let me see
2020-12-18 22:48:21 +0100geekosaur(42d52137@66.213.33.55) (Remote host closed the connection)
2020-12-18 22:48:58 +0100 <ph88> <dminuoso> ph88: Presumably with `view` or (^.) from say lens/microlens?
2020-12-18 22:49:11 +0100 <ph88> i tried this suggestion with view, i get a type error. Let me pastebin that
2020-12-18 22:50:41 +0100 <ph88> dsal, https://bpa.st/6IGQ
2020-12-18 22:52:35 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-18 22:53:50 +0100xcmw(~textual@2603-6011-2200-f103-5cc1-e708-14f1-cedf.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 22:54:25 +0100 <dsal> You told it it was something else.
2020-12-18 22:55:16 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-12-18 22:55:30 +0100 <dsal> rgetC appears to not be a lens. "For Vinyl users who are not using the lens package, we provide a getter."
2020-12-18 22:56:39 +0100cosimone_(~cosimone@5.171.24.229)
2020-12-18 22:57:06 +0100 <ph88> dsal, sorry i understood it as being a lens but not needing lens package
2020-12-18 22:57:09 +0100 <dsal> rlensC is a lens, but you're doing a bunch of stuff at once and it's conflicting. I don't know this library, but I think breaking it down into more parts would be easier. It doesn't look like that is going to give you an r.
2020-12-18 22:57:54 +0100 <dsal> ` rgetC = getConst . rlensC Const`
2020-12-18 22:58:08 +0100 <dsal> It's a convenient way to unlens a lens for this purpose.
2020-12-18 22:58:26 +0100 <ph88> dsal, when i remove "view" it compiles and i can show/print it ... but it's not the raw value ... it's the value with the name of the field pointing towards it
2020-12-18 22:58:45 +0100carlomagno(~cararell@148.87.23.7) (Ping timeout: 240 seconds)
2020-12-18 22:59:07 +0100 <ph88> prints as: PLN :-> "myValue"
2020-12-18 22:59:24 +0100 <ph88> i just need "myValue" really
2020-12-18 22:59:44 +0100 <ph88> maybe if i put it inside just a Text it will just become a Text ?
2020-12-18 22:59:56 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Ping timeout: 240 seconds)
2020-12-18 22:59:56 +0100cosimone_cosimone
2020-12-18 23:00:56 +0100carlomagno(~cararell@148.87.23.7)
2020-12-18 23:01:04 +0100 <ph88> hmm nope .. that thing is of type ElField '("PLN", Text) i would like to get out just the Text part ...
2020-12-18 23:01:05 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 240 seconds)
2020-12-18 23:01:09 +0100Boomerang_(~Boomerang@2a05:f6c7:2179:0:d811:4796:d80c:9d85) (Ping timeout: 272 seconds)
2020-12-18 23:01:33 +0100 <ph88> https://hackage.haskell.org/package/vinyl-0.13.0/docs/Data-Vinyl-Functor.html#t:ElField
2020-12-18 23:01:59 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 23:02:55 +0100 <ph88> data ElField (field :: (Symbol, Type)) where Field :: KnownSymbol s => !t -> ElField '(s,t) i don't understand this type, how to get out t
2020-12-18 23:03:06 +0100carlomagno(~cararell@148.87.23.7) (Remote host closed the connection)
2020-12-18 23:05:29 +0100 <dsal> It looks like the same way you get x out of x + 1
2020-12-18 23:05:33 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-18 23:06:13 +0100 <ph88> o_O
2020-12-18 23:06:25 +0100 <ph88> - 1 ??
2020-12-18 23:06:32 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 268 seconds)
2020-12-18 23:07:22 +0100mimi_vx(~mimi@2a01:490:16:1026:ad8e:aaec:b83:b6c3)
2020-12-18 23:09:47 +0100 <monochrom> That one looks like very intimidating-on-surface but at its heart is just another GADT.
2020-12-18 23:10:29 +0100 <ph88> i'm intimidated alright
2020-12-18 23:14:14 +0100dbmikus(~dbmikus@c-174-49-172-14.hsd1.pa.comcast.net)
2020-12-18 23:16:21 +0100carlomagno(~cararell@148.87.23.5)
2020-12-18 23:16:56 +0100knupfer(~Thunderbi@87.123.206.174) (Ping timeout: 240 seconds)
2020-12-18 23:17:00 +0100xcmw(~textual@2603-6011-2200-f103-5cc1-e708-14f1-cedf.res6.spectrum.com)
2020-12-18 23:17:03 +0100 <tomsmeding> ph88: let Field value = yourThing in value
2020-12-18 23:17:20 +0100 <tomsmeding> well, probably: case yourThing of Field value -> value
2020-12-18 23:17:52 +0100 <tomsmeding> doing it with a let-binding has chances of not working due to monomorphism restriction-related things
2020-12-18 23:18:50 +0100 <tomsmeding> ph88: for some brief info about GADTs, see e.g. https://downloads.haskell.org/ghc/latest/docs/html/users_guide/glasgow_exts.html#gadt
2020-12-18 23:19:51 +0100 <ph88> oh i have to do case matching
2020-12-18 23:21:57 +0100kam1(~kam1@24.231.108.143)
2020-12-18 23:22:19 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 23:23:31 +0100 <ph88> with this function it works getVal :: ElField '(s, t) -> t getVal (Field field) = field thank you tomsmeding
2020-12-18 23:26:02 +0100 <tomsmeding> ph88: or, indeed, with a function binding :)
2020-12-18 23:26:03 +0100 <tomsmeding> nice
2020-12-18 23:26:57 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)
2020-12-18 23:29:32 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 23:31:16 +0100fengh(~haskeller@ip72-205-40-121.dc.dc.cox.net) (Ping timeout: 240 seconds)
2020-12-18 23:34:04 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Remote host closed the connection)
2020-12-18 23:36:08 +0100cosimone(~cosimone@5.171.24.229) (Quit: cosimone)
2020-12-18 23:38:24 +0100teardown(~user@gateway/tor-sasl/mrush) (Remote host closed the connection)
2020-12-18 23:38:47 +0100teardown(~user@gateway/tor-sasl/mrush)
2020-12-18 23:41:02 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-12-18 23:42:19 +0100mimi_vx(~mimi@2a01:490:16:1026:ad8e:aaec:b83:b6c3) (Ping timeout: 272 seconds)
2020-12-18 23:43:49 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 23:44:50 +0100Tario(~Tario@200.119.187.80) (Ping timeout: 256 seconds)
2020-12-18 23:45:50 +0100Tario(~Tario@201.192.165.173)
2020-12-18 23:48:39 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 272 seconds)
2020-12-18 23:50:41 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-lgxaqgimsgvlotpk)
2020-12-18 23:51:06 +0100brodie(~brodie@207.53.253.137)
2020-12-18 23:52:38 +0100cosimone(~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8)
2020-12-18 23:54:38 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c)
2020-12-18 23:56:39 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:cc57:4a3f:14e6:d0d5) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-18 23:59:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Ping timeout: 260 seconds)