On Thu, Jun 11, 2015 at 2:40 AM, Carl Shapiro <carl.shapiro@gmail.com> wrote:
On Wed, Jun 10, 2015 at 11:09 PM, Faré <fahree@gmail.com> wrote:
Lazy getenv, putenv — and if you want to get all of them, or to pass all of them, use an equal hash-table with strings as key, not an alist with keywords as keys.
Thanks for the clarification.
Is your issue with the search time? The libc getenv and putenv uses a linear search with a linear time compare of strings. It is unlikely to be faster than an a-list search.
My issue is that ext:*environment-list* is an abstraction inversion. Instead of providing a higher-level view on an existing API, it reinvents a new low-level data structure that doesn't provide any performance advantage (indeed, only slowdown) yet introduces a new semantic gap (albeit small) between what was and what is, and only gets in the way of a further API improvement. But if you declare it the official way to access the environment in cmucl, I'll revert to using it.
I agree that converting strings to keywords is problematic when dealing with unconventionally cased environment variable names. The original strings are kept around if you need them.
At this point, it's bikeshedding. —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Microphones, liberating singers from having to be loud to be heard, gave back to each language a music that matches its own prosody.