Thanks for the feedback! Also, if you are interested in r7rs in guile you might be interested in `r7rs-wip` branch of guile
Le dim. 20 janv. 2019 à 14:50, Jéssica Milaré <jessymil...@gmail.com> a écrit : > > > Em dom, 20 de jan de 2019 às 10:58, Amirouche Boubekki < > amirouche.boube...@gmail.com> escreveu: > >> Thanks! >> >> I have done mostly a cosmetic review of your code. Here is the summary: >> > > Your comments are very good, I'll do most of the suggested changes. > > >> - There is two big procedures that I think should be split ` >> get-hash-functions` and `hash-table` to help readability >> - I am not very fond of generic-hash-table macros, I would rather use >> apply / call-with-values, if there is an optimisation to be done it should >> be done in the compiler... no? >> > > These macros were copied from old SRFI-69 code. Regarding to > optimizations, I don't ask myself if something *should be* done by the > compiler, but if it *actually is* done by the compiler. Otherwise, we'll > end in a discussion involving a "sufficiently smart compiler", not a real > compiler. > > Otherwise: >> >> - You follow the GNU guidelines for commit message that is a good thing >> (minor niptick, you should use present tense "Fix" instead of "Fixed", >> "Implement" instead of "Implemented" >> - The code is very readable >> >> I don't know about whether that code requires additions to the manual >> since it's R7RS and SRFI. >> >> I cc'ed Mark Weaver. >> >> Le jeu. 17 janv. 2019 à 22:14, Jéssica Milaré <jessymil...@gmail.com> a >> écrit : >> >>> *Note >>> >>> Em qui, 17 de jan de 2019 às 19:13, Jéssica Milaré < >>> jessymil...@gmail.com> escreveu: >>> >>>> Done. >>>> >>>> Not that there are many commits. The first commit only fixes bug 33827 >>>> of SRFI 69, and SRFI 69 is reimplemented in the third commit, which pretty >>>> much erases the changes of the first commit. >>>> >>>> https://github.com/jessymilare/guile/pull/1 >>>> >>>> Em qua, 16 de jan de 2019 às 22:19, Amirouche Boubekki < >>>> amirouche.boube...@gmail.com> escreveu: >>>> >>>>> I will try to look at the commits. One last niptick, can you push >>>>> guile master branch to you repository, and make a pull request against it >>>>> so that I can directly comment in the pull requests. please. It's easier >>>>> to >>>>> way to see the overall changes in particular. >>>>> >>>>> Le dim. 13 janv. 2019 à 23:52, Jéssica Milaré <jessymil...@gmail.com> >>>>> a écrit : >>>>> >>>>>> Finally finished the libraries. >>>>>> >>>>>> SRFI-125 is implemented. I took the liberty to create a procedure >>>>>> scm_hash_n_items in 'libguile/hashtab.c' that works with both normal and >>>>>> weak hash tables, so the GENERIC-HASH-TABLES module don't need to keep >>>>>> track of the hash table size anymore. >>>>>> >>>>>> `make check` runs everything ok. I believe it's ready for testing. >>>>>> Any feedback is welcome. >>>>>> >>>>>> Regards, >>>>>> Jéssica >>>>>> >>>>>> Em sáb, 12 de jan de 2019 às 18:34, Jéssica Milaré < >>>>>> jessymil...@gmail.com> escreveu: >>>>>> >>>>>>> (It seems I mistakenly responded only to a personal e-mail, sorry, >>>>>>> responded now to everyone in the list with updates). >>>>>>> >>>>>>> So here are the news: >>>>>>> >>>>>>> I've created a module called (ice-9 generic-hash-tables), which is >>>>>>> similar to SRFI-125, and used it to implement SRFI-69, (RNRS >>>>>>> HASHTABLES), >>>>>>> SRFI-126 and SRFI-125. Since SRFI-125 depends on SRFI-128, I've >>>>>>> implemented >>>>>>> it as well. My public repository already has SRFI-128, I'm just >>>>>>> finishing >>>>>>> some tests with SRFI-125 and, once they are done, I'll push it as well. >>>>>>> >>>>>>> The module (ice-9 generic-hash-tables), is quite usable and all >>>>>>> exported procedures are documented. I've created tests for it and also >>>>>>> ported standard tests from SRFI-126. >>>>>>> >>>>>>> Now, I see that 'libguile/hashtab.h' code keeps track of the number >>>>>>> of elements in hash tables, but the field is not visible from Scheme. >>>>>>> Can >>>>>>> that be changed? Then generic hash tables wouldn't need to also keep >>>>>>> track >>>>>>> of the number of elements (like SRFI-69 currently does) and that would >>>>>>> simplify its code. >>>>>>> >>>>>>> Besides, what about creating new versions HASHX-* procedures that >>>>>>> accept an equivalence procedure instead of an assoc procedure? Perhaps >>>>>>> prefixed by 'NEW-' or post-fixed by a '*'. >>>>>>> >>>>>>> I've also found inconsistencies between SRFI-125 and it's reference >>>>>>> implementation and standard tests. I've implemented according to the >>>>>>> specification - so, for instance, HASH-TABLE=? checks if the equivalence >>>>>>> function of both hash tables are the same and HASH-TABLE returns an >>>>>>> immutable hash table. >>>>>>> >>>>>>> Code is public and suggestions are always welcome :) >>>>>>> https://github.com/jessymilare/guile >>>>>>> >>>>>>> Regargs, >>>>>>> Jéssica >>>>>>> >>>>>>> Em dom, 30 de dez de 2018 às 15:50, Amirouche Boubekki < >>>>>>> amirou...@hypermove.net> escreveu: >>>>>>> >>>>>>>> Le 2018-12-28 17:11, Jéssica Milaré a écrit : >>>>>>>> > Hello, >>>>>>>> > >>>>>>>> > As I said in a previous e-mail, currently SRFI-69 is broken for >>>>>>>> weak >>>>>>>> > hash tables - and I've sent a patch to fix it. However, I think >>>>>>>> there >>>>>>>> > are many other problems with current implementation of hash >>>>>>>> tables. >>>>>>>> > There are guile standard hash tables, SRFI-69 hash tables (which >>>>>>>> is >>>>>>>> > implemented on top of standard hash tables) and also R6RS hash >>>>>>>> tables >>>>>>>> > (which is implemented on top or SRFI-69 and completely lacks >>>>>>>> support >>>>>>>> > for weak keys and/or values). >>>>>>>> > >>>>>>>> > I think that should be fixed and guile should have only two kinds >>>>>>>> of >>>>>>>> > hash tables: the standard guile hash table and another extended >>>>>>>> hash >>>>>>>> > table type that will be used directly by R6RS, SRFI-125 and >>>>>>>> SRFI-69. >>>>>>>> > In my opinion, it should be based on SRFI-125, which is part of >>>>>>>> R7RS >>>>>>>> > Red Edition, but also supports some other procedures to make it >>>>>>>> > compatible with R6RS and SRFI-69, supporting weakness and >>>>>>>> immutable >>>>>>>> > hash tables. >>>>>>>> > >>>>>>>> > I'm already implementing the SRFI-125 based hash tables library >>>>>>>> for >>>>>>>> > myself, so, if that is accepted, I can also make a patch for >>>>>>>> guile. >>>>>>>> > >>>>>>>> >>>>>>>> Yes please make a patch and attach it to the bug report. >>>>>>>> >>>>>>>> Don't forget to send an announcement when you SRFI-125 >>>>>>>> implementation >>>>>>>> is ready for testing. Is it already available anywhere? >>>>>>>> >>>>>>>> TIA >>>>>>>> >>>>>>>