Experimenting with fungll optimization, implement the okmij.org poly-variadic fix-point combinator for mutual recursion

This commit is contained in:
Nathan Braswell
2020-10-17 11:59:54 -04:00
parent 45ecb25bb1
commit d689a59097
8 changed files with 58 additions and 16 deletions

View File

@@ -96,7 +96,7 @@ obj map<T,U> (Object, Serializable) {
fun remove(key: ref T) {
var idx = keys.find(key)
if (idx < 0)
util::error("trying to remove nonexistant key-value!")
return;
keys.remove(idx)
values.remove(idx)
}
@@ -123,5 +123,8 @@ obj map<T,U> (Object, Serializable) {
}
return to_ret
}
fun pop(): util::pair<T,U> {
return util::make_pair(keys.pop(), values.pop())
}
}