freenode/#clasp - IRC Chatlog
Search
18:56:17
Bike
as for multiple values, after my walk i'm thinking it would be good to change how it works to leave it for later, but also i'm kind of sick of rewriting ast-to-bir every week so i'm going to put it off until we have more transforms
18:56:45
Bike
so now i'm thinking about that again instead. thinking i should change environment stuff so that in addition to a type there's also a believe-this-unconditionally marker
18:56:59
Bike
so we can handle user ftypes, but also like CL function ftypes that we don't want to check
18:58:20
Bike
well, my system now is that regular THE becomes an unconditionally believed type, but if types are checked it's preceded by a test, so believing that is fine
19:13:36
Bike
but then it would be convvenient to know what variables are around, so it would be good for pcv to be early
19:13:49
Bike
but if pcv is early that info needs to be maintained, and if an unwind is cleaned up it needs to deal with things
19:27:09
karlosz
pcv should be a bir post pass because its basically impossible to maintain the variables set
19:44:51
karlosz
Bike: dead code issue from yesterday fixed and pushed. you might want to take a look at how i did it. i think the main thing you were missing is the invariant that a block should only be owned by one function uniquely
21:37:26
Bike
the function copier needs to know, in general, which variables are closed over, so that it doesn't copy them
21:38:40
karlosz
whihc is why it can basically be the very lsat thing that ever happens because nothing else should care
21:38:58
karlosz
its basically impossible to delete a variable from an environment transitively, so it has to go last
22:07:46
Bike
like if you have nil in source code it will actually be a bir:constant with constant-value nil
22:08:02
Bike
also i remembered the actual problem: if you copy (lambda (x) (lambda () x)) you need to copy the inner function since the variable is copied