2021/08/02

2021-08-02 00:02:13 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2021-08-02 00:05:11 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-08-02 00:05:18 +0200dajoer(~david@user/gvx)
2021-08-02 00:05:31 +0200peterhil_(~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
2021-08-02 00:08:27 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-02 00:10:07 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-02 00:13:30 +0200vysn(~vysn@user/vysn) (Remote host closed the connection)
2021-08-02 00:13:30 +0200ikex1(~ash@user/ikex)
2021-08-02 00:14:42 +0200ikex(~ash@user/ikex) (Ping timeout: 240 seconds)
2021-08-02 00:14:42 +0200ikex1ikex
2021-08-02 00:15:00 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-08-02 00:16:20 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-02 00:16:58 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-02 00:17:26 +0200peterhil_(~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Quit: Must not waste too much time here...)
2021-08-02 00:19:59 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-08-02 00:21:20 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-08-02 00:21:41 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-02 00:21:58 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-08-02 00:23:06 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-08-02 00:23:22 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-02 00:23:42 +0200haritz(~hrtz@user/haritz) (Ping timeout: 250 seconds)
2021-08-02 00:26:40 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-08-02 00:28:24 +0200Null_A(~null_a@2601:645:8700:2290:496c:4f7:da8b:7ffb) (Remote host closed the connection)
2021-08-02 00:28:26 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-08-02 00:29:46 +0200lavaman(~lavaman@98.38.249.169)
2021-08-02 00:30:01 +0200peterhil(~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
2021-08-02 00:32:09 +0200Null_A(~null_a@2601:645:8700:2290:65e7:3752:1a41:1950)
2021-08-02 00:34:24 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
2021-08-02 00:37:05 +0200yoctocell(~user@h87-96-130-155.cust.a3fiber.se) (Ping timeout: 258 seconds)
2021-08-02 00:37:25 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-02 00:37:28 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-08-02 00:41:32 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-08-02 00:42:05 +0200haritz(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
2021-08-02 00:42:05 +0200haritz(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host)
2021-08-02 00:42:05 +0200haritz(~hrtz@user/haritz)
2021-08-02 00:46:26 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-08-02 00:47:54 +0200roboguy_(~roboguy_@2605:a601:afe7:9f00:3d34:bbf:fe54:17bf) ()
2021-08-02 00:48:43 +0200cjb(~cjb@user/cjb)
2021-08-02 01:06:23 +0200brandon(~bb_haskel@167.224.250.141)
2021-08-02 01:09:24 +0200sheepduck(~sheepduck@user/sheepduck)
2021-08-02 01:10:28 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-08-02 01:10:50 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-02 01:15:56 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 01:19:06 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
2021-08-02 01:21:30 +0200acidjnk_new(~acidjnk@p200300d0c72b9504b8b6f59e7f78d4aa.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2021-08-02 01:22:57 +0200agua_pesada(~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b)
2021-08-02 01:26:32 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 265 seconds)
2021-08-02 01:27:32 +0200awasey(~awasey@31.111.44.198)
2021-08-02 01:28:37 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Read error: Connection reset by peer)
2021-08-02 01:32:23 +0200Null_A(~null_a@2601:645:8700:2290:65e7:3752:1a41:1950) (Remote host closed the connection)
2021-08-02 01:33:10 +0200awasey(~awasey@31.111.44.198) (Ping timeout: 246 seconds)
2021-08-02 01:35:25 +0200Null_A(~null_a@2601:645:8700:2290:9c43:41fd:2bc5:221e)
2021-08-02 01:40:33 +0200 <Axman6> lechner: keep in mind Rel8 is relatively new and probably missing lots of features you'd want (I really wanted to to have great support for workking with JSON/JSONB data but so far not so much). The commbination of Opaleye's expresivness and Hasql's performance is very cool though
2021-08-02 01:46:48 +0200brandon(~bb_haskel@167.224.250.141) (Read error: Connection reset by peer)
2021-08-02 01:50:38 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-08-02 01:52:14 +0200brandon(~bb_haskel@167.224.250.141)
2021-08-02 01:52:31 +0200 <lechner> Axman6: yeah, thanks! it's also easier to cut and paste SQL from the Perl programs. the Rel8 approach just looks cool. my programs work already. i came to haskell for cool!
2021-08-02 01:53:54 +0200 <lechner> (I may eventually need help with closing sockets in the ZeroMQ library though, which works less well.)
2021-08-02 01:56:54 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-02 01:57:32 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 272 seconds)
2021-08-02 01:58:18 +0200xff0x(~xff0x@2001:1a81:53aa:2400:8b2:7ea:32a0:1ac6) (Ping timeout: 240 seconds)
2021-08-02 01:59:18 +0200xff0x(~xff0x@2001:1a81:53aa:2400:d3c1:8423:7882:6d65)
2021-08-02 02:16:19 +0200brandon(~bb_haskel@167.224.250.141) (Read error: Connection reset by peer)
2021-08-02 02:16:20 +0200steven1(~steven@172.92.136.203) (Ping timeout: 256 seconds)
2021-08-02 02:22:38 +0200 <eggplantade> Is there a name for the programming pattern where a function or data type is polymorphic just to avoid a cyclic module dependency, and not because it's intended to be instantiated with other types?
2021-08-02 02:24:28 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-08-02 02:28:20 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-02 02:31:57 +0200 <jay-invariant> eggplantade: I'm not sure, but that sounds a bit like "dependency injection" from OOP
2021-08-02 02:36:10 +0200 <dsal> I don't artificially constrain things unless it adds clarity. I wouldn't name that a design pattern, though.
2021-08-02 02:45:09 +0200 <sshine> eggplantade, generalisation?
2021-08-02 02:47:56 +0200 <drakonis> singleton?
2021-08-02 02:50:39 +0200hmmmas(~fidnc@183.217.200.220)
2021-08-02 02:51:08 +0200hmmmas(~fidnc@183.217.200.220) (Client Quit)
2021-08-02 02:54:59 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-02 02:59:35 +0200Null_A(~null_a@2601:645:8700:2290:9c43:41fd:2bc5:221e) (Remote host closed the connection)
2021-08-02 03:00:14 +0200 <eggplantade> Adding a type parameter is generalization. This pattern isn't the usual reason for generalizing a definition though.
2021-08-02 03:09:10 +0200xff0x(~xff0x@2001:1a81:53aa:2400:d3c1:8423:7882:6d65) (Ping timeout: 272 seconds)
2021-08-02 03:10:30 +0200xff0x(~xff0x@2001:1a81:53e4:9a00:e1e1:9272:fb77:3704)
2021-08-02 03:12:16 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-08-02 03:12:47 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-08-02 03:13:26 +0200Null_A(~null_a@2601:645:8700:2290:694b:df7:8cc3:57c0)
2021-08-02 03:13:54 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-08-02 03:17:13 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-08-02 03:19:39 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Quit: Leaving)
2021-08-02 03:21:25 +0200fawful(~guy@c-76-104-217-93.hsd1.wa.comcast.net) (Quit: WeeChat 3.2)
2021-08-02 03:34:52 +0200pschorf(~user@c-73-77-28-188.hsd1.tx.comcast.net)
2021-08-02 03:36:06 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-08-02 03:36:35 +0200elias__(~elias@154.27.37.188.rev.vodafone.pt)
2021-08-02 03:38:29 +0200elias_(~elias@154.27.37.188.rev.vodafone.pt) (Ping timeout: 252 seconds)
2021-08-02 03:46:17 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-08-02 03:46:33 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 03:48:38 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-08-02 03:53:46 +0200MQ-17J(~MQ-17J@8.6.144.192)
2021-08-02 03:55:03 +0200alx741(~alx741@186.178.108.145) (Quit: alx741)
2021-08-02 03:55:29 +0200euouae(~euouae@user/euouae)
2021-08-02 03:57:59 +0200zebrag(~chris@user/zebrag)
2021-08-02 04:02:36 +0200 <euouae> What is a good topic to study in Haskell as a beginner?
2021-08-02 04:03:42 +0200pschorf(~user@c-73-77-28-188.hsd1.tx.comcast.net) (Remote host closed the connection)
2021-08-02 04:04:27 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-08-02 04:04:32 +0200pschorf(~user@c-73-77-28-188.hsd1.tx.comcast.net)
2021-08-02 04:04:54 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 272 seconds)
2021-08-02 04:06:57 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-08-02 04:09:17 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-02 04:11:10 +0200 <sm> euouae: installing it
2021-08-02 04:12:18 +0200 <sm> or, better: the tools
2021-08-02 04:12:36 +0200 <euouae> OK so cabal, haddock?
2021-08-02 04:12:41 +0200 <euouae> maybe ghc?
2021-08-02 04:12:47 +0200 <sm> both of these are a bit of a topic into themselves unfortunately
2021-08-02 04:12:50 +0200 <sm> all the tools
2021-08-02 04:13:08 +0200 <euouae> Examples of some others?
2021-08-02 04:13:14 +0200 <sm> it isn't that much to learn and it will save you a lot of pain
2021-08-02 04:13:25 +0200 <sm> stack
2021-08-02 04:13:41 +0200 <euouae> Ok and that concludes it, right?
2021-08-02 04:13:45 +0200 <sm> ghc-pkg
2021-08-02 04:13:55 +0200phma(phma@2001:5b0:212a:da48:ca78:cb9c:83eb:4c64) (Read error: Connection reset by peer)
2021-08-02 04:14:01 +0200 <sm> well of course there's more but those are a good start
2021-08-02 04:14:27 +0200 <euouae> Hmm, alright. I'll heed your advice
2021-08-02 04:15:48 +0200 <sm> at least skim their user manuals, and understand the concepts of package dbs and the various places haskell libraries and executables can be
2021-08-02 04:16:40 +0200 <sm> also, I like this beginner book:
2021-08-02 04:16:40 +0200 <sm> @where HTAC
2021-08-02 04:16:40 +0200 <lambdabot> "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook>
2021-08-02 04:18:04 +0200arahael1(~arahael@124-150-74-227.tpgi.com.au)
2021-08-02 04:18:19 +0200 <euouae> That's a cool publisher
2021-08-02 04:18:46 +0200Arahael(~arahael@14-200-228-14.tpgi.com.au) (Ping timeout: 272 seconds)
2021-08-02 04:19:50 +0200pschorf(~user@c-73-77-28-188.hsd1.tx.comcast.net) (Remote host closed the connection)
2021-08-02 04:20:35 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-08-02 04:20:35 +0200FinnElijaGuest7086
2021-08-02 04:20:35 +0200Guest7086(~finn_elij@user/finn-elija/x-0085643) (Killed (sodium.libera.chat (Nickname regained by services)))
2021-08-02 04:20:35 +0200finn_elijaFinnElija
2021-08-02 04:21:01 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-08-02 04:28:20 +0200td_(~td@94.134.91.166) (Ping timeout: 272 seconds)
2021-08-02 04:29:33 +0200td_(~td@muedsl-82-207-238-030.citykom.de)
2021-08-02 04:31:02 +0200lavaman(~lavaman@98.38.249.169)
2021-08-02 04:31:06 +0200phma(phma@2001:0:c38c:c38c:cc7:e519:bcd3:2ebd)
2021-08-02 04:34:09 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-08-02 04:35:56 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-08-02 04:38:43 +0200phma_(phma@2001:5b0:211b:e2d8:c072:cd43:475:d917)
2021-08-02 04:39:06 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
2021-08-02 04:39:08 +0200phma(phma@2001:0:c38c:c38c:cc7:e519:bcd3:2ebd) (Ping timeout: 256 seconds)
2021-08-02 04:45:42 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-08-02 04:53:31 +0200guest86(~guest86@2001:8004:1420:14ac:b1cc:c092:84b0:86f6)
2021-08-02 04:54:18 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 272 seconds)
2021-08-02 04:54:53 +0200 <guest86> Hello, I am getting back into Haskell after being away from it for a few years. I am trying to interact with a process using System.Process.Typed. The process at some point will print: "INPUT?: " to stdout and I want to be able to enter something via STDIN when that happens.
2021-08-02 04:55:28 +0200 <guest86> https://paste.tomsmeding.com/iFHG9bjw <- I am trying to figure out how to read from stdin until this happens. Is there an easier way. Also, what do I need to do to whileM to have it work in IO?
2021-08-02 04:56:21 +0200hmmmas(~fidnc@183.217.200.220)
2021-08-02 04:59:16 +0200 <monochrom> Uh, you begin with "x <- hGetLine (getStdout p)", and henceforth you never even take a look at what's in x?
2021-08-02 04:59:44 +0200 <monochrom> I guess this is why everyone else was saying "the unsued-var warning is very informative".
2021-08-02 04:59:56 +0200 <guest86> monochrom in this case I know I can ignore the first line, its a toy example
2021-08-02 05:01:06 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-08-02 05:01:49 +0200 <guest86> The process I am talking toL
2021-08-02 05:01:51 +0200 <guest86> #!/usr/bin/env python3
2021-08-02 05:01:52 +0200 <guest86> print("Hello there")
2021-08-02 05:01:52 +0200 <guest86> print("INPUT?:", end=' ')
2021-08-02 05:01:53 +0200 <guest86> val = input()
2021-08-02 05:01:53 +0200 <guest86> print(f"You entered:{val}")
2021-08-02 05:02:12 +0200 <monochrom> OK so what's not working?
2021-08-02 05:02:58 +0200 <monochrom> (That is a guiding question.)
2021-08-02 05:03:09 +0200jess(~jess@libera/staff/jess)
2021-08-02 05:04:18 +0200 <monochrom> (And training people to take the effort to describe observations.)
2021-08-02 05:07:30 +0200 <guest86> Well, the first issue is that
2021-08-02 05:07:31 +0200 <guest86> whileM (not (hIsEOF (getStdout p))) $ do
2021-08-02 05:08:13 +0200 <guest86> because hIsEOF (getStdout p) is IO Bool, and whileM wants a Bool
2021-08-02 05:09:20 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-02 05:09:30 +0200MQ-17J(~MQ-17J@8.6.144.192) (Ping timeout: 272 seconds)
2021-08-02 05:09:48 +0200 <monochrom> Uh which package does Control.Monad.Loop come from?
2021-08-02 05:10:09 +0200 <guest86> https://hackage.haskell.org/package/monad-loops-0.4.3/docs/Control-Monad-Loops.html
2021-08-02 05:10:28 +0200 <monochrom> Then whileM totally wants IO Bool alright.
2021-08-02 05:10:35 +0200 <dsal> `untilJust` is a pretty cool name.
2021-08-02 05:10:40 +0200 <monochrom> It is "not" that doesn't like IO Bool.
2021-08-02 05:11:21 +0200 <guest86> oh, wow, yeah looking at the compiler output you're totally right
2021-08-02 05:11:58 +0200 <monochrom> You can use "fmap" to bridge the gap.
2021-08-02 05:12:49 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-02 05:13:56 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
2021-08-02 05:14:12 +0200 <monochrom> You will run into the second problem after you fix that.
2021-08-02 05:14:20 +0200 <guest86> thanks
2021-08-02 05:14:34 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-08-02 05:15:38 +0200ham(~ham4@user/ham) (Ping timeout: 265 seconds)
2021-08-02 05:15:59 +0200dsalwatches monochrom play Haskell chess
2021-08-02 05:16:05 +0200ham2(~ham4@d8D8627D5.access.telenet.be)
2021-08-02 05:16:10 +0200 <dsal> type checks in three moves
2021-08-02 05:16:24 +0200 <monochrom> haha
2021-08-02 05:16:43 +0200 <monochrom> Well the second problem is mistaking EOF with "no data for now".
2021-08-02 05:17:11 +0200 <monochrom> If the child process doesn't close its stdout, your side will not see EOF.
2021-08-02 05:17:32 +0200 <guest86> So I suppose I can just get the characters until I see "INPUT?: "
2021-08-02 05:17:48 +0200 <monochrom> And most processes, including this one, doesn't close stdout until termination.
2021-08-02 05:17:58 +0200 <monochrom> Yes.
2021-08-02 05:18:05 +0200 <guest86> I guess the issue I was having was that I was using hGetLine, but in this case there isn't a whole line to be gotten
2021-08-02 05:18:45 +0200 <guest86> is hWaitForInput the way to go?
2021-08-02 05:19:17 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-08-02 05:19:50 +0200 <monochrom> You will realize that you're making an XY problem when you find out that hGetChar already does the waiting.
2021-08-02 05:20:31 +0200 <monochrom> There is a third problem after you fix that.
2021-08-02 05:21:42 +0200 <monochrom> The third problem can only be fixed in the Python script. Or generally child code. Parent code has absolutely no say over this. None. Zilch.
2021-08-02 05:23:34 +0200 <pavonia> What is the third problem?
2021-08-02 05:24:09 +0200 <monochrom> "I see my stdout is a pipe, not a terminal, so let me switch to block buffering. My buffer is a gazillion bytes."
2021-08-02 05:24:43 +0200 <monochrom> This buffering is highly local and private. Even the kernel doesn't know.
2021-08-02 05:25:01 +0200 <guest86> Ah okay, so I think my approach is wrong.
2021-08-02 05:25:34 +0200 <monochrom> The only solution is rewrite child code to switch back to line buffering. Or add explicit "flush" calls.
2021-08-02 05:25:36 +0200 <guest86> What I would like to do is be able to monitor a python script (that I cannot necessarily modify) and send input to it under certain conditions
2021-08-02 05:26:12 +0200 <guest86> Am I taking the right approach?
2021-08-02 05:26:33 +0200 <guest86> I mean, in general, is there a better approach I should be using?
2021-08-02 05:26:53 +0200 <monochrom> Err actually I just recall a non-intrusive solution. You now have to make some syscalls to allocate a pseudo terminal. Then the child sees a terminal and will behave.
2021-08-02 05:27:49 +0200 <monochrom> But even I haven't learned the relevant syscalls. This gets highly technical and unix-specific.
2021-08-02 05:28:36 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-08-02 05:29:09 +0200 <monochrom> dsal had the correct count. :)
2021-08-02 05:29:17 +0200 <euouae> can't you just pipe the script to a file and read from the file, ignoring eof?
2021-08-02 05:29:34 +0200 <monochrom> Same buffering delay.
2021-08-02 05:29:52 +0200 <monochrom> You will find the file empty for a long, long time.
2021-08-02 05:29:54 +0200 <guest86> The script has a line of input (a confirmation code) that I won't have until runtime
2021-08-02 05:30:38 +0200 <euouae> Right... man tty and go from there
2021-08-02 05:30:57 +0200 <euouae> pty*
2021-08-02 05:31:00 +0200 <monochrom> Except now you have to make unix syscalls but you're in Haskell
2021-08-02 05:31:32 +0200 <euouae> No-one said all of it needs to be done in Haskell :P either write that component in C or use FFI
2021-08-02 05:31:54 +0200 <guest86> Yeah good point. I will explore some options. Maybe in this case I can in fact modify the python script
2021-08-02 05:32:20 +0200 <guest86> Actually, I don't think I can. So, I guess I will have to look into pty
2021-08-02 05:32:58 +0200 <monochrom> Oh the standard library has System.Posix.Terminal.openPseudoTerminal. I guess it's already half the way.
2021-08-02 05:33:04 +0200 <euouae> monochrom: You can just use script -c
2021-08-02 05:33:11 +0200 <euouae> https://linux.die.net/man/1/script
2021-08-02 05:33:47 +0200 <monochrom> That's nice too.
2021-08-02 05:34:01 +0200 <euouae> It's always a good day when you can surprise-answer a question with script(1) lol
2021-08-02 05:34:15 +0200 <monochrom> I prefer tee.
2021-08-02 05:34:26 +0200 <guest86> Thanks for the references!
2021-08-02 05:34:28 +0200 <monochrom> But tee is a different use case.
2021-08-02 05:36:14 +0200 <monochrom> If you use openPseudoTerminal, you will still need to read the pty man page, because generally these System.Posix function docs assumes unix syscall knowledge.
2021-08-02 05:36:54 +0200 <monochrom> Won't explain what's so "master" and "slave" about this, you're supposed to already know from unix experience.
2021-08-02 05:41:41 +0200 <guest86> ah okay thanks, I didn't realise that this part was so involved. Lots of learning to do I suppose
2021-08-02 05:42:09 +0200Teacup(~teacup@user/teacup) (Quit: Teacup)
2021-08-02 05:42:09 +0200 <monochrom> Perhaps use the "script" program as middle-person for now.
2021-08-02 05:42:28 +0200lavaman(~lavaman@98.38.249.169)
2021-08-02 05:42:38 +0200Teacup(~teacup@user/teacup)
2021-08-02 05:43:56 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 250 seconds)
2021-08-02 05:46:18 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-08-02 05:47:27 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 276 seconds)
2021-08-02 05:47:56 +0200cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
2021-08-02 05:51:08 +0200 <aegon> hmm, what does ~ mean in a signature and what does GHC.Exts fromList do :|
2021-08-02 05:51:30 +0200 <aegon> i've been looking at the haddock and it seems like it can convert a list of item a to an item b that is convertable to from a
2021-08-02 05:51:44 +0200 <aegon> but i'm not sure if i'm getting that right and I can't seem to make ghci happy playing with it
2021-08-02 05:51:46 +0200 <Axman6> ~ is type equality, so a ~ Map k v is saying that a is the same as Map k v
2021-08-02 05:52:47 +0200 <Axman6> @src @hoogle fromList
2021-08-02 05:52:48 +0200 <lambdabot> Source not found. Sorry.
2021-08-02 05:53:17 +0200 <Axman6> @src IsList
2021-08-02 05:53:17 +0200 <lambdabot> Source not found.
2021-08-02 05:53:20 +0200 <Axman6> :(
2021-08-02 05:54:15 +0200 <Axman6> anyway, the IsList class is what's used by the OverloadedLists extension, which lets you do things like write [(True, 1),(False,7)] :: Map Bool Int
2021-08-02 05:55:32 +0200 <Axman6> it turns [...] from being syntax sugar for constructing lists, to being syntax sugar for constructing other types which imeplement the IsList class, and [foo,bar] gets translated into froomList [foo,bar], much like how 1 is translated to fromInteger 1
2021-08-02 05:57:17 +0200 <aegon> Axman6: what does it look like to hook into that machinery? This maches up with how i think it's being used (turning lists into Tensor literals in Hasktorch) but reading through their haddock thats generated locally I can't find any mention of IsList for the Tensor data type
2021-08-02 05:57:58 +0200 <Axman6> maybe try loading up hasktorch in ghci and running :info IsList to find where the instance is coming from
2021-08-02 05:59:20 +0200 <aegon> good idea!
2021-08-02 06:01:35 +0200 <Axman6> where are you seeing the use of ~ btw?
2021-08-02 06:03:35 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-08-02 06:04:02 +0200hendursaga(~weechat@user/hendursaga)
2021-08-02 06:04:23 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-08-02 06:05:02 +0200sim590(~simon@modemcable090.207-203-24.mc.videotron.ca)
2021-08-02 06:05:29 +0200vicfred(~vicfred@user/vicfred)
2021-08-02 06:07:36 +0200 <sim590> It's weird, now when I'm compiling a project that used to compile, I'm getting this: <command line>: can't load .so/.DLL for: /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../lib/libpanel.so (-lpanelw: cannot open shared object file: No such file or directory).
2021-08-02 06:08:01 +0200 <sim590> But `readlink -f /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../lib/libpanel.so` does give an existing file `/usr/lib/libpanel.so`.
2021-08-02 06:09:10 +0200 <aegon> Axman6: its in this function. Everything seems to be happening in it. I wish I could get fromList to behave in ghci to poke at it
2021-08-02 06:09:39 +0200 <sim590> `/usr/lib/libpanelw.so` does also exist, so I'm not sure what's wrong.
2021-08-02 06:09:52 +0200Null_A(~null_a@2601:645:8700:2290:694b:df7:8cc3:57c0) (Read error: Connection reset by peer)
2021-08-02 06:09:55 +0200 <euouae> sim590: post full log
2021-08-02 06:10:12 +0200 <aegon> https://github.com/tscholak/two-layer-network/blob/215b68a64278711ce2e4570577c27465e2b13cdb/two-la…
2021-08-02 06:10:33 +0200 <aegon> Axman6: ^ that function. I belive the fromList (pure <$> xs) is creating a tensor
2021-08-02 06:10:40 +0200 <aegon> but i cant get it to behave in GHCi
2021-08-02 06:12:33 +0200 <aegon> oh i see its defined in Torch.HList and explicitly for Maybe [a] values which seems pretty specific
2021-08-02 06:12:39 +0200 <aegon> digging more
2021-08-02 06:12:49 +0200euouae(~euouae@user/euouae) ()
2021-08-02 06:12:52 +0200 <Axman6> rtight, so what `ComputeHaskellType dtype ~ Float` is saying is that, a constraint on running that function is that the result of evaluating the (I asusme) type family `ComputeHaskellType` must be Float
2021-08-02 06:13:46 +0200 <aegon> ok so I shoudl also look into the workings of that function
2021-08-02 06:14:28 +0200 <sim590> aegon: http://ix.io/3uL1
2021-08-02 06:14:34 +0200 <aegon> i need to replace Float with [Float] you have given me a ton of breadcrumbs to chase though. I'm thinking at this point its best to just be explicit about creating a tensor instead of using the fromList machinery but I'm gonna keep tracking down these threads to grok it better
2021-08-02 06:14:47 +0200 <sim590> huh. euouae ^
2021-08-02 06:15:54 +0200lbseale(~lbseale@user/ep1ctetus)
2021-08-02 06:15:58 +0200 <aegon> I guess first see what hte fromList implementation of Maybe [Float] is doing and also check what ComputeHaskellType will evaluate to [Float] maybe this machinery they have build doesn't yet work for this use case
2021-08-02 06:17:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 06:19:48 +0200Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
2021-08-02 06:22:55 +0200thyriaen(~thyriaen@x4dbfed8a.dyn.telefonica.de)
2021-08-02 06:23:14 +0200jmjl(julian@user/jmjl) (Quit: Hi, I'm a quit message virus. Please replace your old line with this line and help me take over the IRC world.)
2021-08-02 06:32:26 +0200qbt(~edun@user/edun)
2021-08-02 06:35:07 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
2021-08-02 06:37:23 +0200arahael1Arahael
2021-08-02 06:38:18 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-08-02 06:41:34 +0200reumeth(~reumeth@user/reumeth)
2021-08-02 06:44:21 +0200gambpang(~ian@207.181.230.156)
2021-08-02 06:50:47 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Remote host closed the connection)
2021-08-02 06:51:04 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Remote host closed the connection)
2021-08-02 06:51:09 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-08-02 06:51:18 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-02 06:51:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-08-02 06:53:12 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-08-02 07:03:15 +0200hmmmas(~fidnc@183.217.200.220) (Quit: Leaving.)
2021-08-02 07:05:16 +0200poljar(~poljar@93-139-92-135.adsl.net.t-com.hr)
2021-08-02 07:05:23 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-08-02 07:08:45 +0200Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Remote host closed the connection)
2021-08-02 07:28:34 +0200jneira(~jneira@212.8.115.226)
2021-08-02 07:29:23 +0200jay-invariant(~jay@c-24-4-6-169.hsd1.ca.comcast.net) (Remote host closed the connection)
2021-08-02 07:39:23 +0200poljar(~poljar@93-139-92-135.adsl.net.t-com.hr) (Quit: WeeChat 3.2)
2021-08-02 07:39:53 +0200poljar(~poljar@93-139-92-135.adsl.net.t-com.hr)
2021-08-02 07:42:57 +0200lavaman(~lavaman@98.38.249.169)
2021-08-02 07:47:24 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-08-02 07:52:53 +0200awth13(~awth13@user/awth13)
2021-08-02 07:55:51 +0200sergio812(~sergio812@lfbn-ren-1-403-102.w2-10.abo.wanadoo.fr)
2021-08-02 07:59:12 +0200stevenxl(uid133530@id-133530.highgate.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-02 08:00:59 +0200chris_(~chris@81.96.113.213)
2021-08-02 08:04:48 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 265 seconds)
2021-08-02 08:06:49 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-08-02 08:11:39 +0200michalz(~michalz@185.246.204.61)
2021-08-02 08:17:10 +0200euouae(~euouae@user/euouae)
2021-08-02 08:17:17 +0200 <euouae> What is the meaning of ()? E..g IO () ?
2021-08-02 08:17:29 +0200 <dminuoso> euouae: That's the unit type.
2021-08-02 08:17:39 +0200 <dminuoso> It might as well been named Unit, e.g. `IO Unit`
2021-08-02 08:17:52 +0200 <dminuoso> It's sole data constructor is.. confusingly, also named ()
2021-08-02 08:17:57 +0200 <euouae> Why is `IO ()` useful
2021-08-02 08:18:09 +0200michalz(~michalz@185.246.204.61) (Remote host closed the connection)
2021-08-02 08:18:20 +0200 <dminuoso> euouae: `IO ()` is an action that doesn't produce any result (well, it produces the unit result, but that has trivially no information)
2021-08-02 08:18:32 +0200 <dminuoso> It's roughly equivalent to a C function `void f(...)`
2021-08-02 08:18:33 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-08-02 08:18:50 +0200 <dminuoso> % :t putStrLn
2021-08-02 08:18:51 +0200 <euouae> you can throw away the result of an IO action right?
2021-08-02 08:18:51 +0200 <yahb> dminuoso: String -> IO ()
2021-08-02 08:18:57 +0200 <dminuoso> Yes.
2021-08-02 08:19:23 +0200 <euouae> So there's always a projection `M a -> M t`
2021-08-02 08:19:30 +0200 <euouae> Sorry, `M a -> M ()`
2021-08-02 08:19:36 +0200 <dminuoso> Correct
2021-08-02 08:19:40 +0200 <Maxdamantus> You can't have an `IO` action that emits no value, so the value `()` is used as a placeholder.
2021-08-02 08:19:45 +0200 <dminuoso> % :t () <$ putStrLn "foo" -- euouae
2021-08-02 08:19:45 +0200 <yahb> dminuoso: IO ()
2021-08-02 08:19:55 +0200 <dminuoso> This combinator is also, very confusingly, named `void` in base
2021-08-02 08:19:58 +0200 <dminuoso> % :t void
2021-08-02 08:19:58 +0200 <yahb> dminuoso: Functor f => f a -> f ()
2021-08-02 08:20:02 +0200 <euouae> Which means that function taking `M ()` may as well take `M a`, it's just a hint that they do nothing with `a`
2021-08-02 08:20:08 +0200 <dminuoso> euouae: Precisely.
2021-08-02 08:20:14 +0200 <dminuoso> You're spot on.
2021-08-02 08:20:21 +0200 <euouae> However, they can't take `M a`, right?
2021-08-02 08:20:30 +0200 <dminuoso> Also correct.
2021-08-02 08:20:36 +0200 <dminuoso> Which is why `void` exists.
2021-08-02 08:20:37 +0200 <euouae> Alright, thank you for clarifying everything :)
2021-08-02 08:20:57 +0200 <dminuoso> It's for massaging values like IO actions into the right type, for when some other function demands say `IO ()`
2021-08-02 08:21:10 +0200 <dminuoso> But you can also just write `() <$ foo` if you like
2021-08-02 08:21:51 +0200 <euouae> But what does `() <$ putStrLn "Hello"` print
2021-08-02 08:22:02 +0200 <dminuoso> Oh, well to be fair that's a silly thing to do
2021-08-02 08:22:10 +0200 <dminuoso> % :T () <$ getLine
2021-08-02 08:22:10 +0200 <yahb> dminuoso: unknown command ':T'; use :? for help.
2021-08-02 08:22:12 +0200 <dminuoso> % :t () <$ getLine
2021-08-02 08:22:12 +0200 <yahb> dminuoso: IO ()
2021-08-02 08:22:14 +0200 <dminuoso> This is a etter example
2021-08-02 08:22:19 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-08-02 08:22:45 +0200 <euouae> I see
2021-08-02 08:22:47 +0200 <dminuoso> euouae: It sitll prints "Hello". The example is poor because putStrLn at the end already produces IO ().
2021-08-02 08:23:04 +0200 <dminuoso> But with getLine, you still get the effect of consuing a string on stdin, but it throws away the result
2021-08-02 08:23:20 +0200 <euouae> Right the type information is different than the side ffects
2021-08-02 08:23:31 +0200 <dminuoso> Right.
2021-08-02 08:23:32 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2021-08-02 08:23:33 +0200 <euouae> in some sense at least. of course IO is always there
2021-08-02 08:23:34 +0200Lord_of_Life_Lord_of_Life
2021-08-02 08:25:43 +0200 <dminuoso> euouae: Right, this is the beauty of this parametrized IO type. We separate the side-effect (IO) from the result of carrying out that side-effect.
2021-08-02 08:26:04 +0200 <dminuoso> Now, of course we cant know what exact side-effects actually happen inside IO. And this is where the idea of effect systems begins.
2021-08-02 08:26:13 +0200 <dibblego> IO is unrelated to side-effects
2021-08-02 08:27:06 +0200gambpang(~ian@207.181.230.156) (Ping timeout: 272 seconds)
2021-08-02 08:27:22 +0200gambpang(~ian@207.181.230.156)
2021-08-02 08:28:31 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-08-02 08:34:13 +0200guest86(~guest86@2001:8004:1420:14ac:b1cc:c092:84b0:86f6) (Ping timeout: 246 seconds)
2021-08-02 08:36:15 +0200 <aegon> Axman6: if your still around i found it out. This is the wierdest syntax yet fromJust (fromList x) is the way to get it from a list that has been built up by a function
2021-08-02 08:36:33 +0200 <aegon> is the fromJust part of IsList stuff or is that something specific that the Hasktorch implementation did :?
2021-08-02 08:38:10 +0200 <Axman6> :t fromJust
2021-08-02 08:38:11 +0200 <lambdabot> Maybe a -> a
2021-08-02 08:38:38 +0200 <euouae> dminuoso: Is this related? http://okmij.org/ftp/Haskell/extensible/exteff.pdf
2021-08-02 08:38:41 +0200 <Axman6> I guess there's a IsList instnce for Maybe? that code looks quite confusing though
2021-08-02 08:39:41 +0200 <dminuoso> euouae: Yes, this is one example.
2021-08-02 08:42:05 +0200 <euouae> dminuoso: Ok I don't see it myself, but I trust that it's being researched :P I'll probably be learning the basics of cabal and the rest of the tools for now :)
2021-08-02 08:42:12 +0200phma_(phma@2001:5b0:211b:e2d8:c072:cd43:475:d917) (Read error: Connection reset by peer)
2021-08-02 08:42:54 +0200gehmehgeh(~user@user/gehmehgeh)
2021-08-02 08:43:08 +0200 <dminuoso> euouae: Yeah. Much in the effect systems is ongoing research and experimentation, and in Haskell in particular it's mostly limited to custom effects (in the sense of how do we compose various monadic effects together in an extensible and declarative way).
2021-08-02 08:43:08 +0200phma_(phma@2001:5b0:210d:4948:1e1a:34b5:d23e:1981)
2021-08-02 08:47:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 08:55:08 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-08-02 08:57:07 +0200acidjnk_new(~acidjnk@p200300d0c72b9504b8b6f59e7f78d4aa.dip0.t-ipconnect.de)
2021-08-02 09:01:27 +0200 <sergio812> I’m having trouble with QuickCheck’s “collect” when testing IO code...
2021-08-02 09:01:37 +0200 <sergio812> I can easily modify a basic property like “prop_pure list = myImpl list === refImpl list” to add case distribution like so “prop_pure list = collect (length list) $ myImpl list === refImpl list”, and all works fine.
2021-08-02 09:02:03 +0200 <sergio812> Now, how should I do to add case distribution to IO code like “prop_io list = monadicIO $ do { res <- run $ myImplIO list; assert $ res == refImpl list }”?
2021-08-02 09:02:19 +0200 <sergio812> I tried tucking in “collect (length l) $” before “run” or “assert” and GHC complained about expecting type “PropertyM IO Int” or “PropertyM IO a0”, while actual type is “Property”.
2021-08-02 09:02:20 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:4a3f:fe34:92c5:875c)
2021-08-02 09:02:33 +0200 <sergio812> I tried tucking in “collect (length l) $” after “run” or “assert” and GHC complained about expecting type “IO Int” or “Bool”, while actual type is “Property”.
2021-08-02 09:02:42 +0200 <sergio812> Can I use “collect” for IO code? If so, how? If not, how can I add case distribution?
2021-08-02 09:04:56 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-08-02 09:10:29 +0200fendor(~fendor@77.119.222.253.wireless.dyn.drei.com)
2021-08-02 09:11:12 +0200 <c_wraith> sergio812: Why are you trying to do it inside the do block?
2021-08-02 09:11:23 +0200 <c_wraith> sergio812: it would work just fine if you did it outside
2021-08-02 09:12:15 +0200 <nshepperd> sergio812: i think you're meant to use 'monitor' in io tests
2021-08-02 09:12:38 +0200 <nshepperd> sergio812: https://hackage.haskell.org/package/QuickCheck-2.14.2/docs/Test-QuickCheck-Monadic.html#v:monitor
2021-08-02 09:13:40 +0200 <sergio812> c_wraith: you mean, tuck in "collect (length list) $" before "monadicIO"?
2021-08-02 09:14:09 +0200 <c_wraith> oh, if it is a scoping error, then yes. monitor is what you want
2021-08-02 09:14:36 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 272 seconds)
2021-08-02 09:14:52 +0200 <sergio812> c_wraith: you're probably right that I can make do with putting it outside on this example
2021-08-02 09:16:40 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-08-02 09:16:41 +0200 <sergio812> nshepperd: thank you for pointing me to "monitor"!
2021-08-02 09:17:13 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Remote host closed the connection)
2021-08-02 09:17:26 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
2021-08-02 09:20:10 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds)
2021-08-02 09:21:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-08-02 09:21:52 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer)
2021-08-02 09:22:03 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-08-02 09:22:58 +0200mastarija(~mastarija@31.217.8.174)
2021-08-02 09:24:06 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-08-02 09:24:06 +0200favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-08-02 09:24:21 +0200 <mastarija> Do we have something like the "Alternative" type class, but that is related to "Semigroup" instead of "Monoid". I'd really like an instance of the Alternative, but without that annoying "empty"
2021-08-02 09:24:48 +0200 <dminuoso> mastarija: Check out semigroupoids
2021-08-02 09:24:51 +0200cfricke(~cfricke@user/cfricke)
2021-08-02 09:25:05 +0200 <mastarija> dminuoso, nothing in base, huh?
2021-08-02 09:25:08 +0200 <dminuoso> Right
2021-08-02 09:25:17 +0200 <dminuoso> https://hackage.haskell.org/package/semigroupoids-5.3.5/docs/Data-Functor-Alt.html
2021-08-02 09:25:29 +0200 <dminuoso> mastarija: ^- this is one of the reasons quite a few packages depend on semigroupoids. :)
2021-08-02 09:25:36 +0200 <mastarija> :D
2021-08-02 09:25:48 +0200 <mastarija> I guess mine will too
2021-08-02 09:29:55 +0200jay-invariant(~jay@c-24-4-6-169.hsd1.ca.comcast.net)
2021-08-02 09:30:06 +0200 <dibblego> Either is a good example instance
2021-08-02 09:31:03 +0200 <mastarija> Would it be fine, if I write in my library, you are free to use the "empty", but if you do, you might loose the data you've been accumulating?
2021-08-02 09:31:22 +0200 <dibblego> as long as it is lawful, sure
2021-08-02 09:31:29 +0200 <mastarija> Yes, it is.
2021-08-02 09:31:37 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-02 09:32:19 +0200 <mastarija> I mean, everything checks out, it's just that "empty" that's a thorn in my eyes, and there's no way to introduce it through my DSL other than explicitly writing "empty" somewhere in the code
2021-08-02 09:32:37 +0200 <mastarija> Could I use custom error messages somehow in that case?
2021-08-02 09:32:57 +0200 <mastarija> So that compiler warns the user in advance if he typed empty instead of mempty?
2021-08-02 09:32:58 +0200 <dibblego> you might want to show the example
2021-08-02 09:33:20 +0200 <mastarija> data Wrong e = Neutral | Inert e | Wrong e
2021-08-02 09:33:31 +0200 <mastarija> My error aggregation type
2021-08-02 09:33:48 +0200 <mastarija> Neutral is added purely because of empty
2021-08-02 09:33:53 +0200 <dibblego> FYI, that's iso to data Wrong e = Neutral | Blah e Bool
2021-08-02 09:34:10 +0200 <mastarija> Yes
2021-08-02 09:34:26 +0200 <dibblego> my opinion: if there is a bug because of typing the wrong thing in a nominal system -> use parametricity more
2021-08-02 09:34:42 +0200 <mastarija> Ideally, it would be data Wrong e = Inert e | Wrong e
2021-08-02 09:34:53 +0200 <dibblego> well do that as well if it helps
2021-08-02 09:35:04 +0200 <mastarija> dibblego, not sure what you mean by parametricity
2021-08-02 09:35:26 +0200 <dibblego> x :: Alternative f => f a; x = mempty -- fails to compile
2021-08-02 09:35:38 +0200kuribas(~user@ptr-25vy0i94rzok8s66yz2.18120a2.ip6.access.telenet.be)
2021-08-02 09:36:09 +0200 <kuribas> would it be possible to get C-like performance for dealing with binary data formats?
2021-08-02 09:36:15 +0200 <kuribas> In C I can just cast a buffer to a datatype.
2021-08-02 09:36:26 +0200 <euouae> There's unboxed types
2021-08-02 09:36:44 +0200 <kuribas> However, in haskell instead of just deserialising, I could take a strict bytestring and use accessor functions.
2021-08-02 09:36:58 +0200mastarija_(~mastarija@31.217.8.174)
2021-08-02 09:37:14 +0200 <mastarija_> why does this nickserv keep changing my username?
2021-08-02 09:37:21 +0200timCF(~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving)
2021-08-02 09:37:28 +0200 <euouae> You're dropping your connection mastarija_
2021-08-02 09:37:42 +0200 <mastarija_> Hm... didn't used to happen.
2021-08-02 09:38:00 +0200 <euouae> kuribas: You can use GHCs unboxed types, wouldn't that be what you need in terms of performance?
2021-08-02 09:38:20 +0200 <kuribas> euouae: the bytestring is irregular, like, not a list of integers, but a index, different regions, etc...
2021-08-02 09:38:33 +0200 <kuribas> like a binary file format...
2021-08-02 09:39:12 +0200 <euouae> It can be an array of unboxed bytes which you can then interpret as you'd like
2021-08-02 09:39:28 +0200 <kuribas> yes, something like that...
2021-08-02 09:40:34 +0200mastarija(~mastarija@31.217.8.174) (Ping timeout: 272 seconds)
2021-08-02 09:41:43 +0200 <euouae> You need to benchmark and see whether you need that
2021-08-02 09:41:53 +0200 <euouae> Have you determined that your code is slow as is?
2021-08-02 09:41:59 +0200 <nshepperd> use Storable and hope the memcpys get optimised away?
2021-08-02 09:42:15 +0200 <kuribas> hmm, bytestring doesn't have O(1) conversion from C Ptr?
2021-08-02 09:43:14 +0200 <kuribas> Maybe I need Vector.Storable.Vector Word8 then...
2021-08-02 09:45:18 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 09:46:21 +0200mastarija_(~mastarija@31.217.8.174) (Quit: Leaving)
2021-08-02 09:47:03 +0200chele(~chele@user/chele)
2021-08-02 09:47:28 +0200 <euouae> is it possible to work with Haskell offline?
2021-08-02 09:47:40 +0200 <dminuoso> Why shouldn't it?
2021-08-02 09:47:49 +0200 <euouae> I.e. have cabal and/or stack use the cached modules
2021-08-02 09:48:04 +0200 <euouae> and also access the docs from haddock for base?
2021-08-02 09:48:13 +0200 <maerwald[m]> Cabal has an `--offline` switch
2021-08-02 09:48:18 +0200 <euouae> Nice
2021-08-02 09:48:27 +0200 <kuribas> ah, unsafeUseAsCString is O(1)
2021-08-02 09:48:29 +0200 <euouae> Ok that probably does it. Thanks
2021-08-02 09:48:30 +0200 <dminuoso> Also, davean has build a thing while they were offline for a prolonged time.
2021-08-02 09:48:33 +0200 <maerwald[m]> Haddock db will need to be built afair
2021-08-02 09:48:37 +0200 <dminuoso> But I dont recall the name of that project
2021-08-02 09:49:42 +0200 <euouae> Alright, g2g, thank you for the help.
2021-08-02 09:49:45 +0200euouae(~euouae@user/euouae) (Quit: Client closed)
2021-08-02 09:50:32 +0200 <merijn> Most extreme scenario you can just host a local mirror of Hackage :p
2021-08-02 09:51:19 +0200 <dminuoso> Yeah, and davean build something akin to that
2021-08-02 09:51:35 +0200 <dminuoso> But hackage is quite a beast that cant just be run. It's very annoying
2021-08-02 09:55:53 +0200mastarija(~mastarija@31.217.8.174)
2021-08-02 09:57:38 +0200 <maerwald[m]> This should be made easier
2021-08-02 09:58:18 +0200gambpang(~ian@207.181.230.156) (Ping timeout: 272 seconds)
2021-08-02 09:58:34 +0200gambpang(~ian@207.181.230.156)
2021-08-02 09:58:46 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 10:00:25 +0200 <kuribas> hmm, maybe I can use GADTs to get safe indexes. For example data MyFields a where Field1 :: Field Int8; Field2 :: Field Word16, then some magic to calculate offsets...
2021-08-02 10:03:58 +0200 <kuribas> better than manually calculating offsets...
2021-08-02 10:05:35 +0200 <kuribas> Maybe a TH function that creates a function "readMyField :: ByteString -> MyFields a -> a"
2021-08-02 10:05:55 +0200 <kuribas> (or generics, but that doesn't seem to work with GADTs).
2021-08-02 10:06:05 +0200hendursa1(~weechat@user/hendursaga)
2021-08-02 10:08:26 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-08-02 10:10:22 +0200 <kuribas> of course the idea is that this becomes inlined, and reduced to a single indexed bytestring read.
2021-08-02 10:12:39 +0200 <merijn> kuribas: Why not use, like, binary?
2021-08-02 10:12:57 +0200 <kuribas> merijn: because that implies copying.
2021-08-02 10:13:33 +0200 <merijn> How so?
2021-08-02 10:14:08 +0200 <kuribas> merijn: because I need to deserialize the whole thing, no?
2021-08-02 10:14:20 +0200 <kuribas> merijn: where I want only a single field, for example.
2021-08-02 10:14:23 +0200 <merijn> It Depends (TM)
2021-08-02 10:14:45 +0200 <merijn> tbh, if you want to index specific byte locations it sounds like you just want Storable
2021-08-02 10:14:53 +0200earthy(~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0) (Ping timeout: 255 seconds)
2021-08-02 10:15:27 +0200 <kuribas> merijn: that doesn't solve the problem of finding a single field, does it?
2021-08-02 10:16:13 +0200 <merijn> I think I'm missing context here
2021-08-02 10:16:47 +0200aegon(~mike@174.127.249.180) (Quit: leaving)
2021-08-02 10:17:17 +0200 <kuribas> merijn: in my example above, say I want Field2, not Field1
2021-08-02 10:17:22 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-08-02 10:17:26 +0200zeenk(~zeenk@2a02:2f04:a211:a800:553b:3cb0:5ea1:7e83)
2021-08-02 10:17:47 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-02 10:17:50 +0200 <kuribas> here it's only two fields, but in reality it may be a big buffer with several indirections.
2021-08-02 10:18:26 +0200 <merijn> there is no example above
2021-08-02 10:18:34 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 272 seconds)
2021-08-02 10:18:45 +0200 <merijn> There's just a vague handwave of a GADT with no relation to any specific memory layout/whatever
2021-08-02 10:20:00 +0200 <kuribas> merijn: the layout is the order of the data type.
2021-08-02 10:21:06 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
2021-08-02 10:21:12 +0200 <kuribas> So struct MyFields { char field1; unsigned short field2 }.
2021-08-02 10:22:31 +0200 <merijn> You just said you had indirections, though, so that can't be right
2021-08-02 10:23:05 +0200 <kuribas> not in this example
2021-08-02 10:25:19 +0200 <kuribas> merijn: even without indirection, binary will not help
2021-08-02 10:25:22 +0200 <kuribas> or Storable
2021-08-02 10:25:58 +0200 <merijn> How will Storable not help?
2021-08-02 10:26:50 +0200michalz(~michalz@185.246.204.40)
2021-08-02 10:28:37 +0200 <merijn> In fact, storable is really the *only* way to arbitrary indexing
2021-08-02 10:29:20 +0200 <dminuoso> Storable has some really odd UX problems. :(
2021-08-02 10:30:23 +0200 <merijn> hmm?
2021-08-02 10:30:23 +0200 <kuribas> merijn: show me how how to get field2 using storable, without deserializing the whole thing?
2021-08-02 10:30:40 +0200 <merijn> kuribas: Storable lets you just do arbitrary pointer offsets
2021-08-02 10:31:07 +0200 <kuribas> merijn: but the whole idea of my construction is to **not** calculate pointer offsets.
2021-08-02 10:31:12 +0200 <kuribas> Well, not manually.
2021-08-02 10:31:19 +0200 <merijn> kuribas: Sucks to be you then
2021-08-02 10:31:27 +0200 <kuribas> heh, what?
2021-08-02 10:31:30 +0200 <merijn> You can try c2hsc or hsc2hs
2021-08-02 10:31:36 +0200 <merijn> And pray to god it happens to work
2021-08-02 10:32:08 +0200 <merijn> kuribas: You cannot automatically figure out field offsets
2021-08-02 10:32:22 +0200 <kuribas> merijn: you can? It's just summing the offsets.
2021-08-02 10:32:36 +0200 <merijn> It's not possible to correctly. There's a bunch of "best effort" attempts like c2hsc, etc
2021-08-02 10:32:40 +0200 <kuribas> a TH function can do that.
2021-08-02 10:32:44 +0200 <merijn> kuribas: And who defines those offsets?
2021-08-02 10:32:47 +0200 <kuribas> I do?
2021-08-02 10:33:32 +0200 <kuribas> merijn: or are you trying to say that C offsets aren't well defined?
2021-08-02 10:33:48 +0200 <merijn> kuribas: They aren't, because the sizes aren't well defined
2021-08-02 10:34:21 +0200 <kuribas> merijn: the size of Int8 and Word16 seems pretty well defined to me ;-)
2021-08-02 10:34:33 +0200 <merijn> kuribas: Well, no, because those aren't C types
2021-08-02 10:34:49 +0200 <kuribas> sure, so I'll use a typedef with defined sizes?
2021-08-02 10:35:05 +0200 <sergio812> If it's a C/C++ data structure, sizes aren't well defined.
2021-08-02 10:35:07 +0200 <merijn> kuribas: And then you gotta account for padding
2021-08-02 10:35:20 +0200 <merijn> kuribas: Compilers can (and do!) insert padding bytes into structures
2021-08-02 10:35:24 +0200 <dminuoso> merijn: You have a bunch of things that transitively end up doing things like `sizeOf (undefined :: a)`, even though there's values of type `a` around. So you can't trivially handle things like VLAs
2021-08-02 10:35:37 +0200 <dminuoso> at least not while using Foreign
2021-08-02 10:35:42 +0200 <kuribas> merijn: so you cannot cast a ptr in C to a struct?
2021-08-02 10:35:54 +0200 <dminuoso> And it's annoying because it's solveable.
2021-08-02 10:36:00 +0200 <merijn> kuribas: The way c2hsc works is that it generates your struct as C code, generates code that prints out byte offsets for each field and then inserts those into the hsc code
2021-08-02 10:36:13 +0200 <merijn> kuribas: Because that's the only way it will ever interoperate with C
2021-08-02 10:36:21 +0200 <merijn> kuribas: Depends on what pointer
2021-08-02 10:36:25 +0200 <kuribas> merijn: well, luckily I don't even need to go to C if I use this...
2021-08-02 10:36:27 +0200 <sergio812> But if it's a binary format stored on files, the C/C++ implementation probably use typedefs that guarantee(TM) you'll have consistent sizes
2021-08-02 10:36:39 +0200 <sergio812> but they may not be known from Haskell land...
2021-08-02 10:37:01 +0200 <kuribas> merijn: I was of the impression that people cast ptrs read from binary files to C structs...
2021-08-02 10:37:08 +0200 <merijn> kuribas: Yeah, morons do
2021-08-02 10:37:31 +0200 <dminuoso> 10:35:43 kuribas | merijn: so you cannot cast a ptr in C to a struct? <- depends. In simplified terms the C standard defines that you may not access an object through a pointer of an incompatible (i.e. different) type.
2021-08-02 10:37:34 +0200 <merijn> kuribas: "casting ptrs read from binary files" makes no sense, tbh
2021-08-02 10:38:13 +0200 <kuribas> merijn: of course you have to deal with byte ordering. But in my case I assume the byte ordering stays the same...
2021-08-02 10:38:14 +0200 <merijn> You can have a ptr to bytes read from a file and you can (well, imagine some very big scare quotes around that "can") cast that pointer to something
2021-08-02 10:38:32 +0200 <merijn> kuribas: Struct padding is different from ABI to ABI
2021-08-02 10:38:36 +0200 <kuribas> merijn: as it's only for storage, not for distribution.
2021-08-02 10:39:07 +0200 <kuribas> merijn: aren't there pragmas for dealing with padding etc... ?
2021-08-02 10:39:16 +0200 <merijn> kuribas: The only people who dump out struct by "serialise bytes from a pointer" are people who want to hate themselves 3 years from now
2021-08-02 10:39:41 +0200 <merijn> kuribas: You can adds lots of things to make dumb things seem somewhat more reasonable :p
2021-08-02 10:40:11 +0200 <merijn> kuribas: tbh, my first reaction would be to question your very initial assumption that you cannot afford "binary" because it copie
2021-08-02 10:40:13 +0200 <kuribas> So in that case, my haskell solution will be faster than C :)
2021-08-02 10:40:22 +0200 <merijn> Why do you think the overhead of copying will be at all relevant?
2021-08-02 10:40:37 +0200 <merijn> i.e. how big is your data? how sparse is your accessing? how often do you load stuff?
2021-08-02 10:41:09 +0200 <kuribas> merijn: it's chunked time series data. First I look up the timeseries range in the index, then the index points to another buffer with the actual data.
2021-08-02 10:41:14 +0200reumeth(~reumeth@user/reumeth) (Ping timeout: 256 seconds)
2021-08-02 10:41:59 +0200 <merijn> kuribas: I mean, binary has a "skip" combinator
2021-08-02 10:42:22 +0200 <merijn> I don't really see how that indirection would really form a problem if you have an accurate byte offset
2021-08-02 10:42:40 +0200 <kuribas> merijn: accurate byte offset is the problem...
2021-08-02 10:42:43 +0200 <merijn> Your binary parser doesn't really have to parse your entire format
2021-08-02 10:42:58 +0200 <merijn> kuribas: Well, you said you could manually define it
2021-08-02 10:43:44 +0200 <merijn> tbh, the question is still ill-specified as it is unclear whether this is 1) an pre-existing well defined format or 2) a format you're defining and implementing yourself
2021-08-02 10:43:54 +0200 <kuribas> merijn: the latter
2021-08-02 10:44:16 +0200 <merijn> Then you can just define it as whatever is convenient
2021-08-02 10:44:43 +0200 <kuribas> merijn: btw, I wrote a library for reading font formats using binary.
2021-08-02 10:44:48 +0200 <kuribas> It isn't all that clean...
2021-08-02 10:45:26 +0200 <kuribas> lot's of manual byte fiddling...
2021-08-02 10:45:40 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-02 10:47:02 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-08-02 10:47:56 +0200 <kuribas> merijn: in any case, binary and storable solve a different problem from the one I solved above, which is calculating offsets in a safer way.
2021-08-02 10:48:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-08-02 10:48:32 +0200 <merijn> If you are defining a format yourself you can define the format to make the offset easy and just do that?
2021-08-02 10:48:40 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-08-02 10:48:41 +0200 <merijn> I don't understand the problem in that case
2021-08-02 10:49:04 +0200 <merijn> "How do I calculate offsets?" 'well, I dunno man, that depends on how you defined your format...'
2021-08-02 10:49:26 +0200 <kuribas> I mean, I know how to calculate offsets, but I'd prefer the compiler to do it for me...
2021-08-02 10:50:12 +0200 <merijn> You have to define your format somewhere anywhere, so just define the sizes there and then you can just compute it?
2021-08-02 10:50:31 +0200 <merijn> I literally don't understand the problem you're trying to describe
2021-08-02 10:50:55 +0200 <merijn> If you've defined the format, you already have the sizes defined somewhere, so you can just, like, sum them in a function and done?
2021-08-02 10:51:18 +0200 <kuribas> "getField bs WriteLogHead" is more descriptive than "getFieldAt bs 16"
2021-08-02 10:52:30 +0200 <merijn> So define a variable "writeLogHead" whose value is the sum off all the preceding fields?
2021-08-02 10:53:03 +0200 <kuribas> or like, don't, and let the compiler do the sum?
2021-08-02 10:53:15 +0200 <kuribas> why would I want to manually sum byte offsets?
2021-08-02 10:53:59 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it)
2021-08-02 10:54:08 +0200 <merijn> Well, if you wanna write TH code the loops over record fields, inspects their types, computes sizes from that, and sums them, I'm not stopping you
2021-08-02 10:55:11 +0200 <merijn> I mean, it'll take you 3-5 days of hating yourself to figure out the TH code, it will compile slower, no one else on the team will understand it and it'll mess up your compile times *and* ability to cross-compile, but if that seems less effort than "writing out the offsets once in a file"...nobody's stopping you
2021-08-02 10:56:00 +0200 <mastarija> So, I'm looking at this graph of typeclasses on typeclassopedia, https://wiki.haskell.org/File:Typeclassopedia-diagram.png
2021-08-02 10:56:08 +0200 <mastarija> And it says "if there is an arrow from Foo to Bar it means that every Bar is (or should be, or can be made into) a Foo"
2021-08-02 10:56:16 +0200 <mastarija> But that doesn't check out
2021-08-02 10:56:22 +0200 <merijn> mastarija: How so?
2021-08-02 10:56:25 +0200 <mastarija> Arrows should be in the opposite direction
2021-08-02 10:56:33 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 258 seconds)
2021-08-02 10:56:36 +0200 <mastarija> Oh...
2021-08-02 10:56:38 +0200 <merijn> mastarija: No
2021-08-02 10:56:43 +0200 <mastarija> No, I read it wrong
2021-08-02 10:56:47 +0200 <merijn> mastarija: :)
2021-08-02 10:56:50 +0200 <mastarija> xD
2021-08-02 10:56:58 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-02 10:57:09 +0200 <mastarija> But I do think arrows should be reverse :D
2021-08-02 10:57:13 +0200 <merijn> mastarija: Effectively the arrows are "this is a subset of"
2021-08-02 10:57:33 +0200 <mastarija> Yes, but my intuition is "Superset"
2021-08-02 10:57:33 +0200 <merijn> mastarija: I think there's something to be said for both arrow directions
2021-08-02 10:57:54 +0200 <merijn> mastarija: In inheritance you usually point from the superclass to subclass too
2021-08-02 10:58:10 +0200 <merijn> So it seems fairly natural to have arrows from superset to subset
2021-08-02 10:58:20 +0200azeem(~azeem@176.200.220.247)
2021-08-02 10:58:42 +0200 <merijn> It's also how hierarchies are normally represented
2021-08-02 10:58:43 +0200 <mastarija> Yes.. I guess it kind of depends on the context you're coming from
2021-08-02 11:00:44 +0200reumeth(~reumeth@user/reumeth)
2021-08-02 11:00:45 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-08-02 11:01:08 +0200deejaytee(~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk)
2021-08-02 11:01:14 +0200hololeap(~hololeap@user/hololeap)
2021-08-02 11:03:08 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-08-02 11:03:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-08-02 11:03:43 +0200gehmehgeh_(~user@user/gehmehgeh)
2021-08-02 11:04:10 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-08-02 11:04:49 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-08-02 11:05:14 +0200hololeap(~hololeap@user/hololeap)
2021-08-02 11:05:16 +0200gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 244 seconds)
2021-08-02 11:05:21 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net)
2021-08-02 11:12:01 +0200 <kuribas> dminuoso: Storable should use at least Proxy, instead of undefined...
2021-08-02 11:12:16 +0200gehmehgeh_gehmehgeh
2021-08-02 11:12:17 +0200 <kuribas> dminuoso: but it was probably created before Proxy...
2021-08-02 11:12:31 +0200 <dminuoso[m]> kuribas: It should use the value itself.
2021-08-02 11:12:34 +0200 <dminuoso[m]> Otherwise you cant do things like VLAs
2021-08-02 11:13:23 +0200 <kuribas> what's vla?
2021-08-02 11:14:49 +0200 <dminuoso[m]> variable length array
2021-08-02 11:15:51 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Remote host closed the connection)
2021-08-02 11:20:15 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 244 seconds)
2021-08-02 11:20:37 +0200mei(~mei@user/mei)
2021-08-02 11:20:57 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2021-08-02 11:22:00 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 265 seconds)
2021-08-02 11:22:25 +0200azeem(~azeem@176.200.220.247)
2021-08-02 11:29:34 +0200sergio812(~sergio812@lfbn-ren-1-403-102.w2-10.abo.wanadoo.fr) (Ping timeout: 246 seconds)
2021-08-02 11:29:55 +0200__monty__(~toonn@user/toonn)
2021-08-02 11:30:46 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com) (Remote host closed the connection)
2021-08-02 11:31:24 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com)
2021-08-02 11:31:58 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 272 seconds)
2021-08-02 11:32:12 +0200azeem(~azeem@176.200.220.247)
2021-08-02 11:37:55 +0200mastarija_(~mastarija@31.217.8.174)
2021-08-02 11:39:34 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 272 seconds)
2021-08-02 11:40:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-02 11:41:17 +0200mastarija(~mastarija@31.217.8.174) (Ping timeout: 252 seconds)
2021-08-02 11:42:34 +0200jespada(~jespada@90.254.247.46)
2021-08-02 11:43:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 11:44:37 +0200azeem(~azeem@176.200.220.247)
2021-08-02 11:44:42 +0200mei(~mei@user/mei) (Ping timeout: 272 seconds)
2021-08-02 11:44:49 +0200lavaman(~lavaman@98.38.249.169)
2021-08-02 11:45:45 +0200dminuoso(~dminuoso@user/dminuoso) (Quit: ZNC 1.7.5 - https://znc.in)
2021-08-02 11:46:02 +0200dminuoso(~dminuoso@user/dminuoso)
2021-08-02 11:46:11 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-02 11:46:35 +0200pe200012(~pe200012@113.105.10.33)
2021-08-02 11:47:01 +0200dminuoso(~dminuoso@user/dminuoso) (Client Quit)
2021-08-02 11:47:18 +0200dminuoso(~dminuoso@user/dminuoso)
2021-08-02 11:47:59 +0200berberman_(~berberman@user/berberman) (Ping timeout: 252 seconds)
2021-08-02 11:48:31 +0200berberman(~berberman@user/berberman)
2021-08-02 11:49:04 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-08-02 11:49:14 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 11:49:46 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-08-02 11:50:32 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
2021-08-02 11:51:36 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-08-02 11:52:25 +0200 <Taneb> As a mild curiosity thing, are there any widely used libraries on Hackage with one- or two-character names?
2021-08-02 11:54:18 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-02 11:54:53 +0200 <nshepperd> ad and gl are the only ones that come to mind. not sure how widely used they are
2021-08-02 11:55:07 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 11:55:08 +0200 <Taneb> Ah yeah, I should have thought of those, I've used both of them
2021-08-02 11:56:19 +0200 <nshepperd> edwardk: readme for gl needs an update to point away from freenode :)
2021-08-02 12:00:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-08-02 12:00:55 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 12:03:10 +0200anandprabhu(~anandprab@94.202.243.198)
2021-08-02 12:03:34 +0200mastarija_(~mastarija@31.217.8.174) (Ping timeout: 265 seconds)
2021-08-02 12:03:53 +0200 <deejaytee> Taneb: https://pastebin.com/yB6VMKJa these are the ones I got off of Hackage - no idea if any of them are particularly well-used
2021-08-02 12:03:58 +0200ubert(~Thunderbi@91.141.47.113.wireless.dyn.drei.com)
2021-08-02 12:05:50 +0200 <Taneb> deejaytee: thanks for that
2021-08-02 12:05:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-02 12:06:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 12:09:16 +0200mastarija_(~mastarija@31.217.8.174)
2021-08-02 12:11:15 +0200earthy(~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0)
2021-08-02 12:11:32 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 252 seconds)
2021-08-02 12:12:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-08-02 12:12:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 12:13:44 +0200acidjnk_new3(~acidjnk@p200300d0c72b95041d34620f200961c0.dip0.t-ipconnect.de)
2021-08-02 12:16:07 +0200mastarija__(~mastarija@31.217.8.174)
2021-08-02 12:17:00 +0200acidjnk_new(~acidjnk@p200300d0c72b9504b8b6f59e7f78d4aa.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2021-08-02 12:18:33 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-08-02 12:18:57 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 12:19:31 +0200 <kuribas> Why does template haskell got such a bad name?
2021-08-02 12:19:32 +0200mastarija_(~mastarija@31.217.8.174) (Ping timeout: 272 seconds)
2021-08-02 12:19:45 +0200 <kuribas> I find it easier to get correct TH than correct macros in lisp...
2021-08-02 12:20:06 +0200 <kuribas> probably due to the more structured AST
2021-08-02 12:20:13 +0200jippiedoe(~david@2a02-a448-48bd-1-6c05-d94f-4fec-758a.fixed6.kpn.net)
2021-08-02 12:21:13 +0200gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 244 seconds)
2021-08-02 12:21:26 +0200 <dminuoso> What makes you think it has a bad name?
2021-08-02 12:21:29 +0200gehmehgeh(~user@user/gehmehgeh)
2021-08-02 12:21:33 +0200xsperry(~as@user/xsperry) (Remote host closed the connection)
2021-08-02 12:21:54 +0200 <kuribas> for example, merijn's comments
2021-08-02 12:22:06 +0200 <dminuoso> Though, I can think of a few things I dislike about TH. Unbounded access to IO means that every time I run `cabal update` I risk running malware on the machine.
2021-08-02 12:22:32 +0200 <kuribas> true, but that's also true for any installer
2021-08-02 12:22:42 +0200 <dminuoso> Is it true for any _compiler_?
2021-08-02 12:22:54 +0200 <kuribas> I don't know :P ...
2021-08-02 12:23:27 +0200 <dminuoso> The problem is not what `cabal update` itself does. But any subsequent `cabal build` or bumping bounds can run arbitrary code on my machine.
2021-08-02 12:23:52 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-02 12:24:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-08-02 12:24:45 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 12:30:18 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-08-02 12:31:00 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 12:34:26 +0200hendursa1(~weechat@user/hendursaga) (Remote host closed the connection)
2021-08-02 12:34:47 +0200hendursa1(~weechat@user/hendursaga)
2021-08-02 12:36:03 +0200chris_(~chris@81.96.113.213)
2021-08-02 12:36:38 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-08-02 12:37:04 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 12:46:18 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 240 seconds)
2021-08-02 12:46:41 +0200azeem(~azeem@176.200.220.247)
2021-08-02 12:47:00 +0200favonia(~favonia@user/favonia)
2021-08-02 12:47:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-08-02 12:47:40 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-02 12:48:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 12:51:12 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 272 seconds)
2021-08-02 12:51:46 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-08-02 12:54:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-08-02 12:54:41 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 12:55:38 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-08-02 12:57:57 +0200octeep(~octeep@42-2-223-196.static.netvigator.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-08-02 13:02:45 +0200haskell-lurk(~haskell-l@78.155.54.115) (Quit: Client closed)
2021-08-02 13:03:40 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-08-02 13:04:25 +0200hololeap(~hololeap@user/hololeap)
2021-08-02 13:08:09 +0200haskell-lurk(~haskell-l@78.155.54.115)
2021-08-02 13:13:30 +0200_bin(~bin@user/bin/x-1583188) (Ping timeout: 240 seconds)
2021-08-02 13:13:50 +0200_bin(~bin@user/bin/x-1583188)
2021-08-02 13:14:42 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 240 seconds)
2021-08-02 13:18:58 +0200pe200012(~pe200012@113.105.10.33) (Quit: Konversation terminated!)
2021-08-02 13:20:04 +0200azeem(~azeem@176.200.220.247)
2021-08-02 13:24:24 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 276 seconds)
2021-08-02 13:24:46 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 272 seconds)
2021-08-02 13:26:06 +0200mastarija_(~mastarija@31.217.8.174)
2021-08-02 13:26:14 +0200pe200012(~pe200012@113.105.10.33)
2021-08-02 13:27:13 +0200azeem(~azeem@176.200.220.247)
2021-08-02 13:29:36 +0200mastarija__(~mastarija@31.217.8.174) (Ping timeout: 265 seconds)
2021-08-02 13:36:24 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 258 seconds)
2021-08-02 13:36:39 +0200azeem(~azeem@176.200.220.247)
2021-08-02 13:36:50 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 13:40:38 +0200reumeth(~reumeth@user/reumeth) (Ping timeout: 252 seconds)
2021-08-02 13:42:37 +0200mastarija__(~mastarija@31.217.8.174)
2021-08-02 13:45:59 +0200mastarija_(~mastarija@31.217.8.174) (Ping timeout: 258 seconds)
2021-08-02 13:49:45 +0200reumeth(~reumeth@user/reumeth)
2021-08-02 13:50:52 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 265 seconds)
2021-08-02 13:51:21 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-08-02 13:51:23 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-08-02 13:51:37 +0200jneira(~jneira@212.8.115.226)
2021-08-02 13:51:54 +0200azeem(~azeem@176.200.220.247)
2021-08-02 13:56:10 +0200poljar1(~poljar@93-139-4-196.adsl.net.t-com.hr)
2021-08-02 13:56:40 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 265 seconds)
2021-08-02 13:57:42 +0200poljar(~poljar@93-139-92-135.adsl.net.t-com.hr) (Ping timeout: 272 seconds)
2021-08-02 13:58:20 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-02 14:00:03 +0200shailangsa(~shailangs@host86-186-196-233.range86-186.btcentralplus.com) (Ping timeout: 268 seconds)
2021-08-02 14:00:25 +0200chris_(~chris@81.96.113.213)
2021-08-02 14:00:51 +0200azeem(~azeem@176.200.220.247)
2021-08-02 14:02:05 +0200xff0x(~xff0x@2001:1a81:53e4:9a00:e1e1:9272:fb77:3704) (Ping timeout: 252 seconds)
2021-08-02 14:02:43 +0200xff0x(~xff0x@2001:1a81:53e4:9a00:e1e1:9272:fb77:3704)
2021-08-02 14:02:46 +0200ubert(~Thunderbi@91.141.47.113.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
2021-08-02 14:03:42 +0200enoq(~enoq@194-208-179-35.lampert.tv)
2021-08-02 14:06:29 +0200deejaytee(~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) (Ping timeout: 252 seconds)
2021-08-02 14:10:11 +0200Guest72(~Guest72@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
2021-08-02 14:11:28 +0200thyriaen(~thyriaen@x4dbfed8a.dyn.telefonica.de) (Quit: Leaving)
2021-08-02 14:11:47 +0200 <Guest72> is `callback fetch` something well-known and defined in Haskell world?
2021-08-02 14:13:50 +0200 <dminuoso> Probably not.
2021-08-02 14:14:08 +0200 <dminuoso> What exactly are you referring to? The function `callback`?
2021-08-02 14:14:13 +0200 <dminuoso> The value `fetch`?
2021-08-02 14:16:23 +0200Guest72rond_
2021-08-02 14:18:08 +0200alx741(~alx741@186.178.108.145)
2021-08-02 14:18:40 +0200 <rond_> `fetch` is a callback; I thought that maybe it's well-defined somewhere; probably not, I need to read more and perhaps I'll come back with follow-up questions
2021-08-02 14:20:06 +0200 <merijn> rond_: tbh at this point I have 0 idea what you're asking, so that makes answering...tricky :p
2021-08-02 14:20:09 +0200 <dminuoso> Well it likely is defined *somewhere* if you're reading it somewhere. :)
2021-08-02 14:20:28 +0200 <merijn> I don't even know what "callback fetch" is in any context
2021-08-02 14:20:47 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 252 seconds)
2021-08-02 14:22:48 +0200 <rond_> the "0 idea what you're asking for" fully answers my question. If `fetch` was well-known, then you'd know what's the question about. I.e. you'd recognize `State monad` phrase or alikes :) thank you!
2021-08-02 14:23:34 +0200 <merijn> rond_: State monad terminology is usually get/put
2021-08-02 14:23:49 +0200goepsilongo(~chacho@2603-7000-ab00-62ed-0000-0000-0000-0bd0.res6.spectrum.com) (Quit: Konversation terminated!)
2021-08-02 14:27:36 +0200 <merijn> Entirely unrelated question
2021-08-02 14:28:01 +0200 <merijn> If you have a command that takes a file to diff vs a "default" configuration
2021-08-02 14:28:33 +0200 <merijn> Should the file argument be treated as "the old" and the default as "new" or vice versa.
2021-08-02 14:28:36 +0200 <sshine> rond_, is this javascript terminology? in that case, you can get calbacks by passing a function as an argument, and 'fetch' appears to be async browser requests? so... that depends on how you run Haskell in the browser...
2021-08-02 14:30:17 +0200 <sshine> rond_, if you mean how to write concurrent/async code in Haskell, you generally don't use promises. there's basic forking: https://github.com/crabmusket/haskell-simple-concurrency/blob/master/src/tutorial.md -- and then there's a number of abstractions built on top of that.
2021-08-02 14:30:18 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-08-02 14:30:27 +0200MQ-17J(~MQ-17J@8.6.144.192)
2021-08-02 14:30:57 +0200shailangsa(~shailangs@host86-186-196-233.range86-186.btcentralplus.com)
2021-08-02 14:31:34 +0200 <rond_> thank you all! :) It turned out to be a project-specific term; sorry for the confusion!
2021-08-02 14:33:47 +0200 <sshine> ah :) yeah, fetch is a very generic term.
2021-08-02 14:36:52 +0200shailangsa(~shailangs@host86-186-196-233.range86-186.btcentralplus.com) ()
2021-08-02 14:38:10 +0200markpythonicbitc(~textual@2601:647:5a00:35:ccd8:d07e:17cb:5010) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-08-02 14:40:49 +0200PinealGlandOptic(~PinealGla@37.115.210.35) (Quit: leaving)
2021-08-02 14:40:56 +0200xff0x(~xff0x@2001:1a81:53e4:9a00:e1e1:9272:fb77:3704) (Ping timeout: 256 seconds)
2021-08-02 14:41:54 +0200xff0x(~xff0x@2001:1a81:53e4:9a00:3689:c5ce:3234:2238)
2021-08-02 14:43:57 +0200Melantha(~pyon@user/pyon)
2021-08-02 14:44:16 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
2021-08-02 14:45:06 +0200Putonlalla(~sapekiis@it-cyan.it.jyu.fi)
2021-08-02 14:45:07 +0200fendor_(~fendor@178.115.48.162.wireless.dyn.drei.com)
2021-08-02 14:47:12 +0200deejaytee(~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net)
2021-08-02 14:47:37 +0200mastarija_(~mastarija@31.217.8.174)
2021-08-02 14:47:46 +0200fendor(~fendor@77.119.222.253.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
2021-08-02 14:49:23 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-02 14:49:38 +0200deejaytee(~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Killed (zirconium.libera.chat (Nickname regained by services)))
2021-08-02 14:49:43 +0200deejaytee(~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk)
2021-08-02 14:50:42 +0200mastarija__(~mastarija@31.217.8.174) (Ping timeout: 240 seconds)
2021-08-02 14:53:50 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-08-02 14:58:00 +0200jolly(~jolly@208.180.97.158)
2021-08-02 14:59:38 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 256 seconds)
2021-08-02 15:00:57 +0200ornxka(~ornxka@user/ornxka) (Ping timeout: 265 seconds)
2021-08-02 15:01:31 +0200ornxka(~ornxka@user/ornxka)
2021-08-02 15:02:41 +0200mastarija_(~mastarija@31.217.8.174) (Ping timeout: 252 seconds)
2021-08-02 15:03:10 +0200acidjnk_new(~acidjnk@p5487d90a.dip0.t-ipconnect.de)
2021-08-02 15:03:42 +0200 <kritzefitz> merijn, the way you describe it I think the default should be old and the file should be new. But I guess it depends on what exactly the default is used for.
2021-08-02 15:03:44 +0200azeem(~azeem@176.200.220.247)
2021-08-02 15:03:59 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-08-02 15:04:40 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-08-02 15:04:50 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:4a3f:fe34:92c5:875c) (Ping timeout: 272 seconds)
2021-08-02 15:05:07 +0200Alex_test(~al_test@178.34.150.193) (Quit: ;-)
2021-08-02 15:05:28 +0200AlexZenon(~alzenon@178.34.150.193) (Quit: ;-)
2021-08-02 15:05:31 +0200AlexNoo(~AlexNoo@178.34.150.193) (Quit: Leaving)
2021-08-02 15:06:28 +0200Igor(~Igor@109.252.65.176)
2021-08-02 15:06:50 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it)
2021-08-02 15:07:18 +0200shailangsa(~shailangs@host86-186-196-233.range86-186.btcentralplus.com)
2021-08-02 15:07:22 +0200acidjnk_new3(~acidjnk@p200300d0c72b95041d34620f200961c0.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2021-08-02 15:08:11 +0200tungki(~tngk@subs30-116-206-14-0.three.co.id)
2021-08-02 15:12:14 +0200Igor(~Igor@109.252.65.176) (Quit: Client closed)
2021-08-02 15:13:02 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 265 seconds)
2021-08-02 15:15:03 +0200azeem(~azeem@176.200.220.247)
2021-08-02 15:16:48 +0200AlexZenon(~alzenon@178.34.150.193)
2021-08-02 15:20:20 +0200markpythonicbitc(~textual@50.228.44.6)
2021-08-02 15:21:11 +0200Alex_test(~al_test@178.34.150.193)
2021-08-02 15:21:22 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 240 seconds)
2021-08-02 15:21:50 +0200azeem(~azeem@176.200.220.247)
2021-08-02 15:22:13 +0200deejaytee(~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) (Remote host closed the connection)
2021-08-02 15:22:42 +0200deejaytee(~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk)
2021-08-02 15:22:45 +0200AlexNoo(~AlexNoo@178.34.150.193)
2021-08-02 15:23:43 +0200Sgeo(~Sgeo@user/sgeo)
2021-08-02 15:25:44 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
2021-08-02 15:25:57 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-02 15:26:34 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-08-02 15:27:52 +0200tngk(~tngk@subs30-116-206-14-53.three.co.id)
2021-08-02 15:28:33 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 276 seconds)
2021-08-02 15:28:54 +0200tungki(~tngk@subs30-116-206-14-0.three.co.id) (Ping timeout: 272 seconds)
2021-08-02 15:29:11 +0200mastarija_(~mastarija@31.217.8.174)
2021-08-02 15:33:49 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net)
2021-08-02 15:33:54 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 272 seconds)
2021-08-02 15:35:45 +0200kuribas(~user@ptr-25vy0i94rzok8s66yz2.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-08-02 15:36:28 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
2021-08-02 15:36:33 +0200pesada(~agua@2804:14c:8793:8e2f:64f8:45c2:2056:5625)
2021-08-02 15:36:52 +0200azeem(~azeem@176.200.220.247)
2021-08-02 15:37:30 +0200anandprabhu(~anandprab@94.202.243.198) (Quit: Leaving)
2021-08-02 15:38:26 +0200agua(~agua@2804:18:7d:7d0f:1:0:789f:b031) (Ping timeout: 252 seconds)
2021-08-02 15:39:42 +0200tngktungki
2021-08-02 15:46:38 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 272 seconds)
2021-08-02 15:47:03 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-02 15:48:20 +0200chris_(~chris@81.96.113.213)
2021-08-02 15:48:32 +0200tungki(~tngk@subs30-116-206-14-53.three.co.id) (Ping timeout: 272 seconds)
2021-08-02 15:51:06 +0200azeem(~azeem@176.200.220.247)
2021-08-02 15:51:24 +0200nvmd(~nvmd@user/nvmd)
2021-08-02 15:56:11 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-08-02 15:57:14 +0200 <boxscape> is there a canonical word for "value of a singleton type"?
2021-08-02 15:57:38 +0200 <boxscape> ..."singleton"?
2021-08-02 15:58:43 +0200 <boxscape> looking at the documentation of singletons is looks like yes. Somehow I didn't think of that until just now
2021-08-02 15:59:08 +0200 <boxscape> (of using the word "singleton" for it I mean)
2021-08-02 15:59:26 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-08-02 16:06:16 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 272 seconds)
2021-08-02 16:07:04 +0200azeem(~azeem@176.200.220.247)
2021-08-02 16:07:13 +0200tungki(~tngk@subs30-116-206-14-53.three.co.id)
2021-08-02 16:07:32 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 272 seconds)
2021-08-02 16:08:10 +0200gambpang(~ian@207.181.230.156) (Ping timeout: 272 seconds)
2021-08-02 16:09:03 +0200 <sshine> boxscape, "unit"?
2021-08-02 16:10:17 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
2021-08-02 16:10:18 +0200 <boxscape> sshine, hm, perhaps. In the particular case I have (writing a comment explaining something about the value) I prefer something that evokes some relationship to singleton types
2021-08-02 16:10:32 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 16:10:32 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 16:14:29 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-08-02 16:15:49 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 16:16:15 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 16:17:35 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 16:20:36 +0200 <Athas> boxscape: "the value"!
2021-08-02 16:20:41 +0200 <Athas> There is only one, after all.
2021-08-02 16:21:17 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 16:21:49 +0200 <boxscape> hm, yes I suppose I could just "the value of a singleton type for <some type variable>" instead of insisting on a single word
2021-08-02 16:21:56 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-08-02 16:22:59 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 16:23:05 +0200 <deejaytee> "inhabitant" comes to mind
2021-08-02 16:24:08 +0200 <Athas> Suddenly Bob Harper appears and points out that in Haskell, every type is also inhabited by bottom.
2021-08-02 16:25:14 +0200 <deejaytee> *forms a T with fingers, like a cross without its top* back, back to where you came from, foul bottom!
2021-08-02 16:25:34 +0200 <boxscape> except we now have -XUnliftedData
2021-08-02 16:25:35 +0200 <boxscape> I don't think I've seen anyone use it for singletons though
2021-08-02 16:26:00 +0200 <deejaytee> back to the realm you inhabi-- oh...
2021-08-02 16:26:11 +0200 <boxscape> (actually -XUnliftedDatatypes)
2021-08-02 16:26:32 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 16:26:59 +0200jneira_(~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Quit: Connection closed)
2021-08-02 16:27:53 +0200jneira_(~jneira_@28.red-80-28-169.staticip.rima-tde.net)
2021-08-02 16:28:16 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 16:28:30 +0200 <boxscape> seems to work just fine with singletons though, maybe it's not even a bad idea to do that
2021-08-02 16:28:45 +0200 <merijn> Athas: Bob Harper is the "Um, Actually..." of FP :p
2021-08-02 16:28:56 +0200 <Athas> merijn: more like the "Objection!"
2021-08-02 16:29:01 +0200mastarija__(~mastarija@31.217.8.174)
2021-08-02 16:30:28 +0200 <boxscape> er hold up
2021-08-02 16:30:30 +0200 <boxscape> I got a seg fault trying to do that
2021-08-02 16:30:30 +0200 <boxscape> that's not good
2021-08-02 16:30:42 +0200 <boxscape> should probably recompile from HEAD and see if that still happens
2021-08-02 16:31:36 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 16:31:56 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 16:32:28 +0200 <raehik> generic-lens has a really cool typeclass hasType that I can use to make generic statements about required context in a MonadReader. But it doesn't go through multiple layers of records. Is there a method for me to achieve that (while using generic-lens where possible)?
2021-08-02 16:32:34 +0200mastarija_(~mastarija@31.217.8.174) (Ping timeout: 256 seconds)
2021-08-02 16:32:39 +0200 <raehik> MWE here https://paste.tomsmeding.com/wemNYUPl
2021-08-02 16:33:01 +0200rond_(~Guest72@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Ping timeout: 246 seconds)
2021-08-02 16:33:29 +0200 <boxscape> (specifically I got the segfault trying https://paste.tomsmeding.com/69xli0tn in ghci)
2021-08-02 16:33:42 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-08-02 16:35:16 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-08-02 16:36:47 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 16:37:06 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 16:37:20 +0200Patternm1ster(~georg@li1192-118.members.linode.com) (Quit: leaving)
2021-08-02 16:37:36 +0200Patternmaster(~georg@li1192-118.members.linode.com)
2021-08-02 16:38:39 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-08-02 16:38:44 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2)
2021-08-02 16:38:48 +0200 <Lycurgus> pavonia, should you read this, the random individual yesterday basically asked if haskell was a chinese room for functions
2021-08-02 16:39:15 +0200 <Lycurgus> that's the objection
2021-08-02 16:39:27 +0200 <Lycurgus> and memoization doesn't amount to that
2021-08-02 16:39:27 +0200 <merijn> Athas: Now I'm imagining him in a Phoenix Wright gif ;)
2021-08-02 16:39:29 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 16:41:36 +0200 <amesgen[m]> Does anybody know of existing attempts to create a fuzzer for (at least parseable) Haskell source code?
2021-08-02 16:41:58 +0200fendor_fendor
2021-08-02 16:42:36 +0200 <Lycurgus> fuzzer? is that like an obfuscator?
2021-08-02 16:43:15 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 16:43:17 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 16:43:30 +0200 <amesgen[m]> basically an `Arbitrary` instance for Haskell source code, not really related to obfuscation
2021-08-02 16:43:45 +0200 <Athas> It's not difficult to generate parseable source code when you have a grammar. The problem is that the (vast) majority of those programs would not be type correct.
2021-08-02 16:44:11 +0200 <Athas> It's much easier to do this for C (as in csmith).
2021-08-02 16:44:20 +0200 <amesgen[m]> type correctness is not that important, I want to fuzz source code formatters
2021-08-02 16:45:18 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:ce6e:8d5b:412c:109f)
2021-08-02 16:45:23 +0200 <merijn> oof
2021-08-02 16:45:28 +0200 <merijn> RIP your sanity then :p
2021-08-02 16:45:37 +0200 <merijn> I don't think such a thing exists atm
2021-08-02 16:46:02 +0200 <merijn> It shouldn't be too hard to invent something, but thinking about testing it gives me nightmares :p
2021-08-02 16:46:04 +0200 <amesgen[m]> I saw something like this for Scala, and it found a lot of weird errors
2021-08-02 16:46:04 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-08-02 16:46:19 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-08-02 16:46:22 +0200Lycurgusmakes a psychological adjustment
2021-08-02 16:47:33 +0200 <nshepperd> (a chinese room for functions? isn't that everything a computer does?)
2021-08-02 16:47:57 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-08-02 16:48:58 +0200 <amesgen[m]> FTR: https://github.com/alexknvl/fuzzball <- the scala (or dotty, rather) fuzzer
2021-08-02 16:50:33 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 16:50:42 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-02 16:51:38 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 265 seconds)
2021-08-02 16:52:56 +0200 <Lycurgus> i c, so it's an approach alternative to quickcheck oder; another culture clash thing
2021-08-02 16:52:58 +0200reumeth(~reumeth@user/reumeth) (Ping timeout: 256 seconds)
2021-08-02 16:54:42 +0200 <Lycurgus> nshepperd, an abstract conceptual computer perhaps
2021-08-02 16:55:21 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-08-02 16:55:30 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 265 seconds)
2021-08-02 16:56:16 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-08-02 16:56:25 +0200 <Lycurgus> gedanken versuch vs real thing
2021-08-02 16:56:34 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-02 16:56:59 +0200mastarija__(~mastarija@31.217.8.174) (Quit: Leaving)
2021-08-02 16:58:50 +0200 <merijn> Lycurgus: Not really
2021-08-02 16:58:57 +0200 <merijn> Or maybe
2021-08-02 16:59:30 +0200 <merijn> Lycurgus: quickcheck happens at the "I'm programming level" where you have access to code
2021-08-02 16:59:47 +0200 <merijn> fuzzing is more about "throwing random inputs at programs and see if they crash"
2021-08-02 17:00:02 +0200 <merijn> So it tends to be more black-box
2021-08-02 17:00:15 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
2021-08-02 17:00:47 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 17:02:17 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-02 17:03:26 +0200 <merijn> At which point was <$> moved into Prelude? I'm getting a redundant import warning on GHC 8.8
2021-08-02 17:03:36 +0200 <merijn> (for Control.Applicative)
2021-08-02 17:03:47 +0200chris_(~chris@81.96.113.213)
2021-08-02 17:03:54 +0200tungki(~tngk@subs30-116-206-14-53.three.co.id) (Ping timeout: 240 seconds)
2021-08-02 17:04:04 +0200 <Lycurgus> merijn, exactly
2021-08-02 17:04:07 +0200favonia(~favonia@user/favonia) (Quit: Leaving)
2021-08-02 17:04:52 +0200 <merijn> Lycurgus: quickcheck is generally more grey/white box testing
2021-08-02 17:05:40 +0200 <Lycurgus> so you think black box hs code testing makes sense?
2021-08-02 17:06:04 +0200 <merijn> He wants to blackbox test Haskell code formatters
2021-08-02 17:06:04 +0200 <Athas> merijn: GHC 7.10 implemented the Functor-Applicative-Monad proposal I think, so surely it was before then?
2021-08-02 17:06:13 +0200phma_phma
2021-08-02 17:06:13 +0200 <merijn> Athas: No
2021-08-02 17:06:20 +0200 <merijn> Athas: Because 8.0 compiles fine
2021-08-02 17:06:25 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-02 17:06:30 +0200 <merijn> I don't support pre-8.0 anyway, so I would've removed it then
2021-08-02 17:06:34 +0200 <geekosaur> Athas, no, moving it to Prelude happened later
2021-08-02 17:06:53 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-02 17:07:00 +0200 <merijn> Lycurgus: Whether those Haskell code formatters are written in Haskell was unspecified and not really relevant for purposes of testing them
2021-08-02 17:07:02 +0200 <Athas> merijn: out of curiosity, what are you hacking on?
2021-08-02 17:07:08 +0200 <geekosaur> but I don't know exactly when
2021-08-02 17:07:27 +0200 <merijn> Athas: Finally updating the CI for some of my packages so I can, you know, release 9.0 and 9.2 compatible versions :p
2021-08-02 17:08:18 +0200 <merijn> I guess it was moved in 8.8, because 8.4 and 8.6 work too >.>
2021-08-02 17:08:31 +0200 <Athas> Oh right, I like your website for this project: http://www.snet-home.org/
2021-08-02 17:08:58 +0200 <merijn> Athas: That package is dead anyway, stopped getting paid for that in 2012 :p
2021-08-02 17:10:22 +0200Guest72(~Guest72@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
2021-08-02 17:10:34 +0200 <merijn> oh, wait
2021-08-02 17:10:46 +0200 <merijn> Maybe the real problem isn't "<$> moved to Prelude
2021-08-02 17:11:04 +0200 <merijn> Maybe my real problem is: "When did -Wunused-imports move into -Wall or -Wcompat"
2021-08-02 17:11:27 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
2021-08-02 17:11:33 +0200 <c_wraith> I remember unused imports being part of -Wall back in 6.8
2021-08-02 17:11:52 +0200 <merijn> ok, so then it *is* the problem of when was <$> moved :p
2021-08-02 17:13:23 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 265 seconds)
2021-08-02 17:14:32 +0200 <Athas> I think GHC sometimes tweaks the rules for when an import is unused.
2021-08-02 17:14:51 +0200 <Athas> I was surprised at some point that the property isn't "if this import can be removed and the program still works, then it is redundant".
2021-08-02 17:14:52 +0200 <merijn> Sure, but I'm pretty sure <$> went into Prelude in recent history
2021-08-02 17:15:29 +0200 <Athas> Yeah, sometime between 2013 and 2021, because I remember having to import some module to get it when I first started writing Haskell every day.
2021-08-02 17:16:54 +0200tungki(~tngk@subs30-116-206-14-53.three.co.id)
2021-08-02 17:17:02 +0200 <Athas> It was added in base 4.8.
2021-08-02 17:17:06 +0200tungki(~tngk@subs30-116-206-14-53.three.co.id) (Client Quit)
2021-08-02 17:17:15 +0200 <Athas> That's 7.10.
2021-08-02 17:18:58 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-08-02 17:18:59 +0200 <merijn> Then why do my 8.0-8.6 tests work >.<
2021-08-02 17:19:41 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 255 seconds)
2021-08-02 17:21:50 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-08-02 17:23:17 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-08-02 17:23:51 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se) (Read error: Connection reset by peer)
2021-08-02 17:25:26 +0200acidjnk_new(~acidjnk@p5487d90a.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2021-08-02 17:26:38 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius)
2021-08-02 17:33:02 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 272 seconds)
2021-08-02 17:34:30 +0200Atum_(~IRC@user/atum/x-2392232)
2021-08-02 17:34:46 +0200azeem(~azeem@176.200.220.247)
2021-08-02 17:39:43 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-02 17:44:22 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 272 seconds)
2021-08-02 17:46:36 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:ce6e:8d5b:412c:109f) (Quit: WeeChat 2.8)
2021-08-02 17:46:54 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 272 seconds)
2021-08-02 17:47:01 +0200 <lechner> sm: Hi, I may try to migrate the Debian Wiki from MoinMoin. Have you kept up, by ony chance, on the best work-around for the missing pandoc reader? Thanks! https://github.com/jgm/pandoc/issues/185
2021-08-02 17:47:22 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
2021-08-02 17:48:16 +0200 <merijn> FML
2021-08-02 17:48:31 +0200 <merijn> Apparently 8.0 doesn't yet support "-Wwarn=" >.>
2021-08-02 17:48:41 +0200mei(~mei@user/mei)
2021-08-02 17:50:04 +0200azeem(~azeem@176.200.220.247)
2021-08-02 17:53:06 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
2021-08-02 17:53:28 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 17:53:55 +0200mei(~mei@user/mei) (Quit: mei)
2021-08-02 17:54:12 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-08-02 17:55:09 +0200 <myShoggoth> I will be streaming HF Office Hours in a few minutes! https://www.twitch.tv/myshoggoth
2021-08-02 17:55:17 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 17:55:33 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 18:01:40 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
2021-08-02 18:01:53 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 18:02:36 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 276 seconds)
2021-08-02 18:03:20 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-08-02 18:06:06 +0200azeem(~azeem@176.200.220.247)
2021-08-02 18:06:45 +0200euouae(~euouae@user/euouae)
2021-08-02 18:07:05 +0200 <euouae> Hello is cabal using nix style module system now ?
2021-08-02 18:07:15 +0200 <euouae> my cabal is about a year old and I want to update
2021-08-02 18:07:47 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
2021-08-02 18:08:30 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 18:08:34 +0200markpythonicbitc(~textual@50.228.44.6) (Ping timeout: 240 seconds)
2021-08-02 18:09:09 +0200 <davean> euouae: Uh, has for years?
2021-08-02 18:09:26 +0200 <davean> since 2016?
2021-08-02 18:09:33 +0200 <euouae> By default now, right ? My man pages say it’s experimental
2021-08-02 18:09:43 +0200 <euouae> I was reading my man pages to learn some cabal
2021-08-02 18:09:49 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 18:10:17 +0200 <euouae> Is there a way to download docs for offline reading for cabal ?
2021-08-02 18:10:55 +0200 <davean> Think that was more like 2 years ago, not sure the exact date. What version are you on? And what docs do you want?
2021-08-02 18:11:31 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 18:11:37 +0200 <davean> Yah, looks like nix stuff went default in Aug 2019
2021-08-02 18:12:03 +0200 <euouae> Right now my laptop is turned off
2021-08-02 18:12:22 +0200 <euouae> I want the latest cabal version and docs
2021-08-02 18:12:45 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 18:13:02 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 245 seconds)
2021-08-02 18:13:15 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-02 18:13:15 +0200 <davean> https://www.haskell.org/cabal/download.html but you can generally just do "cabal install cabal-install"
2021-08-02 18:13:50 +0200 <sclv> for docs: https://readthedocs.org/projects/cabal/downloads/
2021-08-02 18:14:16 +0200 <sclv> i note there's no downloads for the 3.4 tag tho, not sure how those are created!
2021-08-02 18:14:55 +0200 <euouae> That’s okay thank you
2021-08-02 18:15:17 +0200 <euouae> Can I ask cabal with the dry run to tell me the total MB to be downloaded.
2021-08-02 18:15:19 +0200 <euouae> ?
2021-08-02 18:15:31 +0200 <sclv> no
2021-08-02 18:15:33 +0200gambpang(~ian@207.181.230.156)
2021-08-02 18:15:44 +0200delYsid(~user@84-115-55-45.cable.dynamic.surfer.at)
2021-08-02 18:15:53 +0200 <sclv> dry run is an offline mode -- to know how much it would need to download it would need to query sizes
2021-08-02 18:16:51 +0200IgorZhiltsov(~IgorZhilt@109-252-65-176.nat.spd-mgts.ru)
2021-08-02 18:17:02 +0200 <euouae> Oh ok, but can I query otherwise ?
2021-08-02 18:17:51 +0200 <sclv> there's no feature that tells you ahead of time how much it will download
2021-08-02 18:17:56 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-08-02 18:18:05 +0200 <euouae> Hmm okay
2021-08-02 18:18:45 +0200 <euouae> For a year old installation what can I expect? One GB?
2021-08-02 18:19:15 +0200 <sclv> what do you mean, if you type `cabal install cabal-install`?
2021-08-02 18:19:15 +0200pavonia(~user@user/siracusa)
2021-08-02 18:19:37 +0200 <sclv> cabal packages are just source, they're tiny
2021-08-02 18:19:47 +0200 <sclv> the cost will largely be in terms of what's generated by ghc in binary size
2021-08-02 18:20:02 +0200econo(uid147250@user/econo)
2021-08-02 18:20:08 +0200 <sclv> i'd estimate far less than a gig, on the order of a few hundred megs, but its a guess
2021-08-02 18:20:25 +0200 <sclv> or you can just download the binary itself from the link davean gave, which is tiny, and involves no additional footprint
2021-08-02 18:20:25 +0200 <euouae> Nice thank you
2021-08-02 18:22:03 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 18:22:14 +0200 <davean> euouae: Yah, you're talking single digit MiB on the high side
2021-08-02 18:22:26 +0200 <davean> euouae: I don't think anyone wrote that because no one cared to check :)
2021-08-02 18:22:33 +0200 <euouae> Hehe ooh okay
2021-08-02 18:22:57 +0200 <euouae> Yeah Internet can be expensive in the absence of competition
2021-08-02 18:23:39 +0200 <davean> Understood, Infact I've had that problem, so I actually did a thing to download all of hackage - everything you might install with cabal install - in 1.4GiB
2021-08-02 18:23:54 +0200pschorf(~user@c-73-77-28-188.hsd1.tx.comcast.net)
2021-08-02 18:23:58 +0200 <davean> Mine is more expensive in non-monitary cost - access can be limited
2021-08-02 18:24:13 +0200 <euouae> I see
2021-08-02 18:24:44 +0200 <euouae> Ok if all of hackage is that much then I think I’m good hehe
2021-08-02 18:25:30 +0200 <davean> Well I do a lot of compression, but I also include the ancient versions, so its not a bad estimate of how large what you'd touch of it without hte compression is
2021-08-02 18:25:39 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 18:25:39 +0200 <davean> (If you did a LOT of Haskell)
2021-08-02 18:25:52 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 18:26:36 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 18:26:54 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 18:26:58 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 18:27:30 +0200deejaytee(~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) (Ping timeout: 272 seconds)
2021-08-02 18:29:31 +0200IgorZhiltsov(~IgorZhilt@109-252-65-176.nat.spd-mgts.ru) (Quit: Client closed)
2021-08-02 18:30:15 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 18:32:58 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 18:33:11 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 18:33:12 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-08-02 18:34:18 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 18:34:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-08-02 18:34:31 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 18:34:48 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 18:34:53 +0200azeem(~azeem@176.200.220.247) (Ping timeout: 252 seconds)
2021-08-02 18:35:19 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 18:36:08 +0200 <dminuoso> davean: what was the name of that again?
2021-08-02 18:36:10 +0200azeem(~azeem@176.200.220.247)
2021-08-02 18:36:55 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 18:37:00 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 272 seconds)
2021-08-02 18:38:18 +0200jippiedoe(~david@2a02-a448-48bd-1-6c05-d94f-4fec-758a.fixed6.kpn.net) (Ping timeout: 250 seconds)
2021-08-02 18:39:22 +0200 <davean> dminuoso: skete
2021-08-02 18:39:32 +0200 <davean> well, skete-haskell specificly for the one for Hackge :-p
2021-08-02 18:39:43 +0200Guest72(~Guest72@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Ping timeout: 246 seconds)
2021-08-02 18:39:57 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 18:40:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-02 18:40:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 18:40:39 +0200 <euouae> Are lenses “atomic”?
2021-08-02 18:40:46 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 18:40:56 +0200 <davean> euouae: what does that even mean?
2021-08-02 18:40:56 +0200 <dminuoso> What does "atomic" mean?
2021-08-02 18:41:00 +0200 <euouae> or is atomicity someone else’s job?
2021-08-02 18:41:13 +0200 <euouae> well the put get is what I’m thinking of
2021-08-02 18:41:25 +0200 <davean> Thats oen of the laws
2021-08-02 18:41:28 +0200 <euouae> of course the laws are the laws. Maybe they guarantee atomicity
2021-08-02 18:41:39 +0200 <davean> euouae: I think you're confused
2021-08-02 18:41:47 +0200 <euouae> Thread safe is what I’m trying to say
2021-08-02 18:41:48 +0200 <davean> Haskell is a functional language
2021-08-02 18:42:10 +0200 <davean> Yes, thats mostly meaningless - for example you don't mutate in Haskell, you create an edited copy
2021-08-02 18:42:24 +0200 <euouae> Ooh I see, so the changes from put are not reflected elsewhere
2021-08-02 18:42:39 +0200 <euouae> it truly is like the record update
2021-08-02 18:42:45 +0200 <davean> yes
2021-08-02 18:42:49 +0200 <davean> You can have references to stuff, like MVars
2021-08-02 18:42:52 +0200 <davean> and you can lens into MVars
2021-08-02 18:43:10 +0200 <davean> but it works the same way there. Sure the changes are reflected elsewhere, but its the same, you made a copy and updated the reference
2021-08-02 18:43:21 +0200 <euouae> No race conditions ?
2021-08-02 18:43:46 +0200 <dminuoso> euouae: Right, except for the part that they are composable, first-class, and generalize to things like Folds or Traverses - things you dont get from record accessors. :-)
2021-08-02 18:43:50 +0200chris_(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-02 18:43:53 +0200 <dminuoso> No race conditions.
2021-08-02 18:43:56 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-08-02 18:44:34 +0200 <euouae> Oh yeah that true, the composabilityhas me stumped
2021-08-02 18:45:03 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-02 18:45:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-02 18:45:31 +0200 <euouae> As for folds— I don’t know that one yet. It’s cool reading papers though, I find that sometimes they help a lot to read the docs
2021-08-02 18:45:47 +0200markpythonicbitc(~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd)
2021-08-02 18:46:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 18:46:42 +0200reumeth(~reumeth@user/reumeth)
2021-08-02 18:46:43 +0200 <dminuoso> % foldMapOf (folded . both . _Just) Sum [(Just 21, Just 21)]
2021-08-02 18:46:43 +0200 <yahb> dminuoso: Sum {getSum = 42}
2021-08-02 18:47:10 +0200 <dminuoso> It's the same idea as foldr. Collapsing an optic that has multiple targets into some value.
2021-08-02 18:47:26 +0200 <dminuoso> Or perhaps better phrased "consuming"
2021-08-02 18:47:41 +0200 <euouae> Oh nice
2021-08-02 18:47:48 +0200 <delYsid> I dont get how re from the lens package is useful. Or reuse, for that matter. If it cant modify, why is reuse _Foo more interesting then uses Foo?
2021-08-02 18:48:16 +0200 <delYsid> er, gets Foo I mean
2021-08-02 18:48:42 +0200chris_(~chris@81.96.113.213)
2021-08-02 18:49:11 +0200 <delYsid> How do I change a constructor somewhere deep in a structure?
2021-08-02 18:49:38 +0200deejaytee(~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net)
2021-08-02 18:49:53 +0200 <dminuoso> delYsid: With over?
2021-08-02 18:50:47 +0200 <dminuoso> delYsid: Regarding reuse, it's probably more useful for non-trivial prisms. The documentation has a slightly better example
2021-08-02 18:50:50 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-08-02 18:50:53 +0200 <dminuoso> % 6 ^.re (_Left.unto succ)
2021-08-02 18:50:53 +0200 <yahb> dminuoso: Left 7
2021-08-02 18:51:39 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-08-02 18:52:12 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-08-02 18:52:15 +0200 <dminuoso> If you happen to already hold the prism in your hand, then I think reuse has some value. But if not, you might as well just use `use (Left . succ)`
2021-08-02 18:52:28 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-02 18:52:41 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 18:52:58 +0200chris_(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2021-08-02 18:53:10 +0200 <dminuoso> Or perhaps with some Iso you hold in your hand.
2021-08-02 18:54:10 +0200mei(~mei@user/mei)
2021-08-02 18:54:24 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-08-02 18:54:42 +0200pe200012(~pe200012@113.105.10.33) (Ping timeout: 245 seconds)
2021-08-02 18:54:48 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-02 18:55:14 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
2021-08-02 19:00:20 +0200azeem(~azeem@176.200.220.247) (Read error: Connection reset by peer)
2021-08-02 19:01:19 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-02 19:01:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-08-02 19:02:13 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
2021-08-02 19:03:35 +0200mattil(~mattilinn@87-92-172-201.rev.dnainternet.fi)
2021-08-02 19:04:13 +0200y04nn(~y04nn@91.193.4.154)
2021-08-02 19:05:07 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-08-02 19:05:30 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 272 seconds)
2021-08-02 19:05:36 +0200mattil(~mattilinn@87-92-172-201.rev.dnainternet.fi) (Remote host closed the connection)
2021-08-02 19:06:01 +0200mattil(~mattilinn@87-92-172-201.rev.dnainternet.fi)
2021-08-02 19:07:49 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-08-02 19:07:59 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-08-02 19:07:59 +0200allbery_bgeekosaur
2021-08-02 19:08:52 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-08-02 19:11:50 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-08-02 19:15:02 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
2021-08-02 19:16:22 +0200 <tromp> i don't understand the compiler error i get on https://paste.ofcode.org/DBck6pC68BLWgyrAcsn9Gq
2021-08-02 19:16:45 +0200 <tromp> Legality.hs:105:27: error: Variable not in scope: args :: t0 [Char]
2021-08-02 19:16:46 +0200 <tromp> |
2021-08-02 19:16:46 +0200 <tromp> 105 | verbose = "-v" `elem` args
2021-08-02 19:16:46 +0200 <tromp> | ^^^^
2021-08-02 19:17:11 +0200enoq(~enoq@194-208-179-35.lampert.tv) (Quit: enoq)
2021-08-02 19:17:19 +0200 <tromp> how is args not in scope there?
2021-08-02 19:17:37 +0200 <dminuoso> tromp: You have to use let bindings, the where is part of the main declaration.
2021-08-02 19:17:57 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
2021-08-02 19:18:00 +0200 <dminuoso> i.e. do { args <- getArgs; let legality = map (\fen -> fen ++ "\n " ++ research verbose (readFEN fen)); ... }
2021-08-02 19:18:47 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-02 19:19:49 +0200 <tromp> i tried a let .... in block earlier, but it failed because let and in were at same indentation level
2021-08-02 19:20:00 +0200 <tromp> indenting the in further fixes it
2021-08-02 19:20:07 +0200 <dminuoso> tromp: drop the `in`
2021-08-02 19:20:16 +0200 <dminuoso> do-expressions support a special form of let
2021-08-02 19:20:32 +0200arkho(~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Ping timeout: 252 seconds)
2021-08-02 19:20:34 +0200 <dminuoso> % main = do { args <- getArgs; let len = length args; print len }
2021-08-02 19:20:34 +0200 <yahb> dminuoso: ; <interactive>:58:63: error: parse error on input `}'
2021-08-02 19:21:15 +0200 <tromp> i tried
2021-08-02 19:21:16 +0200 <tromp> let legality = map (\fen -> fen ++ "\n " ++ research verbose (readFEN fen))
2021-08-02 19:21:16 +0200 <tromp> let verbose = "-v" `elem` args
2021-08-02 19:21:16 +0200 <tromp> getContents >>= mapM_ putStrLn . legality . filter (not . null) . lines
2021-08-02 19:21:37 +0200 <tromp> but that fails with error: Variable not in scope: verbose :: Bool
2021-08-02 19:22:00 +0200 <tromp> oh, need to reverse order?
2021-08-02 19:22:02 +0200 <dminuoso> tromp: drop the second let
2021-08-02 19:22:08 +0200 <dminuoso> and keep the alignment
2021-08-02 19:22:46 +0200 <dminuoso> This way let sort of looks like where, allowing you to write multiple potentially recursive definitions, but sitting in the middle of a do expression
2021-08-02 19:23:12 +0200 <tromp> ah yes, that works. thanks!
2021-08-02 19:31:28 +0200nf(~n@monade.li) (Quit: Fairfarren.)
2021-08-02 19:31:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 19:31:57 +0200nf(~n@monade.li)
2021-08-02 19:32:17 +0200euouae(~euouae@user/euouae) (Quit: Client closed)
2021-08-02 19:33:38 +0200arkho(~ccc@dynamic-acs-24-112-153-241.zoominternet.net)
2021-08-02 19:34:28 +0200bgamari(~bgamari@2001:470:e438::1) (Ping timeout: 256 seconds)
2021-08-02 19:36:07 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-08-02 19:37:05 +0200hendursaga(~weechat@user/hendursaga)
2021-08-02 19:37:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-08-02 19:40:58 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 272 seconds)
2021-08-02 19:41:33 +0200boggin(~mikey@tyhog-gua01a-216.cronon.net)
2021-08-02 19:44:43 +0200mikey(~mikey@79.140.120.237)
2021-08-02 19:47:05 +0200boggin(~mikey@tyhog-gua01a-216.cronon.net) (Ping timeout: 258 seconds)
2021-08-02 19:49:01 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-08-02 19:51:56 +0200euouae(~euouae@user/euouae)
2021-08-02 19:53:01 +0200 <energizer> I generally favor replacing boolean flag arguments with two different functions. There are some blog posts about that, but they're mostly about, like, java. What do haskellers have to say about this?
2021-08-02 19:53:12 +0200 <euouae> I updated cabal with `cabal install cabal-install` and I get: 'Warning: Could not create a symlink in ~/.cabal/bin for cabal because the file exists there already but is not managed by cabal. You can create a symlink for this executable manually if you wish. The executable file has been installed at ~/.cabal/bin/cabal'
2021-08-02 19:53:28 +0200 <euouae> from 2.4.0.1 to 3.4.0.0
2021-08-02 19:53:53 +0200bgamari(~bgamari@72.65.104.136)
2021-08-02 19:54:04 +0200 <sclv> ok so that warning should make sense to you and explain what happened
2021-08-02 19:54:27 +0200 <sclv> The old binary is in the first location and the new one in the second location
2021-08-02 19:54:35 +0200 <sclv> Manage em as you see fit
2021-08-02 19:54:38 +0200 <euouae> Iisn't that the same location?
2021-08-02 19:55:09 +0200 <sclv> hrm, good point?
2021-08-02 19:56:07 +0200 <sclv> The install logs should give more detail where everything ended up
2021-08-02 19:57:56 +0200 <euouae> It ended up in ~/.cabal/bin/cabal, I also checked with --version previously. Ok so the warning is a bit of a dud then right?
2021-08-02 19:58:18 +0200 <sclv> yeah must br
2021-08-02 19:58:31 +0200 <euouae> Do I just need to modify $PATH or is there some other step I need as well to have other tools that use cabal to use 3.4?
2021-08-02 19:59:04 +0200 <sclv> just path
2021-08-02 19:59:06 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-02 19:59:18 +0200 <euouae> great, thank you
2021-08-02 19:59:57 +0200 <sm> lechner: no, I didn't do any more work on it
2021-08-02 20:01:55 +0200 <geekosaur> energizer: look up "boolean blindness"; much of the discussion is about Haskell, because it's so easy to overcome in Haskell
2021-08-02 20:03:31 +0200deejaytee(~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Quit: Leaving)
2021-08-02 20:03:35 +0200MoC(~moc@user/moc)
2021-08-02 20:04:00 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
2021-08-02 20:06:15 +0200 <energizer> geekosaur: looking
2021-08-02 20:07:27 +0200 <monochrom> I am surprised that there are now even blog posts on using booleans.
2021-08-02 20:07:53 +0200 <monochrom> Is there no end to this infinite descent into depravity?
2021-08-02 20:08:27 +0200 <monochrom> "Hi all I need a blog post that explains the number 1." "Hey there you're in luck I've just written one!"
2021-08-02 20:10:02 +0200 <euouae> flooding the search engines with crappy blog posts is the work of big publishers
2021-08-02 20:10:22 +0200 <euouae> ... at least that's what I came to believe after trying to search for some college stats stuff
2021-08-02 20:10:55 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-08-02 20:13:11 +0200jess(~jess@libera/staff/jess) ()
2021-08-02 20:13:25 +0200 <euouae> My blog depresses me because it's all wrong and needs a total rewrite
2021-08-02 20:13:47 +0200 <monochrom> Use the subtraction method. >:)
2021-08-02 20:14:04 +0200 <euouae> Remove until it's correct?
2021-08-02 20:14:30 +0200 <monochrom> Every rewrite begins with one bold step of deletion.
2021-08-02 20:15:12 +0200 <monochrom> Even openFile filename WriteMode begins with one bold step of erasure.
2021-08-02 20:15:24 +0200 <monochrom> s/Even/Every/
2021-08-02 20:15:44 +0200 <euouae> without enthusiasm you don't get those blog posts, and enthusiasm wanes as knowledge increases :P
2021-08-02 20:17:05 +0200 <monochrom> And knowledge wanes as enthusiasm increases.
2021-08-02 20:17:21 +0200 <euouae> :D:D
2021-08-02 20:17:27 +0200haskell-lurk(~haskell-l@78.155.54.115) (Quit: Client closed)
2021-08-02 20:17:34 +0200 <monochrom> This is why so many blog posts and the haskell wiki are of utterly poor quality in terms of pedagogy.
2021-08-02 20:18:19 +0200 <dsal> energizer: Can you expand on "boolean flag arguments"? Do you mean cli args? Or just function args. Boolean blindness is real, so there's generally a better, clearer way.
2021-08-02 20:18:50 +0200 <monochrom> Well, knowledge of the author doesn't wane. But knowledge that the audience can actually glean from the enthusiastically incoherent writing wanes.
2021-08-02 20:19:11 +0200 <energizer> dsal: yeah i mean function arguments
2021-08-02 20:19:45 +0200 <euouae> monochrom: I'm with you on that. It's something I like thinking about, how to efficiently transmit knowledge
2021-08-02 20:21:17 +0200 <dsal> energizer: Ah, yeah. Even knowing about boolean blindness, I had a function that took a bool I had to look up docs for every time I used it before fixing the api
2021-08-02 20:22:37 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-08-02 20:22:54 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-08-02 20:23:07 +0200 <monochrom> I am happy if a certain parameter really has only two legal values. I'm unhappy if it is hard to remember "so True means what? False means what?"
2021-08-02 20:23:51 +0200 <monochrom> There there are cases where it is easy to remember and/or guess. I don't always object to booleans.
2021-08-02 20:24:11 +0200 <monochrom> s/There there/But there/ # Clearly I have buffering problems.
2021-08-02 20:25:33 +0200 <euouae> hmm my cabal manual is out of sync with the cabal version
2021-08-02 20:25:35 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2021-08-02 20:25:48 +0200 <euouae> Guess I'll download the docs from the link I was given here previously
2021-08-02 20:26:15 +0200 <dsal> Sure, yes. Boolean is not always wrong. I was implementing a protocol that had a bit for resuming sessions. I could never remember whether true meant use an existing one or make a new one.
2021-08-02 20:26:41 +0200 <monochrom> "when :: Bool -> IO a -> IO a" is one of the good cases because the name "when" already helps you, for example.
2021-08-02 20:26:49 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 20:27:12 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net)
2021-08-02 20:27:17 +0200 <monochrom> Heh yeah that one is a tougher one.
2021-08-02 20:27:28 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
2021-08-02 20:27:52 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-08-02 20:28:05 +0200 <monochrom> Clearly, "should I reuse or create?" the answer is "yes". >:)
2021-08-02 20:29:33 +0200 <monochrom> Maybe works better for "coffee or tea?"
2021-08-02 20:30:26 +0200 <monochrom> People in Hong Kong are actually fond of blending coffee with tea, BTW.
2021-08-02 20:30:34 +0200 <dsal> We're trained to map binary concepts to true/false/file_not_found and never look to see if there's a better way.
2021-08-02 20:31:22 +0200 <euouae> quantum coffee
2021-08-02 20:32:08 +0200gambpang(~ian@207.181.230.156) (Ping timeout: 252 seconds)
2021-08-02 20:32:59 +0200 <euouae> I loved discovering how Maybe is an Applicative that can be summed
2021-08-02 20:33:31 +0200 <euouae> as someone who likes boolean tricks... not entirely related to boolean blindness I suppose
2021-08-02 20:33:48 +0200 <euouae> but you could emulate Maybe with a tuple (Bool, a)
2021-08-02 20:34:17 +0200 <sclv> not really
2021-08-02 20:34:34 +0200 <sclv> for `Nothing` what do you put in the `a` slot?
2021-08-02 20:34:51 +0200 <euouae> That right
2021-08-02 20:34:53 +0200 <sclv> you need a sum, not a product
2021-08-02 20:35:01 +0200 <sclv> so `Maybe a =~ Either () a`
2021-08-02 20:35:15 +0200 <euouae> okay so fair enough, this is another kind of blindness
2021-08-02 20:35:27 +0200 <euouae> just because you have isomorphism of types doesn't mean you should always choose the same representative
2021-08-02 20:38:10 +0200michael92342(~mikey@tyhog-gua01a-216.cronon.net)
2021-08-02 20:39:17 +0200 <euouae> although i have cabal 3.4, in cabal init I get cabal 2.4 mentioned
2021-08-02 20:39:28 +0200Atum_(~IRC@user/atum/x-2392232) (Quit: Atum_)
2021-08-02 20:39:36 +0200 <euouae> In the cabal file of my project, cabal-version: 2.4
2021-08-02 20:39:45 +0200 <sclv> that's not cabal-install version
2021-08-02 20:39:48 +0200 <sclv> that's version spec for the cabal file itself!
2021-08-02 20:39:58 +0200 <euouae> Ah alright
2021-08-02 20:40:11 +0200 <euouae> It jsut happened to coincide with my previous cabal version
2021-08-02 20:40:12 +0200 <sclv> Those evolve at a different pace, and the init doesn't pick latest by default -- rather it tries to maintain a backwards compat range
2021-08-02 20:40:25 +0200 <sclv> if you use newer features, cabal might warn you that it needs bumping
2021-08-02 20:40:38 +0200 <euouae> nice
2021-08-02 20:40:47 +0200 <sclv> yeah, they used to coincide, but it was a bad idea to have protocol and exe versions evolve in lockstep
2021-08-02 20:41:08 +0200mikey(~mikey@79.140.120.237) (Ping timeout: 272 seconds)
2021-08-02 20:41:29 +0200 <euouae> I also got an idex error
2021-08-02 20:42:08 +0200 <euouae> Warning: Parsing the index cache failed (Data.Binary.Get.runGet at position 16; Non-matching structure hashes: ... expected: ...). Trying to regenerate the index cache...
2021-08-02 20:42:18 +0200 <euouae> Is this related to cache stored out of my project directory
2021-08-02 20:42:58 +0200 <euouae> Hmm I think so. I tried a totally new project and got no warnings
2021-08-02 20:43:09 +0200 <euouae> alright I'll go now. Thanks for all the help
2021-08-02 20:43:10 +0200euouae(~euouae@user/euouae) (Quit: euouae)
2021-08-02 20:43:43 +0200 <monochrom> This is cabal's own cache somewhere in $HOME/.cabal, and it is about data saved by "cabal update".
2021-08-02 20:44:18 +0200 <monochrom> You get this warning (OK, I get this warning) when I switch between two versions of cabal-install.
2021-08-02 20:44:35 +0200 <sclv> they left :-)
2021-08-02 20:44:45 +0200 <monochrom> Ah darn.
2021-08-02 20:45:05 +0200 <sclv> i will note this irritates me when i'm developing cabal and keep switching between my installed and my testing version
2021-08-02 20:45:15 +0200 <sclv> i know i could pass some flags to the test version to set a different repo, but its a pita
2021-08-02 20:45:26 +0200 <sclv> (also sometimes nix-shell will switch out cabal install versions under me)
2021-08-02 20:46:31 +0200 <monochrom> That gets pretty irritating, yeah.
2021-08-02 20:47:28 +0200MQ-17J(~MQ-17J@8.6.144.192) (Ping timeout: 272 seconds)
2021-08-02 20:49:22 +0200 <sclv> just file a ticket :-) https://github.com/haskell/cabal/issues/7502
2021-08-02 20:49:42 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 245 seconds)
2021-08-02 20:51:09 +0200bruceleewees(~bruceleew@83.24.236.64.ipv4.supernova.orange.pl) (Remote host closed the connection)
2021-08-02 20:52:00 +0200boggin(~mikey@79.140.120.237)
2021-08-02 20:52:11 +0200michael92342(~mikey@tyhog-gua01a-216.cronon.net) (Quit: Leaving)
2021-08-02 21:00:37 +0200haskell-lurk(~haskell-l@78.155.54.115)
2021-08-02 21:02:36 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 258 seconds)
2021-08-02 21:03:03 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-08-02 21:03:17 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2021-08-02 21:06:31 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 21:08:22 +0200y04nn(~y04nn@91.193.4.154) (Ping timeout: 272 seconds)
2021-08-02 21:08:58 +0200MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-08-02 21:09:40 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2021-08-02 21:13:43 +0200 <maerwald[m]> I vote for reviving sandboxes
2021-08-02 21:14:04 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 272 seconds)
2021-08-02 21:17:17 +0200Pickchea(~private@user/pickchea)
2021-08-02 21:17:29 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-08-02 21:18:33 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 244 seconds)
2021-08-02 21:18:52 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2021-08-02 21:24:16 +0200berberman_(~berberman@user/berberman)
2021-08-02 21:24:18 +0200berberman(~berberman@user/berberman) (Ping timeout: 240 seconds)
2021-08-02 21:28:00 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 272 seconds)
2021-08-02 21:29:56 +0200MoC(~moc@user/moc)
2021-08-02 21:32:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-02 21:33:05 +0200jneira_(~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Quit: Connection closed)
2021-08-02 21:33:59 +0200jneira_(~jneira_@28.red-80-28-169.staticip.rima-tde.net)
2021-08-02 21:35:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-02 21:38:05 +0200 <sclv> that won't affect this issue at all
2021-08-02 21:40:04 +0200nf(~n@monade.li) (Quit: Fairfarren.)
2021-08-02 21:40:06 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-02 21:40:17 +0200nf(~n@monade.li)
2021-08-02 21:40:31 +0200MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-08-02 21:40:33 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 258 seconds)
2021-08-02 21:41:26 +0200mattil(~mattilinn@87-92-172-201.rev.dnainternet.fi) (Quit: Leaving)
2021-08-02 21:42:26 +0200alx741(~alx741@186.178.108.145) (Ping timeout: 252 seconds)
2021-08-02 21:44:27 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-08-02 21:45:33 +0200y04nn(~y04nn@91.193.4.154)
2021-08-02 21:45:46 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2021-08-02 21:46:24 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-08-02 21:46:35 +0200lavaman(~lavaman@98.38.249.169)
2021-08-02 21:49:53 +0200 <thomasjm[m]> hi all -- i made a little tool to help you profile your builds and show how long it takes GHC to compile each module in a pretty bar graph. feedback and bug reports welcome: https://github.com/codedownio/time-ghc-modules
2021-08-02 21:55:41 +0200alx741(~alx741@181.196.69.121)
2021-08-02 22:01:54 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-02 22:05:06 +0200 <dsal> This is neat.
2021-08-02 22:05:31 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-08-02 22:07:00 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-08-02 22:09:54 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 240 seconds)
2021-08-02 22:09:55 +0200gehmehgeh(~user@user/gehmehgeh)
2021-08-02 22:10:47 +0200 <maerwald[m]> Sorry, simplifier and parser have the same color in the example pic
2021-08-02 22:10:59 +0200 <maerwald[m]> Which one is the expensive one?
2021-08-02 22:11:54 +0200 <dsal> It looks like the colors are in order.
2021-08-02 22:12:32 +0200 <thomasjm[m]> right, they're ordered in the legend by overall expensiveness. if you load the HTML report you can mouse over and tooltips will appear
2021-08-02 22:13:05 +0200 <Hecate> thomasjm[m]: beautiful too, thank you so much :)
2021-08-02 22:13:14 +0200 <maerwald[m]> Does the simplifier do cross module work?
2021-08-02 22:13:20 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-08-02 22:15:34 +0200y04nn(~y04nn@91.193.4.154) (Remote host closed the connection)
2021-08-02 22:15:41 +0200 <thomasjm[m]> beats me, i wrote this so people who understand GHC can make my stuff build faster :P
2021-08-02 22:15:59 +0200 <dsal> Maybe you should stop simplifying.
2021-08-02 22:21:29 +0200vysn(~vysn@user/vysn)
2021-08-02 22:22:18 +0200 <koz> > foldMap show ("foo", 5)
2021-08-02 22:22:19 +0200 <lambdabot> "5"
2021-08-02 22:22:22 +0200 <koz> Sweet.
2021-08-02 22:24:12 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-08-02 22:24:50 +0200agua(~agua@2804:18:46:c3e6:1:0:7de0:dd8f)
2021-08-02 22:25:08 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-08-02 22:26:16 +0200Core3678(~agua@2804:14c:8793:8e2f:64f8:45c2:2056:5625)
2021-08-02 22:26:30 +0200acidjnk_new(~acidjnk@p200300d0c72b9591e9224ac295505d06.dip0.t-ipconnect.de)
2021-08-02 22:26:44 +0200pesada(~agua@2804:14c:8793:8e2f:64f8:45c2:2056:5625) (Ping timeout: 256 seconds)
2021-08-02 22:27:32 +0200agua_pesada(~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Ping timeout: 272 seconds)
2021-08-02 22:28:27 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 276 seconds)
2021-08-02 22:29:26 +0200agua(~agua@2804:18:46:c3e6:1:0:7de0:dd8f) (Ping timeout: 272 seconds)
2021-08-02 22:31:56 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
2021-08-02 22:33:55 +0200xrel(~xrel@69.233.98.238)
2021-08-02 22:34:12 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-02 22:37:44 +0200markpythonicbitc(~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-08-02 22:38:04 +0200reumeth(~reumeth@user/reumeth) (Ping timeout: 256 seconds)
2021-08-02 22:38:18 +0200markpythonicbitc(~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd)
2021-08-02 22:38:21 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net)
2021-08-02 22:39:41 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-02 22:40:14 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk)
2021-08-02 22:42:40 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
2021-08-02 22:44:34 +0200burnsidesLlama(~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 258 seconds)
2021-08-02 22:45:53 +0200 <dsal> I'm not sure how I feel about that...
2021-08-02 22:46:27 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
2021-08-02 22:46:34 +0200markpythonicbitc(~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-08-02 22:47:03 +0200markpythonicbitc(~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd)
2021-08-02 22:49:42 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-08-02 22:50:16 +0200markpythonicbitc(~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) (Client Quit)
2021-08-02 22:50:54 +0200markpythonicbitc(~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd)
2021-08-02 22:51:04 +0200 <johnw> ("foo",5) is 5 with some contextual info
2021-08-02 22:51:06 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-08-02 22:52:37 +0200 <dsal> Yeah, I think I've used it that way. Some thing are obvious if you look at them from one angle, but bizarre if you look from another.
2021-08-02 22:53:47 +0200 <dsal> > view each . fmap show $ ("five", 5)
2021-08-02 22:53:48 +0200 <lambdabot> "five5"
2021-08-02 22:53:54 +0200 <raehik> I'm continually getting this mysterious "The exact Name 'f' is not in scope" error while trying to use deriving via. Anyone know what's going on?
2021-08-02 22:54:15 +0200 <dsal> Is the exact Name 'f' in scope?
2021-08-02 22:55:01 +0200 <raehik> :t f says nothing in scope
2021-08-02 22:55:02 +0200 <lambdabot> error: parse error on input ‘in’
2021-08-02 22:55:20 +0200agua_pesada(~agua_pesa@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b)
2021-08-02 22:55:24 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2021-08-02 22:55:43 +0200 <raehik> I wrote one typeclass and did some standalone deriving vias for it. now I just wrote another, and I'm getting this error (which I was also getting previously, but thought it was due to multi params type classes)
2021-08-02 22:56:16 +0200 <raehik> they're exactly the same apart from the function sig and name, totally lost from the error msg
2021-08-02 22:56:32 +0200markpythonicbitc(~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-08-02 22:56:44 +0200drd(~drd@151.37.160.53)
2021-08-02 23:00:27 +0200 <raehik> is there some deriving via magic going on that doesn't like lenses?? that's the only thing I can think of
2021-08-02 23:02:39 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net) (Remote host closed the connection)
2021-08-02 23:03:17 +0200fendor(~fendor@178.115.48.162.wireless.dyn.drei.com) (Remote host closed the connection)
2021-08-02 23:06:32 +0200 <raehik> urgh. I have no idea. Stupid Template Haskell stuff, really weird
2021-08-02 23:07:00 +0200 <raehik> I separate the TH (only makeLenses!) and it Just Works. sigh
2021-08-02 23:08:14 +0200 <Hecate> raehik: lesson of the day, TH is quirky and opaque
2021-08-02 23:08:27 +0200 <raehik> oh no, I was wrong, ok less mad
2021-08-02 23:08:35 +0200 <raehik> it *is* still broken and it wasn't TH. lol
2021-08-02 23:08:59 +0200 <raehik> now it tells me "it was probably TH" but the module doesn't even have it enabled. stunning
2021-08-02 23:12:08 +0200 <dsal> TH changes a few things.
2021-08-02 23:13:43 +0200 <c_wraith> TH makes declaration order matter :(
2021-08-02 23:14:24 +0200 <raehik> I know that TH impacts how things run. There is now no TH in this module, but the error message is quite useless
2021-08-02 23:14:58 +0200 <raehik> I can't find any info on debugging deriving via online (I didn't know it could emit such errors)
2021-08-02 23:15:26 +0200markpythonicbitc(~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd)
2021-08-02 23:15:40 +0200son0p(~ff@181.136.122.143) (Ping timeout: 272 seconds)
2021-08-02 23:17:40 +0200 <raehik> ohhh hold on, 'f' might be from the lens
2021-08-02 23:17:54 +0200 <raehik> now I'm remembering you can't stuff lenses into typeclasses without a second thought
2021-08-02 23:20:19 +0200 <raehik> Lord help me with GHC's error messages. that was it, me forgetting lenses and typeclasses are
2021-08-02 23:22:45 +0200 <monochrom> Perhaps start with no lens.
2021-08-02 23:23:13 +0200 <dminuoso> raehik: If you insist on what lens offers, you can also consider the `optics` package
2021-08-02 23:23:18 +0200 <dminuoso> Which neatly hides the implementation behind newtypes
2021-08-02 23:28:55 +0200 <raehik> monochrom: I did start with no lenses! I figured being able to stuff a lens inside my HasX typeclasses might be interesting, so they could be used for MonadState as well as Reader
2021-08-02 23:29:41 +0200 <raehik> dminuoso: I've looked *at* optics before but never into it. I'm still a relatively new Haskeller. would you recommend it over the lens pkg?
2021-08-02 23:30:10 +0200 <geekosaur> ifnothing else, it has better error messages than lens
2021-08-02 23:30:43 +0200 <c_wraith> on the other hand, the lack of extensibility feels so limitng
2021-08-02 23:30:47 +0200 <c_wraith> or even limiting
2021-08-02 23:30:52 +0200 <c_wraith> all it can do is accessors
2021-08-02 23:31:26 +0200 <dminuoso> raehik: Personally I prefer it for a multitude of reasons.
2021-08-02 23:31:37 +0200 <dminuoso> And I would recommend it over lens.
2021-08-02 23:31:45 +0200 <dminuoso> But it's just personal preference, really
2021-08-02 23:32:18 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 240 seconds)
2021-08-02 23:32:49 +0200xrel(~xrel@69.233.98.238) (Quit: nyaa~)
2021-08-02 23:32:50 +0200 <c_wraith> anyone know offhand whether any of the proposed designs for dependent haskell allow putting pi types on instance declarations?
2021-08-02 23:33:00 +0200 <raehik> thanks all, I'll remember them next time I'm using lenses. maybe I'll give one of the talks I bookmarked a shot
2021-08-02 23:33:59 +0200 <dminuoso> c_wraith: What do you mean by "all it can do it accessors"?
2021-08-02 23:36:06 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-08-02 23:36:52 +0200mastarija(~mastarija@31.217.8.174)
2021-08-02 23:36:52 +0200markpythonicbitc(~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-08-02 23:37:29 +0200markpythonicbitc(~textual@2601:647:5a00:35:e0da:ada7:2ca5:10dd)
2021-08-02 23:37:35 +0200 <dsal> I think last time I looked at optics, it didn't support prisms, which is kind of an important thing for many of my use cases.
2021-08-02 23:37:41 +0200 <c_wraith> dminuoso: there's no equivalent of holesOf for when you're doing non-deterministic algorithms. There's no ability to extend it to embed additional effects in the traversal process like... uh shoot, I haven't released that library yet.
2021-08-02 23:38:04 +0200 <c_wraith> The library works, I just hate writing enough documentation to tell people what it does :)
2021-08-02 23:38:10 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-08-02 23:38:10 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-08-02 23:38:13 +0200allbery_bgeekosaur
2021-08-02 23:39:23 +0200 <c_wraith> basically, optics is closed. It can only do what its authors build into it. lens is open, and you can add all sorts of stuff in ways that remain compatible with it.
2021-08-02 23:40:22 +0200 <dminuoso> dsal: You should look again.
2021-08-02 23:40:47 +0200 <dsal> Ooh, I was thinking about microlens
2021-08-02 23:41:16 +0200 <dminuoso> c_wraith: Fair enough, yeah it doesnt cater to extravagant/exotic needs. :-)
2021-08-02 23:41:29 +0200 <dminuoso> I think for mere mortals it's a great library.
2021-08-02 23:41:41 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-08-02 23:41:52 +0200 <arkho> GHC will not import Data.Scientific into my module, stating that it's not safe. What does this mean? How can I fix it?
2021-08-02 23:41:58 +0200 <raehik> <- mere mortal :)
2021-08-02 23:43:45 +0200 <arkho> Or is that a question for #ghc ?
2021-08-02 23:44:02 +0200 <dminuoso> Sounds like you have safe haskell enabled
2021-08-02 23:45:26 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 272 seconds)
2021-08-02 23:45:26 +0200bgamari(~bgamari@72.65.104.136) (Ping timeout: 272 seconds)
2021-08-02 23:46:31 +0200boggin(~mikey@79.140.120.237) (Remote host closed the connection)
2021-08-02 23:47:08 +0200 <arkho> Is this a global thing that I can disable? Or do I have to change source files?
2021-08-02 23:48:27 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-08-02 23:48:59 +0200acidjnk_new3(~acidjnk@p5487d90a.dip0.t-ipconnect.de)
2021-08-02 23:50:18 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net)
2021-08-02 23:50:35 +0200 <geekosaur> ?? this is something that you would have had to explicitly enable, so why are you asking us?
2021-08-02 23:50:35 +0200 <lambdabot> Plugin `compose' failed with: user error (Unknown command: "")
2021-08-02 23:51:08 +0200 <arkho> Because it's not my code, it's a dependency of a package I'm trying to install.
2021-08-02 23:51:59 +0200 <arkho> It won't build because it can't import that module, and I don't know what to do with that.
2021-08-02 23:52:12 +0200acidjnk_new(~acidjnk@p200300d0c72b9591e9224ac295505d06.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-08-02 23:54:56 +0200 <arkho> My main question is, is it a Cabal thing, a GHC thing, or a Haskell thing? Where's the switch?
2021-08-02 23:55:11 +0200 <davean> It depends on where you turned it on
2021-08-02 23:55:40 +0200 <arkho> I don't recall ever doing that.
2021-08-02 23:57:21 +0200 <geekosaur> in any case, scientific 0.3.7.0 claims to be Safe Haskell-safe, so you should make sure you're using that version with Safe Haskell
2021-08-02 23:57:52 +0200mastarija_(~mastarija@31.217.8.174)