ahkscript / awesome-AutoHotkey

A curated list of awesome AutoHotkey libraries, library distributions, scripts, tools and resources.
2.56k stars 263 forks source link

Include HashTable and Facade? #165

Closed Shambles-Dev closed 5 years ago

Shambles-Dev commented 5 years ago

The ahk-libs maintainer suggested I mention my libraries here: https://github.com/Shambles-Dev/AutoHotkey-HashTable https://github.com/Shambles-Dev/AutoHotkey-Facade

I will leave others to judge their awesomeness, but I find them useful. I use them for Windows system administration. They work with AutoHotkey L v1. They are general purpose enough to be potentially useful in any program. You will not find much that is more functional than Facade (pun intended)!

HashTable should be pretty stable. Its design has not changed for a while. Facade uses HashTable heavily.

Facade is, admittedly, considerably less stable. I believe what is there should not change much, but I cannot promise that. I am trying to find the cleanest design possible. I am currently trying to improve the error handling. I realized what I had planned was not as good as it could be part of the way through its implementation, so I focused on getting it to work with correct input. Now I am going back to try to improve the existing error handling and add what I had left out. It also probably contains defects. I will be trying to find and fix those as I improve the error handling. I hope to eventually write a singly linked list library and a Lisp-like stream library (including file I/O support). They might or might not become a part of Facade, but they will be designed with Facade in mind and built atop it.

I also do not know where they belong in your hierarchy. They should be under “Libraries”, but the subsection is less obvious. I could make the case for “Data Format” (a data structure like a hash table is kind of like a data format, only in memory) or “Math” (a set of functional programming libraries is vaguely related to math via lambda calculus, along with everything else in mathematics and computer science), but both seem ill-fitting. I would personally put them under a new “Data Structures and Algorithms” section. That is the kind of textbook you would find them in.

If they are not acceptable, I understand.

G33kDude commented 5 years ago

We would love to include your fantastic libraries!

I am in favor of introducing a new "Data Structures and Algorithms" section into which we could put HashTable, Facade, and the existing LibCrypt library (currently in Math, it's a collection of hashing and encryption algorithm implementations).

Does anyone else have thoughts on the matter?

Shambles-Dev commented 5 years ago

On that note, I am considering releasing backports of v2's "is" operator as a function (and without the support for testing if a parameter is byref) and Type function (it should be exactly the same except it cannot detect "0" is a string, unlike in v2). I will be happy to release them as stand-alone libraries if there is interest.

I have no idea where they should go, other than somewhere under "Libraries". I can't even use computer science textbooks as a guide here. What I use them for is error handling (reporting if something is the wrong type because in v1 errors are usually silent, which upsets me) and dispatching (send values of one type to this code and another type to other code). "Type Checking" maybe?

I would consider these 'stable', by the way. What they do is pretty simplistic, and they do seem to work correctly.

joedf commented 5 years ago

Nothing to oppose from me. 👍

Shambles-Dev commented 5 years ago

I uploaded the type checking code here: https://github.com/Shambles-Dev/AutoHotkey-Type_Checking