Hi,

I'm writing a project and was wondering what other people think about it.

This project is meant to be a compiler feature/wrapper that analyzes your code and chooses the best data structure depending on your source code. It analyzes the functions used on a wildcard data structure and chooses the type of structure that minimizes the time complexity. It nearly supports C language and hopefully some other languages too. The purpose is that you don't have to care which data structure to use ever again :D (hopefully, if it works well, lol).


Maybe some illustrative examples:

int main()
{
ds d; //data structure
while(something) {
insert(d, 5);
}

while(!empty(d)) {
printf("%d\n, max(d));
delete_max(d);
}
}

Here dsinf would infer some kind of a heap (or possibly a rbt with max element cache).

int main()
{
ds d; //data structure
while(something)
insert(d, 5);

while(something)
update(d, 2, 7);
while(something)
delete(d, 1);

printf("25 is in the set", search(d, 25));
}

Here it would be hashtable (it differs from the earlier, because we don't need element ordering).

if anybody wants to hack it, the C api is in dsimp/ds.h and some tests in C/tests/.


I have some ideas how to extend it from trivial cases, the ideas are in github issues.

repo: git clone https://github.com/alistra/data-structure-inferrer.git
hackage: http://hackage.haskell.org/package/data-structure-inferrer-1.0


So just let me know what you think ;]

Also does anybody know a good ~MIT licenced library of data structures written in C (they're needed for the auto-compile option)?