Home liberachat/#haskell: Logs Calendar

Logs on 2024-05-01 (liberachat/#haskell)

00:03:32 lol_ is now known as jcarpenter2
00:04:01 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
00:04:38 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
00:08:23 <jackdk> Thanks but it's neither of those. It was more like a typelevel answer to the question "what resources is this function going to touch?" in a way that let you accumulate the names in a constraint and pull them down to the value level to write out a policy or equivalent
00:14:39 × mima quits (~mmh@aftr-62-216-211-165.dynamic.mnet-online.de) (Ping timeout: 260 seconds)
00:43:47 wroathe joins (~wroathe@24-152-179-157.fttp.usinternet.com)
00:43:47 × wroathe quits (~wroathe@24-152-179-157.fttp.usinternet.com) (Changing host)
00:43:47 wroathe joins (~wroathe@user/wroathe)
00:44:57 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
00:47:05 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 252 seconds)
00:51:02 <jackdk> It was https://reasonablypolymorphic.com/blog/abusing-constraints/
00:53:14 talismanick joins (~user@2601:644:937c:ed10::ae5)
00:55:23 <talismanick> If a free monad is a tree of expressions, is there a DAG analogue?
00:57:02 <geekosaur> oh, right, I saw that a few months ago
01:00:13 <geekosaur> talismanick, isn't it actually a DAG anyway? cycles would severely limit the monads you could use to "interpret" it
01:02:05 × pointlessslippe1 quits (~pointless@212.82.82.3) (Ping timeout: 240 seconds)
01:09:19 <ski> hmm .. i guess you could have an operation that requires that its opeands "overlap" (have some common substructures), in some particular fashion. so a recursive decomposition of a problem (corresponding to matching on such a constructor operation) would then naturally allow dynamic programming (iow a DAG, rather than a tree, recursive decomposition/structuring of the original problem), presumably
01:10:01 × fryguybob quits (~fryguybob@024-094-050-022.inf.spectrum.com) (Quit: leaving)
01:11:26 <c_wraith> You don't need any special structure for that, though
01:11:30 <c_wraith> You just need sharing.
01:14:28 <ski> yea, but how do you detect, or enforce, the sharing, of the iput structure, to justify the sharing of the output computation ?
01:14:36 <ski> s/iput/input/
01:14:50 <c_wraith> pick f carefully.
01:15:01 <c_wraith> you can embed basically anything you want into f
01:15:04 <ski> iow, i'm thinking of something like a catamorphism
01:15:53 waldo joins (~waldo@user/waldo)
01:18:29 <ski> given an array/vector with indices from `0' to `n-1' (incl.), we could decompose this into one slice from `0' to `n-2' and one from `1' to `n-1', guaranteed to overlap on the `1' to `n-2' part. eventually, we'd get down to singleton slices, which could be the base case of a dynamic programming, then results percolating back up in a "lattive"-like structure, rather than a tree, proper, thereby taking
01:18:35 <ski> advantage of the sharing
01:23:41 <talismanick> I'm feeling a little stupid, then, trying to understand https://hackage.haskell.org/package/zsdd/docs/Data-Diagram.html
01:24:25 <ski> basically, we have, if `Just (ar01,ar12) = decompose ar012', `Just (ar0,ar1a) = decompose ar01' and `Just (ar1b,ar2) = decompose ar12', then `ar1a = ar1b'
01:26:03 <talismanick> because, if one can assume "maximal sharing", I feel like I can see in my head how a BDD might be implemented with a (real) free monad
01:27:48 × otto_s quits (~user@p4ff27e40.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
01:29:11 <ski> or, in terms of composition, if `Compose (Compose ar0 ar1a) (Compose ar1b ar2) = ar012', then `ar1a = ar1b'. so we have something like `Compose :: (ar0 :: Slice n) -> (ar1 :: Slice n) -> Agree ar0 ar1 => Slice (1+n)', where `Agree (Singleton x) (Singleton y)' as well as `(ar1a = ar1b) => Agree (Compose ar0 ar1a) (Compose ar1b ar2)' (where `Agree :: Slice n -> Slice n -> Constraint')
01:29:12 otto_s joins (~user@p4ff27c65.dip0.t-ipconnect.de)
01:29:18 <talismanick> is it the kind of thing where it becomes obvious when you write it down?
01:30:28 <ski> hm, is "BDD" Binary Decision Diagram ?
01:31:09 <talismanick> yeah
01:31:19 ski doesn't recall what those re
01:31:22 <ski> s/re/are/
01:31:46 <talismanick> https://en.wikipedia.org/wiki/Binary_decision_diagram
01:32:04 <talismanick> kind of like SAT solving
01:36:16 <talismanick> Is the problem is that laziness memoizes and shares for you without asking, making every tree equivalent to a DAG but not the one you want?
01:38:18 <c_wraith> well, no. The problem is sharing only happens when explicitly introduced, and doing that is going to require bookkeeping. And the memory cost of that bookkeeping is ridiculous.
01:43:11 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Quit: WeeChat 4.1.2)
01:46:30 ski . o O ( "BDD-Based Deductive Databasee" <https://bddbddb.sourceforge.net/> ; "Soufflé - A Datalog Synthesis Tool for Static Analysis" <https://souffle-lang.github.io> )
01:47:32 <ski> there's also a problem that when traversing a structure with sharing, producing a new parallel structure, that would normally lose all sharing
01:49:07 <ski> (what i was thinking about was encoding the sharing in the type, or rather, in the decomposition process, making it mandatory, thereby making sure it will happen in the result as well)
01:49:59 <ski> (not clear how would apply something like that to BDDs, though)
01:50:54 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
01:59:28 <talismanick> ski: I think Souffle now uses a concurrent B-tree/trie hybrid (lexicographically-ordered B-tree?)
01:59:41 <talismanick> found it: https://souffle-lang.github.io/pdf/pmam19.pdf
02:01:01 <c_wraith> B-trees are already lexicographically ordered. I'm betting it's more like adjusting the number of bits in a node in order keep the fan-out within particular bounds.
02:01:17 <c_wraith> Which... sounds sorta like Patricia Tries, actually.
02:02:45 <c_wraith> Ah, not quite. Patricia tries have a fixed fanout of 2
02:05:28 ski only heard someone mention Soufflé the other week, recognized the mention of BDDBDDB, but hasn't looked at it
02:08:09 <talismanick> c_wraith: the cost of bookkeeping is prohibitive for free monads in general, you mean?
02:09:58 <talismanick> The reduction of a Boolean function is canonical (up to variable ordering), so maybe it's not a problem in this case...
02:11:39 × Katarushisu1 quits (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Read error: Connection reset by peer)
02:11:54 <talismanick> It's probably be none-too-expensive to preface the interpreter with the reduction rules, so long as the free monad/binary decision tree is built and consumed incrementally, right?
02:12:09 <c_wraith> no, I mean that if a problem like this is hard, there are just a *lot* of distinct subproblems.
02:13:50 Katarushisu1 joins (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net)
02:17:42 Axman4765 joins (~Axman6@user/axman6)
02:17:49 Axman4765 is now known as Bynbo7
02:21:27 cashew joins (~cashewsta@65.17.175.150)
02:27:50 × td_ quits (~td@i53870902.versanet.de) (Ping timeout: 245 seconds)
02:29:44 td_ joins (~td@i53870927.versanet.de)
02:42:35 × Square3 quits (~Square4@user/square) (Ping timeout: 268 seconds)
02:43:21 gues54302 joins (~username@3.184.70.115.static.exetel.com.au)
02:43:24 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
02:45:19 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
02:45:22 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
02:48:03 × waldo quits (~waldo@user/waldo) (Quit: waldo)
02:50:10 × Bynbo7 quits (~Axman6@user/axman6) (Remote host closed the connection)
02:51:31 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Remote host closed the connection)
02:51:55 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
02:52:49 ddellacosta joins (~ddellacos@ool-44c73d29.dyn.optonline.net)
02:52:51 × gues54302 quits (~username@3.184.70.115.static.exetel.com.au) (Ping timeout: 260 seconds)
02:58:09 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
03:02:59 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 264 seconds)
03:05:58 madeleine-sydney joins (~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
03:06:05 × aforemny_ quits (~aforemny@i59F516CA.versanet.de) (Ping timeout: 240 seconds)
03:07:14 aforemny joins (~aforemny@2001:9e8:6cea:d00:aab5:d1b:ca3e:df36)
03:40:34 philopsos joins (~caecilius@user/philopsos)
03:41:11 × cashew quits (~cashewsta@65.17.175.150) (Quit: Leaving...)
03:52:53 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:59:56 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
04:01:09 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
04:06:15 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
04:07:04 × philopsos quits (~caecilius@user/philopsos) (Ping timeout: 268 seconds)
04:07:22 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
04:08:13 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
04:08:15 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 245 seconds)
04:17:29 × madeleine-sydney quits (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!)
04:22:30 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
04:26:58 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
04:37:40 ChaiTRex joins (~ChaiTRex@user/chaitrex)
04:41:39 madeleine-sydney joins (~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
04:49:10 philopsos joins (~caecilius@user/philopsos)
05:00:15 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
05:02:56 sroso joins (~sroso@user/SrOso)
05:03:38 gues45965 joins (~username@3.184.70.115.static.exetel.com.au)
05:07:26 × gues45965 quits (~username@3.184.70.115.static.exetel.com.au) (Remote host closed the connection)
05:09:43 gues22599 joins (~username@3.184.70.115.static.exetel.com.au)
05:12:34 gues96208 joins (~username@3.184.70.115.static.exetel.com.au)
05:14:21 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:14:57 <Axman6> Hello #haskellers, can I ask a favour of someone on Matrix? Can you just say some things in here so I can see if I've fixed something that's breaking for me in glirc. I probably need to see a few messages to know if it's improved
05:16:15 Axma55792 joins (~Axman6@user/axman6)
05:16:22 Axma55792 is now known as Bynbo7
05:30:56 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
05:36:15 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
05:36:44 qqq joins (~qqq@92.43.167.61)
05:37:30 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
05:43:15 <haskellbridge> <g​eekosaur> does this help?
05:46:56 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
05:49:12 euphores joins (~SASL_euph@user/euphores)
06:26:50 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
06:26:55 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
06:27:19 rvalue joins (~rvalue@user/rvalue)
06:31:15 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 260 seconds)
06:36:27 raym joins (~ray@user/raym)
06:37:49 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
06:39:49 acidjnk joins (~acidjnk@p200300d6e714dc53acbe2cc37902b0bc.dip0.t-ipconnect.de)
06:45:00 danza joins (~francesco@151.43.220.194)
06:47:02 pointlessslippe1 joins (~pointless@212.82.82.3)
06:54:55 × danza quits (~francesco@151.43.220.194) (Ping timeout: 245 seconds)
06:57:03 × philopsos quits (~caecilius@user/philopsos) (Ping timeout: 272 seconds)
07:00:01 × mikess quits (~mikess@user/mikess) (Ping timeout: 246 seconds)
07:03:26 × gues22599 quits (~username@3.184.70.115.static.exetel.com.au) (Ping timeout: 268 seconds)
07:03:28 × gues96208 quits (~username@3.184.70.115.static.exetel.com.au) (Ping timeout: 255 seconds)
07:05:34 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
07:06:08 chexum joins (~quassel@gateway/tor-sasl/chexum)
07:09:32 <[exa]> Axman6: might be the case that there's a matrix-specific channel with plenty of people hyperactive about this topic
07:12:17 gues90080 joins (~username@ppp121-45-202-250.cbr-trn-nor-bras38.tpg.internode.on.net)
07:18:22 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
07:20:10 tolt_ joins (~weechat-h@li219-154.members.linode.com)
07:22:00 gmg joins (~user@user/gehmehgeh)
07:22:47 × tolt quits (~weechat-h@li219-154.members.linode.com) (Ping timeout: 264 seconds)
07:29:36 × raym quits (~ray@user/raym) (Quit: upgrading kernel, brb)
07:32:44 __monty__ joins (~toonn@user/toonn)
07:32:56 tolt_ is now known as tolt
07:36:20 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:36:57 mima joins (~mmh@aftr-62-216-211-100.dynamic.mnet-online.de)
07:54:42 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:58:06 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
08:01:22 × causal quits (~eric@50.35.88.207) (Quit: WeeChat 4.1.1)
08:09:13 danza joins (~francesco@151.43.219.217)
08:19:25 × tzh quits (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz)
08:21:33 esph joins (~weechat@user/esph)
08:21:35 × talismanick quits (~user@2601:644:937c:ed10::ae5) (Ping timeout: 245 seconds)
08:26:15 × danza quits (~francesco@151.43.219.217) (Ping timeout: 255 seconds)
08:32:05 hseg joins (~gesh@77.137.75.224)
08:34:15 <hseg> Hi. I'm packaging some haskell programs, and am planning to build them with stack. Other than manually editing stack.yaml, is there a way to set the snapshot to lts-22.19+ghc-9.6.5 ?
08:34:53 <hseg> I know I can set the lts part by stack config set resolver lts-22.19, but does stack not have a way to write the compiler version to use?
08:36:24 <hseg> (alternatively, where can I track progress on cutting an lts using ghc 9.6.5? It has a bugfix that's critical on my system)
08:37:09 sawilagar joins (~sawilagar@user/sawilagar)
08:37:33 oo_miguel joins (~Thunderbi@78-11-181-16.static.ip.netia.com.pl)
08:42:43 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 268 seconds)
08:43:44 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
08:53:27 × acidjnk quits (~acidjnk@p200300d6e714dc53acbe2cc37902b0bc.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
09:25:35 jinsun joins (~jinsun@user/jinsun)
09:26:10 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
09:26:54 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
09:29:30 × gues90080 quits (~username@ppp121-45-202-250.cbr-trn-nor-bras38.tpg.internode.on.net) (Ping timeout: 245 seconds)
09:31:10 barak joins (~barak@2a0d:6fc2:68c1:7200:3cf2:a87d:a02b:3e21)
09:32:25 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 245 seconds)
09:41:52 oo_miguel1 joins (~Thunderbi@78-11-181-16.static.ip.netia.com.pl)
09:43:15 × oo_miguel quits (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 245 seconds)
09:43:15 oo_miguel1 is now known as oo_miguel
09:45:32 aosync_ is now known as aws
09:45:48 × aws quits (~alews@141.94.77.100) (Changing host)
09:45:48 aws joins (~alews@user/aws)
09:53:33 <lyxia> hseg: https://docs.haskellstack.org/en/stable/yaml_configuration/#compiler
09:57:58 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
10:02:23 × hseg quits (~gesh@77.137.75.224) (Ping timeout: 264 seconds)
10:04:04 L29Ah joins (~L29Ah@wikipedia/L29Ah)
10:08:24 hseg joins (~gesh@77.137.75.224)
10:09:08 <hseg> lyxia: thanks! In hindsight, it makes sense that such an off-the-beaten-path configuration would need manual intervention
10:21:47 × mwnaylor quits (~user@2601:5cf:837e:2bb0::f472) (Ping timeout: 260 seconds)
10:47:25 guest7621 joins (~username@120.17.103.254)
10:48:34 gues51644 joins (~username@120.17.103.254)
10:49:41 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
10:51:41 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:52:07 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
10:53:04 Lord_of_Life_ is now known as Lord_of_Life
11:13:07 × gues51644 quits (~username@120.17.103.254) (Read error: Connection reset by peer)
11:13:07 × guest7621 quits (~username@120.17.103.254) (Read error: Connection reset by peer)
11:17:43 × destituion quits (~destituio@2a02:2121:340:2456:fffe:d0f:7737:dd1) (Ping timeout: 255 seconds)
11:18:39 × Maxdaman1us quits (~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds)
11:21:20 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Remote host closed the connection)
11:23:45 L29Ah joins (~L29Ah@wikipedia/L29Ah)
11:23:57 destituion joins (~destituio@2a02:2121:340:2456:fffe:d0f:7737:dd1)
11:26:25 raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
11:34:20 Maxdamantus joins (~Maxdamant@user/maxdamantus)
11:35:25 × mei quits (~mei@user/mei) (Remote host closed the connection)
11:36:01 mei joins (~mei@user/mei)
11:41:20 acidjnk joins (~acidjnk@p200300d6e714dc53acbe2cc37902b0bc.dip0.t-ipconnect.de)
11:44:01 Square joins (~Square@user/square)
11:45:55 × madeleine-sydney quits (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!)
11:52:50 mreh joins (~matthew@host86-160-168-68.range86-160.btcentralplus.com)
11:54:30 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 268 seconds)
11:54:41 euleritian joins (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de)
11:55:48 × mreh quits (~matthew@host86-160-168-68.range86-160.btcentralplus.com) (Client Quit)
11:58:39 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 255 seconds)
11:59:09 × raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 272 seconds)
12:07:51 raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
12:09:39 × ddellacosta quits (~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 252 seconds)
12:11:37 × sroso quits (~sroso@user/SrOso) (Quit: Leaving :))
12:21:12 × Xe quits (~cadey@perl/impostor/xe) (Ping timeout: 252 seconds)
12:23:05 Xe joins (~cadey@perl/impostor/xe)
12:31:38 × mima quits (~mmh@aftr-62-216-211-100.dynamic.mnet-online.de) (Ping timeout: 252 seconds)
12:32:59 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:37:47 × euleritian quits (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
12:38:04 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
12:38:05 × ski_ quits (~ski@ext-1-033.eduroam.chalmers.se) (Ping timeout: 240 seconds)
12:45:21 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds)
12:45:35 × SteelBlueSilk quits (~SteelBlue@user/SteelBlueSilk) (Ping timeout: 264 seconds)
12:46:48 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
12:47:23 × raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 264 seconds)
12:48:03 euleritian joins (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de)
12:48:48 × euleritian quits (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
12:49:17 euleritian joins (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de)
12:51:24 yin joins (~yin@user/zero)
13:05:16 × yin quits (~yin@user/zero) (Ping timeout: 255 seconds)
13:09:04 × Square quits (~Square@user/square) (Ping timeout: 260 seconds)
13:16:02 mzschr joins (~mzschr@2a07-a880-4603-1035-18b5-1e9f-f698-63a6.pool6.ovpn.com)
13:21:20 Maxdamantus joins (~Maxdamant@user/maxdamantus)
13:23:17 × demon-cat quits (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Read error: Connection reset by peer)
13:27:22 dfip^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net)
13:46:24 tri joins (~tri@ool-18bbef1a.static.optonline.net)
13:47:08 mikess joins (~mikess@user/mikess)
13:50:26 × hseg quits (~gesh@77.137.75.224) (Quit: WeeChat 4.2.2)
13:50:51 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 260 seconds)
13:58:44 fireking04 joins (~karl@175.176.41.51)
14:01:57 gorignak joins (~gorignak@user/gorignak)
14:10:22 × fireking04 quits (~karl@175.176.41.51) (Read error: Connection reset by peer)
14:18:29 × zer0bitz quits (~zer0bitz@user/zer0bitz) (Ping timeout: 240 seconds)
14:18:35 × euleritian quits (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
14:18:53 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
14:19:49 × Teacup quits (~teacup@user/teacup) ()
14:20:07 Teacup joins (~teacup@user/teacup)
14:21:53 zer0bitz joins (~zer0bitz@user/zer0bitz)
14:21:53 × paotsaq quits (~paotsaq@127.209.37.188.rev.vodafone.pt) (Quit: ZNC 1.9.0 - https://znc.in)
14:23:23 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
14:24:04 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
14:25:10 × sp1ff quits (~user@c-24-21-45-157.hsd1.wa.comcast.net) (Read error: Connection reset by peer)
14:25:23 sp1ff joins (~user@c-24-21-45-157.hsd1.wa.comcast.net)
14:29:14 paotsaq joins (~paotsaq@127.209.37.188.rev.vodafone.pt)
14:32:39 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
14:43:28 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
14:43:51 euleritian joins (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de)
14:45:16 × euleritian quits (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
14:45:33 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
14:51:08 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection timed out)
15:09:04 × gorignak quits (~gorignak@user/gorignak) (Ping timeout: 268 seconds)
15:10:52 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
15:11:23 euleritian joins (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de)
15:14:35 L29Ah joins (~L29Ah@wikipedia/L29Ah)
15:16:58 billchenchina joins (~billchenc@103.118.42.229)
15:17:49 × billchenchina quits (~billchenc@103.118.42.229) (Max SendQ exceeded)
15:19:03 × euleritian quits (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
15:19:31 billchenchina joins (~billchenc@103.118.42.229)
15:19:44 euleritian joins (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de)
15:20:21 × billchenchina quits (~billchenc@103.118.42.229) (Max SendQ exceeded)
15:20:36 × mzschr quits (~mzschr@2a07-a880-4603-1035-18b5-1e9f-f698-63a6.pool6.ovpn.com) (Quit: Client closed)
15:21:28 billchenchina joins (~billchenc@103.118.42.229)
15:22:22 × billchenchina quits (~billchenc@103.118.42.229) (Max SendQ exceeded)
15:24:11 billchenchina joins (~billchenc@103.118.42.229)
15:24:57 × billchenchina quits (~billchenc@103.118.42.229) (Max SendQ exceeded)
15:25:34 billchenchina joins (~billchenc@103.118.42.229)
15:26:27 × billchenchina quits (~billchenc@103.118.42.229) (Max SendQ exceeded)
15:26:57 billchenchina joins (~billchenc@103.118.42.229)
15:27:49 × billchenchina quits (~billchenc@103.118.42.229) (Max SendQ exceeded)
15:28:30 billchenchina joins (~billchenc@103.118.42.229)
15:29:05 × billchenchina quits (~billchenc@103.118.42.229) (Max SendQ exceeded)
15:29:28 raym joins (~ray@user/raym)
15:30:00 billchenchina joins (~billchenc@103.118.42.229)
15:30:32 × billchenchina quits (~billchenc@103.118.42.229) (Client Quit)
15:35:57 × euleritian quits (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
15:36:14 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:40:27 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
15:40:37 <shapr> does anyone know how hackage calculates test coverage % ?
15:40:49 euleritian joins (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de)
15:42:25 <shapr> aha, I think I found it
15:43:07 <shapr> yup, I think it's https://github.com/haskell/hackage-server/blob/master/exes/BuildClient.hs#L594
15:45:15 tri joins (~tri@ool-18bbef1a.static.optonline.net)
15:45:35 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:46:51 × euleritian quits (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
15:47:09 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:47:33 wootehfoot joins (~wootehfoo@user/wootehfoot)
15:49:27 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
15:49:51 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 259 seconds)
15:50:22 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:52:48 × zer0bitz quits (~zer0bitz@user/zer0bitz) (Quit: https://zer0bitz.dy.fi)
15:55:45 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 245 seconds)
16:06:39 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
16:07:23 euleritian joins (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de)
16:14:36 × euleritian quits (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
16:14:57 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
16:15:21 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 268 seconds)
16:15:48 zer0bitz joins (~zer0bitz@user/zer0bitz)
16:17:45 tri joins (~tri@ool-18bbef1a.static.optonline.net)
16:20:06 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: Textual IRC Client: www.textualapp.com)
16:20:40 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:20:47 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
16:20:53 euleritian joins (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de)
16:21:14 × euleritian quits (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
16:21:32 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
16:21:38 fireking04 joins (~karl@112.206.68.79)
16:21:41 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 240 seconds)
16:24:55 × arkeet quits (~arkeet@moriya.ca) (Quit: ZNC 1.8.2 - https://znc.in)
16:25:11 arkeet joins (~arkeet@moriya.ca)
16:26:38 × fireking04 quits (~karl@112.206.68.79) (Remote host closed the connection)
16:28:37 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
16:28:47 euleritian joins (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de)
16:29:07 × euleritian quits (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
16:29:36 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
16:36:29 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
16:37:07 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
16:43:05 yin joins (~yin@user/zero)
16:43:40 <yin> /reconnect
16:44:02 × yin quits (~yin@user/zero) (Client Quit)
16:44:16 yin joins (~yin@user/zero)
16:47:21 target_i joins (~target_i@user/target-i/x-6023099)
16:48:49 mima joins (~mmh@aftr-62-216-211-127.dynamic.mnet-online.de)
16:49:04 tzh joins (~tzh@c-73-164-206-160.hsd1.or.comcast.net)
16:50:06 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection)
16:50:34 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
16:55:21 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
16:56:00 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:59:40 danza joins (~francesco@151.57.139.226)
17:03:16 gaff joins (~gaff@49.207.212.165)
17:04:11 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection)
17:04:55 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:05:08 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
17:05:32 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:05:38 <gaff> I have some code here https://goonlinetools.com/snapshot/code/#r7dkw4j84woahyak9mbns5 that has 2 ways to define Applicative instance for EitherT. I would like to know if there is any difference between the two definitions for <*>.
17:07:32 hseg joins (~gesh@77.137.75.224)
17:07:59 <hseg> Using stack with allow-newer, how can I get stack to dump the build plan it computed?
17:09:42 <gaff> Appreciate any help.
17:16:22 × danza quits (~francesco@151.57.139.226) (Ping timeout: 255 seconds)
17:19:00 danza joins (~francesco@151.57.139.226)
17:20:51 × mima quits (~mmh@aftr-62-216-211-127.dynamic.mnet-online.de) (Ping timeout: 255 seconds)
17:22:55 <mauke> gaff: I think it would depend on how >>= and <*> are defined for m
17:25:35 <gaff> mauke: I am not clear why you are saying so. In any case, let us assume `m` is `StateT s Identity`.
17:26:24 × danza quits (~francesco@151.57.139.226) (Remote host closed the connection)
17:28:27 k`` joins (~k``@152.1.137.158)
17:28:31 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:29:18 <k``> Is there any particular reason that `Data.Bits.shiftR` is undefined for shifts greater than `bitSize`, but `Data.Bits.shiftL` is not?
17:29:52 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
17:30:15 euleritian joins (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de)
17:33:04 <geekosaur> whether it's meaningful depends on the type. consider `Integer`
17:33:49 <k``> It's not relevant to `Integer`.
17:33:49 <geekosaur> also, signed vs. unsigned occurs to me as a potential problem, but I haven't looked to see if it's relevant
17:34:53 <k``> (I assume that when it describes comparing things to `bitSize`, it means only for types where `bitSize` is a nonbottom, nonnegative value.)
17:34:55 × hseg quits (~gesh@77.137.75.224) (Ping timeout: 246 seconds)
17:38:10 <geekosaur> I could also see it depending on ISA: whether shift-right is logical (0 shifts in) or arithmetic (carry bit shifts in)
17:40:22 × euleritian quits (~euleritia@dynamic-176-001-013-250.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
17:40:39 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:42:10 <lyxia> gaff: the second either always runs the two computations
17:43:34 <lyxia> gaff: let m = EitherT (modify (+ 1) >> pure (Left ())) :: EitherT () (State Int) () in m *> m
17:44:35 <geekosaur> sorry, that'd be per bit. I wonder if some ISA simply rejects shifts > bitSize
17:44:51 <geekosaur> (i.e. traps)
17:44:53 <Franciman> i miss haskell's syntax T.T
17:45:06 <Franciman> ocaml's one is a pain sometimes
17:46:39 <gaff> lyxia: Not sure what you are saying there.
17:52:21 × Axman6 quits (~Axman6@user/axman6) (Ping timeout: 258 seconds)
17:52:46 Axman6 joins (~Axman6@user/axman6)
17:53:02 × Bynbo7 quits (~Axman6@user/axman6) (Ping timeout: 244 seconds)
17:53:03 <geekosaur> "Also, Intel's manual[1] states that the results are undefined when cnt is greater than the operand size, but at least for 32- and 64-bit data sizes it has been observed that shift operations are performed by (cnt mod n), with n being the data size."
17:53:08 Axma89310 joins (~Axman6@user/axman6)
17:54:10 <geekosaur> so yeh, it comes down to the ISA
17:54:54 <geekosaur> k`` ^^
17:57:37 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 272 seconds)
17:58:04 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:59:48 justsomeguy joins (~justsomeg@user/justsomeguy)
18:04:02 hseg joins (~gesh@77.137.75.224)
18:05:34 × gaff quits (~gaff@49.207.212.165) ()
18:05:51 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:11:29 <justsomeguy> What do you guys think of this monad video: https://www.youtube.com/watch?v=C2w45qRc3aU ?
18:12:31 <ncf> i'm sure it's excellent since it starts with "the absolute best"
18:13:20 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
18:17:40 <monochrom> How long is it?
18:20:48 <dolio> 15 minutes
18:21:52 × mrmr1553343 quits (~mrmr@user/mrmr) (Ping timeout: 256 seconds)
18:24:17 <probie> I think this is a better monad video https://www.youtube.com/watch?v=dQw4w9WgXcQ
18:24:55 <dolio> Seconded.
18:24:57 <k``> Seems like the processor issues make sense for `unsafeShiftR`, but maybe not `shiftR`. And the inconsistency between R and L is still unexplained...
18:27:19 mrmr1553343 joins (~mrmr@user/mrmr)
18:29:27 <monochrom> Rick Astley actually has his own youtube channel and posts his official MVs. I be damned.
18:29:58 <c_wraith> he's even released new stuff recently. and it's quite good.
18:30:00 danza joins (~francesco@151.19.252.90)
18:30:52 <ncf> i knew he was never gonna let me down
18:30:54 <geekosaur> the docs look reversed for unsafeShiftR vs. shiftR (compare shiftL)
18:32:46 <k``> Oh wow. Looks like it's a documentation issue...
18:33:53 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6)
18:34:23 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:35:55 <k``> > shiftL 1 64 :: Word64
18:35:56 <lambdabot> 0
18:36:20 <k``> > shiftL 1 64 :: Int64
18:36:21 <lambdabot> 0
18:36:53 <k``> shiftL 1 128 :: Int
18:37:16 <k``> > shiftL 1 128 :: Int -- Simon says
18:37:17 <lambdabot> 0
18:37:32 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:37:37 <k``> > shiftR 1 128 :: Int
18:37:38 <lambdabot> 0
18:38:03 <k``> > bit 128 :: Int
18:38:05 <lambdabot> 0
18:38:12 <k``> Cool.
18:39:23 × dfip^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
18:40:53 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
18:50:16 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
18:51:07 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
18:52:32 × danza quits (~francesco@151.19.252.90) (Ping timeout: 260 seconds)
18:52:32 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
18:52:57 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
19:00:51 michalz joins (~michalz@185.246.207.218)
19:02:40 × michalz quits (~michalz@185.246.207.218) (Client Quit)
19:05:43 michalz joins (~michalz@185.246.207.218)
19:07:11 × michalz quits (~michalz@185.246.207.218) (Client Quit)
19:09:15 emmanuelux joins (~emmanuelu@user/emmanuelux)
19:09:46 michalz joins (~michalz@185.246.207.200)
19:11:00 madeleine-sydney joins (~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
19:13:34 × malte quits (~malte@mal.tc) (Remote host closed the connection)
19:14:12 tessd joins (~test@evw199.neoplus.adsl.tpnet.pl)
19:14:44 malte joins (~malte@mal.tc)
19:34:02 Batzy joins (~quassel@user/batzy)
19:35:41 Guest67 joins (~Guest67@129.170.197.127)
19:38:12 <Guest67> Could anyone help me understand why this code doesn’t work/what the correct way of achieving this sort of functionality is? The type error lies with the parameter x in goo, when I left-arrow bind it to ref.
19:38:12 <Guest67> x :: ST s (STRef s [Int])
19:38:13 <Guest67> x = newSTRef $ [1..10]
19:38:13 <Guest67> foo :: STRef s [Int] -> ST s ()
19:38:14 <Guest67> foo ref = modifySTRef ref (0 :)
19:38:14 <Guest67> goo :: ST s (STRef s [Int]) -> [Int]
19:38:15 <Guest67> goo x = runST $ do
19:38:15 <Guest67>     ref <- x — type error here
19:38:16 <Guest67>     foo ref
19:38:16 <Guest67>     readSTRef ref
19:38:40 <Guest67> In foo, that's not supposed to be a smiley face, it's supposed to be "(0 : )"
19:39:58 <mauke> goo's type looks sus
19:40:14 <mauke> :t runST
19:40:15 <lambdabot> (forall s. ST s a) -> a
19:40:37 <mauke> runST requires its argument to be fully polymorphic in s
19:40:46 <mauke> but goo does not
19:40:57 <Guest67> Does readSTRef ref not return a value that's fully polymorphic in s?
19:41:06 <mauke> :t readSTRef
19:41:07 <lambdabot> STRef s a -> ST s a
19:41:11 <mauke> depends
19:41:22 <mauke> readSTRef has no special requirements on s
19:41:36 <mauke> it just passes through whatever s it gets
19:42:06 <mauke> the way goo is declared, the caller of goo gets to choose an 's'
19:42:41 <monochrom> If you want an elementary answer, goo should not take that parameter.
19:43:00 <mauke> that is, there could be some specific type T and someone could create a value of type ST T (STRef T [Int]) and pass it to goo
19:43:20 <mauke> and that's not valid as an argument to runST
19:43:22 <monochrom> If you want an advanced answer, if you really want goo to take that parameter, then "goo :: (forall s. ST s (STRef s [Int])) -> [Int]"
19:43:42 <monochrom> I don't have time to further explain the advanced answer if you don't understand it.
19:44:29 AlexNoo_ joins (~AlexNoo@94.233.240.47)
19:44:29 × AlexNoo_ quits (~AlexNoo@94.233.240.47) (Client Quit)
19:44:31 <mauke> ^ monochrom's code basically says: "you don't get to choose an s; you must give me a polymorphic value that works with all possible choices of s"
19:46:55 noumenon joins (~noumenon@113.51-175-156.customer.lyse.net)
19:49:58 <shapr> hackage codebase is kinda rough
19:50:11 <Guest67> Thanks.  That makes sense in a vacuum, but it kind of conflicts with my understand of why newSTRef [1..10] returns something of type ST s (STRef s [Int]) to begin with.  I thought the whole point of doing that is that it forces the type variable s to become "rigid", so the variable x is no longer a polymorphic value that works with all choices of
19:50:12 <Guest67> it.  But it turns out that their suggestion works, and I can apply goo to x
19:50:30 <monochrom> Here is another elementary answer. goo can take that parameter, but don't call runST. goo :: ST s (STRef s [Int]) -> ST s [Int]. Have someone else write "runST (goo x)".
19:52:13 <monochrom> s/conflicts/confirms/ . The erroneous code is precisely a victim of a rigid s.
19:53:41 <mauke> newSTRef just links up the STRef with its surrounding context (that is, it forces the two 's' parameters to be the same)
19:54:06 <mauke> 's' can still be arbitrary
19:55:43 <Guest67> But if that's the case, why can't I do runST $ newSTRef [1..10]
19:56:42 <mauke> that one I don't have a good understanding/explanation of
19:56:50 <monochrom> Before I answer that, I ask back why would anyone want that to be legal?
19:56:54 <mauke> but the type of runST is (forall s. ST s a) -> a
19:57:01 <ncf> s would escape its scope
19:57:07 <geekosaur> because outside the runST, s has no type
19:57:10 <mauke> and in that example, the 'a' would have to contain an 's' somehow
19:57:28 <mauke> because we're trying to return a result of type STRef s [Int]
19:57:29 <geekosaur> but newSTRef oproduces a value whose type includes an s
19:57:51 <monochrom> The purpose of runST is to never leak out mutable variables. So why should "runST (make a mutable variable and return it)" be legal?
19:58:14 <monochrom> The rank-2 type is designed to ban that.
19:58:32 <Guest67> I don't want it to be legal, I'm moreso curious about why it is the case that it prevents that from happening
19:58:46 <geekosaur> okay, let's go back to that forall
19:58:50 <geekosaur> it does two things
19:59:08 <geekosaur> the first one we already discussed: "must accept any type for s"
19:59:26 <geekosaur> the second is that it delimits where s is meaningful: inside the parentheses where the forall occurs
19:59:35 <geekosaur> outside those parenthses, s doesn't exist
20:01:23 <mauke> from a "who gets to choose" point of view, the caller of runST gets to choose 'a', but 's' has to be left polymorphic (as demanded by runST)
20:01:42 <mauke> this causes a conflict if 'a' includes 's'
20:02:03 <mauke> (like if 'a = STRef s [Int]')
20:02:23 × tessd quits (~test@evw199.neoplus.adsl.tpnet.pl) (Remote host closed the connection)
20:02:54 <mauke> if the caller gets to choose 'a', it implicitly also chooses 's', and that's illegal
20:04:03 <Guest67> So that part makes sense.  But then why can I apply goo, which now requires s to be fully polymorphic, to the result of the newSTRef?  I'm implicitly choosing 's' by choosing 'a', so the result is no longer fully polymorphic in s right?
20:04:57 <monochrom> Which version of goo now?
20:05:00 <mauke> in your original code, a = [Int]
20:05:34 <Guest67> The new one, where the type signature is (forall s. ST s (STRef s [Int])) -> [Int]
20:05:45 sawilagar joins (~sawilagar@user/sawilagar)
20:06:36 <mauke> that still uses runST at type (forall s. ST s [Int]) -> [Int]
20:07:15 <mauke> because the action you're passing to runST doesn't try to return an STRef. it just returns a list
20:08:49 <monochrom> "(forall s. ST s (STRef s [Int]))" stays fully polymorphic. I thought you knew that's what the "forall" is doing.
20:09:11 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
20:10:10 <monochrom> The words "the result of the newSTRef" is ambiguous. The wrong interpretation leads to the wrong conclusion.
20:10:18 <lyxia> Instead of thinking in terms of rigid/"polymorphic" type variables, think in terms of input/output. newSTRef :: forall s. a -> ST s (STRef s a) takes a type s as an input. All of the ST functions except runST take s as an input. runST takes a function which takes a type s as an input, which means that runST (somehow) produces an s to be able to call that function.
20:11:00 <monochrom> Yeah, that.
20:12:28 <monochrom> Maybe I should teach that in my course too. (Currently I teach "caller chooses", "callee chooses".)
20:13:27 <monochrom> (OK I am not teaching rank-2 types yet, so "caller chooses" has sufficed so far.)
20:15:08 × Luj quits (~Luj@2a01:e0a:5f9:9681:627d:73c1:73b3:2561) (Quit: Ping timeout (120 seconds))
20:15:26 Luj joins (~Luj@2a01:e0a:5f9:9681:d999:72f4:b788:a2bb)
20:16:01 tri joins (~tri@ool-18bbef1a.static.optonline.net)
20:16:24 demon-cat joins (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
20:20:23 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 264 seconds)
20:23:01 SteelBlueSilk joins (~SteelBlue@c-98-42-249-36.hsd1.ca.comcast.net)
20:23:01 × SteelBlueSilk quits (~SteelBlue@c-98-42-249-36.hsd1.ca.comcast.net) (Changing host)
20:23:01 SteelBlueSilk joins (~SteelBlue@user/SteelBlueSilk)
20:25:21 × sawilagar quits (~sawilagar@user/sawilagar) (Quit: Leaving)
20:28:22 × k`` quits (~k``@152.1.137.158) (Remote host closed the connection)
20:31:27 × madeleine-sydney quits (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Konversation terminated!)
20:36:54 sawilagar joins (~sawilagar@user/sawilagar)
20:39:05 × yin quits (~yin@user/zero) (Ping timeout: 256 seconds)
20:39:34 × michalz quits (~michalz@185.246.207.200) (Quit: ZNC 1.8.2 - https://znc.in)
20:42:12 Square joins (~Square@user/square)
20:43:40 × Guest67 quits (~Guest67@129.170.197.127) (Ping timeout: 250 seconds)
20:46:41 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
20:46:58 tri joins (~tri@ool-18bbef1a.static.optonline.net)
20:46:58 × xdminsy quits (~xdminsy@117.147.70.233) (Read error: Connection reset by peer)
20:47:08 × manwithluck quits (manwithluc@gateway/vpn/protonvpn/manwithluck) (Read error: Connection reset by peer)
20:47:35 manwithluck joins (manwithluc@gateway/vpn/protonvpn/manwithluck)
20:49:01 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
20:51:28 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 256 seconds)
20:54:21 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 252 seconds)
21:00:14 yin joins (~yin@user/zero)
21:07:05 xdminsy joins (~xdminsy@117.147.70.233)
21:09:31 × hseg quits (~gesh@77.137.75.224) (Ping timeout: 260 seconds)
21:14:18 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds)
21:16:39 tri joins (~tri@ool-18bbef1a.static.optonline.net)
21:16:49 gmg joins (~user@user/gehmehgeh)
21:19:42 mwnaylor joins (~user@2601:5cf:837e:2bb0::9c1d)
21:21:18 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 252 seconds)
21:33:27 × ocra8 quits (ocra8@user/ocra8) (Quit: WeeChat 4.2.2)
21:35:17 <tomsmeding> monochrom: are you teaching existentials in data types?
21:35:26 <tomsmeding> data Exists f where Exists :: f a -> Exists f
21:35:48 <tomsmeding> that's another instance of this idea, except "producer chooses" vs "consumer chooses"
21:35:58 <tomsmeding> never mind that haskell notates both with 'forall'
21:36:13 <haskellbridge> <s​m> g'day all. Isn't there a CPP macro for checking the value of a cabal package flag ?
21:36:58 <haskellbridge> <s​m> I thought so, but can't find it
21:39:16 ocra8 joins (ocra8@user/ocra8)
21:40:18 <tomsmeding> sm: I don't think so
21:40:49 <c_wraith> sm: I think the typical thing is to put -DFLAGNAME in a cpp-options field when the flag is set
21:41:04 <tomsmeding> e.g. search for 'if flag(debug)' here https://hackage.haskell.org/package/accelerate-1.3.0.0/accelerate.cabal
21:41:28 <tomsmeding> of course you can name this define suggestively, like FLAG_yourthing
21:41:33 <haskellbridge> <s​m> I guess you're right, thank you
21:41:56 × acidjnk quits (~acidjnk@p200300d6e714dc53acbe2cc37902b0bc.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
21:42:21 <haskellbridge> <s​m> I want to include ghc-debug support, but not by default as it's not yet widely packaged
21:42:58 <haskellbridge> <s​m> because ghc-debug-brick looked pretty powerful, even if I couldn't figure out a whole lot
21:43:49 <haskellbridge> <s​m> (I couldn't see a lot of source symbols, even when I built for profiling and with that info-tables ghc option)
21:52:40 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
22:02:48 talismanick joins (~user@2601:644:937c:ed10:536b:7670:fffc:851a)
22:12:29 waldo joins (~waldo@user/waldo)
22:14:52 × leah2 quits (~leah@vuxu.org) (Ping timeout: 268 seconds)
22:17:02 × migas97 quits (~migas@static.140.65.63.178.clients.your-server.de) (Quit: The Lounge - https://thelounge.github.io)
22:17:52 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:19:10 migas97 joins (~migas@static.140.65.63.178.clients.your-server.de)
22:21:16 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:22:40 off^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net)
22:22:44 leah2 joins (~leah@vuxu.org)
22:25:20 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
22:31:05 joeyadams joins (~joeyadams@2603:6010:5100:2ed:7613:7f5a:3f36:628c)
22:31:31 × tzh quits (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: vnskdjkd)
22:35:51 × oo_miguel quits (~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 255 seconds)
22:37:50 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds)
22:38:38 gmg joins (~user@user/gehmehgeh)
22:43:40 × Square quits (~Square@user/square) (Ping timeout: 245 seconds)
22:44:48 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 256 seconds)
22:46:14 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
23:03:48 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
23:06:17 × sprout quits (~quassel@84-80-106-227.fixed.kpn.net) (Ping timeout: 256 seconds)
23:08:30 × waldo quits (~waldo@user/waldo) (Quit: waldo)
23:17:53 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
23:22:11 aforemny_ joins (~aforemny@i59F516D1.versanet.de)
23:22:59 × aforemny quits (~aforemny@2001:9e8:6cea:d00:aab5:d1b:ca3e:df36) (Ping timeout: 260 seconds)
23:24:30 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 245 seconds)
23:25:50 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
23:33:17 × destituion quits (~destituio@2a02:2121:340:2456:fffe:d0f:7737:dd1) (Ping timeout: 272 seconds)
23:34:30 as_ joins (~as@2800:a4:2f2:ee00:2a7d:f1f0:f562:40ce)
23:39:40 Sgeo joins (~Sgeo@user/sgeo)
23:45:31 × xff0x quits (~xff0x@softbank219059019218.bbtec.net) (Ping timeout: 268 seconds)
23:48:11 xff0x joins (~xff0x@softbank219059019218.bbtec.net)
23:54:38 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)

All times are in UTC on 2024-05-01.