Logs: freenode/#haskell
| 2021-04-21 18:23:22 | <wroathe> | When using QuantifiedConstraints like (Show a, forall a. Show (t a)) => (Foo t a) I'm getting a warning saying that "a" shadows an existing binding. Are the a's distinct between the first constraint and the second constraint? It still seems to compile, even with the warning, and results in the behavior that I want. |
| 2021-04-21 18:24:21 | <ski> | yes, they are |
| 2021-04-21 18:24:55 | × | dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection) |
| 2021-04-21 18:25:23 | <ski> | saying `(Show a,forall b. Show (t b)) => Foo t a' might be less confusing for a reader |
| 2021-04-21 18:25:54 | <wroathe> | ski: That's actually what I've already gone with, but I was just verifying my understanding |
| 2021-04-21 18:26:01 | × | ashesham` quits (~user@d8D87D1B0.access.telenet.be) (Ping timeout: 252 seconds) |
| 2021-04-21 18:26:50 | ski | nods |
| 2021-04-21 18:27:33 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 2021-04-21 18:27:45 | <ski> | (i suppose you've confirmed you don't actually want `(Show a,forall b. Show b => Show (t b)) => Foo t a') |
| 2021-04-21 18:28:54 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 2021-04-21 18:29:07 | → | mmfood_2 joins (~mmfood@45.91.21.59) |
| 2021-04-21 18:29:19 | × | mmfood_1 quits (~mmfood@45.91.21.58) (Ping timeout: 252 seconds) |
| 2021-04-21 18:30:46 | × | justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 245 seconds) |
| 2021-04-21 18:31:43 | × | notzmv quits (~zmv@unaffiliated/zmv) (Ping timeout: 252 seconds) |
| 2021-04-21 18:31:53 | × | horatiohb quits (~horatiohb@138.197.103.32) (Ping timeout: 252 seconds) |
| 2021-04-21 18:32:45 | × | vchlup quits (~vchlup@nat.brnet.cz) (Ping timeout: 268 seconds) |
| 2021-04-21 18:36:47 | × | vdukhovni quits (64022765@100.2.39.101) (Quit: Connection closed) |
| 2021-04-21 18:36:54 | → | pthariensflame joins (~pthariens@2600:6c52:727f:4200:edf5:29b5:ee6b:7a0f) |
| 2021-04-21 18:37:04 | <wroathe> | ski: Nope, and I was just about to ask about that. |
| 2021-04-21 18:37:16 | × | pthariensflame quits (~pthariens@2600:6c52:727f:4200:edf5:29b5:ee6b:7a0f) (Client Quit) |
| 2021-04-21 18:38:38 | <wroathe> | Nice. That works like a charm. |
| 2021-04-21 18:38:58 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 2021-04-21 18:38:59 | <wroathe> | I always forget that you can apply constraints to variables in constraints |
| 2021-04-21 18:44:21 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 2021-04-21 18:45:12 | <wroathe> | ski: Thanks btw |
| 2021-04-21 18:46:35 | → | coot joins (~coot@37.30.50.130.nat.umts.dynamic.t-mobile.pl) |
| 2021-04-21 18:47:18 | × | HannaM quits (~quassel@p54849510.dip0.t-ipconnect.de) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
| 2021-04-21 18:48:59 | → | Guest_68 joins (4b1ac0c4@75-26-192-196.lightspeed.bcvloh.sbcglobal.net) |
| 2021-04-21 18:49:02 | × | Guest_68 quits (4b1ac0c4@75-26-192-196.lightspeed.bcvloh.sbcglobal.net) (Client Quit) |
| 2021-04-21 18:49:36 | → | invaser joins (~Thunderbi@31.148.23.125) |
| 2021-04-21 18:49:36 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 2021-04-21 18:49:52 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 2021-04-21 18:49:56 | → | safinaskar joins (~user@109.252.90.136) |
| 2021-04-21 18:51:18 | × | wavemode quits (~wavemode@097-070-075-143.res.spectrum.com) (Remote host closed the connection) |
| 2021-04-21 18:52:34 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 2021-04-21 18:53:27 | → | wavemode joins (~wavemode@097-070-075-143.res.spectrum.com) |
| 2021-04-21 18:56:01 | → | malumore joins (~malumore@151.62.122.70) |
| 2021-04-21 18:58:37 | → | vdukhovni joins (64022765@100.2.39.101) |
| 2021-04-21 18:59:09 | → | ludi49 joins (~hryhorij@ip595.t15.ds.pwr.wroc.pl) |
| 2021-04-21 19:00:08 | ← | ludi49 parts (~hryhorij@ip595.t15.ds.pwr.wroc.pl) () |
| 2021-04-21 19:00:41 | → | psygate joins (~psygate@unaffiliated/psygate) |
| 2021-04-21 19:03:56 | × | NinjaTrappeur quits (~ninja@unaffiliated/ninjatrappeur) (Quit: WeeChat 3.1) |
| 2021-04-21 19:04:02 | × | boogsbunny quits (17520e19@23.82.14.25) (Ping timeout: 240 seconds) |
| 2021-04-21 19:04:47 | → | NinjaTrappeur joins (~ninja@unaffiliated/ninjatrappeur) |
| 2021-04-21 19:09:53 | × | NinjaTrappeur quits (~ninja@unaffiliated/ninjatrappeur) (Ping timeout: 246 seconds) |
| 2021-04-21 19:13:10 | → | NinjaTrappeur joins (~ninja@unaffiliated/ninjatrappeur) |
| 2021-04-21 19:13:17 | mmfood_2 | is now known as mmfood |
| 2021-04-21 19:13:21 | → | nut joins (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 2021-04-21 19:14:53 | <ski> | np |
| 2021-04-21 19:17:07 | × | vdukhovni quits (64022765@100.2.39.101) (Quit: Connection closed) |
| 2021-04-21 19:17:36 | × | vs^ quits (vs@ip98-184-89-2.mc.at.cox.net) () |
| 2021-04-21 19:18:58 | → | pavonia joins (~user@unaffiliated/siracusa) |
| 2021-04-21 19:19:17 | <infinisil> | Can cabal show a graph of how the modules depend on each other? |
| 2021-04-21 19:19:21 | × | mikoto-chan quits (~anass@gateway/tor-sasl/mikoto-chan) (Quit: mikoto-chan) |
| 2021-04-21 19:19:33 | → | mikoto-chan joins (~anass@gateway/tor-sasl/mikoto-chan) |
| 2021-04-21 19:19:47 | × | LKoen quits (~LKoen@92.163.9.109.rev.sfr.net) (Remote host closed the connection) |
| 2021-04-21 19:20:08 | <davean> | infinisil: not cabal, thats not what cabal does - it doesn't know hwat modules depend on what even - but there are tools |
| 2021-04-21 19:20:22 | <davean> | infinisil: I think you've missunderstood what cabal does though if you think it understands Haskell source code at all. |
| 2021-04-21 19:20:37 | <davean> | It does not. |
| 2021-04-21 19:20:45 | <davean> | Thats GHC's job |
| 2021-04-21 19:21:19 | <infinisil> | Oh, does cabal not call GHC multiple times then for each module? |
| 2021-04-21 19:21:52 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 2021-04-21 19:22:27 | <monochrom> | No. |
| 2021-04-21 19:22:44 | <monochrom> | Ever did a "cabal build -v" to see how it calls GHC? |
| 2021-04-21 19:23:10 | <monochrom> | It throws the complete module list at GHC in one go. |
| 2021-04-21 19:23:17 | → | LKoen joins (~LKoen@92.163.9.109.rev.sfr.net) |
| 2021-04-21 19:23:36 | <monochrom> | Admire the thousands-of-characters-long command line. |
| 2021-04-21 19:24:19 | <monochrom> | I wouldn't want to be GHC. |
| 2021-04-21 19:24:42 | <monochrom> | cabal : ghc :: me : my TAs |
| 2021-04-21 19:24:46 | <monochrom> | my poor TAs |
| 2021-04-21 19:24:52 | × | minoru_shiraeesh quits (~shiraeesh@109.166.59.151) (Ping timeout: 240 seconds) |
| 2021-04-21 19:25:39 | → | minoru_shiraeesh joins (~shiraeesh@46.34.207.53) |
| 2021-04-21 19:25:43 | <monochrom> | But it's alright, someone already wrote the heroic topological sort code in GHC decades ago, may as well actually use it. |
| 2021-04-21 19:26:29 | <monochrom> | Too late to say "separation of concerns, this belongs to a makefile" now. :) |
| 2021-04-21 19:26:58 | <davean> | Well, makefiles are more limited, and also not automatic. Makefiles get it wrong all the time |
| 2021-04-21 19:27:09 | <sclv> | infinisil: there's a ghc command to generate a makefile, which in turn will encode the graph of dependencies |
| 2021-04-21 19:27:09 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 2021-04-21 19:27:10 | × | mmfood quits (~mmfood@45.91.21.59) (Quit: Leaving) |
| 2021-04-21 19:27:16 | <davean> | I've seen a pile of makefiles that have to be run 3 or 4 times because they get it wrong |
| 2021-04-21 19:27:34 | × | invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 265 seconds) |
| 2021-04-21 19:27:47 | <infinisil> | monochrom: I see, thanks for the info |
| 2021-04-21 19:27:48 | <monochrom> | Use "ghc -M" to output a correct makefile :) |
| 2021-04-21 19:27:48 | → | notzmv joins (~zmv@unaffiliated/zmv) |
| 2021-04-21 19:28:10 | <davean> | I mean theres things like SOurceGraph |
| 2021-04-21 19:28:14 | <infinisil> | So, how can I get the graph of modules though? Any tool recommendations? |
| 2021-04-21 19:28:34 | <monochrom> | Does "ghc -M"'s makefile count? :) |
| 2021-04-21 19:28:44 | <monochrom> | It's an adjacency list... |
| 2021-04-21 19:28:46 | <sclv> | you can run makefile2graph or a similar tool on it |
| 2021-04-21 19:28:49 | <davean> | infinisil: and graphmod |
| 2021-04-21 19:28:52 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 2021-04-21 19:28:53 | × | d34df00d quits (~d34df00d@104-14-27-213.lightspeed.austtx.sbcglobal.net) (Read error: Connection reset by peer) |
| 2021-04-21 19:29:11 | <infinisil> | Hm I see |
| 2021-04-21 19:29:14 | <davean> | I haven't used any of the source representation tools in a few years |
| 2021-04-21 19:29:15 | <infinisil> | Lemme try.. |
| 2021-04-21 19:29:19 | <davean> | SourceGraph use to work great |
| 2021-04-21 19:29:33 | <davean> | I don't actually find the graph useful though I found |
| 2021-04-21 19:29:40 | <sclv> | its extremely bitrotted but shouldn't be hard to fix up: https://matrix.hackage.haskell.org/#/package/SourceGraph |
| 2021-04-21 19:29:51 | <davean> | graphmod is probably less bitrotted |
| 2021-04-21 19:29:53 | <monochrom> | Yeah a graph of packages is the useful one. |
| 2021-04-21 19:30:06 | <infinisil> | In my case I want to see why a file is being recompiled so often |
All times are in UTC.