dictionary-ref now returns a pair or #f

This commit is contained in:
Yuichi Nishiwaki 2015-07-18 15:22:33 +09:00
parent d01b72835d
commit 238f5999bc
3 changed files with 6 additions and 6 deletions

View File

@ -17,9 +17,9 @@
(letrec ((setter
(lambda (proc)
(let ((setter (dictionary-ref (attribute proc) '@@setter)))
(if (undefined? setter)
(error "no setter found")
setter))))
(if setter
(cdr setter)
(error "no setter found")))))
(set-setter!
(lambda (proc setter)
(dictionary-set! (attribute proc) '@@setter setter))))

View File

@ -117,7 +117,7 @@ Symbol-to-object hash table.
- **(dictionary-ref dict key)**
Look up dictionary dict for a value associated with key. If dict has a slot for key `key`, the value stored in the slot is returned. Otherwise `#undefined` is returned.
Look up dictionary dict for a value associated with key. If dict has a slot for key `key`, a pair containing the key object and the associated value is returned. Otherwise `#f` is returned.
- **(dictionary-set! dict key obj)**

View File

@ -116,9 +116,9 @@ pic_dict_dictionary_ref(pic_state *pic)
pic_get_args(pic, "dm", &dict, &key);
if (! pic_dict_has(pic, dict, key)) {
return pic_undef_value();
return pic_false_value();
}
return pic_dict_ref(pic, dict, key);
return pic_cons(pic, pic_obj_value(key), pic_dict_ref(pic, dict, key));
}
static pic_value