With all computer languages I have the problem that there is hardly any possibility for creating table structures. While C++ and pascal support things like matrix[x][y] and things like that and APL supports even more, I don't think they really solve what I would like. Even a case statement is very clumbsy in other languages, and is lacking in smalltalk.
Because smalltalk is the most flexible language, I would like to suggest that we could implement integrated spreadsheet support in Smalltalk. And use this facility to implement: 1) constant tables = flexibility 2) integer and floating-point calculations = speeeeed 3) block tables = case statement 4) data tables = database support 5) matrices = matrix & math support
It would be handy to create a table in your method and just say:
MyTable atCol:1 atRow:2 put: 5.5. MyTable update. "This recalculates the contents in the table" result:= MyTable atCol: 3 atRow: 2. ^result.
I have implemented my own spreadsheet in Pascal where I defined some positions as variables. MyTable:= { { "This" "is" "a" "Table" } { 0:input 3.14:pi =input*pi:angle =sin(angle):output } { 0 0 0 0 } { "traditionally:" { 0 3.14 =A5*B5 =sin(C5) } }
MyTable at: $input put: 5.5. MyTable update. result:= MyTable at: $output.
Or similar:
mode:= inputMode. pos:= MyTable find: mode inRange: searchRange. result:= MyTable at: (pos addRow:1).
Within the table, one might even connect with other tables. Or even databases... I have added a spreadsheet support to my own commercial application and it gives quite a difference. So I thought, why not have it in squeak too??
For now, it is just an idea, but that is how things start..
Greetings, Dirk