diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-11-16 14:42:32 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-12-15 10:20:41 -0800 |
commit | e4ecdb0a355b417abd5697630d95a9953c6962c3 (patch) | |
tree | 554d54bef06d6c6f8694937678c24acb567b4d40 /html/edit | |
parent | f10584abe988b4a510274b3b1747b87a86dbf856 (diff) | |
download | mu-e4ecdb0a355b417abd5697630d95a9953c6962c3.tar.gz |
experiment: treat pure ingredients as immutable
This isn't complete yet: a) If you copy a variable the copy is not checked for mutations. b) /contained-in might be a hack. It's needed because sometimes I want to pass in two pointers to a data structure, say for deleting something from a list. Both are conceptually the same structure, so it's unnecessary for both to be products as well. There's also technical reasons you *can't* return both, because if you pass in the same variable to both ingredients (say you want to remove the first element of a list), the products now must write to the same variable as well (thanks to our earlier /same-as-ingredient constraint), and what value gets written last is not something we want to be thinking about. c) Even if we stick with /contained-in, it's ambiguous. I'm using it sometimes to say "a belongs to b", sometimes to say "a _will_ belong to b after the recipe returns. Perhaps that distinction doesn't matter. We'll see. d) Should we be encouraged to say ingredients are contained in products? At the moment 'push' works only because of mu's incomplete analysis. Once we fix a) above, it's unclear what the right header should be. e) edit/ isn't close to working yet. (No more commit numbers since I'm now starting a branch, and can't rely on a stable ordering as I rebase. For the same reason I'm not including the changes to .traces/, to minimize merge conflicts.)
Diffstat (limited to 'html/edit')
0 files changed, 0 insertions, 0 deletions