Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,800,394 events total
2026-01-12 20:29:12 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-01-12 20:29:32 <Enrico63> Because our data representation is just an Expr, whatever it contains
2026-01-12 20:30:00 <tomsmeding> this is in contrast to a dynamically typed language, where any use of 'fst' (usually written like [0], or .0, or .first, etc.) may throw because it actually turns out to be a file handle, for example
2026-01-12 20:30:13 <tomsmeding> Enrico63: no, I'm talking about Value, not Expr
2026-01-12 20:30:23 <Enrico63> Well, same thing, right?
2026-01-12 20:30:34 <EvanR> no way
2026-01-12 20:30:34 <tomsmeding> true, they're both dynamic
2026-01-12 20:30:35 <Enrico63> It's a single type that hides multiple shapes, no?
2026-01-12 20:30:50 <tomsmeding> but for Expr, every value is interpretable, whereas certainly not all Value values are valid
2026-01-12 20:31:08 <tomsmeding> (well, not really every Expr is interpretable either!)
2026-01-12 20:31:25 <tomsmeding> ("Fst (I 2)" is indeed bad, and you're right that this is yet another example of the same)
2026-01-12 20:31:42 <EvanR> isn't the secret sauce that a Value evaluates to itself
2026-01-12 20:32:07 <EvanR> is the output of evaluation
2026-01-12 20:32:20 <tomsmeding> Alexis' point here, I think, is that my first snippet is fine Haskell code, _despite_ doing a check that is "too late"
2026-01-12 20:32:49 <tomsmeding> my addendum to that is that Haskell is actually strong enough that if you're lucky enough to be interpreting a typed language, you can fix this
2026-01-12 20:32:53 <tomsmeding> -> my second snippet
2026-01-12 20:33:43 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-12 20:34:30 vanishingideal joins (~vanishing@user/vanishingideal)
2026-01-12 20:35:45 <Enrico63> No, I don't get it. Your first snippet is Haskell code full stop; fine or not is an opinion. Her words refer to "rare exceptions [...] that **require** true dynamic code loading".
2026-01-12 20:36:24 <tomsmeding> Enrico63: I interpret that "dynamic code loading" as applying to my 'interpret': it's loading code (Expr) dynamically (at runtime)
2026-01-12 20:36:26 <Enrico63> Now, whether I look at the first or second snippet of yours, those are both interpreters, no?
2026-01-12 20:37:07 <Enrico63> Yeah, and in your second snippet you are not doing that. So where's the "require"?
2026-01-12 20:37:29 <Enrico63> If something is required, you ought to do it, you can't avoid. Right?
2026-01-12 20:37:29 <tomsmeding> writing an interpreter by definition requires you to interpret code at runtime -- that's what an interpreter does
2026-01-12 20:38:08 fp joins (~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi)
2026-01-12 20:38:13 <tomsmeding> I think there is little more to the statement than this
2026-01-12 20:39:02 <tomsmeding> I think it's simply false that all exceptions to the stated "rule" require dynamic code loading; Alexis is simply stating that there are exceptions, _such as_ those that require dynamic code loading
2026-01-12 20:39:47 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 252 seconds)
2026-01-12 20:39:55 <EvanR> "rare exceptions of dynamic code loading", every computer game out there with a "mod API"
2026-01-12 20:40:29 <EvanR> ever loaded a TTF font? xD
2026-01-12 20:40:43 <tomsmeding> or loaded a pickle
2026-01-12 20:40:45 <EvanR> or a pdf
2026-01-12 20:40:57 <geekosaur> and glibc does it all the time: name services, locale stuff…
2026-01-12 20:42:31 <tomsmeding> (the python pickle format includes the ability to call arbitrary functions https://docs.python.org/3/library/pickle.html#restricting-globals )
2026-01-12 20:42:44 <EvanR> does it run the code as a matter of course during loading?
2026-01-12 20:42:48 <tomsmeding> yes
2026-01-12 20:42:54 <EvanR> can you disable it? xD
2026-01-12 20:42:58 <tomsmeding> which is why using pickle.loads on unsafe input is highly insecure
2026-01-12 20:43:06 <tomsmeding> read the docs :p
2026-01-12 20:43:14 <EvanR> python sounds terrifying
2026-01-12 20:43:43 <tomsmeding> well the docs are rather loud about this
2026-01-12 20:44:10 × myme quits (~myme@2a01:799:d5e:5f00:ff65:28ea:98bb:7f03) (Ping timeout: 246 seconds)
2026-01-12 20:44:59 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-01-12 20:45:16 myme joins (~myme@2a01:799:d5e:5f00:182f:237f:5285:8c47)
2026-01-12 20:46:12 × oxapentane quits (~oxapentan@user/oxapentane) (Remote host closed the connection)
2026-01-12 20:46:30 oxapentane joins (~oxapentan@user/oxapentane)
2026-01-12 20:47:14 <EvanR> good
2026-01-12 20:47:32 <tomsmeding> it's also a staple in beginner hacking challenges
2026-01-12 20:47:36 <EvanR> I'm tired of C getting all the blame for security xD
2026-01-12 20:49:35 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-12 20:51:45 a_peirogon joins (~a_peirogo@user/a-peirogon:62807)
2026-01-12 20:54:52 a_peirogon parts (~a_peirogo@user/a-peirogon:62807) (WeeChat 4.7.1)
2026-01-12 20:55:57 <geekosaur> that's lazy people looking for a quick no-thinking belief
2026-01-12 20:56:10 <geekosaur> (and usually trying to justify their language…)
2026-01-12 21:00:35 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-01-12 21:02:25 gmg joins (~user@user/gehmehgeh)
2026-01-12 21:04:07 × michalz quits (~michalz@185.246.207.201) (Remote host closed the connection)
2026-01-12 21:05:52 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds)
2026-01-12 21:06:01 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-01-12 21:14:25 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-01-12 21:15:40 × newmind quits (~newmind@91-133-90-252.dyn.cablelink.at) (Quit: Client closed)
2026-01-12 21:19:49 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-01-12 21:23:17 × trickard_ quits (~trickard@cpe-48-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-01-12 21:23:30 trickard_ joins (~trickard@cpe-48-98-47-163.wireline.com.au)
2026-01-12 21:25:33 <hc> You mean nonstrict people? :D
2026-01-12 21:29:11 peterbecich joins (~Thunderbi@71.84.33.135)
2026-01-12 21:30:12 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-01-12 21:30:34 jmcantrell_ is now known as jmcantrell
2026-01-12 21:32:05 hakutaku joins (~textual@chen.yukari.eu.org)
2026-01-12 21:34:04 marlino joins (~marlino@96-8-193-71.block0.gvtc.com)
2026-01-12 21:35:29 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-01-12 21:40:35 × comonad quits (~comonad@p200300d02722ae00dce4ce9451b59974.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2026-01-12 21:46:08 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-01-12 21:46:31 × lbseale quits (~quassel@user/ep1ctetus) (Ping timeout: 264 seconds)
2026-01-12 21:46:55 × jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 240 seconds)
2026-01-12 21:47:25 × takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 264 seconds)
2026-01-12 21:51:24 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-01-12 21:53:56 pavonia joins (~user@user/siracusa)
2026-01-12 21:57:56 lbseale joins (~quassel@user/ep1ctetus)
2026-01-12 22:01:41 × housemate quits (~housemate@203.56.146.214) (Quit: https://ineedsomeacidtocalmmedown.space/)
2026-01-12 22:01:54 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-01-12 22:06:46 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-01-12 22:09:55 × trickard_ quits (~trickard@cpe-48-98-47-163.wireline.com.au) (Ping timeout: 240 seconds)
2026-01-12 22:10:13 trickard_ joins (~trickard@cpe-48-98-47-163.wireline.com.au)
2026-01-12 22:10:17 Plane9 joins (~Plane9@2a02:3037:608:ad96:bf2:5d7:81f6:16a1)
2026-01-12 22:17:45 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-01-12 22:18:40 × polykernel quits (~polykerne@user/polykernel) (Ping timeout: 246 seconds)
2026-01-12 22:22:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-12 22:32:34 trickard_ is now known as trickard
2026-01-12 22:33:25 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-01-12 22:35:11 × tromp quits (~textual@2001:1c00:3487:1b00:e166:97e2:1b74:68c4) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-01-12 22:38:15 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-12 22:38:26 tromp joins (~textual@2001:1c00:3487:1b00:e84f:e407:7aee:4080)
2026-01-12 22:39:40 × fp quits (~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) (Ping timeout: 246 seconds)
2026-01-12 22:42:20 Lycurgus joins (~juan@user/Lycurgus)
2026-01-12 22:46:20 × Enrico63 quits (~Enrico63@host-87-7-181-238.retail.telecomitalia.it) (Quit: Client closed)
2026-01-12 22:49:13 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
2026-01-12 22:52:08 × tromp quits (~textual@2001:1c00:3487:1b00:e84f:e407:7aee:4080) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-01-12 22:52:57 vanishingideal joins (~vanishing@user/vanishingideal)
2026-01-12 22:54:05 × Plane9 quits (~Plane9@2a02:3037:608:ad96:bf2:5d7:81f6:16a1) (Quit: Client closed)

All times are in UTC.