soegaard2
2019-7-17 11:02:21

@sydney.lambda You can turn it off with print-graph.


rokitna
2019-7-17 12:35:36

@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
2019-7-17 13:00:35

@sergej has joined the channel


sydney.lambda
2019-7-18 06:01:28

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.


sergej
2019-7-18 06:48:20

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)