about summary refs log tree commit diff stats
path: root/030container.cc
Commit message (Collapse)AuthorAgeFilesLines
* 2773 - switch to 'int'Kartik K. Agaram2016-03-131-25/+25
| | | | This should eradicate the issue of 2771.
* 2735 - define recipes using 'def'Kartik K. Agaram2016-03-081-28/+28
| | | | | | | | | | | | I'm dropping all mention of 'recipe' terminology from the Readme. That way I hope to avoid further bike-shedding discussions while I very slowly decide on the right terminology with my students. I could be smarter in my error messages and use 'recipe' when code uses it and 'function' otherwise. But what about other words like ingredient? It would all add complexity that I'm not yet sure is worthwhile. But I do want separate experiences for veteran programmers reading about Mu on github and for people learning programming using Mu.
* 2712Kartik K. Agaram2016-02-261-24/+24
|
* 2709Kartik K. Agaram2016-02-251-4/+0
| | | | | Only Hide_errors when strictly necessary. In other places let test failures directly show the unexpected error.
* 2683Kartik K. Agaram2016-02-211-1/+0
| | | | | | Ok, we don't need that check after all, because the type_ingredient_names.empty() check earlier in the layer prevents it from ever triggering.
* 2681 - drop reagent types from reagent propertiesKartik K. Agaram2016-02-211-63/+38
| | | | | | | | | | | | | | | | | All my attempts at staging this change failed with this humongous commit that took all day and involved debugging three monstrous bugs. Two of the bugs had to do with forgetting to check the type name in the implementation of shape-shifting recipes. Bug #2 in particular would cause core tests in layer 59 to fail -- only when I loaded up edit/! It got me to just hack directly on mu.cc until I figured out the cause (snapshot saved in mu.cc.modified). The problem turned out to be that I accidentally saved a type ingredient in the Type table during specialization. Now I know that that can be very bad. I've checked the traces for any stray type numbers (rather than names). I also found what might be a bug from last November (labeled TODO), but we'll verify after this commit.
* 2678Kartik K. Agaram2016-02-201-1/+1
| | | | | | | Start using type names from the type tree rather than the property tree in most places. Hopefully the only occurrences of 'properties.at(0).second' left are ones where we're managing it. Next we can stop writing to it.
* 2677Kartik K. Agaram2016-02-201-2/+2
| | | | Include type names in the type tree. Though we aren't using them yet.
* 2671 - never use debug_string() in tracesKartik K. Agaram2016-02-191-14/+14
| | | | It's only for transient debugging.
* 2685Kartik K. Agaram2016-02-191-15/+15
| | | | | | | | | | | | | | | | Stack of plans for cleaning up replace_type_ingredients() and a couple of other things, from main problem to subproblems: include type names in the type_tree rather than in the separate properties vector make type_tree and string_tree real cons cells, with separate leaf nodes redo the vocabulary for dumping various objects: do we really need to_string and debug_string? can we have a version with *all* information? can we have to_string not call debug_string? This commit nibbles at the edges of the final task, switching from member method syntax to global function like almost everything else. I'm mostly using methods just for STL in this project.
* 2679 - all tests passing againKartik K. Agaram2016-02-191-4/+9
| | | | | | | | | | Still not done, though: a) There's a few memory leaks to track down, including one in hash from 2668. b) replace_type_ingredients has gotten *even* uglier. I need to rethink it.
* 2670 - improvements to genericsKartik K. Agaram2016-02-181-0/+2
| | | | | | | | | | | Eliminated a few holes, gained more clarity on the shape of others. Maybe I was sleep-deprived, but this was really hard until I wrote a few unit tests directly on replace_type_ingredient. Still one flaw remaining: the type-checker isn't smart enough to handle 'merge' for all the new cases. Tests pass since we don't use those features outside C++ tests yet.
* 2669Kartik K. Agaram2016-02-171-0/+1
|
* 2667 - redo container data structureKartik K. Agaram2016-02-171-46/+28
| | | | I've been gradually Greenspunning reagents. Just go all the way.
* 2666Kartik K. Agaram2016-02-171-1/+1
|
* 2658 - warn when containers contain arraysKartik K. Agaram2016-02-151-0/+1
| | | | | | | The rule is: a container type's size must be fixed. Arrays can violate this rule if the array length isn't included in the type. But we haven't been warning about this, and 'new' has been silently turning array elements to be empty.
* 2657 - type-checking for 'merge' instructionsKartik K. Agaram2016-02-151-2/+178
|
* 2656Kartik K. Agaram2016-02-141-0/+1
|
* 2637 - save type names for container elementsKartik K. Agaram2016-02-071-14/+30
|
* 2635Kartik K. Agaram2016-02-061-0/+4
|
* 2632Kartik K. Agaram2016-02-061-12/+13
|
* 2569Kartik K. Agaram2016-01-181-4/+1
|
* 2555Kartik K. Agaram2016-01-111-4/+4
|
* bugfix: phase orderingKartik K. Agaram2015-12-151-4/+6
|
* 2622Kartik K. Agaram2015-12-131-11/+11
|
* 2618Kartik K. Agaram2015-12-071-2/+2
|
* 2614 - still fixing bugs with missing '['Kartik K. Agaram2015-12-021-1/+1
| | | | | | When skipping past some text (usually whitespace, but also commas and comments) I need to always be aware of whether it's ok to switch to the next line or not.
* 2501Kartik K. Agaram2015-11-281-0/+2
|
* 2494Kartik K. Agaram2015-11-281-1/+1
| | | | | Some more structure to transforms, and flattening of dependencies between them.
* 2475 - allow addresses to be converted to numbersKartik K. Agaram2015-11-271-7/+10
| | | | It's just the other direction we want to avoid.
* 2473 - bad idea to use /raw with multiple intentionsKartik K. Agaram2015-11-221-1/+1
| | | | | /raw is to express absolute addresses /unsafe is to sidestep type-checking in test setup
* 2465 - improve an error messageKartik K. Agaram2015-11-201-4/+4
| | | | Thanks Caleb Couch.
* 2457Kartik K. Agaram2015-11-171-3/+4
|
* 2454Kartik K. Agaram2015-11-171-2/+2
| | | | | | Another gotcha uncovered in the process of sorting out the previous commit: I keep using eof() but forgetting that there are two other states an istream can get into. Just never use eof().
* 2450 - another pesky bugKartik K. Agaram2015-11-151-0/+11
|
* 2406Kartik K. Agaram2015-11-081-6/+2
| | | | | One new issue: the traces for all tests are perturbed by the .mu files we choose to load.
* 2403 - experiment: documenting non-assertionsKartik K. Agaram2015-11-081-1/+1
| | | | | | | Is that like a Maybe type in a type system? No it's more, it captures the wistful longing of several hours spent trying to make an assertion true. Not even by moving my phases relating to the types around could I make this assertion true.
* 2402Kartik K. Agaram2015-11-081-2/+2
|
* 2400 - eliminate last few warningsKartik K. Agaram2015-11-081-2/+2
|
* 2399 - consistent debug_string vocabularyKartik K. Agaram2015-11-081-3/+3
|
* 2383 - new concern: idempotence of transformsKartik K. Agaram2015-11-061-1/+1
| | | | | I'd not paid any attention to it so far, but I need to do so from now on.
* 2382Kartik K. Agaram2015-11-061-9/+44
| | | | Starting to leave commented out prints again out of desperation.
* 2381Kartik K. Agaram2015-11-061-4/+12
|
* 2380 - done loading mu codeKartik K. Agaram2015-11-061-4/+4
| | | | | | | | New assertions still failing during tests. This whole implementation of generic recipes is like an extended spike. I don't have nearly enough tests. Ideally I'd have confidence in generics once layer 59 passed its tests.
* 2379 - further improvements to map operationsKartik K. Agaram2015-11-061-4/+4
| | | | | | | Commands run: $ sed -i 's/\([^. (]*\)\.find(\([^)]*\)) != [^.]*\.end()/contains_key(\1, \2)/g' 0[^0]*cc $ sed -i 's/\([^. (]*\)\.find(\([^)]*\)) == [^.]*\.end()/!contains_key(\1, \2)/g' 0[^0]*cc
* 2378Kartik K. Agaram2015-11-061-3/+3
| | | | | | Now we're starting to run up against the misbehavior introduced by generics: Type tries to insert rows for type ingredients. That is a no-no.
* 2377 - stop using operator[] in mapKartik K. Agaram2015-11-061-55/+55
| | | | | | | | | | | | | | | | I'm still seeing all sorts of failures in turning on layer 11 of edit/, so I'm backing away and nailing down every culprit I run into. First up: stop accidentally inserting empty objects into maps during lookups. Commands run: $ sed -i 's/\(Recipe_ordinal\|Recipe\|Type_ordinal\|Type\|Memory\)\[\([^]]*\)\] = \(.*\);/put(\1, \2, \3);/' 0[1-9]* $ vi 075scenario_console.cc # manually fix up Memory[Memory[CONSOLE]] $ sed -i 's/\(Memory\)\[\([^]]*\)\]/get_or_insert(\1, \2)/' 0[1-9]* $ sed -i 's/\(Recipe_ordinal\|Type_ordinal\)\[\([^]]*\)\]/get(\1, \2)/' 0[1-9]* $ sed -i 's/\(Recipe\|Type\)\[\([^]]*\)\]/get(\1, \2)/' 0[1-9]* Now mu dies pretty quickly because of all the places I try to lookup a missing value.
* 2373 - bad bug: instruction was losing /lookupKartik K. Agaram2015-11-051-2/+2
|
* 2362Kartik K. Agaram2015-11-041-1/+1
| | | | | | Now we try to be smarter about checking for presence in the Type array. Still can't get generic duplex-list to work.
* 2360Kartik K. Agaram2015-11-041-0/+2
| | | | | | | | | More flailing around trying to come up with the right phase ordering. I've tried to narrow down each transform's constraints wrt transforms in previous layers. One issue that keeps biting me is the Type map containing empty records because of stray [] operations. That's gotta be important.