Home freenode/#haskell: Logs Calendar

Logs on 2020-11-16 (freenode/#haskell)

00:00:01 × pleia21 quits (~pleia2@92.223.89.101) ()
00:00:59 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
00:01:22 × moet quits (~moet@mobile-166-137-178-183.mycingular.net) (Ping timeout: 260 seconds)
00:02:56 justsomeguy joins (~justsomeg@216.186.218.241)
00:02:56 × justsomeguy quits (~justsomeg@216.186.218.241) (Changing host)
00:02:56 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
00:03:35 × atk quits (~Arch-TK@ircpuzzles/staff/Arch-TK) (Quit: Well this is unexpected.)
00:03:44 takuan joins (~takuan@178-116-218-225.access.telenet.be)
00:04:28 atk joins (~Arch-TK@ircpuzzles/staff/Arch-TK)
00:10:03 bangtree parts (~user@50-102-199-84.ekht.in.frontiernet.net) ("ERC (IRC client for Emacs 28.0.50)")
00:11:17 × kritzefitz quits (~kritzefit@212.86.56.80) (Quit: Leaving)
00:13:40 × andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
00:14:58 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
00:15:59 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
00:16:04 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
00:16:17 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:16:43 andreas303 joins (~andreas@gateway/tor-sasl/andreas303)
00:18:00 × Chi1thangoo quits (~Chi1thang@87.112.60.168) (Ping timeout: 256 seconds)
00:19:33 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad) (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:20:13 da39a3ee5e6b4b0d joins (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th)
00:21:28 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
00:22:41 × electricityZZZZ quits (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Quit: Leaving)
00:22:53 christo joins (~chris@81.96.113.213)
00:24:23 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
00:24:29 nbloomf joins (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad)
00:25:36 nineonine joins (~textual@S01061cabc0b095f3.vf.shawcable.net)
00:26:23 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
00:27:47 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 265 seconds)
00:29:03 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds)
00:29:33 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-eerkvmaqmqbakgpb) (Quit: Connection closed for inactivity)
00:30:39 Varis joins (~Tadas@unaffiliated/varis)
00:31:41 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
00:34:43 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
00:38:42 plutoniix joins (~q@ppp-223-24-167-34.revip6.asianet.co.th)
00:38:51 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
00:39:10 × plutoniix quits (~q@ppp-223-24-167-34.revip6.asianet.co.th) (Read error: Connection reset by peer)
00:40:29 plutoniix joins (~q@175.176.222.7)
00:43:22 <boom> I want to calculate (λx.λy.x z y)[x y/z] now. What does x y/z mean ?
00:43:36 <boom> [x y/z]
00:48:35 <monochrom> This depends on authors. Many authors write that to mean "replace z by (x y)".
00:49:02 <monochrom> The trouble is the other authors write [z/x y] for that.
00:49:51 <MarcelineVQ> oh so it's like, ommiting the := you'd see in places like the wikipedia lambda calculus article
00:49:55 conal joins (~conal@64.71.133.70)
00:49:55 klixto joins (~klixto@130.220.8.140)
00:50:07 <monochrom> Metaly, I cannot believe that the text you're reading this from didn't laid out this.
00:50:44 <monochrom> I very much prefer [var := expr], yes. It is much much more guessable.
00:52:13 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 256 seconds)
00:52:31 <monochrom> My thesis supervisor recognizes that this is formalism going overboard, so he simply writes, e.g., "(λx. x+1) 5 = (substitute 5 for x in x+1)"
00:52:35 <boom> Somewhere in my notes its written x[u/x] = u , so i guess you replace x by u
00:53:34 <boom> so yeah replace z by (x y)
00:55:26 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:56:35 <monochrom> MarcelineVQ: A bit of addendum. Omitting := but putting back / in its place. And write in the other order.
00:57:01 <MarcelineVQ> well =: looks silly
00:57:08 <boom> if i look at λx.λy.x z y the only free variable is z
00:57:50 <boom> for some reason the x y in [x y/ z] are free ?
00:57:53 × m0rphism quits (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 256 seconds)
00:58:40 <boom> I don't understand why my prof meant
00:58:54 <monochrom> Ah, you may have to worry about variable capture, and pretend you're doing instead (λx1.λy1.x1 z y1)[x y/z]
00:58:58 DataComp_ joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
00:59:07 × DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Ping timeout: 260 seconds)
00:59:19 <monochrom> Such is the problem with named variables. >:)
00:59:27 <boom> yes there is somehting like that
01:00:27 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
01:01:42 × lucasb quits (uid333435@gateway/web/irccloud.com/x-vbpjdjtpfxqmyplf) (Quit: Connection closed for inactivity)
01:02:15 × gentauro quits (~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer)
01:02:34 × da39a3ee5e6b4b0d quits (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th) (Ping timeout: 246 seconds)
01:03:09 gentauro joins (~gentauro@unaffiliated/gentauro)
01:06:21 × Guest30216 quits (~mengu@84.39.117.57) ()
01:09:19 × Ariakenom quits (~Ariakenom@h-82-196-111-82.NA.cust.bahnhof.se) (Quit: Leaving)
01:10:22 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
01:11:01 keep_learning joins (~keep_lear@43.231.26.152)
01:11:06 Sgeo_ joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
01:11:32 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
01:12:01 moet joins (~moet@mobile-166-137-178-183.mycingular.net)
01:12:17 × keep_learning quits (~keep_lear@43.231.26.152) (Client Quit)
01:12:41 keep_learning joins (~keep_lear@43.231.26.152)
01:13:36 robert___ joins (uid452915@gateway/web/irccloud.com/x-auhharawilekbpts)
01:14:37 × Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Ping timeout: 260 seconds)
01:15:55 christo joins (~chris@81.96.113.213)
01:20:13 × solonarv quits (~solonarv@astrasbourg-653-1-156-155.w90-6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
01:25:51 m0rphism joins (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de)
01:27:34 × jedws quits (~jedws@101.184.175.183) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:28:10 <justsomeguy> In the paper "Tutorial Introduction to Lambda Calculus", I've seen [x/y] explained as "y is replaced by x for all its occurrences".
01:28:24 nielsonm joins (~nielsonm@84.39.117.57)
01:29:12 dmlloyd_laptop joins (~dmlloyd_l@193.56.252.12)
01:29:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
01:31:05 Lord_of_Life_ joins (~Lord@46.217.220.81)
01:32:07 conal joins (~conal@64.71.133.70)
01:33:13 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 260 seconds)
01:33:21 <justsomeguy> Sometimes it frustrating how much of math notations meaning isn't well agreed on, or up to individual interpretation.
01:34:17 <aoei> that's weird, i thought humans invented a standard symbolic language for mathematics
01:34:32 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-wwiyyhwyadbuqprb)
01:35:23 <dolio> [x/y] is pretty common. It's just not very good notation.
01:35:45 <dolio> With just variables, it's not really very clear which thing is being substituted.
01:38:15 da39a3ee5e6b4b0d joins (~da39a3ee5@ppp-223-24-93-183.revip6.asianet.co.th)
01:38:40 <dolio> And it's notation that is isolated to things like lambda calculus, so it can't draw on familiarity with notation that's used in actual programming languages.
01:39:06 <aoei> ah
01:41:11 <dolio> One could argue that 'x := y' is no better if you haven't seen it, but a lot more people have seen things of that sort.
01:43:36 wroathe_ joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
01:43:52 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
01:46:54 × forell quits (~forell@unaffiliated/forell) (Read error: Connection reset by peer)
01:47:13 wroathe_ is now known as wroathe
01:47:48 robert___ parts (uid452915@gateway/web/irccloud.com/x-auhharawilekbpts) ()
01:48:16 forell joins (~forell@unaffiliated/forell)
01:48:55 × Lycurgus quits (~niemand@cpe-45-46-134-163.buffalo.res.rr.com) (Quit: Exeunt)
01:52:22 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
01:57:07 × Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
02:02:29 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:03:03 × da39a3ee5e6b4b0d quits (~da39a3ee5@ppp-223-24-93-183.revip6.asianet.co.th) (Ping timeout: 256 seconds)
02:05:13 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
02:05:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:07:09 christo joins (~chris@81.96.113.213)
02:10:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
02:12:29 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
02:13:02 × m0rphism quits (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 256 seconds)
02:13:14 wei2912 joins (~wei2912@unaffiliated/wei2912)
02:15:44 <monochrom> aoei: The greatest thing about standards is there are so many to choose from!
02:16:32 <dolio> I mean, it's also not true that mathematical notation is standardized.
02:17:05 × alp quits (~alp@88.126.45.36) (Ping timeout: 240 seconds)
02:17:07 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 246 seconds)
02:17:16 <dolio> Which is probably okay, because there's a lot of bad notation out there.
02:17:21 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
02:17:46 <koz_> This might be slightly off-topic: how do web frameworks actually implement routing when URLs can have captures (meaning, stuff in the URL which isn't fixed, typically for use as an input into the handler)?
02:18:05 <koz_> I'm interested in 'what algorithms/data structures are used to make this not-garbage', but I'm turning up nothing.
02:24:05 <dsal> My mqttd SubTree type is similar, except it's always multimatch. The naive thing worked quite well.
02:24:42 <koz_> dsal: Link?
02:24:47 × mozzarella quits (~sam@unaffiliated/sam113101) (Remote host closed the connection)
02:25:53 mozzarella joins (~sam@unaffiliated/sam113101)
02:25:56 christo joins (~chris@81.96.113.213)
02:26:53 drbean joins (~drbean@TC210-63-209-39.static.apol.com.tw)
02:27:31 <dsal> github.com/dustin/mqttd t SubTree
02:27:41 <dsal> (sorry: driving)
02:28:04 <koz_> Close enough - thanks!
02:28:38 star_cloud joins (~star_clou@ec2-34-217-37-165.us-west-2.compute.amazonaws.com)
02:29:14 <dsal> + and # are wildcards and I have to return everything that matches. I don't care about the topics
02:30:12 × benjamingr__ quits (uid23465@gateway/web/irccloud.com/x-dkapzzdvbagqfebh) (Quit: Connection closed for inactivity)
02:30:43 <koz_> Hmm, now I need a Monoid of the form 'None | One a | TooMany'.
02:31:00 <dsal> The point is that I thought I'd need something complicated, but the easy thing worked. Then all my hand-written instances could be derived. I sat down to write difficult code that night.
02:31:10 × jduhamel quits (~textual@bras-base-toroon4664w-grc-14-184-145-124-162.dsl.bell.ca) (Ping timeout: 256 seconds)
02:31:16 <koz_> dsal: This is exactly what I wanted to see - thanks!
02:31:23 <dsal> This was very specific to my mqtt needs
02:31:31 <dsal> Ok, I was hoping it'd help
02:34:31 <koz_> :t maybe mempty
02:34:32 <lambdabot> Monoid b => (a -> b) -> Maybe a -> b
02:34:39 <koz_> :t foldMap
02:34:40 <lambdabot> (Foldable t, Monoid m) => (a -> m) -> t a -> m
02:34:43 <koz_> :D
02:34:55 <koz_> % :t foldMap @Maybe
02:34:55 <yahb> koz_: Monoid m => (a -> m) -> Maybe a -> m
02:36:30 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
02:38:12 toorevitimirp joins (~tooreviti@117.182.180.118)
02:43:59 × xff0x quits (~fox@2001:1a81:5263:6400:a8c9:21df:16db:a24a) (Ping timeout: 272 seconds)
02:45:36 xff0x joins (~fox@2001:1a81:529e:a500:712c:5a16:6a4b:9d48)
02:45:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:47:10 × xsperry quits (~as@unaffiliated/xsperry) (Remote host closed the connection)
02:49:14 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds)
02:53:05 guest1116 joins (~user@49.5.6.87)
03:00:01 × nielsonm quits (~nielsonm@84.39.117.57) ()
03:02:01 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 264 seconds)
03:02:27 × dmlloyd_laptop quits (~dmlloyd_l@193.56.252.12) (Remote host closed the connection)
03:06:53 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
03:07:37 jedws joins (~jedws@101.184.175.183)
03:10:19 kushNYC joins (4620050d@70.32.5.13)
03:11:22 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 246 seconds)
03:13:15 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
03:13:40 <kushNYC> Anyone else try to install cross-compiled ghc binaries in iSH for iOS? It’s a musl-based Alpine Linux environment. I get fairly far with installing the i386-musl build from https://github.com/redneb/ghc-alt-libc/releases - but ultimately come up against an error during install of ghc-pkg that eludes me...
03:13:45 <kushNYC> ```Installing library in /opt/ghc/lib/ghc-8.10.2/ghc-8.10.2"/opt/ghc/lib/ghc-8.10.2/bin/ghc-pkg" --force --global-package-db "/opt/ghc/lib/ghc-8.10.2/package.conf.d" update rts/dist/package.conf.installghc-pkg: Couldn't open database /opt/ghc/lib/ghc-8.10.2/package.conf.d for modification: {handle:
03:13:45 <kushNYC> /opt/ghc/lib/ghc-8.10.2/package.conf.d/package.cache.lock}: hLock: invalid argument (Invalid argument)make[1]: *** [ghc.mk:973: install_packages] Error 1make: *** [Makefile:51: install] Error 2```
03:14:40 nbloomf joins (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad)
03:14:40 <kushNYC> Tried messing with permissions and running ghc-pkg recache to no avail
03:18:12 × s00pcan quits (~chris@107.181.165.217) (Ping timeout: 256 seconds)
03:20:03 s00pcan joins (~chris@075-133-056-178.res.spectrum.com)
03:20:09 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
03:24:50 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
03:25:27 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
03:25:50 × kushNYC quits (4620050d@70.32.5.13) (Remote host closed the connection)
03:26:25 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
03:31:27 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
03:31:41 Tario joins (~Tario@201.192.165.173)
03:33:00 pehjota1 joins (~pehjota@185.204.1.185)
03:35:05 × nexii quits (~user@38-73-246-124.starry-inc.net) (Ping timeout: 240 seconds)
03:35:11 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:36:02 × renzhi quits (~renzhi@2607:fa49:655f:e600::28da) (Ping timeout: 260 seconds)
03:38:08 falafel_ joins (~falafel@50.216.77.242)
03:39:56 nexii joins (~user@38-73-246-124.starry-inc.net)
03:46:15 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
03:49:12 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
03:49:35 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 256 seconds)
03:50:28 conal_ joins (~conal@64.71.133.70)
03:52:19 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:52:43 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 265 seconds)
03:54:41 × theDon quits (~td@94.134.91.56) (Ping timeout: 260 seconds)
03:55:01 × nexii quits (~user@38-73-246-124.starry-inc.net) (Read error: Connection reset by peer)
03:55:33 × lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Killed (orwell.freenode.net (Nickname regained by services)))
03:55:39 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
03:56:13 xerox_ joins (~xerox@unaffiliated/xerox)
03:56:31 theDon joins (~td@94.134.91.49)
03:57:02 sammuel86 joins (~sammuel86@178.239.168.171)
03:57:33 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
03:59:18 aarvar joins (~foewfoiew@50.35.43.33)
04:00:45 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 240 seconds)
04:02:22 Tario joins (~Tario@201.192.165.173)
04:05:27 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
04:08:02 × conal_ quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
04:08:35 × crdrost quits (~crdrost@c-98-207-102-156.hsd1.ca.comcast.net) (Quit: This computer has gone to sleep)
04:10:52 × servo quits (~servo@41.92.97.254) (Ping timeout: 246 seconds)
04:11:53 × texasmynsted quits (~texasmyns@212.102.45.112) (Ping timeout: 260 seconds)
04:12:14 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
04:16:17 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 260 seconds)
04:31:33 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:35:51 tenniscp25 joins (~tenniscp2@134.196.209.118)
04:36:12 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) ()
04:38:17 × tenniscp25 quits (~tenniscp2@134.196.209.118) (Client Quit)
04:38:47 Amras joins (~Amras@unaffiliated/amras0000)
04:39:02 × guest1116 quits (~user@49.5.6.87) (Ping timeout: 260 seconds)
04:44:37 xerox_ joins (~xerox@unaffiliated/xerox)
04:47:59 × berberman_ quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
04:48:24 berberman joins (~berberman@unaffiliated/berberman)
04:53:42 × nineonine quits (~textual@S01061cabc0b095f3.vf.shawcable.net) (Read error: Connection reset by peer)
04:54:58 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
04:56:02 × elliott__ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
04:57:33 guest1116 joins (~user@49.5.6.87)
04:58:13 × Tattletale quits (~Tattletal@unaffiliated/sundancertp) (Quit: rcirc on GNU Emacs 27.1)
05:00:02 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds)
05:05:28 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
05:06:29 vicfred joins (~vicfred@unaffiliated/vicfred)
05:06:32 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Read error: Connection reset by peer)
05:07:57 × tanuki quits (~quassel@173.168.154.189) (Ping timeout: 260 seconds)
05:09:45 tanuki joins (~quassel@173.168.154.189)
05:11:14 × vicfred quits (~vicfred@unaffiliated/vicfred) (Client Quit)
05:15:08 elliott_ joins (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
05:15:28 × elliott_ quits (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Client Quit)
05:15:31 hackage vulkan 3.6.14 - Bindings to the Vulkan graphics API. https://hackage.haskell.org/package/vulkan-3.6.14 (jophish)
05:16:31 hackage VulkanMemoryAllocator 0.3.9, vulkan-utils 0.2 (jophish): https://qbin.io/cgi-immune-lgby
05:17:02 <jophish> What is this qbin thing?
05:17:26 × pehjota1 quits (~pehjota@185.204.1.185) (Remote host closed the connection)
05:17:59 × alx741 quits (~alx741@186.178.110.6) (Ping timeout: 256 seconds)
05:18:02 <Axman6> probably a link shortening service?
05:18:27 <Axman6> looks like a paste service actually
05:18:54 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
05:19:39 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
05:20:24 gxt joins (~gxt@gateway/tor-sasl/gxt)
05:21:10 × tanuki quits (~quassel@173.168.154.189) (Ping timeout: 256 seconds)
05:21:45 <jophish> weird, I uploaded those three packages at the same time
05:22:43 × klixto quits (~klixto@130.220.8.140) (Quit: WeeChat 2.9)
05:22:51 Sanchayan joins (~Sanchayan@171.61.102.109)
05:23:51 × Amras quits (~Amras@unaffiliated/amras0000) (Remote host closed the connection)
05:23:59 Amras joins (~Amras@unaffiliated/amras0000)
05:24:20 conal joins (~conal@64.71.133.70)
05:25:47 × conal quits (~conal@64.71.133.70) (Client Quit)
05:28:22 day_ joins (~Unknown@unaffiliated/day)
05:29:16 da39a3ee5e6b4b0d joins (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th)
05:29:55 × Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
05:30:11 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
05:30:21 livvy joins (~livvy@gateway/tor-sasl/livvy)
05:30:24 alx741 joins (~alx741@186.178.110.6)
05:31:07 tanuki joins (~quassel@173.168.154.189)
05:31:56 × day quits (~Unknown@unaffiliated/day) (Ping timeout: 256 seconds)
05:31:56 day_ is now known as day
05:34:08 × cp- quits (~cp-@b157153.ppp.asahi-net.or.jp) (Ping timeout: 260 seconds)
05:36:19 boistordu1 joins (boistordum@gateway/shell/matrix.org/x-zpdpvjbuxlhmobsh)
05:38:23 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:40:14 cp- joins (~cp-@b157153.ppp.asahi-net.or.jp)
05:41:08 × heyj quits (sid171370@gateway/web/irccloud.com/x-sjxjehfsqkhmjbvz) (Read error: Connection reset by peer)
05:41:19 × edwinb quits (sid69486@gateway/web/irccloud.com/x-elzwlqpwvreqnrml) (Read error: Connection reset by peer)
05:41:24 × adius quits (sid321344@gateway/web/irccloud.com/x-uuhxlducjizxfavl) (Read error: Connection reset by peer)
05:41:25 × mpickering quits (sid78412@gateway/web/irccloud.com/x-wtvxaywdclnnytlv) (Read error: Connection reset by peer)
05:41:25 × PoliticsII______ quits (sid193551@gateway/web/irccloud.com/x-axomckqlurkcrgnc) (Read error: Connection reset by peer)
05:41:36 edwinb joins (sid69486@gateway/web/irccloud.com/x-ucpbbzlyfldprgqw)
05:41:36 mpickering joins (sid78412@gateway/web/irccloud.com/x-pmxjkbnlbuqckyae)
05:41:42 adius joins (sid321344@gateway/web/irccloud.com/x-qiqazzoasoeaazyv)
05:41:42 PoliticsII______ joins (sid193551@gateway/web/irccloud.com/x-svzvwktexytphjlp)
05:43:28 heyj joins (sid171370@gateway/web/irccloud.com/x-xrqocrtckuflwvgl)
05:43:58 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
05:49:21 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
05:51:38 × cp- quits (~cp-@b157153.ppp.asahi-net.or.jp) (Ping timeout: 260 seconds)
05:51:54 × ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection)
05:52:30 ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
05:52:54 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds)
05:53:58 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds)
05:55:07 × acidjnk_new quits (~acidjnk@p200300d0c718f605045012e87868ed0b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
05:56:39 cp- joins (~cp-@b157153.ppp.asahi-net.or.jp)
05:57:24 <dminuoso> % data Foo = Foo { foo, bar :: Int }
05:57:24 <yahb> dminuoso:
05:57:35 <dminuoso> Uh oh. This is permitted. :<
05:57:40 <dminuoso> % :t foo
05:57:41 <yahb> dminuoso: Foo -> Int
06:00:01 × sammuel86 quits (~sammuel86@178.239.168.171) ()
06:09:11 × _xor quits (~xor@74.215.46.133) (Quit: brb)
06:10:42 _xor joins (~xor@74.215.46.133)
06:13:58 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:15:04 RandIter joins (~RandIter@178.162.212.214)
06:18:06 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
06:18:21 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
06:29:52 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
06:31:09 <moet> is there some requirement that a typeclass have a concrete (*) type?
06:31:41 <moet> >:kind! Num
06:31:53 × GuerrillaMonkey quits (~Jeanne-Ka@66.115.189.224) (Ping timeout: 260 seconds)
06:32:05 <moet> ok, the bot doesn't like that but it prints 'Num :: * -> Constraint' for me
06:32:24 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:32:44 pavonia_ joins (~user@unaffiliated/siracusa)
06:33:16 <moet> is there any trick defining instances of standard classes over a closed set of types (lifted by datakinds) .. eg.. 'data T = A | B'
06:33:49 <moet> instance Num 'A where ... fails because `'A :: T` but `Num :: * -> Constraint`
06:34:04 × towel quits (~towel@unaffiliated/towel) (Quit: ZNC - https://znc.in)
06:34:05 × {abby} quits (~{abby}@unaffiliated/demhydraz) (Quit: Ping timeout (120 seconds))
06:34:11 {abby}2 joins (~{abby}@unaffiliated/demhydraz)
06:34:38 × guest1116 quits (~user@49.5.6.87) (Ping timeout: 265 seconds)
06:35:02 towel joins (~towel@unaffiliated/towel)
06:35:07 × pavonia quits (~user@unaffiliated/siracusa) (Ping timeout: 260 seconds)
06:35:09 pavonia_ is now known as pavonia
06:38:47 <moet> nevermind.. the problem was a stuck type family upstream ..
06:39:43 coot_ joins (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl)
06:40:43 × coot quits (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds)
06:40:44 coot_ is now known as coot
06:41:12 × Sanchayan quits (~Sanchayan@171.61.102.109) (Quit: leaving)
06:41:26 <moet> now i have questions about stuck type families if anybody has their polykinds hat on
06:41:32 quarters joins (~quarters@unaffiliated/quarters)
06:41:40 <moet> otherwise i'll just figure it out
06:43:05 <quarters> hello. I'm following http://learnyouahaskell.com/syntax-in-functions and noticed that type declarations are shown above every function. Is this something that can be replicated in the ghci repl? when I try it, I get <interactive>:18:1: error:
06:43:05 <quarters> • No instance for (Show (Integer -> String))
06:43:05 <quarters> arising from a use of ‘print’
06:43:05 <quarters> (maybe you haven't applied a function to enough arguments?)
06:43:06 <quarters> • In a stmt of an interactive GHCi command: print it
06:43:30 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
06:43:30 × matthew- quits (~matthew@smtp.wellquite.org) (Ping timeout: 272 seconds)
06:43:50 matthew- joins (~matthew@smtp.wellquite.org)
06:47:12 <moet> quarters: yes, there are two ways https://termbin.com/zngt
06:47:47 <moet> quarters: one is to type a one-liner lambda on the rhs of a let, parenthesize the whole lambda, and then give it a type
06:47:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
06:48:05 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 256 seconds)
06:48:14 <moet> quarters: the other is to write a multi-line-function just as you would in a file, by preceding it with :{ and then following it with :}
06:48:24 <moet> see the paste at https://termbin.com/zngt
06:48:37 Sanchayan joins (~Sanchayan@171.61.102.109)
06:49:34 <quarters> moet: awesome. thank you!
06:50:01 × falafel_ quits (~falafel@50.216.77.242) (Ping timeout: 264 seconds)
06:52:58 <moet> does making a type-family have a result of kind `k` automatically make the type family "stuck"? is there a way to inspect the result?
06:55:03 <Axman6> :kind! should show you it in as evaluated for as possible
06:55:19 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
06:55:32 <Axman6> (that's probably not a precide definition of what it does, but :kind! is probably what you're after)
06:56:02 avn joins (~avn@78-56-108-78.static.zebra.lt)
06:56:22 santa_1 joins (~santa_@185.163.110.116)
06:58:19 <moet> Axman6: hrm.. that tool does help me to identify the problem but my question is more about what the meaning of a polymorphic typeclass is
06:58:37 <moet> Axman6: if you have a sec, take a look at this minimal example: https://termbin.com/n79h
06:59:13 <moet> in the example, i've made a type family that seems to be useless, because it is stuck due to its polymorphic result
07:00:48 <dminuoso> moet: No, typeclasses can have instances for non-* types as well. See Functor
07:01:12 <dminuoso> Oh, scrolled up again.
07:01:52 <Axman6> this is definitely beyond my knowledge of these things
07:02:07 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
07:02:51 <moet> dminuoso: heh, yeah, i realized the issue with that typeclass was actually the stuck type family not resolving to the type which matched the typeclass :)
07:03:09 <moet> Axman6: thanks for taking a look anyhow.. it's beyond my knowledge too!
07:03:17 <dminuoso> Im surprised this typechecks at all
07:03:37 <dminuoso> Or kindchecks, rather
07:04:10 <moet> dminuoso: it does admittedly require like 4 extensions
07:04:27 <keltono> try `:t funcName`
07:04:35 <keltono> whoops, wrong channel
07:04:41 <dminuoso> moet: which ones?
07:04:48 <dminuoso> TypeFamilies and PolyKinds presumably
07:04:50 <dminuoso> Which else?
07:04:56 <moet> DataKinds and KindSignatures
07:05:08 <dminuoso> Ah, well those make sense too
07:05:12 <moet> Though DataKinds is probably only because i used tuple on RHS
07:05:15 <dminuoso> Right
07:05:25 <dminuoso> You could alternatively say
07:05:32 <dminuoso> % type family TF (a :: *) :: k
07:05:32 <yahb> dminuoso:
07:05:40 <dminuoso> % type instance TF Bool = Type
07:05:40 <yahb> dminuoso: ; <interactive>:102:25: error:; Ambiguous occurrence `Type'; It could refer to; either `Language.Haskell.TH.Type', imported from `Language.Haskell.TH' (and originally defined in `Language.Haskell.TH.Syntax'); or `Data.Kind.Type', imported from `Data.Kind' (and originally defined in `GHC.Types')
07:05:57 <dminuoso> % type instance TF Bool = Data.Kind.Type
07:05:57 <yahb> dminuoso:
07:06:02 <dminuoso> % type instance TF Int = Data.Kind.Type -> Data.Kind.Type
07:06:03 <yahb> dminuoso:
07:07:42 <moet> % :kind! TF Bool
07:07:43 <yahb> moet: k; = TF Bool
07:07:47 <moet> % :kind! TF Int
07:07:47 <yahb> moet: k; = TF Int
07:07:52 <moet> also stuck?
07:08:06 <dminuoso> I dont think "stuck" is the right terminology here
07:08:19 <dminuoso> % :kind! TF Int
07:08:19 <yahb> dminuoso: forall {k}. k; = TF Int
07:08:33 <dminuoso> (I added :set -fprint-explicit-foralls in a query)
07:08:46 <dminuoso> So it returns a polymorphic kind
07:08:58 <moet> yes, i think it's because k cannot be both * and (* -> *) at the sametime
07:09:04 <dminuoso> The confusing thing is why the tf instances type check at all, because `Type` is certainly *not* polymorphic
07:09:46 <dminuoso> But then again, I only know how you can have polymorphic kinds in negative positions (say like Const)
07:09:54 <dminuoso> Or *polymorphic types rather
07:10:18 <dminuoso> Let's say we did
07:10:29 <dminuoso> % data C (forall k. t :: k) = C
07:10:30 <yahb> dminuoso: ; <interactive>:111:9: error:; Unexpected type `forall k. t :: k'; In the data declaration for `C'; A data declaration should have form; data C a = ...
07:11:02 <dminuoso> Oh that's not allowed?
07:11:37 <glguy> % :kind! TF Bool :: *
07:11:37 <yahb> glguy: *; = *
07:11:48 <glguy> % :kind! [TF Bool]
07:11:48 <yahb> glguy: *; = [*]
07:12:11 <moet> % :kind! [TF Int]
07:12:11 <yahb> moet: *; = [* -> *]
07:12:15 <moet> oh, wow..
07:12:17 <dminuoso> Is it possible this tyfam crosses universes and returns a proper kind?
07:12:29 <dminuoso> (Sort of TypeInType)
07:12:50 <dminuoso> No this is still weird
07:12:51 <glguy> You have to know the desired result kind to know which TF instance to use
07:13:14 <glguy> % type instance TF Bool = (->)
07:13:14 <yahb> glguy:
07:13:18 <dminuoso> glguy: What's the meaning of `TF Bool` without a kind signature then?
07:14:10 <dminuoso> % type instance TF Bool = Int
07:14:10 <yahb> dminuoso: ; <interactive>:103:15: error:; Conflicting family instance declarations:; TF Bool = * -- Defined at <interactive>:103:15; TF Bool = Int -- Defined at <interactive>:123:15
07:14:12 <dminuoso> % type instance TF Bool = Const
07:14:13 <yahb> dminuoso: ; <interactive>:119:15: error:; Conflicting family instance declarations:; TF Bool = (->) -- Defined at <interactive>:119:15; forall {k}. TF Bool = Const -- Defined at <interactive>:124:15
07:14:14 <dminuoso> Oh
07:14:18 <glguy> % :kind! TF Bool :: * -> * -> *
07:14:18 <yahb> glguy: * -> * -> *; = (->)
07:14:32 <glguy> % :kind! TF Bool :: *
07:14:32 <yahb> glguy: *; = *
07:14:35 <dminuoso> Interesting, so this tyfam is essentially parametrized over not just a type, but a kind as well?
07:15:07 <glguy> Yeah, this is relying on PolyKinds to work
07:15:30 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:15:42 × mrchampion quits (~mrchampio@216-211-57-41.dynamic.tbaytel.net) (Ping timeout: 256 seconds)
07:16:20 <moet> soo.... this makes sense, kinda .. the result is polymorphic so we need to either infer or annotate the result for it to be computed
07:16:25 <dminuoso> Is this interaction documented anywhere in the GHC manual? I cant seem to find a reference in either the tyfam nor polykinds sections
07:17:45 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
07:18:25 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
07:18:41 <moet> glguy: dminuoso: thanks
07:19:19 bitmagie joins (~Thunderbi@200116b806468f00a548803c2a7d669f.dip.versatel-1u1.de)
07:20:00 <dminuoso> glguy, moet: Ah I think I found a reference. It's a bit short but it's there https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/poly_kinds.html?highlight=polykinds#kind-inference-in-closed-type-families
07:20:06 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad) (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:20:12 <dminuoso> So these are called "kind-indexed type families"
07:20:53 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
07:21:07 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
07:21:44 chele joins (~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
07:22:09 <moet> i see that; it's rather brief... thank yo
07:22:57 <moet> since my only purpose was to create typeclass instances of the RHS of this type family, it's not going to work i think.. i'll take to take another approach!
07:26:35 guest1116 joins (~user@49.5.6.87)
07:27:05 × ericsagn1 quits (~ericsagne@2405:6580:0:5100:903c:6f64:11e3:36e2) (Ping timeout: 272 seconds)
07:28:20 mrchampion joins (~mrchampio@216-26-218-246.dynamic.tbaytel.net)
07:28:26 × Lowl3v3l quits (~Lowl3v3l@dslb-002-203-195-108.002.203.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
07:29:14 Lowl3v3l joins (~Lowl3v3l@dslb-002-203-195-108.002.203.pools.vodafone-ip.de)
07:33:40 × Sgeo_ quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
07:35:06 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:35:59 thc202 joins (~thc202@unaffiliated/thc202)
07:36:47 invaser joins (~Thunderbi@31.148.23.125)
07:37:38 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
07:39:05 ericsagn1 joins (~ericsagne@2405:6580:0:5100:1774:2bb5:b05f:edf1)
07:40:03 asheshambasta joins (~user@ptr-e1lysawl9rr13i61o92.18120a2.ip6.access.telenet.be)
07:40:31 <glguy> What was the original thing you were trying to do?
07:43:03 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
07:44:34 × bitmagie quits (~Thunderbi@200116b806468f00a548803c2a7d669f.dip.versatel-1u1.de) (Quit: bitmagie)
07:45:58 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
07:47:50 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
07:49:46 dhouthoo joins (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
07:50:02 bahamas joins (~lucian@unaffiliated/bahamas)
07:52:43 <bahamas> how do I get out of multiline mode in ghci? meaning, I just pasted a multiline string and noticed that the prompt changed from "ghci> " to "Prelude|". using the command `:unset +m` didn't change the prompt
07:53:12 zopsi_ parts (zopsi@2600:3c00::f03c:91ff:fe14:551f) ()
07:54:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:54:49 <dminuoso> bahamas: :unset +m works for me
07:55:01 <dminuoso> bahamas: Perhaps this only works outside a multiline block?
07:56:01 <bahamas> dminuoso: ok, I found that Ctrl+D gets me back to `ghci> `. but the variable that I defined in the multiline mode is not available anymore
07:56:30 <dminuoso> bahamas: Oh you mean manually leave a multiline block?
07:56:41 <bahamas> I basically have a multiline string that I want to clean.
07:56:57 <bahamas> that's what I'm trying to accomplish
07:57:05 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
07:59:07 × xff0x quits (~fox@2001:1a81:529e:a500:712c:5a16:6a4b:9d48) (Ping timeout: 260 seconds)
07:59:31 <dminuoso> % (&) = fromIntegral
07:59:31 <yahb> dminuoso:
07:59:35 <dminuoso> % (10&)
07:59:36 <yahb> dminuoso: 10
07:59:55 <dminuoso> Finally a non annoying way to use fromIntegral and realToFrac :>
07:59:59 xff0x joins (~fox@2001:1a81:529e:a500:a7e0:336:a54e:d7a5)
08:00:33 × jedws quits (~jedws@101.184.175.183) (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:00:49 <bahamas> ok, I guess multiline mode doesn't help with multiline strings
08:01:07 × Merfont quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
08:01:28 Merfont joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
08:02:15 jedws joins (~jedws@101.184.175.183)
08:02:28 Stanley00 joins (~stanley00@unaffiliated/stanley00)
08:04:19 <yushyin> dminuoso: lol
08:05:48 × jedws quits (~jedws@101.184.175.183) (Client Quit)
08:06:36 Varis joins (~Tadas@unaffiliated/varis)
08:08:36 alp joins (~alp@2a01:e0a:58b:4920:8cf5:bc2e:8b7a:9a8e)
08:08:52 Amras joins (~Amras@unaffiliated/amras0000)
08:09:02 × p8m quits (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 260 seconds)
08:09:18 zopsi joins (zopsi@2600:3c00::f03c:91ff:fe14:551f)
08:11:25 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
08:11:38 jedws joins (~jedws@101.184.175.183)
08:15:01 × polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9)
08:15:22 <merijn> dminuoso: I will haunt your dreams >.<
08:16:04 <merijn> bahamas: tbh, I would just abandon multiline ghci use entirely, any "support" for it was ad hoc hacked into it
08:17:31 jespada joins (~jespada@90.254.245.49)
08:19:49 p8m joins (p8m@gateway/vpn/protonvpn/p8m)
08:20:15 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
08:21:01 gxt joins (~gxt@gateway/tor-sasl/gxt)
08:25:53 benjamingr__ joins (uid23465@gateway/web/irccloud.com/x-hiupvfuftqbhepbs)
08:28:11 × recon_-_ quits (~quassel@2602:febc:0:b6::6ca2) (Quit: No Ping reply in 180 seconds.)
08:29:00 Kaeipi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
08:29:27 recon_- joins (~quassel@2602:febc:0:b6::6ca2)
08:29:33 × Merfont quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: Connection reset by peer)
08:30:20 idhugo joins (~idhugo@users-1190.st.net.au.dk)
08:30:56 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
08:31:31 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
08:33:45 × nados quits (~dan@69-165-210-185.cable.teksavvy.com) (Ping timeout: 260 seconds)
08:34:54 × jedws quits (~jedws@101.184.175.183) (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:36:49 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 264 seconds)
08:38:22 × drbean quits (~drbean@TC210-63-209-39.static.apol.com.tw) (Ping timeout: 256 seconds)
08:40:13 Yumasi joins (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr)
08:42:47 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
08:48:54 × cyphase quits (~cyphase@unaffiliated/cyphase) (Ping timeout: 272 seconds)
08:52:57 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
08:55:07 × Yumasi quits (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr) (Read error: Connection reset by peer)
08:57:35 cyphase joins (~cyphase@unaffiliated/cyphase)
08:57:46 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
08:58:37 borne joins (~fritjof@200116b864b5430099e934deb93b1409.dip.versatel-1u1.de)
09:00:01 × santa_1 quits (~santa_@185.163.110.116) ()
09:00:04 × DeadComaGrayce[m quits (commagra1@gateway/shell/matrix.org/x-azdmcqjbsmchjvtv) (Quit: Idle for 30+ days)
09:00:06 × wrunt[m] quits (wruntmatri@gateway/shell/matrix.org/x-fajabshtqlxbdigd) (Quit: Idle for 30+ days)
09:00:33 Yumasi joins (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr)
09:01:43 × cheater quits (~user@unaffiliated/cheater) (Quit: (BitchX) "got bitchx?")
09:04:03 britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch)
09:04:29 cfricke joins (~cfricke@unaffiliated/cfricke)
09:04:56 solonarv joins (~solonarv@astrasbourg-653-1-156-155.w90-6.abo.wanadoo.fr)
09:05:32 <moet> glguy: ah, i'll have to get back to you on that tomorrow..
09:06:05 kuribas joins (~user@ptr-25vy0iaahu2pezvpnfb.18120a2.ip6.access.telenet.be)
09:07:14 <Ivan__1> q
09:07:17 × Ivan__1 quits (~yudin@gw.mat.uc.pt) (Quit: leaving)
09:07:38 christo joins (~chris@81.96.113.213)
09:11:12 <runeks> Anyone know a mirror for https://downloads.haskell.org/~ghc/8.8.3/ghc-8.8.3-x86_64-apple-darwin.tar.xz? I'm getting 20-30 KB/s from that link...
09:11:16 cheater joins (~user@unaffiliated/cheater)
09:11:56 <dminuoso> runeks: https://distfiles.macports.org/ghc/
09:12:04 <dminuoso> Be sure to check the signatures against the ones from haskell.org
09:12:42 × cheater quits (~user@unaffiliated/cheater) (Read error: Connection reset by peer)
09:13:25 × da39a3ee5e6b4b0d quits (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th) (Ping timeout: 240 seconds)
09:14:04 <runeks> @dminuoso Thank you! I checked the hash and it matches that of the haskell.org file.
09:14:04 <lambdabot> Unknown command, try @list
09:14:06 enoq joins (~textual@194-208-146-143.lampert.tv)
09:14:16 <runeks> dminuoso: Thank you! I checked the hash and it matches that of the haskell.org file.
09:16:25 × Guest2620 quits (~Christoph@chezlefab.net) (Ping timeout: 264 seconds)
09:16:25 × Yumasi quits (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr) (Read error: Connection reset by peer)
09:16:33 stilgart joins (~Christoph@chezlefab.net)
09:17:01 × orzo quits (joe@lasker.childrenofmay.org) (Ping timeout: 264 seconds)
09:17:01 × peutri quits (~peutri@ns317027.ip-94-23-46.eu) (Ping timeout: 264 seconds)
09:17:10 peutri joins (~peutri@ns317027.ip-94-23-46.eu)
09:17:10 orzo joins (joe@lasker.childrenofmay.org)
09:17:49 × guest1116 quits (~user@49.5.6.87) (Ping timeout: 246 seconds)
09:18:02 × moet quits (~moet@mobile-166-137-178-183.mycingular.net) (Ping timeout: 272 seconds)
09:18:02 × seveg quits (~gabriel@2a02-ab04-0249-8d00-7d49-c4e2-4790-91c2.dynamic.v6.chello.sk) (Ping timeout: 264 seconds)
09:18:26 <dminuoso> merijn: What can I say, my code is plastered with putWord8/putWord16be/putWord32be
09:18:40 <dminuoso> And sadly I cant track Word8/Word16/Word32 cleanly through
09:19:27 <dminuoso> So what I realistically do is, I keep them as Word32 and narrow wherever. Validation before serialization will catch potential bugs here.
09:19:33 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-wwiyyhwyadbuqprb) (Quit: Connection closed for inactivity)
09:19:52 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
09:20:05 seveg joins (~gabriel@188-167-252-154.dynamic.chello.sk)
09:20:13 berberman joins (~berberman@unaffiliated/berberman)
09:21:53 Yumasi joins (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr)
09:22:37 m0rphism joins (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de)
09:23:35 fendor joins (~fendor@178.115.131.226.wireless.dyn.drei.com)
09:23:44 × lxsameer quits (~lxsameer@unaffiliated/lxsameer) (Ping timeout: 272 seconds)
09:25:35 <merijn> Hopefully ;)
09:25:35 da39a3ee5e6b4b0d joins (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th)
09:27:08 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
09:27:21 cheater joins (~user@unaffiliated/cheater)
09:28:22 × Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 260 seconds)
09:29:02 <dminuoso> Well, for deserialization I could use int-cast I guess
09:30:35 Franciman joins (~francesco@host-82-56-223-169.retail.telecomitalia.it)
09:33:48 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
09:34:38 Amras joins (~Amras@unaffiliated/amras0000)
09:36:00 lxsameer joins (lxsameer@gateway/vpn/protonvpn/lxsameer)
09:36:48 × Yumasi quits (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr) (Read error: Connection reset by peer)
09:37:45 × Cale quits (~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds)
09:37:49 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 265 seconds)
09:37:58 × jzl quits (~jzl@unaffiliated/jzl) (Ping timeout: 260 seconds)
09:38:11 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
09:38:32 jzl joins (~jzl@2607:5300:60:1422::1)
09:38:32 × jzl quits (~jzl@2607:5300:60:1422::1) (Changing host)
09:38:32 jzl joins (~jzl@unaffiliated/jzl)
09:40:12 Cale joins (~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com)
09:40:42 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 256 seconds)
09:42:11 Yumasi joins (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr)
09:43:17 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
09:46:20 grimgnr joins (~user@94.19.246.43)
09:48:04 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
09:48:21 × zebrag quits (~inkbottle@aaubervilliers-654-1-73-14.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
09:48:42 zebrag joins (~inkbottle@aaubervilliers-654-1-73-14.w86-212.abo.wanadoo.fr)
09:48:50 bahamas joins (~lucian@unaffiliated/bahamas)
09:51:48 guest1116 joins (~user@49.5.6.87)
10:01:36 Martinsos joins (~user@cpe-188-129-116-164.dynamic.amis.hr)
10:01:59 × da39a3ee5e6b4b0d quits (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th) (Ping timeout: 265 seconds)
10:04:30 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer)
10:05:06 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
10:05:31 da39a3ee5e6b4b0d joins (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th)
10:07:31 tromp_ joins (~tromp@dhcp-077-249-230-040.chello.nl)
10:07:31 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer)
10:09:57 <Martinsos> Hi all! I am not so new to Haskell, but I am new to IRC - any best practices to share on how to get most of haskell IRC channel? I am usually on reddit but I heard haskell IRC channel is the best place to learn/ask. I am right now using ERC in Emacs, but I am not sure how to go about it since I can't see the old messages -> do you have IRC turned on all the time? Do you also use ERC in Emacs or do you use smth else? What is your
10:09:57 <Martinsos> workflow about participating in IRC while also getting stuff done? Thanks!
10:11:28 <merijn> Some people stay logged in all the time via a "bouncer" (basically a VPS forwarding to your local machine), but personally I just treat IRC as transient, there is not much point in attempting to keep up with everything that happens
10:11:48 boxscape joins (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55)
10:11:51 × da39a3ee5e6b4b0d quits (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th) (Read error: Connection reset by peer)
10:11:52 × lxsameer quits (lxsameer@gateway/vpn/protonvpn/lxsameer) (Ping timeout: 256 seconds)
10:14:57 <Martinsos> merijn: do you keep it open in separate window, or if you are using it through emacs do you just keep the buffer in the background and open it every so and so?
10:15:34 <merijn> I don't use emacs at all :p I just have it open in a seperate tmux window
10:16:26 <[exa]> Martinsos: I got permanently running irssi on a server, connecting just with ssh+tmux
10:16:45 <Martinsos> merijn: ok great, thanks a lot :)! I also just realized there are logs at tunes.org, so that is also useful.
10:16:58 <merijn> Also https://ircbrowse.tomsmeding.com/haskell
10:17:01 <Martinsos> merijn++
10:17:37 × invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 264 seconds)
10:17:38 <Martinsos> @karma Martinsos
10:17:38 <lambdabot> You have a karma of 0
10:17:50 <Martinsos> @karma merijn
10:17:50 <lambdabot> merijn has a karma of 76
10:18:48 <Martinsos> [exa]++
10:19:23 × rprije quits (~rprije@124.148.131.132) (Ping timeout: 260 seconds)
10:21:14 <[exa]> Martinsos: worry not, karma tracks itself here
10:21:54 <Martinsos> [exa]: Aha, what do you mean by that, how does it track itself?
10:24:27 <boxscape> @hoogle (a -> b) -> (a -> c) -> a -> (b, c)
10:24:28 <lambdabot> Data.Tuple.Extra (&&&) :: (a -> b) -> (a -> c) -> a -> (b, c)
10:24:28 <lambdabot> Extra (&&&) :: (a -> b) -> (a -> c) -> a -> (b, c)
10:24:28 <lambdabot> Control.Wire.Core (&&&!) :: (a -> b) -> (a -> c) -> (a -> (b, c))
10:24:31 acidjnk_new joins (~acidjnk@p200300d0c718f648045012e87868ed0b.dip0.t-ipconnect.de)
10:24:39 <boxscape> hmm it doesn't find the Arrow one
10:25:58 lxsameer joins (~lxsameer@unaffiliated/lxsameer)
10:28:52 × Yumasi quits (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr) (Ping timeout: 256 seconds)
10:28:53 <boxscape> @pl \(^.) -> ((^.bla) &&& (^.foo))
10:28:53 <lambdabot> (line 1, column 3):
10:28:53 <lambdabot> unexpected "^"
10:28:53 <lambdabot> expecting pattern
10:29:01 <boxscape> this is a lambdabot restriction, right?
10:29:09 <boxscape> or pointless restriction, rather
10:30:33 Yumasi joins (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr)
10:30:50 × hidedagger quits (~nate@unaffiliated/hidedagger) (Quit: WeeChat 2.9)
10:32:59 <merijn> pl is rather dumb
10:33:07 <merijn> It doesn't properly parse Haskell, iirc
10:33:51 <boxscape> I see
10:35:04 <merijn> > (\(^.) -> 5 ^. 3) (+)
10:35:07 <lambdabot> 8
10:35:12 <merijn> Seems to work :)
10:37:02 × w1gz quits (~do@159.89.11.133) (Quit: WeeChat 2.9)
10:40:28 <Martinsos> > 314 + 42
10:40:31 <lambdabot> 356
10:44:23 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
10:44:45 vonfry joins (~user@116.236.75.207)
10:44:45 × Yumasi quits (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr) (Read error: Connection reset by peer)
10:45:18 subttle joins (~anonymous@unaffiliated/subttle)
10:46:52 da39a3ee5e6b4b0d joins (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th)
10:48:55 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
10:49:27 {abby}2 is now known as {abby}
10:50:52 Yumasi joins (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr)
10:52:03 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
10:52:05 bidabong joins (uid272474@gateway/web/irccloud.com/x-baxncysxwetsxiet)
10:52:23 Feuermagier joins (~Feuermagi@213.178.26.41)
10:57:41 × guest1116 quits (~user@49.5.6.87) (Remote host closed the connection)
10:57:50 LKoen joins (~LKoen@9.253.88.92.rev.sfr.net)
10:58:16 jaspervdj joins (~jaspervdj@213.55.241.138)
10:58:43 w1gz joins (~do@159.89.11.133)
11:01:09 × Martinsos quits (~user@cpe-188-129-116-164.dynamic.amis.hr) (Remote host closed the connection)
11:01:14 × alp quits (~alp@2a01:e0a:58b:4920:8cf5:bc2e:8b7a:9a8e) (Ping timeout: 264 seconds)
11:01:25 jakob_ joins (~textual@p200300f49f1622008dbefd778746ea7f.dip0.t-ipconnect.de)
11:01:38 Martinsos joins (~user@cpe-188-129-116-164.dynamic.amis.hr)
11:03:22 × LKoen quits (~LKoen@9.253.88.92.rev.sfr.net) (Remote host closed the connection)
11:03:41 Martinsos parts (~user@cpe-188-129-116-164.dynamic.amis.hr) ()
11:03:53 Martinsos joins (~user@cpe-188-129-116-164.dynamic.amis.hr)
11:04:04 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
11:04:59 LKoen joins (~LKoen@9.253.88.92.rev.sfr.net)
11:05:04 × Yumasi quits (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr) (Read error: Connection reset by peer)
11:06:23 × wei2912 quits (~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
11:08:57 christo joins (~chris@81.96.113.213)
11:11:10 Yumasi joins (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr)
11:13:25 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
11:13:31 × christo quits (~chris@81.96.113.213) (Ping timeout: 265 seconds)
11:19:19 alp joins (~alp@2a01:e0a:58b:4920:1c72:d61a:7e48:b350)
11:22:48 × britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
11:23:33 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds)
11:26:04 × Yumasi quits (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr) (Read error: Connection reset by peer)
11:27:08 britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch)
11:31:06 cosimone joins (~cosimone@5.171.26.79)
11:31:30 Yumasi joins (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr)
11:31:34 × andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
11:32:16 × vonfry quits (~user@116.236.75.207) (Remote host closed the connection)
11:32:36 knupfer joins (~Thunderbi@dynamic-046-114-148-109.46.114.pool.telefonica.de)
11:33:04 × knupfer quits (~Thunderbi@dynamic-046-114-148-109.46.114.pool.telefonica.de) (Client Quit)
11:33:15 Tario joins (~Tario@201.192.165.173)
11:34:40 andreas303 joins (~andreas@gateway/tor-sasl/andreas303)
11:35:57 knupfer joins (~Thunderbi@dynamic-046-114-148-109.46.114.pool.telefonica.de)
11:38:27 cgfuh joins (~cgfuh@181.167.191.58)
11:38:35 × Unhammerd quits (~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection)
11:38:43 mirrorbird joins (~psutcliff@176.227.57.79)
11:39:33 Unhammerd joins (~Unhammer@gateway/tor-sasl/unhammer)
11:40:14 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
11:41:05 berberman joins (~berberman@unaffiliated/berberman)
11:42:47 × ericsagn1 quits (~ericsagne@2405:6580:0:5100:1774:2bb5:b05f:edf1) (Ping timeout: 260 seconds)
11:47:26 × Yumasi quits (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr) (Read error: Connection reset by peer)
11:51:02 × Martinsos quits (~user@cpe-188-129-116-164.dynamic.amis.hr) (Ping timeout: 256 seconds)
11:51:11 × hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Quit: hekkaidekapus_)
11:51:48 wi[m] joins (w1gzmatrix@gateway/shell/matrix.org/x-xtlrgyxrbktyedto)
11:52:32 hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
11:53:50 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8)
11:53:58 Yumasi joins (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr)
11:54:49 ericsagn1 joins (~ericsagne@2405:6580:0:5100:1e63:f75b:d40e:f87e)
12:04:07 × cheater quits (~user@unaffiliated/cheater) (Ping timeout: 260 seconds)
12:04:30 hackage Z-Data 0.1.9.0 - Array, vector and text https://hackage.haskell.org/package/Z-Data-0.1.9.0 (winterland)
12:05:56 × cosimone quits (~cosimone@5.171.26.79) (Quit: cosimone)
12:06:03 cheater joins (~user@unaffiliated/cheater)
12:07:52 × Yumasi quits (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr) (Read error: Connection reset by peer)
12:08:21 × mirrorbird quits (~psutcliff@176.227.57.79) (Quit: Leaving)
12:09:36 DavidEichmann joins (~david@62.110.198.146.dyn.plus.net)
12:13:17 Yumasi joins (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr)
12:15:43 Martinsos joins (~user@cpe-188-129-116-164.dynamic.amis.hr)
12:22:29 × knupfer quits (~Thunderbi@dynamic-046-114-148-109.46.114.pool.telefonica.de) (Quit: knupfer)
12:23:33 × da39a3ee5e6b4b0d quits (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th) (Ping timeout: 256 seconds)
12:24:32 sh9 joins (~sh9@softbank060116136158.bbtec.net)
12:25:17 invaser joins (~Thunderbi@31.148.23.125)
12:28:10 × Stanley00 quits (~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
12:29:12 × Yumasi quits (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr) (Read error: Connection reset by peer)
12:32:44 da39a3ee5e6b4b0d joins (~da39a3ee5@ppp-223-24-151-50.revip6.asianet.co.th)
12:34:40 Yumasi joins (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr)
12:38:01 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
12:43:30 hackage vulkan 3.6.15 - Bindings to the Vulkan graphics API. https://hackage.haskell.org/package/vulkan-3.6.15 (jophish)
12:46:08 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
12:47:52 × carlomagno quits (~cararell@148.87.23.8) (Remote host closed the connection)
12:48:30 hackage hpqtypes-extras 1.10.3.0 - Extra utilities for hpqtypes library https://hackage.haskell.org/package/hpqtypes-extras-1.10.3.0 (arybczak)
12:49:15 ulidtko joins (~ulidtko@193.111.48.79)
12:50:05 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
12:52:51 × Sanchayan quits (~Sanchayan@171.61.102.109) (Quit: leaving)
12:53:14 × plutoniix quits (~q@175.176.222.7) (Quit: Leaving)
12:54:39 texasmynsted joins (~texasmyns@212.102.45.103)
12:58:03 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
13:01:52 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
13:04:28 urodna joins (~urodna@unaffiliated/urodna)
13:07:56 × da39a3ee5e6b4b0d quits (~da39a3ee5@ppp-223-24-151-50.revip6.asianet.co.th) (Ping timeout: 272 seconds)
13:09:36 × Yumasi quits (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr) (Read error: Connection reset by peer)
13:10:58 × Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 260 seconds)
13:13:26 × LKoen quits (~LKoen@9.253.88.92.rev.sfr.net) (Ping timeout: 256 seconds)
13:14:05 LKoen joins (~LKoen@9.253.88.92.rev.sfr.net)
13:14:18 whatisRT joins (~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de)
13:15:01 Yumasi joins (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr)
13:17:07 knupfer joins (~Thunderbi@dynamic-046-114-148-109.46.114.pool.telefonica.de)
13:17:12 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
13:19:44 <tomjaguarpaw> Can I disable the garbage collector temporarily at run time and then re-enable by running some IO action?
13:20:03 <merijn> tomjaguarpaw: Not really
13:20:09 <merijn> tomjaguarpaw: Why?
13:20:15 <tomjaguarpaw> For benchmarking
13:20:30 <tomjaguarpaw> or at least to determine whether it's GC that's taking time in my benchmarks
13:20:35 <merijn> tomjaguarpaw: You can *force* a collection ahead of time
13:20:45 × britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
13:20:53 <tomjaguarpaw> Hmm, OK, that will be a good start
13:21:01 <merijn> tomjaguarpaw: That's what criterion does. Fully evaluate all data structures before benchmark, then trigger GC explicitly, then benchmark
13:21:09 <merijn> Which should make major collections unlikely
13:21:23 <tomjaguarpaw> How do I do that?
13:21:29 <merijn> @Hoogle performGC
13:21:30 <lambdabot> Maybe you meant: hoogle google
13:21:33 <merijn> @hoogle performGC
13:21:33 <lambdabot> System.Mem performGC :: IO ()
13:21:33 <lambdabot> BasePrelude performGC :: IO ()
13:21:33 <lambdabot> Pipes.Concurrent performGC :: IO ()
13:23:15 britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch)
13:23:30 <tomjaguarpaw> merijn: Cool, thanks! I will give it a go.
13:23:41 <merijn> tomjaguarpaw: You can study how criterion works too
13:23:49 <merijn> (or just use criterion if possible :p)
13:26:16 × vjoki quits (vjoki@2a00:d880:3:1::fea1:9ae) (Quit: ...)
13:26:57 vjoki joins (vjoki@2a00:d880:3:1::fea1:9ae)
13:27:08 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
13:27:38 × rdivacky quits (~rdivacky@212.96.173.4) (Read error: Connection reset by peer)
13:27:54 rdivacky joins (~rdivacky@212.96.173.4)
13:27:54 × lockshaw quits (~lockshaw@165.22.163.71) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
13:29:04 Guest2830 joins (~geekosaur@84.39.117.57)
13:33:31 lockshaw joins (~lockshaw@165.22.163.71)
13:34:03 Aquazi joins (uid312403@gateway/web/irccloud.com/x-nsgilupshvjjyzul)
13:34:09 geekosaur joins (82659a09@host154-009.vpn.uakron.edu)
13:38:17 lep-delete is now known as test
13:38:36 test is now known as lep-delete
13:40:30 hackage git-annex 8.20201116 - manage files with git, without checking their contents into git https://hackage.haskell.org/package/git-annex-8.20201116 (JoeyHess)
13:41:22 × toorevitimirp quits (~tooreviti@117.182.180.118) (Ping timeout: 246 seconds)
13:41:34 raichoo joins (~raichoo@dslb-088-077-025-015.088.077.pools.vodafone-ip.de)
13:41:52 toorevitimirp joins (~tooreviti@117.182.180.118)
13:47:45 × knupfer quits (~Thunderbi@dynamic-046-114-148-109.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
13:48:36 ggole joins (~ggole@2001:8003:8119:7200:a813:5a33:e96f:8fc6)
13:49:25 × Yumasi quits (~guillaume@pop.92-184-106-1.mobile.abo.orange.fr) (Ping timeout: 264 seconds)
13:49:53 Yumasi joins (~guillaume@static-176-175-104-214.ftth.abo.bbox.fr)
13:52:21 bahamas joins (~lucian@unaffiliated/bahamas)
13:53:27 × RandIter quits (~RandIter@178.162.212.214) (Remote host closed the connection)
13:53:43 Sanchayan joins (~Sanchayan@171.61.102.109)
13:56:32 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
14:00:58 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 246 seconds)
14:02:41 × invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 265 seconds)
14:02:58 da39a3ee5e6b4b0d joins (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th)
14:03:23 servo joins (~servo@41.92.32.131)
14:03:24 × servo quits (~servo@41.92.32.131) (Max SendQ exceeded)
14:03:33 cinimod_ joins (uid93893@gateway/web/irccloud.com/x-jjuixteopossqepf)
14:03:47 servo joins (~servo@41.92.32.131)
14:03:48 × servo quits (~servo@41.92.32.131) (Max SendQ exceeded)
14:04:12 servo joins (~servo@41.92.32.131)
14:04:13 × servo quits (~servo@41.92.32.131) (Max SendQ exceeded)
14:04:34 servo joins (~servo@41.92.97.254)
14:04:35 × servo quits (~servo@41.92.97.254) (Max SendQ exceeded)
14:04:56 servo joins (~servo@41.92.97.254)
14:04:57 × servo quits (~servo@41.92.97.254) (Max SendQ exceeded)
14:05:00 christo joins (~chris@81.96.113.213)
14:05:16 nbloomf joins (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad)
14:05:20 servo joins (~servo@41.92.97.254)
14:05:21 × servo quits (~servo@41.92.97.254) (Max SendQ exceeded)
14:05:46 servo joins (~servo@41.92.32.131)
14:05:47 × servo quits (~servo@41.92.32.131) (Max SendQ exceeded)
14:06:09 servo joins (~servo@41.92.97.254)
14:06:10 × servo quits (~servo@41.92.97.254) (Max SendQ exceeded)
14:06:32 hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net)
14:06:36 servo joins (~servo@41.92.32.131)
14:06:37 × servo quits (~servo@41.92.32.131) (Max SendQ exceeded)
14:07:00 servo joins (~servo@41.92.97.254)
14:08:09 × Jajik quits (xchlup2@gateway/shell/fi.muni.cz/x-dpprselxanrtxlgk) (Quit: Ping timeout (120 seconds))
14:08:22 Jajik joins (xchlup2@gateway/shell/fi.muni.cz/x-jfxvsfpdsqpqvolb)
14:09:05 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
14:09:22 mmfood joins (~mmfood@81-232-132-159-no64.tbcn.telia.com)
14:11:11 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:11:39 × cinimod_ quits (uid93893@gateway/web/irccloud.com/x-jjuixteopossqepf) ()
14:11:53 cinimod_ joins (uid93893@gateway/web/irccloud.com/x-wrzxrzpvqphwukyg)
14:13:30 × Kaivo quits (~Kaivo@104-200-86-99.mc.derytele.com) (Quit: WeeChat 2.9)
14:13:40 xsperry joins (~as@unaffiliated/xsperry)
14:15:50 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
14:19:18 machinedgod joins (~machinedg@24.105.81.50)
14:19:43 × Martinsos quits (~user@cpe-188-129-116-164.dynamic.amis.hr) (Ping timeout: 260 seconds)
14:19:59 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
14:25:26 <kuribas> How do I model some subtype relation with classes? For example A contains some B, B contains some C, then I want a function that gives me all C in A.
14:25:40 p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
14:25:55 <kuribas> like "allChildren someA @C"
14:26:15 <kuribas> I could do this with overlapping type-classes, but they aren't recommended?
14:26:36 <merijn> kuribas: tbh, what your asking also sounds "not recommended" :p
14:27:07 <kuribas> merijn: so you would model every combination of subsets?
14:27:30 <merijn> You're going to have to get a lot more specific about what that even means :)
14:27:46 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
14:28:51 Stanley00 joins (~stanley00@unaffiliated/stanley00)
14:28:58 <kuribas> well in lisp we have (select :park :sensor-box), and it would return all sensor-boxes in a park.
14:29:06 gxt joins (~gxt@gateway/tor-sasl/gxt)
14:29:08 <geekosaur> ti sounded more like generics than classes to me
14:30:33 knupfer joins (~Thunderbi@dynamic-046-114-148-109.46.114.pool.telefonica.de)
14:31:05 <kuribas> merijn: or you would explicitly compose them?
14:31:32 <kuribas> like parkInverters >>> inverterSensorBoxes
14:31:38 × jchia quits (~jchia@58.32.36.109) (*.net *.split)
14:31:38 × TMA quits (tma@twin.jikos.cz) (*.net *.split)
14:31:38 × jdt quits (~jdt@208.85.233.130) (*.net *.split)
14:31:38 × adamCS quits (~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) (*.net *.split)
14:31:38 × Ranhir quits (~Ranhir@157.97.53.139) (*.net *.split)
14:31:38 × qz quits (~quetzal@li272-85.members.linode.com) (*.net *.split)
14:31:38 × [exa] quits (exa@unaffiliated/exa/x-5381537) (*.net *.split)
14:31:38 × ring0` quits (~ringo@unaffiliated/ring0/x-8667941) (*.net *.split)
14:31:38 × kqr quits (~kqr@vps.xkqr.org) (*.net *.split)
14:31:49 [exa] joins (exa@srv3.blesmrt.net)
14:31:54 qz joins (~quetzal@li272-85.members.linode.com)
14:31:54 jdt joins (~jdt@208.85.233.130)
14:31:59 adamCS joins (~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com)
14:32:03 TMA joins (tma@twin.jikos.cz)
14:32:05 Ranhir joins (~Ranhir@157.97.53.139)
14:32:12 <merijn> kuribas: Are you maybe (accidentally) trying to reinvent the cursor stuff from xml-conduit?
14:32:18 ring0` joins (~ringo@unaffiliated/ring0/x-8667941)
14:32:18 kqr joins (~kqr@vps.xkqr.org)
14:32:43 jchia joins (~jchia@45.32.62.73)
14:33:11 <kuribas> well, I have a containment relation.
14:33:22 <merijn> kuribas: https://hackage.haskell.org/package/xml-conduit-1.8.0.1/docs/Text-XML-Cursor.html
14:33:26 × Stanley00 quits (~stanley00@unaffiliated/stanley00) (Ping timeout: 272 seconds)
14:33:46 <merijn> This handles exactly queries like "all XML tags with property Y starting from node X" style queries
14:33:56 <merijn> Which sounds similar to what you're doing?
14:34:04 <kuribas> merijn: yeah
14:34:11 <kuribas> merijn: but this goes to the DB
14:35:06 renzhi joins (~renzhi@2607:fa49:655f:e600::28da)
14:35:31 <kuribas> merijn: another example is a class relationship. Let's say I have a "attribute" type. (Attribute class tp), meaning I can extract a value of "tp" from an object of type "Object class"
14:35:54 <kuribas> So "get :: Object class -> Attribute class tp -> m tp"
14:36:08 <kuribas> But class has superclasses.
14:36:32 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
14:37:03 <kuribas> so I want "get :: SuperClassOf class2 class1 => Object class1 -> Attribute class2 tp -> m tp"
14:37:16 <kuribas> but then that only works if I use overlapping instances.
14:37:29 <merijn> I would personally never contemplate going this route
14:37:31 <kuribas> to get the transitive closure of superclasses.
14:37:38 <kuribas> merijn: which route would you go then.
14:37:40 <merijn> This'll all end in tears
14:37:58 <kuribas> tell me which route well end in happiness
14:38:07 <merijn> I don't really know what I *would* do, because I've never attempted this
14:38:34 × cgfuh quits (~cgfuh@181.167.191.58) (Quit: WeeChat 2.9)
14:38:40 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
14:38:47 <merijn> kuribas: I would probably try and encode the accesors as a GADT and then just have transformers that can map them to their containing objects
14:38:47 Chi1thangoo joins (~Chi1thang@87.112.60.168)
14:38:50 <kuribas> of course I could invent a "fancy haskell" solution, using type level lists, etc...
14:39:20 <merijn> Any sort of "inheritance" style design with typeclasses always ends in cryptic errors, overlapping/incoherent instance nightmares, etc.
14:39:49 cgfuh joins (~cgfuh@181.167.191.58)
14:40:45 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:41:24 <kuribas> merijn: I could make a custom type error
14:41:40 <merijn> If "Attribute class tp" was a datatype with just the explicit function to make the appropriate lookup you can then define a Category and Profunctor instance and then generalising is just contramap the class type to the more general type
14:41:46 Tario joins (~Tario@201.192.165.173)
14:42:02 × toorevitimirp quits (~tooreviti@117.182.180.118) (Ping timeout: 264 seconds)
14:42:08 <tomjaguarpaw> Can I get access to RTS statistics at run time? I would like to see if it really is garbage collection that is causing my strange performance.
14:42:14 <merijn> tomjaguarpaw: Yes
14:42:23 <tomjaguarpaw> Where do I look for those?
14:42:29 <merijn> tomjaguarpaw: Somewhere in the GHC.* modules in base
14:42:51 <kuribas> merijn: you mean explicit subtyping?
14:43:05 × geekosaur quits (82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
14:43:12 <merijn> I mean "forgetting the term subtyping entirely"
14:43:39 <kuribas> like: asClass :: IsSubClass a b => Attribute a tp -> Attribute b tp
14:43:53 <kuribas> merijn: the model is already subtyped, I cannot change that.
14:44:03 <tomjaguarpaw> Hmm GHC.Stats, I guess
14:44:10 <merijn> Except, if Attribute is a datatype and has a profunctor instance then you don't even need IsSubClass or anything
14:44:16 <merijn> You just need a function "a -> b"
14:45:02 <kuribas> merijn: but class is just a phantom type to ensure you don't send an attribute to the wrong object.
14:45:30 <kuribas> merijn: so a function a -> b is impossible.
14:46:03 <kuribas> a and b are uninhabited
14:46:05 christo joins (~chris@81.96.113.213)
14:47:34 × jchia quits (~jchia@45.32.62.73) (Remote host closed the connection)
14:47:36 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
14:47:56 jchia joins (~jchia@45.32.62.73)
14:48:09 × Sanchayan quits (~Sanchayan@171.61.102.109) (Quit: leaving)
14:48:12 <merijn> So, that just means you can't use profunctor. You can define a Convertible type with phantom attributes (probably as GADT or data family?) and then have "Convert a b -> Attribute a tp -> Attribute b tp" or something?
14:49:12 × jchia quits (~jchia@45.32.62.73) (Remote host closed the connection)
14:49:29 <kuribas> what's so bad about overlapping instances?
14:49:33 avdb joins (~avdb@ip-62-235-12-238.dsl.scarlet.be)
14:49:58 <hekkaidekapus> tomjaguarpaw: 1) ghc -O2 -eventlog M.hs 2) ./M +RTS -lau 3) Roam Hackage searching the best events analyser for your liking.
14:50:02 × acidjnk_new quits (~acidjnk@p200300d0c718f648045012e87868ed0b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
14:50:08 jchia joins (~jchia@58.32.36.109)
14:51:12 × alp quits (~alp@2a01:e0a:58b:4920:1c72:d61a:7e48:b350) (Ping timeout: 260 seconds)
14:51:26 <hekkaidekapus> tomjaguarpaw: <https://www.well-typed.com/blog/2019/09/eventful-ghc/>
14:52:23 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
14:52:49 <merijn> kuribas: Instance selection is implementation defined and may change depending on which instances are defined/exposed in your dependencies
14:53:10 <kuribas> merijn: they are all predefined
14:53:29 <merijn> hekkaidekapus: THat's not at runtime, though
14:53:36 <merijn> hekkaidekapus: At least not *within* the code
14:54:34 × da39a3ee5e6b4b0d quits (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th) (Ping timeout: 260 seconds)
14:54:43 <hekkaidekapus> merijn: Not within the code but profiling an executable for GC events may be more helpful.
14:55:05 da39a3ee5e6b4b0d joins (~da39a3ee5@ppp-27-55-82-144.revip3.asianet.co.th)
14:57:00 hackage prolude 0.0.0.8 - ITProTV's custom prelude https://hackage.haskell.org/package/prolude-0.0.0.8 (goolord)
14:57:43 nados joins (~dan@69-165-210-185.cable.teksavvy.com)
14:59:14 invaser joins (~Thunderbi@31.148.23.125)
15:00:01 × Guest2830 quits (~geekosaur@84.39.117.57) ()
15:00:32 × xff0x quits (~fox@2001:1a81:529e:a500:a7e0:336:a54e:d7a5) (Ping timeout: 260 seconds)
15:00:46 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
15:00:50 × jakob_ quits (~textual@p200300f49f1622008dbefd778746ea7f.dip0.t-ipconnect.de) (Quit: Textual IRC Client: www.textualapp.com)
15:00:56 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
15:01:00 __monty__ joins (~toonn@unaffiliated/toonn)
15:04:03 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
15:04:20 × da39a3ee5e6b4b0d quits (~da39a3ee5@ppp-27-55-82-144.revip3.asianet.co.th) (Ping timeout: 256 seconds)
15:04:59 <magicman> The fact that Data.Map.Merge.{Lazy,Strict} exist makes me happy. Thanks to whomever did this. I don't know how long they've been there, but they're great.
15:06:02 × invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 264 seconds)
15:06:08 <merijn> I think micro-optimising that stuff in containers is David Feuer's baby?
15:07:40 jedws joins (~jedws@101.184.175.183)
15:09:59 lucasb joins (uid333435@gateway/web/irccloud.com/x-ezcrumvhrckwfdja)
15:12:39 xff0x joins (~fox@2001:1a81:529e:a500:a7e0:336:a54e:d7a5)
15:13:22 albert joins (~albert@user-5-173-8-190.play-internet.pl)
15:13:53 invaser joins (~Thunderbi@31.148.23.125)
15:15:40 × idhugo quits (~idhugo@users-1190.st.net.au.dk) (Ping timeout: 265 seconds)
15:17:48 kritzefitz joins (~kritzefit@212.86.56.80)
15:20:39 <siraben> Why would you need both lazy and strict map merging?
15:21:27 <merijn> siraben: If you need to combine values for existing keys then how you do that depends on whether you have a strict or lazy map :p
15:22:14 <siraben> I see. Does Data.Map default to strict or lazy?
15:22:40 <merijn> Data.Map exports lazy
15:22:55 <merijn> You need to import Data.Map.Strict for strict
15:22:58 <siraben> I see.
15:23:19 <merijn> (Note that the datatype is the same in both modules, only the functions chance)
15:23:21 × jedws quits (~jedws@101.184.175.183) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:24:13 <siraben> I've used IntMap to represent the store in a Scheme interpreter. Is that best strict or lazy?
15:25:42 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
15:26:34 <merijn> siraben: The Map itself is always strict, so strict/lazy refers to the elements stored in it. So lazy map stores the (lazy, unevaluated) computation as value, whereas strict will store the evaluated thing as value
15:27:09 <merijn> So if you have a map storing "small" values (like Int) and you know that computing the value is cheap and/or you will always use all values, then you probably want strict
15:27:13 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds)
15:27:51 × thunderrd quits (~thunderrd@183.182.111.169) (*.net *.split)
15:28:38 vacm joins (~vacwm@70.23.92.191)
15:28:53 <siraben> The IntMap can be strict but grow unbounded in size right?
15:29:02 <merijn> because storing an int obviously costs less space than an arbitrary thunk
15:29:19 <siraben> https://github.com/siraben/r5rs-denot/blob/126031d43b222dd1056f93e8fa078317c8701d2d/src/SchemeTypes.hs#L107
15:29:22 <merijn> siraben: strict just means that "values are evaluated to WHNF when you insert them"
15:29:50 <siraben> Sounds like I'd want a strict IntMap then since these values are Scheme values or functions
15:30:34 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:30:41 Ariakenom joins (~Ariakenom@h-82-196-111-82.NA.cust.bahnhof.se)
15:31:00 × mmfood quits (~mmfood@81-232-132-159-no64.tbcn.telia.com) (Quit: Leaving)
15:31:53 <tomjaguarpaw> I've just noticed something very amusing. I can't pass +RTS to my executable when invoking cabal v2-exec because it as swallowed by cabal itself.
15:32:46 <merijn> tomjaguarpaw: Use -- before the +RTS
15:33:10 <merijn> tomjaguarpaw: So "cabal v2-exec myexe -- +RTS ..."
15:33:45 <reactormonk> I'm on "which recursion scheme function do I use?". I've got Recursive / Corecursive instances over my AST. I wanna change an annotation (and its type). That annotation depends on the value of the current node and its leaves.
15:33:59 thunderrd joins (~thunderrd@183.182.111.169)
15:34:34 <merijn> tomjaguarpaw: Someone already thought of and solved that problem ;)
15:35:05 <tomjaguarpaw> What a clever person. And if there are two levels of nesting, -- -- ?
15:35:13 <tomjaguarpaw> I just used -with-rtsopts :D
15:36:51 <merijn> tomjaguarpaw: No clue, I've never had that problem nested doubly before :p
15:36:51 × knupfer quits (~Thunderbi@dynamic-046-114-148-109.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
15:37:37 gxt joins (~gxt@gateway/tor-sasl/gxt)
15:38:28 da39a3ee5e6b4b0d joins (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th)
15:45:31 hackage Z-Data 0.1.9.1 - Array, vector and text https://hackage.haskell.org/package/Z-Data-0.1.9.1 (winterland)
15:48:00 × pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!)
15:48:05 <kuribas> merijn: I can make this work without overlapping instances. It's just more ugly.
15:48:29 <kuribas> merijn: I would need a extra phantom type in the multiparam typeclass
15:48:44 <kuribas> merijn: A boolean to signify "stop searching"
15:48:45 × jespada quits (~jespada@90.254.245.49) (Ping timeout: 240 seconds)
15:50:11 jespada joins (~jespada@90.254.245.49)
15:50:14 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-zpttjkkcshfghzwp)
15:51:27 × albert quits (~albert@user-5-173-8-190.play-internet.pl) (Quit: Leaving)
15:51:37 × ericsagn1 quits (~ericsagne@2405:6580:0:5100:1e63:f75b:d40e:f87e) (Ping timeout: 260 seconds)
15:53:40 idhugo joins (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net)
15:56:42 GothAlice1 joins (~GothAlice@178.162.212.214)
15:58:49 Martinsos joins (~user@cpe-188-129-116-164.dynamic.amis.hr)
15:59:14 × servo quits (~servo@41.92.97.254) (Remote host closed the connection)
15:59:15 conal joins (~conal@64.71.133.70)
15:59:43 × conal quits (~conal@64.71.133.70) (Client Quit)
16:00:01 carlomagno joins (~cararell@148.87.23.10)
16:01:06 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
16:01:21 Rudd0 joins (~Rudd0@185.189.115.103)
16:03:02 ericsagn1 joins (~ericsagne@2405:6580:0:5100:af5d:a404:2c6:5e7e)
16:04:55 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
16:05:41 <dminuoso> 15:43:39 kuribas | like: asClass :: IsSubClass a b => Attribute a tp -> Attribute b tp
16:05:46 <dminuoso> kuribas: Take a look at optics
16:05:57 <dminuoso> They implement a hierarchy with subtyping, supported by type families
16:06:20 <dminuoso> Including utilities to calculate least upper bounds
16:06:29 alp joins (~alp@2a01:e0a:58b:4920:e453:474f:9209:5f93)
16:06:30 <dminuoso> See
16:06:32 <dminuoso> https://hackage.haskell.org/package/optics-core-0.3.0.1/docs/Optics-Internal-Optic-Subtyping.html#t:Is
16:06:32 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
16:06:35 <dminuoso> https://hackage.haskell.org/package/optics-core-0.3.0.1/docs/Optics-Internal-Optic-Subtyping.html#t:Join
16:06:48 <dminuoso> And https://hackage.haskell.org/package/optics-core-0.3.0.1/docs/Optics-Internal-Optic.html#v:castOptic
16:06:49 × idhugo quits (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) (Ping timeout: 264 seconds)
16:07:04 justsomeguy joins (~justsomeg@2603:9000:960a:fc00:c4d2:5b73:c7b7:3a2b)
16:07:04 × justsomeguy quits (~justsomeg@2603:9000:960a:fc00:c4d2:5b73:c7b7:3a2b) (Changing host)
16:07:04 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
16:07:21 <dminuoso> (It's very boilerplaty, but it works because the hierarchy is pretty much fixed in size.)
16:09:09 × bahamas quits (~lucian@unaffiliated/bahamas) (Quit: leaving)
16:10:05 <kuribas> dminuoso: actually, that should work for my case!
16:10:34 mirrorbird joins (~psutcliff@89.40.182.152)
16:11:05 <kuribas> I don't even need type families IMO...
16:11:46 × avdb quits (~avdb@ip-62-235-12-238.dsl.scarlet.be) (Ping timeout: 256 seconds)
16:11:56 <dminuoso> Depends on what your goals are. Here, the Join type family is useful because if you compose two optics, the resulting optic is their least upper bound
16:12:13 <dminuoso> (i.e. A_Prism composed with A_Lens gives you An_AffineFold)
16:12:40 idhugo joins (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net)
16:13:42 × zfnmxt quits (~zfnmxt@unaffiliated/zfnmxt) (Quit: Bye!)
16:13:50 <kuribas> instance IsA k k; IsA MySubClass b => instance IsA b MyClass
16:14:30 <kuribas> ah no, that's overlapping...
16:14:32 zfnmxt joins (~zfnmxt@unaffiliated/zfnmxt)
16:21:59 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
16:22:12 × xff0x quits (~fox@2001:1a81:529e:a500:a7e0:336:a54e:d7a5) (Ping timeout: 260 seconds)
16:22:24 lottaquestions_ joins (~nick@2607:fa49:5040:d100:54ba:4f0:c193:a93d)
16:22:43 × mirrorbird quits (~psutcliff@89.40.182.152) (Quit: Leaving)
16:22:52 xff0x joins (~fox@2001:1a81:529e:a500:93fd:46ff:4df5:fd50)
16:24:01 lottaquestions_ parts (~nick@2607:fa49:5040:d100:54ba:4f0:c193:a93d) ("Konversation terminated!")
16:24:31 cads2 joins (~cads@ip-64-72-99-232.lasvegas.net)
16:25:03 Sgeo_ joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
16:27:25 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds)
16:28:25 × Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Ping timeout: 264 seconds)
16:29:58 <tomjaguarpaw> Hmm, so according to getRTSStats GC is taking a lot (80%) of the time of the function I want to benchmark
16:30:20 <kuribas> dminuoso: nevermind, these are generated, I could as well generate instance for every possible superclass.
16:30:24 <tomjaguarpaw> Well, about 3% for small input data and 80% for large input data (the input data are expression trees)
16:31:04 <Uniaika> tomjaguarpaw: :o
16:31:27 <dminuoso> kuribas: Im not telling you this is how you should do it, just as an inspiration perhaps.
16:31:43 <dminuoso> The underlying implementation works because the inheritance is given by constraint mixing.
16:32:00 <dminuoso> (So castOptic relies on constraint implications to work properly)
16:33:01 <dminuoso> class Is k l where implies :: (Constraints k p => r) -> (Constraints l p => r)
16:33:12 <kuribas> dminuoso: looks complicated ...
16:33:34 <dminuoso> kuribas: Well the idea is rather simple really
16:33:46 <Uniaika> tomjaguarpaw: would you need mutable datastructures?
16:34:04 <dminuoso> kuribas: Handwavingly, an optic is something of type: type Optic c s t a b = forall p. c p => p a b -> p s t
16:34:07 <kuribas> dminuoso: so my solution would verbose but simple: data SomeClass; instance IsSubClass SomeClass SuperClass; instance IsSubClass SomeClass SuperClassOfSuperClass
16:34:12 <dminuoso> Where c is some constraints
16:34:24 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
16:34:32 × chele quits (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection)
16:34:54 <dminuoso> So `type Lens s t a b = forall p. Strong p => p a b -> p s t`
16:35:12 <dminuoso> And `type Prism s t a b = forall p. Choice p => p a b -> p s t`
16:35:28 <kuribas> for a funny definition of "simple"
16:35:31 <dminuoso> Hold on!
16:35:54 <kuribas> dminuoso: you don't need to convince me, this is meant for haskell newbees.
16:36:12 <dminuoso> `type AffineTraversal s t a b = forall p. Visiting p => p a b -> p s t`
16:36:13 avdb joins (~avdb@ip-213-49-61-183.dsl.scarlet.be)
16:36:16 <dminuoso> kuribas: The idea now is:
16:36:49 <dminuoso> Strong and Choice give you Visiting.
16:38:07 <dminuoso> Because: class (Choice p, Strong p) => Visiting p
16:39:18 electricityZZZZ joins (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net)
16:41:48 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
16:43:01 <dminuoso> kuribas: *sorry there was a typo. The other way around, Visibility implies Choice and Strong.
16:43:40 × idhugo quits (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) (Read error: Connection reset by peer)
16:43:42 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
16:44:13 idhugo joins (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net)
16:44:15 <kuribas> dminuoso: that's hardly easy...
16:44:19 <dminuoso> So if you plug in something that gives Visiting, then you can also treat this as Choice and Strong
16:44:46 <kuribas> I just feel that most of what is in lens is fluff
16:44:50 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
16:44:50 × da39a3ee5e6b4b0d quits (~da39a3ee5@cm-171-98-76-220.revip7.asianet.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:44:58 <kuribas> it's nice, and cool it's possible, but not that necessary
16:45:19 <kuribas> there's a small core which is very useful, like lenses, prisms, traversals
16:48:40 × vacm quits (~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:49:34 nbloomf joins (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad)
16:50:06 conal joins (~conal@64.71.133.70)
16:50:10 <tomjaguarpaw> Uniaika: I'm not sure what you mean "Would I need mutable datastructures". Everything I am doing is without mutation
16:50:21 <kuribas> dminuoso: if I want to put emphasis on the benefits of haskell to a non-haskell programmer, and I show them this, they think I am crazy.
16:50:24 <tomjaguarpaw> Are you saying mutable data structures could cause less garbage?
16:51:19 <merijn> tomjaguarpaw: Are you, by any chance, using the threaded runtime system?
16:51:25 <Uniaika> tomjaguarpaw: well, if you're applying a lot of transformations on an immutable datastructure, it produces a lot of garbage, right?
16:51:27 <tomjaguarpaw> Not knowingly
16:51:40 <merijn> Uniaika: That's not really relevant, though
16:51:43 <tomjaguarpaw> I don't have "-threaded" in my cabal file
16:51:46 <Uniaika> merijn: alright
16:51:48 <merijn> Uniaika: GC time doesn't scale with amount of garbage
16:51:59 <Uniaika> merijn: oh? my bad :)
16:52:01 <merijn> Uniaika: GHC's GC scales with "amount of non-garbage"
16:52:08 <kuribas> but ghc is optimized for lots of garbage.
16:52:18 <justsomeguy> What does the “temp->data = value;” in the code sample here https://en.wikipedia.org/wiki/Linked_list#Singly_linked_lists mean? Is this like “data.value = temp”, where ``data.value`` is a record data with a field value?
16:52:20 <tomjaguarpaw> I have large amounts of non-garbage, but perhaps only 1GB
16:52:23 <kuribas> using mutable data can be even worse.
16:52:24 <merijn> Uniaika: For exactly this reason, lazy evaluation produces *tons* of garbage :)
16:52:44 <merijn> tomjaguarpaw: Oh, yes, that can hurt you
16:52:48 <Uniaika> kuribas: TIL, thanks for correcting me
16:53:00 <Uniaika> merijn: I'm interested in knowing more about how non-garbage affects GC times
16:53:02 <merijn> tomjaguarpaw: Is this large amount constant during most of your application?
16:53:10 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
16:53:27 <tomjaguarpaw> No, it's the benchmark input data
16:53:43 <tomjaguarpaw> So I generate something that's about 1 GB, run a function on it, GOTO 10
16:53:49 × jlamothe quits (~jlamothe@198.251.55.207) (Quit: leaving)
16:53:52 <merijn> Uniaika: GHC uses a "copy & compact" collector, so when GC is triggered, we allocate a new heap and copy all "live" (i.e. non-garbage) data to the new heap, and then throw away the entire old heap
16:54:10 <merijn> Uniaika: So if there's only 20 bytes of live data and 20 GB of garbage, you only copy 20 bytes and are done
16:54:35 <Uniaika> oh my, this is indeed genius when you have lots of garbage
16:54:39 <merijn> tomjaguarpaw: Ok, rephrase, this input should be independent of your benchmark, yes
16:54:44 <merijn> Uniaika: It has some other benefits too
16:54:58 <tomjaguarpaw> What do you mean by "independent"?
16:55:36 <merijn> Uniaika: One problem with many GC solutions is "fragmentation" i.e. if all your data is scattered throughout your memory, it can be hard to find space to allocate huge chunks. Compacting avoids this by resulting in zero fragmentation
16:56:02 <merijn> tomjaguarpaw: Well, you can use a compact region to GC you 1 GB ahead of time and make future GC (during your benchmark) essentially free
16:56:30 <merijn> Uniaika: There's another benefit. If all data in your heap is compact at the start of your heap, your allocator becomes *really* cheap
16:56:37 <tomjaguarpaw> Interesting. I have never done that.
16:56:50 <tomjaguarpaw> That sounds nice.
16:57:01 hackage lz4-hs 0.1.5.1 - lz4 bindings for Haskell https://hackage.haskell.org/package/lz4-hs-0.1.5.1 (vmchale)
16:57:05 × enoq quits (~textual@194-208-146-143.lampert.tv) (Quit: Textual IRC Client: www.textualapp.com)
16:57:21 <merijn> Uniaika: Basically, your allocator is just "a pointer to the end of the current use region of the heap", allocation is just "increment pointer by 20 bytes". Which is good because lazy languages don't just produce a lot of garbage, they allocate a lot too
16:58:06 <merijn> tomjaguarpaw: Basically, you GC an entire chunk of data into a separate compact region and instead of copying the data on every GC, it only copies the entry point to the region
16:58:36 <merijn> tomjaguarpaw: https://tech.channable.com/posts/2020-04-07-lessons-in-managing-haskell-memory.html
16:58:38 vacm joins (~vacwm@70.23.92.191)
16:59:18 <tomjaguarpaw> Cool, thanks merijn! That could be very handy. Right now I am measuring GC time and subtracting it :P
17:00:08 <merijn> tomjaguarpaw: It will obviously slow down your overall time to run the benchmarks (if you use data only once and need to copy all of it first, that's slower). But it's deterministic at least
17:00:29 knupfer joins (~Thunderbi@200116b82cb80f00d4db69fffe520a17.dip.versatel-1u1.de)
17:00:29 × knupfer quits (~Thunderbi@200116b82cb80f00d4db69fffe520a17.dip.versatel-1u1.de) (Client Quit)
17:00:31 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
17:00:43 knupfer joins (~Thunderbi@i5E86B4E0.versanet.de)
17:01:31 × Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
17:01:53 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
17:02:01 <tomjaguarpaw> I don't really mind that. Copying the data will be quick compared to running the function.
17:02:51 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
17:03:44 kritzefitz_ joins (~kritzefit@212.86.56.80)
17:03:50 idhugo_ joins (~idhugo@80-62-116-202-mobile.dk.customer.tdc.net)
17:04:01 <glguy> Anyone what the complexity is of ghc-compat's compactAdd? I'm wondering if it has to copy the whole compact region or if it is able to add incrementally
17:04:31 <merijn> glguy: Sounds like a question for #ghc :)
17:04:45 × quarters quits (~quarters@unaffiliated/quarters) (Ping timeout: 240 seconds)
17:06:05 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
17:06:50 × idhugo quits (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) (Ping timeout: 265 seconds)
17:07:48 × incertia quits (~incertia@d60-65-215-180.col.wideopenwest.com) (Ping timeout: 265 seconds)
17:10:43 p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
17:11:06 × Ariakenom quits (~Ariakenom@h-82-196-111-82.NA.cust.bahnhof.se) (Read error: Connection reset by peer)
17:11:21 geekosaur joins (82659a09@host154-009.vpn.uakron.edu)
17:11:25 <Martinsos> I read that ghc recently added a new type of GC, "incremental", that works in a different fashion and should help with avoiding big spikes of GC. How does that fit into the discussion? Can we choose which one we use? Does it affect the strategies around GC?
17:11:51 <merijn> Martinsos: There is a new GC in recent GHCs yes
17:11:51 idhugo__ joins (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net)
17:12:15 <merijn> Martinsos: The answer is the if you do not require stable latency, the default one is probably best
17:12:19 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
17:12:26 × asheshambasta quits (~user@ptr-e1lysawl9rr13i61o92.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
17:12:50 incertia joins (~incertia@d60-65-215-180.col.wideopenwest.com)
17:13:02 × knupfer quits (~Thunderbi@i5E86B4E0.versanet.de) (Ping timeout: 272 seconds)
17:14:17 <Martinsos> merijn: Makes sense! I am planning to try to build a game as a side project, in Haskell, so that is why I was reading about GC - this new GC should be better for games if I got it correctly, to avoid sudden loss of ticks/frames. So I guess we need to set some flag to use non-default one?
17:14:52 × idhugo_ quits (~idhugo@80-62-116-202-mobile.dk.customer.tdc.net) (Ping timeout: 246 seconds)
17:15:12 <merijn> Martinsos: It'd be better for games, yes. Although, honestly I don't think the latency guaranteed by the new GC is good enough for high FPS games
17:15:41 <merijn> At least, not without managing the amount of live data, etc. manually
17:17:32 christo joins (~chris@81.96.113.213)
17:18:04 <Martinsos> merijn: Cool! I am aware Haskell is probably not the best choice for high FPS games due to GC, C++ would or some lower language would be better choice, but I doubt my game will require that level of performance so it should be fine, and I am excited about modeling everything in Haskell.
17:18:20 <merijn> Martinsos: The max pause time for the new one is 20ms, but a 60 FPS framerate gives you 16.6ms *max* per frame
17:19:04 <merijn> Martinsos: OTOH, you could consider writing a dedicated render loop in C that talkes with Haskell code implementing game logic
17:19:19 <merijn> Then you might get logic pauses, without hitting framerate
17:19:37 <Martinsos> Right, I was hoping I could extract some parts into C if needed!
17:19:59 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
17:20:18 <merijn> And also, just because you *can* hit that latency, doesn't mean you will. If your gamestate is small even the regular collector might be good enough
17:20:24 hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
17:21:53 <Martinsos> Sure, the game will be 2D with lightweight graphics so I don't think it should be an issue. If it will be it will at least be an opportunity to learn more about GC :D.
17:22:02 × christo quits (~chris@81.96.113.213) (Ping timeout: 256 seconds)
17:22:24 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
17:26:37 × kuribas quits (~user@ptr-25vy0iaahu2pezvpnfb.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
17:29:54 hexreel joins (~h@2600:1700:28e2:14d0:b0ee:1522:822e:a283)
17:30:17 Tario joins (~Tario@201.192.165.173)
17:31:30 conal joins (~conal@64.71.133.70)
17:35:43 × borne quits (~fritjof@200116b864b5430099e934deb93b1409.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
17:36:12 conal_ joins (~conal@107.181.166.220)
17:36:20 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
17:36:30 × conal quits (~conal@64.71.133.70) (Ping timeout: 260 seconds)
17:37:12 × Aquazi quits (uid312403@gateway/web/irccloud.com/x-nsgilupshvjjyzul) (Quit: Connection closed for inactivity)
17:38:51 Iceland_jack joins (~user@31.124.48.169)
17:41:25 × hiroaki quits (~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Remote host closed the connection)
17:42:45 hiroaki joins (~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de)
17:45:57 × conal_ quits (~conal@107.181.166.220) (Quit: Computer has gone to sleep.)
17:48:33 crdrost joins (~crdrost@2601:646:8280:85f0:51fc:6f63:a768:a428)
17:49:02 christo joins (~chris@81.96.113.213)
17:49:36 × avdb quits (~avdb@ip-213-49-61-183.dsl.scarlet.be) (Read error: Connection reset by peer)
17:50:23 × ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds)
17:50:31 avdb joins (~avdb@ip-213-49-61-183.dsl.scarlet.be)
17:50:59 conal joins (~conal@64.71.133.70)
17:51:28 × conal quits (~conal@64.71.133.70) (Client Quit)
17:52:15 conal joins (~conal@64.71.133.70)
17:52:45 ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
17:53:05 × christo quits (~chris@81.96.113.213) (Ping timeout: 240 seconds)
17:53:25 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
17:53:26 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
17:53:35 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
17:53:49 hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
17:55:35 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
17:56:01 otulp joins (~otulp@ti0187q162-6038.bb.online.no)
17:57:02 × Varis quits (~Tadas@unaffiliated/varis) (Ping timeout: 264 seconds)
17:58:42 jlamothe joins (~jlamothe@198.251.55.207)
17:58:47 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 260 seconds)
18:00:01 × GothAlice1 quits (~GothAlice@178.162.212.214) ()
18:00:25 × xff0x quits (~fox@2001:1a81:529e:a500:93fd:46ff:4df5:fd50) (Ping timeout: 272 seconds)
18:01:04 xff0x joins (~fox@2001:1a81:529e:a500:b7fe:796e:1fbb:7036)
18:01:42 × crdrost quits (~crdrost@2601:646:8280:85f0:51fc:6f63:a768:a428) (Ping timeout: 260 seconds)
18:02:27 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:03:04 moet joins (~moet@mobile-166-137-177-145.mycingular.net)
18:04:28 crdrost joins (~crdrost@c-98-207-102-156.hsd1.ca.comcast.net)
18:08:52 Wood joins (~wood@2001:d08:1003:2574:5caf:6abd:a992:e5a2)
18:08:52 × coot quits (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
18:09:12 coot joins (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl)
18:10:42 × boxscape quits (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Ping timeout: 256 seconds)
18:12:13 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
18:13:04 howdoi joins (uid224@gateway/web/irccloud.com/x-pvtzxvglhmvabpwf)
18:13:57 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
18:14:27 conal joins (~conal@64.71.133.70)
18:15:18 hexreel parts (~h@2600:1700:28e2:14d0:b0ee:1522:822e:a283) ()
18:17:28 × avdb quits (~avdb@ip-213-49-61-183.dsl.scarlet.be) (Quit: avdb)
18:17:43 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 260 seconds)
18:18:19 chaosmasttter joins (~chaosmast@p200300c4a73c52016862557d78ae998a.dip0.t-ipconnect.de)
18:19:32 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
18:22:40 Frost joins (~Frost@185.163.110.116)
18:22:46 × cads2 quits (~cads@ip-64-72-99-232.lasvegas.net) (Read error: Connection reset by peer)
18:22:50 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
18:23:38 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
18:24:29 × alp quits (~alp@2a01:e0a:58b:4920:e453:474f:9209:5f93) (Ping timeout: 272 seconds)
18:24:33 conal joins (~conal@64.71.133.70)
18:26:04 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
18:30:36 <sm[m]> people making "normal" (non-AAA, non-huge) games have said even the standard GC was not a problem
18:31:15 buterthebuddha joins (~user@35.1.134.251)
18:32:56 × otulp quits (~otulp@ti0187q162-6038.bb.online.no) (Quit: Lost terminal)
18:35:19 Varis joins (~Tadas@unaffiliated/varis)
18:36:42 × idhugo__ quits (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) (Ping timeout: 260 seconds)
18:37:30 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
18:38:06 × vacm quits (~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:41:26 × Unhammerd quits (~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection)
18:42:04 Unhammerd joins (~Unhammer@gateway/tor-sasl/unhammer)
18:43:38 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
18:45:53 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
18:47:56 mwehner joins (~martin@li910-8.members.linode.com)
18:48:09 <edwardk> merijn: i figure if i'm going to write a game in haskell i'm probably aiming for 30fps and doing a bit of lerping over the last two physics frames (using an approach by gafferongames) to try to hit anything higher.
18:48:50 <merijn> edwardk: I'd probably consider is an excuse to finally learn Rust :p
18:48:59 <edwardk> Martinsos: for 2d, especially with fairly tightly designed game logic and an eye towards unboxing you'll likely be okay
18:49:33 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
18:49:55 vacm joins (~vacwm@70.23.92.191)
18:50:19 <edwardk> merijn: heh i was working on a toy project to do something in a browser and was going to drive it with ghcjs, so i first stopped and wrote the most optimized version of the basic code path i could in javascript to see if i could even get the gc pauses down to an acceptable level. then i never got around to writing the haskell version.
18:50:41 <edwardk> and then davean decided to do something else anyways so it died =P
18:50:42 × LKoen quits (~LKoen@9.253.88.92.rev.sfr.net) (Remote host closed the connection)
18:51:09 motherfsck joins (~motherfsc@unaffiliated/motherfsck)
18:51:16 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:52:23 <edwardk> hah, it still runs. http://ekmett.github.io/arcade/static/ loads in chrome, wasd, 1-9 spawns stuff, 0 wipes it all out, mouse grabs, q/e raises lowers what you have grabbed. c and b show some debugging info, the menus are basically nonsense.
18:52:37 <edwardk> iirc it doesn't work in firefox
18:52:49 <bollu> does anyone have references to haskell codebases other than GHC that do a lot of analysis / transformations on an AST?
18:53:40 <merijn> bollu: "literally every compiler written in Haskell"? ;)
18:53:45 <bollu> merijn yes, which ones? ;)
18:53:50 <bollu> ermine doesn't do many transformations
18:54:00 <merijn> What does Idris do?
18:54:06 <davean> edwardk: ... that causes 'lens'
18:54:08 <edwardk> especially in the haskell codebase that we never finished
18:54:09 <bollu> good question. I should check
18:54:22 <davean> edwardk: The project litterly became 'lens' and there was no way lens was getting done in time :-p
18:54:43 <edwardk> davean: nah, lens was done first. the game engine lens came out of was ~5 years before this
18:54:52 <edwardk> THAT one wasn't getting done on time =)
18:55:03 <merijn> edwardk: I think games pretty much the only reason I'd use Rust, because for the rest of the stuff I ever write GHC's GC is perfectly fine :p
18:55:07 <bollu> hm seems like idris2 is self hosted
18:55:17 <bollu> so I gotta read the original idris if I want to get a sense of Haskellisms
18:55:23 <edwardk> but yeah. rust has me super jealous at times. i look at makepad and weep.
18:55:45 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
18:55:49 Deide joins (~Deide@217.155.19.23)
18:56:04 <davean> I'm sad at the state of wasm, particularly because its the new JVM
18:56:07 <merijn> bollu: Agda? But that's not very optimising I guess?
18:56:08 vicfred joins (~vicfred@unaffiliated/vicfred)
18:56:14 <edwardk> https://makepad.nl/ is written in rust, as an editor for rust, compiling to either native of web assembly, renders using shaders compiled from rust...
18:56:21 <davean> I strongly back having a good wasm backend soon.
18:56:41 × britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
18:56:59 <edwardk> the idealized form of a haskell version of the same thing would be a ratsnest of EDSLs that aren't quite up to the same task
18:57:27 Ariakenom joins (~Ariakenom@h-82-196-111-82.NA.cust.bahnhof.se)
18:57:31 <davean> Yah, rust has a MUCH better compilation story.
18:57:34 <edwardk> heck, the makepad stuff can even use webxr to render as a vr scene at this point
18:58:02 <merijn> davean: Their compile times seem to be about as bad as GHC, though :p
18:58:08 <davean> merijn: eh, so what?
18:58:10 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
18:58:13 <edwardk> merijn: idris 2 has much better compile times
18:58:27 <edwardk> or do you mean rust?
18:58:32 <merijn> edwardk: Wait, we were talking about Rust, no?
18:58:44 <edwardk> ah, thought you might be replying to bollu still
18:58:45 jamm_ joins (~jamm@unaffiliated/jamm)
18:58:55 <davean> merijn: I'd be happy to give GHC a few CPU-months if I could get 10% better optimization.
18:58:59 <merijn> davean: I'm an ADHD millenial, I ain't got the patience for that >.<
18:59:15 <bollu> merijn yeah, I don't think Agda "does much" with the AST. I could be wrong
18:59:52 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
19:00:13 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
19:00:15 <davean> merijn: --pay-for-it-to-be-faster $2000
19:00:41 <merijn> davean: I'm a millenial, I ain't got any money ;)
19:00:47 Tario joins (~Tario@201.192.165.173)
19:01:00 × jespada quits (~jespada@90.254.245.49) (Quit: Leaving)
19:01:03 <davean> merijn: not if you pay for the hosts to run slow code you won't!
19:01:26 <edwardk> davean: i'm still working on that fungibility of compilation performance story =P
19:01:28 <monochrom> Oh haha great, in-compiler purchase, "us$0.99 for 1 percentile speedup"
19:01:44 × geekosaur quits (82659a09@host154-009.vpn.uakron.edu) (Ping timeout: 245 seconds)
19:01:49 <merijn> davean: See, I've got a super good lifehack to work around that!
19:02:01 <monochrom> The best of both worlds of FOSS and capitalism. Thanks merijn for the great idea. >:)
19:02:05 <merijn> davean: I just don't host or run any code, because of the aforementioned lack of money ;)
19:02:33 <davean> What annoys me is when type checking gets slow.
19:02:35 <edwardk> monochrom: if we have to compile in the cloud and try a rather non-trivial number of constructions using lots of machines that isn't actually an unreasonable approach. it has been kind of my mental model for a while now.
19:02:43 <davean> I very rarely want to compile my code, I often want to type check it.
19:03:12 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
19:03:21 <dolio> It sounds unreasonable to me.
19:03:23 <edwardk> "how do i spin up 10k machines on tasks like program synthesis and verification and spend them efficiently?" is very much in my line of research.
19:03:37 berberman joins (~berberman@unaffiliated/berberman)
19:03:41 <electricityZZZZ> edwardk: oh hey, can we dm regarding that?
19:03:43 <monochrom> Err I mean davean! Thanks davean for the great idea >:)
19:03:58 <edwardk> electricityZZZZ: we can, today is going to be a bit busy for me, but i'll try to respond as i can
19:04:03 <electricityZZZZ> cool
19:04:25 <davean> monochrom: I'm already on that idea :-p
19:04:46 <edwardk> in any event, let's just say that existing cloud hosting providers get pissy about providing for that much burst traffic =P
19:05:10 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
19:05:32 <davean> edwardk: not QUITE true
19:05:48 <monochrom> davean: -fno-code helps for just checking syntax and types.
19:05:57 <davean> monochrom: I'm aware, I do that all the time :)
19:06:03 <davean> As I said, I almost never compile my code.
19:06:11 <davean> Compiling is for releasing!
19:06:17 <monochrom> Although, in the framework of cabal, it is annoying to manually switch it on and off and on again and off again...
19:06:18 <edwardk> davean: i spent much of the last year wrestling with AWS, google cloud, etc. trying to get them to let me exchange money for goods and services.
19:06:29 <edwardk> it appears that capitalism has yet to reach the cloud.
19:06:41 <davean> edwardk: Spot market man.
19:06:53 <monochrom> Haha great, "compiling is for releasing!" is even stronger than "if it type-checks it's correct".
19:08:00 otulp joins (~otulp@ti0187q162-6038.bb.online.no)
19:08:29 × raichoo quits (~raichoo@dslb-088-077-025-015.088.077.pools.vodafone-ip.de) (Quit: Lost terminal)
19:09:17 <monochrom> For it means you don't even test your ship/release/deployment step. "I'll gen code on the shipment day!"
19:09:43 <davean> No, you gen code and run the tests and release.
19:09:59 <edwardk> davean: yeah. you just need to beg and plead until they give you access to it at any meaningful capacity.
19:10:16 <edwardk> MIRI has good access to these things, but I was originally doing this on my private accounts
19:10:19 <monochrom> "You know what, this is an open-source project 'release' just means posting the source code on github, so I won't even need to gen code"
19:11:01 × moet quits (~moet@mobile-166-137-177-145.mycingular.net) (Ping timeout: 264 seconds)
19:11:12 <monochrom> "This is known as proof erasure in type theory." >:)
19:12:34 argent0 joins (~argent0@168.227.98.83)
19:13:36 × kritzefitz quits (~kritzefit@212.86.56.80) (Ping timeout: 256 seconds)
19:13:40 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
19:14:51 <monochrom> burst traffic sounds like analogous to electricity industry's notion of inductive load
19:14:53 × subttle quits (~anonymous@unaffiliated/subttle) (Quit: leaving)
19:15:16 × kritzefitz_ quits (~kritzefit@212.86.56.80) (Ping timeout: 246 seconds)
19:15:37 kritzefitz_ joins (~kritzefit@fw-front.credativ.com)
19:20:13 <dminuoso> edwardk: Hiya, a while ago you noted that the main problem witch catching pure exceptions with unsafePerformIO was that "it isn't monotone", followed by a remark "in [pure code] if you make your inputs more defined all that can happen is that at worst your output becomes more defined. in a world with catchPure that is no longer the case"
19:20:22 idhugo__ joins (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net)
19:20:31 <dminuoso> I have a vague idea, but I wanted to clarify. What exactly do you mean by monotonicity here?
19:21:33 <monochrom> if input is more defined, then output stays the same or is more defined. For example doesn't change sideways.
19:22:17 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
19:22:46 <monochrom> For example suppose you have a function f, and f bottom = 4 : bottom, f (1 : bottom) = 4 : 5 : bottom, that's OK, so far so good.
19:23:01 <monochrom> On the input side, 1:bottom is more defined than bottom.
19:23:17 <monochrom> On the output side, 4:5:bottom is more defined than 4:bottom.
19:23:55 <monochrom> But if you have g such that g bottom = 4 : bottom, g (1:bottom) = []. Now that's bad.
19:24:50 <dminuoso> How exactly is that bad?
19:25:31 <monochrom> [] is not more defined than 4:bottom.
19:25:40 <monochrom> Intuitively, it's a sideway change.
19:25:42 acidjnk_new joins (~acidjnk@p200300d0c718f648045012e87868ed0b.dip0.t-ipconnect.de)
19:27:32 <monochrom> Technically, "more defined" for [Integer] is defined by: the smallest relation that satisfies: everything is equal to or more defined than bottom; x:y is equal to or more defined than a:b iff x is equal to or more defined than a and y is equal to or more defined than b.
19:27:58 <edwardk> dminuoso: this is really the fundamental difference between _|_ and NULL. You can check for null. So you have to worry about NULL being a semantically distinguishable element at every step in your program. Boolean would then have 3 values, True, False, NULL. IN haskell. If a function gives an answer for _|_ it has to give an answer that is 'at least as defined' if you give it True or False, because _|_ is less defined than either.
19:28:00 geekosaur joins (82659a09@host154-009.vpn.uakron.edu)
19:28:27 <monochrom> https://en.wikibooks.org/wiki/Haskell/Denotational_semantics is a good explanation, except it is wrong about "there is a bottom type".
19:28:42 Amras joins (~Amras@unaffiliated/amras0000)
19:28:46 <Rembane> The table flip operator, because it looks like a flipped table and it flips the table.
19:28:49 <edwardk> it means if you feed a program a partially defined input and get an answer, making the input more defined never hurts you.
19:29:50 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Quit: leaving)
19:30:07 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Quit: Lost terminal)
19:30:10 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
19:31:23 <monochrom> Perhaps you're wondering why we care about this relation.
19:31:26 <dolio> The point of things containing ⊥ in denotational semantics is to be approximations of more-defined things. That way you can reason about behavior of infinite things by approximating them with partial definitions.
19:31:42 × thaumavorio quits (~thaumavor@thaumavor.io) (Quit: ZNC 1.7.1 - https://znc.in)
19:31:44 <dolio> But if you can observe ⊥ and act differently, then that is out the window. It's just a different value.
19:31:48 <edwardk> dolio++
19:32:13 <monochrom> We use bottom to also stand for: The computer doesn't give an answer for now, but perhaps if you throw more computing resource, the computer can finally figure out the answer.
19:32:28 <dolio> Then it's just side effects.
19:32:54 conal joins (~conal@64.71.133.70)
19:33:05 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
19:33:16 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Client Quit)
19:33:42 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
19:33:52 <monochrom> And even: the computer doesn't give an answer now because the input is incomplete for now. Perhaps if the incomplete part of the input arrives later, the computer can also figure out more of the output.
19:34:28 <monochrom> That would be a model for a function that transduces an input lazy list to an output lazy list, for example.
19:34:46 thaumavorio joins (~thaumavor@thaumavor.io)
19:34:51 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Client Quit)
19:35:16 LKoen joins (~LKoen@9.253.88.92.rev.sfr.net)
19:35:24 <dolio> And essentially, you should not care about behavior on ⊥ in Haskell in itself, but because it is a methodology for thinking about the behavior on more-defined values.
19:35:29 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
19:35:40 <dolio> Thinking about ⊥ tells you about how well-defined values are demanded and whatnot.
19:35:55 × aarvar quits (~foewfoiew@50.35.43.33) (Ping timeout: 246 seconds)
19:35:58 <monochrom> So "f bottom" means none of the input has arrived yet, but how much f can start working right away?
19:36:56 <wz1000> You also lose the ability to do topology in Haskell
19:36:56 <monochrom> And "f (1: bottom)" means OK one cons cell has arrived, now f can possibly do a bit more work before it's stuck again needing the rest of the input.
19:37:45 <bollu> wz1000 wdym?
19:38:06 <wz1000> functions are no longer continuous
19:38:14 <monochrom> In the case of g, it means g can start outputing the 1st cons cell of the output lazy list right away without needing input, but once you provide some input, it says "I withdraw my previous output, I change my mind, it's the empty list now"
19:38:24 quarters joins (~quarters@104-0-129-162.lightspeed.irvnca.sbcglobal.net)
19:38:28 × thaumavorio quits (~thaumavor@thaumavor.io) (Client Quit)
19:38:35 <wz1000> bollu: https://www.cs.bham.ac.uk/~mhe/papers/entcs87.pdf
19:38:52 avdb joins (~avdb@ip-213-49-61-183.dsl.scarlet.be)
19:39:16 thaumavorio joins (~thaumavor@thaumavor.io)
19:39:45 × nullheroes quits (~danielvu@168.235.66.22) (Quit: WeeChat 2.9)
19:39:59 ashbreeze joins (~mark@184-157-32-219.dyn.centurytel.net)
19:40:11 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Client Quit)
19:40:38 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:42:13 × _ashbreeze_ quits (~mark@72-161-252-32.dyn.centurytel.net) (Ping timeout: 246 seconds)
19:43:36 luke joins (~luke@bitnomial/staff/luke)
19:44:31 aarvar joins (~foewfoiew@50.35.43.33)
19:44:32 sondr3 joins (54d33884@cm-84.211.56.132.getinternet.no)
19:44:50 × aarvar quits (~foewfoiew@50.35.43.33) (Remote host closed the connection)
19:45:29 <sondr3> drive-by question: is it possible to use the new-* cabal commands by default when using cabal?
19:45:49 hidedagger joins (~nate@unaffiliated/hidedagger)
19:46:13 × ystael quits (~ystael@209.6.50.55) (Ping timeout: 260 seconds)
19:46:18 <monochrom> Yes if your cabal-install version is 3.0 or 3.2 or 3.4
19:46:40 <bollu> wz1000 sure I've read it
19:46:51 <bollu> wz1000 we need bottoms to get the semi decidability structure
19:46:59 <bollu> wz1000 so I'm not sure what you mean that we lose topology?
19:47:06 <merijn> monochrom: 3.4 is rather hard, considering that's not released yet :p
19:47:23 <wz1000> bollu: I mean if you make bottom observable
19:47:32 <bollu> wz1000 ah OK, sure.
19:47:35 <bollu> :)
19:47:39 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
19:47:45 × conal quits (~conal@64.71.133.70) (Ping timeout: 240 seconds)
19:47:47 <sondr3> thanks monochrom, I couldn't find much by searching
19:48:41 <merijn> sondr3: You should upgrade to 3.0 or 3.2 anyway if you use v2-build, there's been a bunch of improvements and bugfixes in those two versions
19:48:57 × Franciman quits (~francesco@host-82-56-223-169.retail.telecomitalia.it) (Quit: Leaving)
19:49:48 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
19:49:52 <sondr3> I'm on 3.2 already, just haven't been following the Haskell world closely for a while :) Thanks
19:49:53 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
19:49:55 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
19:51:45 <sondr3> Is it then possible to run my executable with cabal run automatically and not have it include the test suite?
19:52:59 conal joins (~conal@66.115.176.210)
19:53:21 <merijn> "maybe?" I'm not quite sure what you mean?
19:53:23 ski . o O ( non-monotonic logics )
19:53:46 <dminuoso> monochrom: Okay, so some reasoning level I understand what monotonicity means. I just fail to see the impact of breaking that.
19:54:59 <monochrom> Suppose mylazylist is a lazy list, but when evaluated it takes a while to emit the next cons cell and number.
19:55:02 <sondr3> I get a "cabal: The run command is for running a single executable at once. [...]" message, saying it includes the executable and the test suite, I want cabal run to only run the executable
19:55:05 <dminuoso> Naively, I'd just say "So say I have some `f :: String -> Int` that perhaps failed, it'd be *very* annoying to have to fix their code for a lack of Maybe, or feed IO through potentially half my program just to deal with it sensibly. This idea of monotonicity seems more like philosophical beauty than something I would care about
19:55:32 <monochrom> print (f mylazylist) makes sense. print (g mylazylist) doesn't.
19:55:48 <merijn> sondr3: What's the exact command you write?
19:56:11 <sondr3> merijn: cabal run
19:56:34 <merijn> sondr3: A package can have many executables in it, the intended use is "cabal run yourExeName"
19:57:02 <dminuoso> 20:23:55 monochrom | But if you have g such that g bottom = 4 : bottom, g (1:bottom) = []. Now that's bad.
19:57:04 <dminuoso> Mmm
19:57:07 <ski> (in logic programming, you have an analogue of non-monotonic functions : non-steadfast predicates/relations. if you provide more information (in parameters) upfront to it, it can suddenly gain solutions which are not substitution instances of the ones it had with only less information available. it's generally agreed that this hurts reasonability / predictive power)
19:57:43 <dminuoso> monochrom: Are you referring to the same f and g you introduced at the beginning?
19:58:18 <monochrom> "print (f mylazlist)" can do this: print 4 right away, then wait for mylazylist to spit out its first item 1, then print 5 when that happens.
19:58:37 × ericsagn1 quits (~ericsagne@2405:6580:0:5100:af5d:a404:2c6:5e7e) (Ping timeout: 260 seconds)
19:58:41 <monochrom> "print (g mylazylist)" cannot do this unless it can roll back time or output transactions.
19:58:44 <dminuoso> I mean the only reason you're saying "it doesn't make sense" is because your equating "bottom induced by infinite computation" and "bottom as pure exceptions"
19:58:51 <monochrom> Yes, same f and g.
19:58:52 <dminuoso> catchPure only deals with the latter
19:59:04 <dminuoso> On a technical level, catchPure doesn't break g.
19:59:12 × Wood quits (~wood@2001:d08:1003:2574:5caf:6abd:a992:e5a2) (Ping timeout: 260 seconds)
19:59:14 pavonia joins (~user@unaffiliated/siracusa)
19:59:18 <dminuoso> It just ruins your paradise of perfect symmetry and beauty
19:59:30 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Quit: Lost terminal)
19:59:57 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
19:59:58 <dminuoso> Because `f (g mylazylist)` would just print [] and be done with it
20:00:05 <dminuoso> After a while.
20:00:08 <sondr3> merijn: fair, it's just annoying since I don't care about the test-suite when I do cabal run :)
20:00:38 <merijn> sondr3: If you write out the name you shouldn't get that, but if you wanna frequently test an executable while developing I've got a lifehack for you
20:01:06 gstv joins (59e9c219@89-233-194-25.cust.bredband2.com)
20:01:13 juuandyy joins (~juuandyy@90.166.144.65)
20:01:34 <merijn> sondr3: https://paste.tomsmeding.com/9sTHIIML adjust the path to cabal.project file and executable name as needed, and done!
20:01:45 × bidabong quits (uid272474@gateway/web/irccloud.com/x-baxncysxwetsxiet) (Quit: Connection closed for inactivity)
20:02:02 × conal quits (~conal@66.115.176.210) (Quit: Computer has gone to sleep.)
20:02:17 <sondr3> merijn: awesome, thanks
20:02:33 <merijn> sondr3: For my own programs I have a shell script like that in my path so I can conveniently test/use them while developing, automatically compiling the latest version and then running
20:03:18 × revprez_anzio quits (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 260 seconds)
20:03:39 revprez_anzio joins (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
20:04:02 × vacm quits (~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:04:14 batuhan35 joins (9f920e61@159.146.14.97)
20:05:05 vacm joins (~vacwm@70.23.92.191)
20:05:11 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:64a6:6e00:3dc3:e56a) (Ping timeout: 272 seconds)
20:05:18 × avdb quits (~avdb@ip-213-49-61-183.dsl.scarlet.be) (Quit: avdb)
20:06:00 conal joins (~conal@66.115.176.210)
20:06:32 <dolio> dminuoso: The justification for 'pure exceptions' is that they are equated with non-terminatiaon bottom.
20:06:48 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
20:07:04 <dolio> At least as far as the pure calculus is concerned.
20:07:30 batuhan35 parts (9f920e61@159.146.14.97) ()
20:07:35 × sondr3 quits (54d33884@cm-84.211.56.132.getinternet.no) (Remote host closed the connection)
20:07:49 × gstv quits (59e9c219@89-233-194-25.cust.bredband2.com) (Remote host closed the connection)
20:08:39 knupfer joins (~Thunderbi@200116b82cb80f0020dbfffffeb9f29f.dip.versatel-1u1.de)
20:08:39 × knupfer quits (~Thunderbi@200116b82cb80f0020dbfffffeb9f29f.dip.versatel-1u1.de) (Client Quit)
20:08:53 knupfer joins (~Thunderbi@i5E86B4E0.versanet.de)
20:09:52 × idhugo__ quits (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) (Ping timeout: 246 seconds)
20:10:38 × thaumavorio quits (~thaumavor@thaumavor.io) (Quit: ZNC 1.7.1 - https://znc.in)
20:10:50 ericsagn1 joins (~ericsagne@2405:6580:0:5100:465:234f:7cb8:28a5)
20:11:04 falafel joins (~falafel@2600:1007:b0ad:6e87:7811:313f:d0f3:f9f4)
20:11:32 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Read error: Connection reset by peer)
20:11:49 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
20:14:44 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
20:15:17 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Client Quit)
20:18:51 <monochrom> dminuoso: Yes OK, it is a more complicated model, but it can work.
20:19:26 <dminuoso> monochrom: I want to stress that Im not arguing why `catchPure` is fine, just trying to understand why there's this strong opposition.
20:21:04 × falafel quits (~falafel@2600:1007:b0ad:6e87:7811:313f:d0f3:f9f4) (Read error: Connection reset by peer)
20:21:28 <monochrom> I still like the simpler model most of the time. When in the rare cases I can benefit from the complication, I would rather use explicit Maybe's so it is a non-pervasive opt-in system.
20:21:49 alp joins (~alp@2a01:e0a:58b:4920:d8db:f457:3fb6:53df)
20:22:06 takuan joins (~takuan@178-116-218-225.access.telenet.be)
20:23:19 <dminuoso> monochrom: the thing is just, it seems as if the argument is: introducing `catchPure` would allow for "non-sensical" g
20:23:35 <dminuoso> Which is a non-issue, because catchPure couldn't (possibly) solve the halting problem
20:24:40 <dminuoso> I get how it would break monotonicity (meaning more defined inputs do not create more defined outputs), but perhaps Im just not seeing the value of that possible reasoning
20:24:42 × juuandyy quits (~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
20:25:00 <dminuoso> That is, is there a motivating example where its useful to think `oh, if I make this input more defined, the output becomes more defined`
20:25:34 <dminuoso> So far Im getting the impression this is just some "academic purity" in the way of "a practical function"
20:26:02 <dolio> Once you have side effects, you start having to worry about exact evaluation orders.
20:26:03 × dhouthoo quits (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
20:26:07 <dolio> That's not academic.
20:26:39 <dminuoso> Sure, but there's no side effects in pure code.
20:26:55 <dolio> There are once you can catch exceptions and look at them.
20:27:26 <monochrom> You have a pervasive exception system, that's what it is. As usual, the price for a pervasive exception system is documentation: For each value, you have to tell the user: if some input throws an exception, what do you do? and under what circumstance you will throw exceptions.
20:28:31 <monochrom> This community is already pretty unhappy that most IO actions are pretty undocumented on the pretty anticipated IO exceptions.
20:28:42 <monochrom> Now imagine bringing that to all of Prelude.
20:28:44 × ggole quits (~ggole@2001:8003:8119:7200:a813:5a33:e96f:8fc6) (Quit: Leaving)
20:28:55 <dminuoso> But.. I just stumbled over a very convincing example of dfeuer that suggests catchPure is really bad
20:28:58 × quarters quits (~quarters@104-0-129-162.lightspeed.irvnca.sbcglobal.net) (Changing host)
20:28:58 quarters joins (~quarters@unaffiliated/quarters)
20:29:16 <dminuoso> (let a = a in a) `seq` error "hallo!"
20:29:32 <monochrom> Oh that one is even more sinister.
20:29:35 vicfred joins (~vicfred@unaffiliated/vicfred)
20:29:51 <dminuoso> And he says that in the presence of catchPure this could *sometimes* be defined, othertimes not..
20:29:58 kritzefitz joins (~kritzefit@212.86.56.80)
20:30:15 <dolio> Yeah, because GHC also assumes that 'pure exceptions' are equal to non-termination.
20:30:16 <dminuoso> (obviously, because seq makes no assumption about the ordering)
20:30:46 <monochrom> "div 1 0" is the kind that we all agree is an exception, the only contention is on language design: should this be bottom or not.
20:30:51 <dminuoso> dolio: I think its not even that, Id say it's just because `seq` does not guarantee the left side to be evaluated first.
20:31:05 <dminuoso> So its up to whatever the implementation does in the situation
20:31:21 <dminuoso> (Which could vary from place to place if the optimizer was up for it)
20:31:48 <monochrom> "a = a" is a non-termination that is clearly bottom but some compiler optimization can make it detectable, so now you're looking at fragile code optimization getting turned on or off.
20:32:00 × fendor quits (~fendor@178.115.131.226.wireless.dyn.drei.com) (Remote host closed the connection)
20:32:04 <dminuoso> oh, or that
20:33:05 fendor joins (~fendor@178.115.131.226.wireless.dyn.drei.com)
20:35:19 <dolio> Anyhow, if you're just using it to paper over a poorly designed API, then that's one thing.
20:35:52 <dolio> That can't really be justified as treating pure exceptions as actual control flow pervasively.
20:36:36 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
20:36:41 <dminuoso> Right. It's just that edward made that comment a while ago, and it kept lingering in my head because I couldn't quite argue to myself why he was right.
20:36:52 <_deepfire> Is there a way to pass 'ghci' flags, when it's invoked via cabal repl?
20:37:17 <merijn> --repl-options
20:37:28 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
20:37:42 × xff0x quits (~fox@2001:1a81:529e:a500:b7fe:796e:1fbb:7036) (Ping timeout: 260 seconds)
20:37:56 boxscape joins (86ab2c1f@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.44.31)
20:38:16 <dminuoso> But this last example is motivating enough to me. An example of how/why `catchPure` could have a bad impact on my quality of life
20:38:21 xff0x joins (~fox@2001:1a81:529e:a500:7f56:5167:60df:e24a)
20:38:40 <dolio> Yeah, just `let a = a in a` can get you unpredictable results.
20:38:48 <dminuoso> Right
20:39:12 <dminuoso> Having fallen prey to not respecting the unsafeness of unsafePerformIO once makes me appreciate being careful to do things in pure code you're not supposed to.
20:40:06 <_deepfire> merijn: I'm using cabal 3.0, but cabal repl TARGET -O0 --repl-options=-ghci-script=.ghci.local -- doesn't have effect
20:40:09 × thc202 quits (~thc202@unaffiliated/thc202) (Quit: thc202)
20:40:43 <dminuoso> monochrom, dolio, edwardk: Thank you all for your insights and arguments.
20:40:57 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
20:41:12 <merijn> _deepfire: Maybe "cabal repl" does something else that renders -ghci-script in effective
20:42:00 <_deepfire> merijn: thank you, nevertheless -- I've missed that option in the long list of cabal's options.. : -)
20:42:26 × luke quits (~luke@bitnomial/staff/luke) (Quit: sleep)
20:42:27 <merijn> _deepfire: I know that because the original way was using --ghc-options and I broke that :p
20:43:01 <_deepfire> merijn: Oh, yes, I've tried --ghc-options and --ghci-options (which is logical, but doesn't parse..)
20:43:47 Varis joins (~Tadas@unaffiliated/varis)
20:47:41 <monochrom> Hey --repl-option=-fdefer-type-errors solves my problem, it doesn't [re-]build every hackaage dependency. Thanks merijn
20:50:03 <monochrom> To be fair, manually entering ":set -fdefer-type-error" isn't that bad.
20:50:39 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
20:50:43 × knupfer quits (~Thunderbi@i5E86B4E0.versanet.de) (Ping timeout: 256 seconds)
20:50:53 Lord_of_Life_ is now known as Lord_of_Life
20:51:25 × Iceland_jack quits (~user@31.124.48.169) (Ping timeout: 240 seconds)
20:55:20 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:55:26 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
20:57:17 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
20:57:33 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
20:57:42 <tomjaguarpaw> c
20:58:09 <koz_> I'm in 'StateT s (Either e) a', and have a function 'f :: s -> Either e s'. Is there something similar to 'modify' that would let me pass 'f', to produce a result of type 'StateT s (Either e) ()'?
20:58:16 <merijn> monochrom: That's why I added --repl-options :p
20:58:42 <monochrom> Oh you. Many thanks and <3 <3 <3
20:58:46 <merijn> monochrom: I added flag filtering for ghc-options so the world wouldn't be rebuild, then that broke ghci's use of ghc-options, so I added --repl-options to fix it
20:59:06 <merijn> repl-options never hit the configuration/hash and thus won't affect dependencies
20:59:19 <monochrom> Yeah, I notice that cabal build --ghc-option=-ferror-span does not affect the hash.
20:59:26 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
20:59:30 <merijn> monochrom: It's a bit hacky and ad hoc atm
20:59:30 wroathe_ joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:59:57 <merijn> It makes for an impressive "power of monoids" showcase, though ;)
21:00:01 × Frost quits (~Frost@185.163.110.116) ()
21:00:09 <monochrom> That one I understand. I am thankful for the dirty but necessary work.
21:01:00 <merijn> monochrom: If you notice something rebuilding that you think shouldn't you should make a Cabal issue and tag me in it
21:01:08 ystael joins (~ystael@160.sub-174-242-87.myvzw.com)
21:01:08 <merijn> monochrom: https://github.com/haskell/cabal/blob/master/Cabal/src/Distribution/Simple/Program/GHC.hs#L49-L304 ;)
21:01:41 <monochrom> Oh, the only current one that affects me is https://github.com/haskell/cabal/issues/6906
21:02:07 <merijn> I'm particularly proud of the 'from' and 'to' version checks and how they combine monoidally
21:02:08 <monochrom> because I would love so much to have ~/.cabal/config contain "ghc-options: -haddock"
21:02:37 × invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 256 seconds)
21:02:42 <merijn> And I still think we need "Monoid m => Bool -> m -> m" in base, but it's hard to find a good name for it
21:03:01 <merijn> I've been using various versions of mif, mwhen, etc. in my own code, but a good name is hard
21:03:30 <int-e> :t StateT . (((,) () <$>) .)
21:03:31 <lambdabot> Functor m => (s -> m s) -> StateT s m ()
21:04:14 <koz_> int-e: Lol, that's impressively APLy. Thanks!
21:04:56 <koz_> We should add that to transformers as 'modifyInner'.
21:05:02 <koz_> Or modifyM or something.
21:05:18 × wroathe_ quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
21:06:23 × coot quits (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
21:06:29 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
21:07:08 × geekosaur quits (82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
21:07:47 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:08:57 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
21:11:09 <int-e> :t \f -> traverse lift (Identity f) >>= put . runIdentity -- hmm
21:11:10 <lambdabot> (MonadTrans t, Monad m, MonadState s (t m)) => m s -> t m ()
21:11:47 <koz_> That's the mtl version. :P
21:12:00 hackage phonetic-languages-examples 0.6.0.0 - A generalization of the uniqueness-periods-vector-examples functionality. https://hackage.haskell.org/package/phonetic-languages-examples-0.6.0.0 (OleksandrZhabenko)
21:12:50 × wpcarro quits (sid397589@gateway/web/irccloud.com/x-yrrbrsudnjmjbakp) (Read error: Connection reset by peer)
21:13:06 wpcarro joins (sid397589@gateway/web/irccloud.com/x-jyvrhcovkjnuufaq)
21:13:10 × ryjm quits (sid383513@gateway/web/irccloud.com/x-aavthkgvqaggakcc) (Ping timeout: 256 seconds)
21:13:16 × natim87 quits (sid286962@gateway/web/irccloud.com/x-uifctbbgftadercs) (Read error: Connection reset by peer)
21:13:16 × ReinH__ quits (sid179972@gateway/web/irccloud.com/x-sdlypohklafvyaji) (Read error: Connection reset by peer)
21:13:24 × aristid quits (sid1599@gateway/web/irccloud.com/x-ckvrkhwfnpsjpxkc) (Read error: Connection reset by peer)
21:13:24 × bradparker quits (sid262931@gateway/web/irccloud.com/x-hcrjjmdklhbtocmc) (Read error: Connection reset by peer)
21:13:27 natim87 joins (sid286962@gateway/web/irccloud.com/x-mexmpkxgonbwfktv)
21:13:33 × Cir0X quits (sid221743@gateway/web/irccloud.com/x-ouxxoxkrtirtgzgf) (Read error: Connection reset by peer)
21:13:35 aristid joins (sid1599@gateway/web/irccloud.com/x-ieumvqzkylmookgw)
21:13:37 × benwr____ quits (sid372383@gateway/web/irccloud.com/x-ygzdfppyyhwzwtmh) (Read error: Connection reset by peer)
21:13:37 × d0liver quits (sid363046@gateway/web/irccloud.com/x-kkcazzfyjgmdigdk) (Read error: Connection reset by peer)
21:13:38 bradparker joins (sid262931@gateway/web/irccloud.com/x-nbpjheuowgmlbzcp)
21:13:41 × banjiewen_ quits (sid115913@gateway/web/irccloud.com/x-pwjllhheogrzlube) (Read error: Connection reset by peer)
21:13:44 benwr____ joins (sid372383@gateway/web/irccloud.com/x-wqbchwbubajgshwl)
21:13:45 ryjm joins (sid383513@gateway/web/irccloud.com/x-xyruibfadgkaupwy)
21:13:50 Cir0X joins (sid221743@gateway/web/irccloud.com/x-mvlinpkrmvmsfsvf)
21:13:56 d0liver joins (sid363046@gateway/web/irccloud.com/x-lvzpszsyngerfkjs)
21:13:58 banjiewen_ joins (sid115913@gateway/web/irccloud.com/x-jwitackpjevkejhs)
21:14:09 ReinH__ joins (sid179972@gateway/web/irccloud.com/x-ujhxicmjajcluchu)
21:15:24 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
21:15:50 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
21:17:13 <int-e> :t (>>= modify) . traverse lift -- ah, that's it.
21:17:14 <lambdabot> (MonadState s (t m), Traversable ((->) s), MonadTrans t, Monad m) => (s -> m s) -> t m ()
21:17:29 <quarters> I was wondering if anyone can recommend any site that help a noob like myself build out a minimal web app like on http://todomvc.com/
21:17:36 × ystael quits (~ystael@160.sub-174-242-87.myvzw.com) (Read error: Connection reset by peer)
21:17:40 × conal quits (~conal@66.115.176.210) (Quit: Computer has gone to sleep.)
21:17:42 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
21:17:52 <koz_> int-e: The 'Traversable ((->) s)' constraint is a bit onerous, surely?
21:18:14 <int-e> indeed
21:18:28 <int-e> never mind then, I give up.
21:18:38 <koz_> The others were good, though.
21:18:50 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
21:18:51 <koz_> I mean, if you wanna APL it, you can probably run attempt #2 through @pl.
21:18:54 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Remote host closed the connection)
21:19:01 <koz_> @pl \f -> traverse lift (Identity f) >>= put . runIdentity
21:19:01 <lambdabot> (put . runIdentity =<<) . traverse lift . Identity
21:19:06 <quarters> a haskell noob, rather. I noticed that there isn't a haskell version on that site and while I can try for something similar like the scala one, I figured that wouldn't give me the exposure to the tooling used for building out a haskell backed todo list web app
21:19:16 cosimone joins (~cosimone@93-47-228-249.ip115.fastwebnet.it)
21:19:26 <int-e> koz_: #2 didn't quite have the right type
21:19:43 <koz_> int-e: Ah, yeah, upon further reading I can see why.
21:20:02 Boomerang joins (~Boomerang@xd520f68c.cust.hiper.dk)
21:20:13 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
21:20:40 <int-e> :t \f -> get >>= \s -> traverse lift (Identity (f s)) >>= put . runIdentity -- and this is beginning to look awfully clumsy
21:20:41 <lambdabot> (MonadState s (t m), Monad m, MonadTrans t) => (s -> m s) -> t m ()
21:21:01 <int-e> @pl \f -> get >>= \s -> traverse lift (Identity (f s)) >>= put . runIdentity
21:21:01 <lambdabot> (get >>=) . flip flip (put . runIdentity) . (((>>=) . traverse lift . Identity) .)
21:21:09 <int-e> eww.
21:21:20 <koz_> Dat flip . flip.
21:21:26 <koz_> I mean, 'flip flip'.
21:21:39 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
21:21:58 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Client Quit)
21:22:31 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
21:22:45 <Flonk> Say I have a simple BST (https://hastebin.com/bexopesayo.hs) with an insert function. If the element is already in the tree I'd like to save space and return the original tree - at the moment I'm creating a lot of duplicate nodes which is unneccessary. What programming pattern am I looking for?
21:23:08 <int-e> :t \f -> get >>= \s -> lift (f s) >>= put -- yeah the whole traverse idea is just stupid, I guess
21:23:10 <lambdabot> (MonadState s (t m), Monad m, MonadTrans t) => (s -> m s) -> t m ()
21:23:16 <Flonk> Feels similar to exceptions in imperative languages.
21:24:13 <int-e> @pl \f -> get >>= \s -> lift (f s) >>= put
21:24:13 <lambdabot> (get >>=) . flip flip put . (((>>=) . lift) .)
21:24:21 <int-e> still double-flipping
21:24:40 <int-e> flipping out, with a typo?
21:25:00 <koz_> int-e: flipTable = flip flip
21:25:17 <koz_> :t flip flip
21:25:18 <lambdabot> b -> (a -> b -> c) -> a -> c
21:25:31 <koz_> Feels like there should be a bird for this.
21:26:01 <int-e> hmm, flipping the bird?
21:26:06 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
21:26:14 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
21:26:34 <koz_> The all-new Yelling Bird combinator.
21:27:34 <int-e> koz_: I'm still wondering whether there's something more natural for this. Or perhaps some obscure lens approach...
21:28:00 ystael joins (~ystael@160.sub-174-242-87.myvzw.com)
21:28:23 conal joins (~conal@66.115.176.210)
21:28:50 moet joins (~moet@mobile-166-137-178-187.mycingular.net)
21:28:56 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
21:29:43 × Boomerang quits (~Boomerang@xd520f68c.cust.hiper.dk) (Quit: Leaving)
21:29:59 × ystael quits (~ystael@160.sub-174-242-87.myvzw.com) (Read error: Connection reset by peer)
21:30:07 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
21:30:16 Boomerang joins (~Boomerang@xd520f68c.cust.hiper.dk)
21:32:37 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
21:32:39 vicfred joins (~vicfred@unaffiliated/vicfred)
21:34:51 × chaosmasttter quits (~chaosmast@p200300c4a73c52016862557d78ae998a.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
21:35:06 wtw parts (~wtw@unaffiliated/wtw) ()
21:37:59 × Inoperable quits (~PLAYER_1@fancydata.science) (Excess Flood)
21:38:14 britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch)
21:39:02 machined1od joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
21:39:07 × Ariakenom quits (~Ariakenom@h-82-196-111-82.NA.cust.bahnhof.se) (Read error: Connection reset by peer)
21:39:21 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
21:39:36 × machined1od quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
21:39:51 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
21:40:00 <dolio> :t \f -> state (fmap ((,) ()) . f)
21:40:02 <lambdabot> MonadState ((), b) m => (((), b) -> (a, b)) -> m a
21:40:15 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
21:40:15 <eacameron> Question about TH. I barely know how to get my way around TH. Some libraries (here, postgresql-simple-interpolate) offer intelligent Haskell splicing into quasiquoters and they use haskell-ext-meta/etc. to parse the haskell code. This has numerous downsides though as the parser isn't aware of the all the extensions etc in the file using the QQ. However the thought came to me: Why parse these splices at all?
21:40:31 <dolio> Oh, that won't work, right.
21:40:34 <eacameron> Can't I just take them out and put them in a let binding with a new name and then use the name when building the string later?
21:40:38 ystael joins (~ystael@160.sub-174-242-87.myvzw.com)
21:41:13 × boom quits (56ca6780@lfbn-lyo-1-7-128.w86-202.abo.wanadoo.fr) (Remote host closed the connection)
21:41:52 <eacameron> This presupposes I'm able to take raw strings in the QQ as supplied by the user and then tell TH: Just splat this verbatim into the output.
21:42:42 falafel joins (~falafel@2600:1007:b0ad:6e87:7811:313f:d0f3:f9f4)
21:42:58 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
21:43:31 <Boomerang> TH doesn't let you "splat" raw strings, you have to build the AST of the Haskell you want to generate
21:44:14 × ystael quits (~ystael@160.sub-174-242-87.myvzw.com) (Read error: Connection reset by peer)
21:44:55 <eacameron> Boomerang: Well that sucks :P
21:45:50 <Boomerang> It does have tools to make it easier, special TH QuasiQuotes [e| ... |], [t| ... |], ...
21:46:14 Inoperable joins (~PLAYER_1@fancydata.science)
21:46:15 <eacameron> Boomerang: Yeah sounds like at that point I'd need Template template haskell...
21:46:48 <Boomerang> It might be possible/already exists, but I don't know of such a library
21:47:18 × falafel quits (~falafel@2600:1007:b0ad:6e87:7811:313f:d0f3:f9f4) (Read error: Connection reset by peer)
21:50:55 × britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
21:54:01 britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch)
21:55:29 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
21:55:36 × DTZUZU quits (~DTZUZU@207.81.171.116) (Remote host closed the connection)
21:55:52 DTZUZU joins (~DTZUZU@207.81.171.116)
21:56:08 ebf0 joins (~ebf0@184.75.221.35)
21:56:44 oish joins (~charlie@228.25.169.217.in-addr.arpa)
21:59:44 borne joins (~fritjof@200116b864b5430099e934deb93b1409.dip.versatel-1u1.de)
22:00:32 × jaspervdj quits (~jaspervdj@213.55.241.138) (Quit: leaving)
22:00:33 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
22:03:46 nagisa joins (~Android@198-84-255-4.cpe.teksavvy.com)
22:03:47 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
22:06:24 Feuermagier_ joins (~Feuermagi@213.178.26.41)
22:07:15 × Lord_of_Life quits (~Lord@46.217.220.81) (Excess Flood)
22:07:43 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
22:07:54 × Feuermagier quits (~Feuermagi@213.178.26.41) (Read error: Connection reset by peer)
22:08:37 wildtrees joins (wildtrees@gateway/vpn/protonvpn/wildtrees)
22:10:08 Lord_of_Life joins (~Lord@46.217.220.81)
22:10:08 × Lord_of_Life quits (~Lord@46.217.220.81) (Changing host)
22:10:08 Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362)
22:10:55 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:12:28 <monochrom> wz1000: Thanks for the synthetic topology link, I also get interested.
22:14:32 rprije joins (~rprije@124.148.131.132)
22:14:40 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
22:16:15 <wz1000> monochrom: to model everything with the full expressive power you also need unamb, which is implemented using unsafePerformIO: https://hackage.haskell.org/package/unamb-0.2.7/docs/Data-Unamb.html
22:17:04 <ski> @hackage lvish
22:17:04 <lambdabot> https://hackage.haskell.org/package/lvish
22:17:20 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
22:17:52 <ski> (Escardó's work's interesting, yes)
22:21:23 × LKoen quits (~LKoen@9.253.88.92.rev.sfr.net) (Read error: Connection reset by peer)
22:21:41 LKoen joins (~LKoen@9.253.88.92.rev.sfr.net)
22:24:45 ski . o O ( "Abstract Stone Duality" by Paul Taylor at <https://www.paultaylor.eu/~pt/ASD/> )
22:27:37 × hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 256 seconds)
22:30:13 × alp quits (~alp@2a01:e0a:58b:4920:d8db:f457:3fb6:53df) (Ping timeout: 272 seconds)
22:30:58 × Yumasi quits (~guillaume@static-176-175-104-214.ftth.abo.bbox.fr) (Ping timeout: 272 seconds)
22:31:29 × Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
22:36:28 × brettgilio quits (~brettgili@brettgilio.com) (Remote host closed the connection)
22:36:32 × joeytwiddle quits (~joeytwidd@162.243.115.31) (Quit: ZNC - http://znc.in)
22:36:45 × Cathy quits (~Cathy@unaffiliated/cathy) (Ping timeout: 240 seconds)
22:36:47 × sulu quits (~sulu@unaffiliated/sulu) (Quit: No Ping reply in 180 seconds.)
22:36:52 × nagisa quits (~Android@198-84-255-4.cpe.teksavvy.com) (Quit: -a- IRC for Android 2.1.58)
22:37:15 joeytwiddle joins (~joeytwidd@162.243.115.31)
22:37:45 × luigy quits (~luigy@104.236.106.229) (Ping timeout: 240 seconds)
22:38:03 sulu joins (~sulu@unaffiliated/sulu)
22:38:19 luigy joins (~luigy@104.236.106.229)
22:38:25 × peutri quits (~peutri@ns317027.ip-94-23-46.eu) (Ping timeout: 240 seconds)
22:38:33 peutri joins (~peutri@ns317027.ip-94-23-46.eu)
22:38:38 Cathy joins (~Cathy@unaffiliated/cathy)
22:38:52 brettgilio joins (~brettgili@brettgilio.com)
22:44:12 × britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
22:46:23 inkbottle joins (~inkbottle@aaubervilliers-654-1-89-20.w86-212.abo.wanadoo.fr)
22:47:22 × zebrag quits (~inkbottle@aaubervilliers-654-1-73-14.w86-212.abo.wanadoo.fr) (Ping timeout: 246 seconds)
22:47:58 ystael joins (~ystael@209.6.50.55)
22:48:31 inkbottle is now known as zebrag
22:51:43 TxBiGuy joins (~coffee2th@172-125-238-23.lightspeed.rcsntx.sbcglobal.net)
22:51:49 × TxBiGuy quits (~coffee2th@172-125-238-23.lightspeed.rcsntx.sbcglobal.net) (Remote host closed the connection)
22:54:17 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
22:56:07 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
22:56:33 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
22:56:59 × kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection)
22:57:01 × stree quits (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
22:57:01 × star_cloud quits (~star_clou@ec2-34-217-37-165.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
22:57:19 stree joins (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net)
22:57:31 × conal quits (~conal@66.115.176.210) (Quit: Computer has gone to sleep.)
22:58:17 × [exa] quits (exa@srv3.blesmrt.net) (Changing host)
22:58:17 [exa] joins (exa@unaffiliated/exa/x-5381537)
22:58:25 star_cloud joins (~star_clou@ec2-34-217-37-165.us-west-2.compute.amazonaws.com)
22:59:25 <sshine> hm. apparently the 'data-fix' package doesn't have a 'para'.
23:00:14 × zoran119 quits (~zoran119@124-169-22-52.dyn.iinet.net.au) (Read error: Connection reset by peer)
23:00:29 × LKoen quits (~LKoen@9.253.88.92.rev.sfr.net) (Remote host closed the connection)
23:00:52 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
23:00:52 <sshine> before the package gave its combinators funny new names, it only had 'cata', 'ana' and 'hylo'.
23:01:16 TxBiGuy joins (~coffee2th@172-125-238-23.lightspeed.rcsntx.sbcglobal.net)
23:01:56 <sshine> I'm wondering if I should just ditch 'data-fix' and go back to a regular, recursive ADT, or try 'recursion-schemes'.
23:02:48 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:02:49 × TxBiGuy quits (~coffee2th@172-125-238-23.lightspeed.rcsntx.sbcglobal.net) (Client Quit)
23:02:52 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:03:16 TxBiGuy joins (~coffee2th@172-125-238-23.lightspeed.rcsntx.sbcglobal.net)
23:03:28 Varis joins (~Tadas@unaffiliated/varis)
23:03:30 <sshine> another peculiar thing is that if I only want to match one level deep, and not recursively, it seems that I need to do 'Fix.foldFix $ \case { Foo{} -> ...; Bar{} -> ... }' and I suppose that since I'm not referring to the recursive parameters of Foo and Bar, they are lazily discarded?
23:04:10 × TxBiGuy quits (~coffee2th@172-125-238-23.lightspeed.rcsntx.sbcglobal.net) (Remote host closed the connection)
23:04:47 conal joins (~conal@66.115.176.210)
23:05:03 × ebf0 quits (~ebf0@184.75.221.35) (Ping timeout: 272 seconds)
23:05:56 × fendor quits (~fendor@178.115.131.226.wireless.dyn.drei.com) (Remote host closed the connection)
23:09:37 pavonia_ joins (~user@unaffiliated/siracusa)
23:09:49 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
23:10:38 × kritzefitz_ quits (~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
23:11:10 × lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Ping timeout: 246 seconds)
23:11:37 × pavonia quits (~user@unaffiliated/siracusa) (Ping timeout: 264 seconds)
23:11:38 pavonia_ is now known as pavonia
23:15:50 pavonia_ joins (~user@unaffiliated/siracusa)
23:17:07 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
23:18:02 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
23:18:23 christo joins (~chris@81.96.113.213)
23:18:34 × pavonia quits (~user@unaffiliated/siracusa) (Ping timeout: 260 seconds)
23:18:45 pavonia_ is now known as pavonia
23:19:37 × oish quits (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 272 seconds)
23:22:56 nbloomf joins (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad)
23:23:31 hackage nix-tree 0.1.2.0 - Interactively browse a Nix store paths dependencies https://hackage.haskell.org/package/nix-tree-0.1.2.0 (utdemir)
23:24:23 <dolio> Was there some recent blog post somewhere hyping up recursion schemes or something?
23:24:39 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
23:26:05 <dolio> Recursion schemes are the things people working on dependent type theory try very hard to avoid having to use. :þ
23:28:37 × conal quits (~conal@66.115.176.210) (Quit: Computer has gone to sleep.)
23:29:10 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:30:42 ph88 joins (~ph88@2a02:8109:9e00:7e5c:bc50:2174:75e6:7e22)
23:30:47 <aoei> monochrom: lmao (sorry late reply, but you deserve the lols)
23:30:48 conal joins (~conal@66.115.176.210)
23:31:01 <dsal> The paper was from nearly 30 years ago. It should be the new hotness any day now.
23:31:13 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
23:31:41 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
23:32:19 <dolio> I think it's part of a general fallacy among some Haskellers that things that closely match the categorical presentation are automatically nicer. But that is false.
23:33:05 <dolio> In fact, one of the reasons category theorists look for certain structures in categories is so that they can use languages that look more like type/set theory to reason about them.
23:33:50 × `slikts quits (~nelabs@wikipedia/reinis) (Ping timeout: 246 seconds)
23:33:59 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
23:34:06 Aquazi joins (uid312403@gateway/web/irccloud.com/x-paizsduyeybkbeqa)
23:34:20 <dsal> I didn't get very far in my recent recursion excursion. Part of the problem is Foldable and Traversable do a lot of the magic. The other is that my use case and uses are just slightly weird. I can't even remember how, but when I sit down to do something interesting, it's always, "Oh yeah, this is why that won't work."
23:34:46 <dsal> It doesn't help that my implementation is complete and already quite tidy.
23:34:47 mananamenos joins (~mananamen@84.122.202.215.dyn.user.ono.com)
23:34:57 shrug joins (~shrug@178.239.168.171)
23:35:26 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
23:36:43 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
23:37:28 × hiroaki quits (~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
23:37:34 <dolio> Recursion schemes can give elegant presentations of some things, don't get me wrong. But there's a reason people came up with recursion and pattern matching, and try to justify them in terms of things like folds.
23:38:38 `slikts joins (~nelabs@wikipedia/reinis)
23:39:43 <hololeap> learning how to think of something from different angles is beneficial, even if the benefits aren't obvious. it gives you more flexibility in your thinking
23:41:17 <hololeap> i think a lot of people learn about recursion-schemes because it is a different angle to dealing with recursion than what they are used to, and after learning it realize that it's not that useful in and of itself. but learning about it isn't a waste of time imo.
23:41:25 <dolio> Yeah, they're cool to study. At least the original paper or two.
23:41:49 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:42:03 <dolio> I think the fact that there are many papers introducing new schemes for recursive definitions that the previous ones didn't handle well is also telling.
23:43:33 × boxscape quits (86ab2c1f@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.44.31) (Ping timeout: 256 seconds)
23:43:40 × vacm quits (~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:44:31 superstar64 joins (6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net)
23:44:51 <dolio> Anyhow, I ask because it seems that lately there are a lot of 'which recursion-schemes pacakge should I use' type questions here, which I would expect because someone famous said to use one. :)
23:44:54 × conal quits (~conal@66.115.176.210) (Quit: Computer has gone to sleep.)
23:45:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:47:20 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
23:48:44 ronbrz joins (~ronbrz@207.229.174.134)
23:50:38 <sshine> dolio, I don't know if recursion schemes were recently hyped up :)
23:51:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
23:51:40 <sshine> dolio, I guess I had to try for myself that this was a bit of a bother the moment I ran into a recursion scheme that the library (data-fix) didn't support.
23:52:06 <dsal> I was looking at recursion-schemes recently just because it was on my mind and I had a road trip, so I was trying to find explanations I could listen to. The concepts make plenty of sense. I've just not actually applied them to anything.
23:52:08 <sshine> dolio, I did ask which of the two to use a few weeks ago.
23:52:12 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:54:28 <sshine> dolio, "there's a reason people came up with recursion and pattern matching": well, you'd still be using pattern matching with data-fix. just not arbitrarily deep. and I guess you wouldn't be using arbitrary recursion much like a foldr wouldn't let you... so as long as you're fine with recursion constrained to certain schemes, it shouldn't make a big difference. except, yeah, suddenly I need to match two
23:54:34 <sshine> levels deep in my tree and I can't. >_<
23:55:14 <sshine> I think I'm just going to slowly back out and say that I had my experience with it. :)
23:55:44 <sshine> I'd switch from 'data-fix' to 'recursion-schemes' if it weren't because I think that this didn't just prove that I'm spending more energy rather than less.
23:56:06 <dolio> sshine: Yeah, I'm sure there's a something-morphism named for matching two levels deep. :)
23:56:08 <sshine> (also, this being totally researchy, I don't really mind that, it could have been a golden discovery since I happened to actually understand it.)
23:56:21 <sshine> dolio, para. it's in recursion-schemes, but not in data-fix.
23:56:36 <dolio> Well, para gives you the whole underlying value.
23:56:39 <sshine> sure
23:57:00 <dolio> You can publish another paper for one that only gives you the immediate level. :P
23:57:02 <sshine> I mean... I think they're somehow equivalent, so I could *make* a two-level-deep scheme from 'cata'.
23:57:02 conal joins (~conal@66.115.176.210)
23:57:29 <sshine> and I could make it contain a whole bunch of '.'s and 'Fix . fmap f . fmap fmap fmap fmap'
23:57:42 <superstar64> if it's complicated, why not use vanilla recursion?
23:57:46 <dolio> Anyhow, recursion-schemes is probably fine for para, but I wouldn't hesitate to define some pattern synonyms for the one-step match.
23:57:51 <sshine> superstar64, that.
23:58:14 <dolio> Or just ditch the `Fix` version of the type if it's not paying off.
23:58:42 <sshine> dolio, yeah, I ended up defining a bunch of synonyms for my tree, which wasn't less work but made me recall one professor saying you actually want an abstract tree, and I realized, once I did all that boilerplate work, I could actually replace 'data-fix' with anything and not touch the synonyms.
23:58:50 <sshine> dolio, I'm gonna.
23:59:13 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
23:59:29 <sshine> superstar64, I was trying to find out if it was complicated. it sort of is. :-D
23:59:45 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)

All times are in UTC on 2020-11-16.