2025/02/01

2025-02-01 00:01:07 +0100ubert(~Thunderbi@p200300ecdf4e63eb92aaad72729f1b5d.dip0.t-ipconnect.de) (Quit: ubert)
2025-02-01 00:01:42 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-02-01 00:02:08 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-02-01 00:07:32 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 00:08:01 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2025-02-01 00:08:02 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Client Quit)
2025-02-01 00:11:39 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 265 seconds)
2025-02-01 00:11:45 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-01 00:12:40 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 00:14:08 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-02-01 00:17:09 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-02-01 00:19:39 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2025-02-01 00:20:08 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2025-02-01 00:22:24 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2025-02-01 00:28:07 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 00:28:30 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 244 seconds)
2025-02-01 00:32:33 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-01 00:43:30 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 00:45:00 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds)
2025-02-01 00:46:08 +0100jinsun(~jinsun@user/jinsun) jinsun
2025-02-01 00:46:50 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-01 00:47:58 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-01 00:51:22 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 272 seconds)
2025-02-01 00:52:04 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-02-01 00:55:02 +0100 <Leary> kaol: Both ghcid and ghciwatch (given the right flags) allow you to effectively use the repl with `-- $> foo` comments in your code, though the latter is smarter about it---it actually loads the host module so its internals are in scope.
2025-02-01 00:55:16 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 01:00:04 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-02-01 01:01:22 +0100jinsun(~jinsun@user/jinsun) ()
2025-02-01 01:08:00 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 264 seconds)
2025-02-01 01:09:01 +0100 <haskellbridge> <sm> Leary: could you expand that a little ? $> foo comments ?
2025-02-01 01:10:40 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 01:12:09 +0100sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
2025-02-01 01:15:06 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-01 01:18:13 +0100 <Leary> sm: If you use the `--allow-eval` or `--enable-eval` flags in ghcid or ghciwatch respectively, they look for comments of the form `-- $> <code>` in your source to evaluate.
2025-02-01 01:19:22 +0100malte(~malte@mal.tc) (Remote host closed the connection)
2025-02-01 01:22:52 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-02-01 01:23:12 +0100malte(~malte@mal.tc) malte
2025-02-01 01:23:17 +0100Guest96(~Guest96@81-207-104-14.fixed.kpn.net)
2025-02-01 01:23:59 +0100Guest96(~Guest96@81-207-104-14.fixed.kpn.net) (Client Quit)
2025-02-01 01:26:02 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 01:26:04 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-02-01 01:26:05 +0100ljdarj1ljdarj
2025-02-01 01:28:13 +0100 <haskellbridge> <sm> good to know!
2025-02-01 01:30:44 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2025-02-01 01:32:50 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-02-01 01:35:14 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-01 01:39:45 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 248 seconds)
2025-02-01 01:44:04 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 01:48:37 +0100alp(~alp@2001:861:8ca0:4940:291:464f:2c61:f1c2) (Remote host closed the connection)
2025-02-01 01:48:54 +0100alp(~alp@2001:861:8ca0:4940:be55:7820:aa2d:6e12)
2025-02-01 01:52:34 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-02-01 01:52:36 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2025-02-01 01:53:11 +0100ec(~ec@gateway/tor-sasl/ec) ec
2025-02-01 01:53:44 +0100alp(~alp@2001:861:8ca0:4940:be55:7820:aa2d:6e12) (Ping timeout: 260 seconds)
2025-02-01 02:03:16 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 02:08:07 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-02-01 02:09:50 +0100sprotte24(~sprotte24@p200300d16f06b9001d5c2b08794be0ce.dip0.t-ipconnect.de) (Quit: Leaving)
2025-02-01 02:18:39 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 02:19:17 +0100otto_s(~user@p5de2fd05.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2025-02-01 02:21:12 +0100otto_s(~user@p5b0448ee.dip0.t-ipconnect.de)
2025-02-01 02:24:20 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-01 02:24:29 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-02-01 02:28:54 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-02-01 02:35:03 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 02:39:21 +0100Guest22(~Guest62@c-73-217-79-154.hsd1.co.comcast.net)
2025-02-01 02:39:26 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-01 02:45:22 +0100acidjnk_new3(~acidjnk@p200300d6e7283f83f8f1a3a9ad07643b.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2025-02-01 02:50:25 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 02:54:57 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-02-01 02:58:41 +0100Guest22(~Guest62@c-73-217-79-154.hsd1.co.comcast.net) (Quit: Client closed)
2025-02-01 03:04:19 +0100xff0x(~xff0x@ai096095.d.east.v6connect.net) (Ping timeout: 260 seconds)
2025-02-01 03:06:07 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 03:10:36 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-01 03:13:06 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-02-01 03:13:38 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 03:15:32 +0100weary-traveler(~user@user/user363627) user363627
2025-02-01 03:16:01 +0100euleritian(~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2025-02-01 03:16:19 +0100euleritian(~euleritia@77.23.250.232)
2025-02-01 03:16:50 +0100xff0x(~xff0x@2405:6580:b080:900:9526:2be3:6fc8:68b2)
2025-02-01 03:17:34 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 260 seconds)
2025-02-01 03:17:56 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-01 03:28:58 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-02-01 03:29:18 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
2025-02-01 03:30:09 +0100tavare(~tavare@user/tavare) tavare
2025-02-01 03:31:19 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-02-01 03:32:33 +0100euleritian(~euleritia@77.23.250.232) (Remote host closed the connection)
2025-02-01 03:32:51 +0100euleritian(~euleritia@77.23.250.232)
2025-02-01 03:33:02 +0100euouae(~euouae@user/euouae) euouae
2025-02-01 03:33:17 +0100 <euouae> Hello I was using Debug.Trace to check up on sharing
2025-02-01 03:33:34 +0100 <euouae> but e.g. `let y = trace "y-demanded" 1 in (y, y)` will print two y-demanded messages. Why? I thought 'y' would be shared in the pair expression
2025-02-01 03:33:42 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-02-01 03:33:48 +0100 <euouae> Is it just because sharing (for some reason) didn't happen there?
2025-02-01 03:34:10 +0100 <geekosaur> did you use optimization?
2025-02-01 03:34:19 +0100 <geekosaur> (if you were doing it in ghci, you weren't)
2025-02-01 03:34:24 +0100 <int-e> compare let y = trace "y-demanded" 1 :: Integer in (y, y)
2025-02-01 03:34:38 +0100 <int-e> then figure out why adding a type signature makes a difference
2025-02-01 03:34:45 +0100 <geekosaur> oh, right
2025-02-01 03:35:29 +0100 <int-e> the remark about optimizations is valid too of course
2025-02-01 03:36:07 +0100 <EvanR> that's so tricky
2025-02-01 03:36:23 +0100 <euouae> because the type inference prevents it from being shared?
2025-02-01 03:36:34 +0100 <geekosaur> type inference didn't happen
2025-02-01 03:36:38 +0100 <geekosaur> there's a piece missing
2025-02-01 03:36:50 +0100 <geekosaur> well, it did but it didn't reach a final result
2025-02-01 03:36:55 +0100 <int-e> :t 1
2025-02-01 03:36:56 +0100 <lambdabot> Num p => p
2025-02-01 03:37:09 +0100 <euouae> it being Num doesn't tell me much I don't know what to make of it
2025-02-01 03:37:13 +0100 <EvanR> 1 is like a function waiting to be given a Num instance
2025-02-01 03:37:24 +0100 <EvanR> rather than a number
2025-02-01 03:37:33 +0100 <geekosaur> :t let y = 1 in (y,y)
2025-02-01 03:37:34 +0100 <lambdabot> (Num a, Num b) => (a, b)
2025-02-01 03:37:57 +0100 <geekosaur> think about that one for a bit
2025-02-01 03:38:12 +0100 <euouae> well, so it is type inference right
2025-02-01 03:38:18 +0100 <euouae> because I can do :: (Int, Double)
2025-02-01 03:38:47 +0100 <EvanR> :t let y = 1 in (y,y) :: (Int, Double)
2025-02-01 03:38:48 +0100 <lambdabot> (Int, Double)
2025-02-01 03:38:53 +0100 <EvanR> now it's a pair of numbers
2025-02-01 03:38:54 +0100 <int-e> well sharing and lack thereof is firmly a runtime phenomenon
2025-02-01 03:39:03 +0100 <int-e> so it's not *just* type inference
2025-02-01 03:39:25 +0100 <euouae> Yeah, `let x = trace "foo" 1 in (x :: Int, x :: Int)` will still print two foos
2025-02-01 03:39:38 +0100 <EvanR> pair of numbers vs "like a function waiting for two different Num instances, that may or may not happen to be the same instance"
2025-02-01 03:39:40 +0100 <euouae> it's something more than that
2025-02-01 03:40:30 +0100 <euouae> when you say function do you mean type function
2025-02-01 03:40:37 +0100 <EvanR> no
2025-02-01 03:40:41 +0100 <euouae> the `p` argument in Num p => p?
2025-02-01 03:40:50 +0100 <EvanR> no the => in Num p => p
2025-02-01 03:41:07 +0100 <geekosaur> as long as it has a constraint, it's like a partially applied function. (=> looks like -> for a reason) the thing that needs to be applied is an instance dictionary
2025-02-01 03:41:16 +0100 <int-e> Concretely at runtime, the argument is a Num dictionary for p.
2025-02-01 03:41:18 +0100nitrix(~nitrix@user/meow/nitrix) (Quit: ZNC 1.8.2 - https://znc.in)
2025-02-01 03:41:31 +0100 <euouae> I haven't heard of dictionary before
2025-02-01 03:41:32 +0100 <geekosaur> by the time you apply it to the tuple, it's too late to go back and do sharing. if you specify it in the let, it can share
2025-02-01 03:42:03 +0100 <int-e> (Dictionaries are an implementation detail of type classes.)
2025-02-01 03:42:12 +0100 <geekosaur> have you reached typeclasses yet?
2025-02-01 03:42:26 +0100 <euouae> No I just roughly know they have to do with interfaces
2025-02-01 03:42:32 +0100 <EvanR> D:
2025-02-01 03:42:35 +0100 <int-e> (And there are alternatives... notably, JHC passed type descriptors instead.)
2025-02-01 03:42:37 +0100nitrix(~nitrix@user/meow/nitrix) nitrix
2025-02-01 03:42:39 +0100tabaqui1(~root@87.200.129.102) tabaqui
2025-02-01 03:43:24 +0100 <EvanR> is passing type descriptors tangibly different in practice
2025-02-01 03:43:27 +0100 <geekosaur> "interfaces" is a flawed attempt to understand typeclasses in terms of something better known, much like all the failed monad tutorials floating around the internet
2025-02-01 03:43:57 +0100 <euouae> failure does not worry me
2025-02-01 03:44:17 +0100 <EvanR> > fail "monad tutorial failed"
2025-02-01 03:44:18 +0100 <lambdabot> error:
2025-02-01 03:44:18 +0100 <lambdabot> • Ambiguous type variables ‘m0’,
2025-02-01 03:44:18 +0100 <lambdabot> ‘a0’ arising from a use of ‘show_M13899420735...
2025-02-01 03:44:20 +0100 <geekosaur> it should, you will have problems if you insist on "thats good enlugh isnt it?"
2025-02-01 03:44:28 +0100 <geekosaur> because it won't be good enough
2025-02-01 03:44:31 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn