Home freenode/#haskell: Logs Calendar

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

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

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