@sydney.lambda You can turn it off with print-graph
.
@sydney.lambda In type-of-procedure
, you add the argument type to the environment, and then you determine the body type. In this case you look up the same entry that was just added, so you get the very same type object.
@sergej has joined the channel
Thanks @soegaard2, I wasn’t aware you could turn it off. @rokitna Thanks for the confirmation - I understand it in principle, but at the same time I just feel a bit uncertain about it. I’m thinking of something like: (let ([some-thing (some-call x)])
(do-something some-thing))
normally, I wouldn’t think of the some-thing passed as an operand to do-something to be “the same thing” as the some-thing bound in the let bindings. It’s a bit hard to explain, but I think call-by-value is what I’m going for? That is, even though it’s calling the function with some-thing, that operand will be evaluated to produce a value, and the actual some-thing will not be passed by reference. So in this case, I would have thought arg-type would sort of “re-evaluate” and produce a fresh (int) struct as its value for the operand. I think this is a matter of me not understanding structs fully. anyway, I’ve rambled on (more than) enough! Thanks again everyone.
but if (some-call x)
just returns x
, then some-thing
will be exactly x
and (do-something some-thing)
will get exactly x
, won’t it? (“exactly” meaning “eq?” will return true)