I would say in lieu of 'arrays', the repeating fields and variables are close ( but no cigar ). The LIST functions also help with the lack of arrays and structures. It mostly depends on what you do with the stored values whether repeating values are best or LIST values or related values.
Don't dismiss any of FileMaker's functionality. It can be used for what it does, you just have to decide what works for your solution.
aarrgghhh You did my reply :-)
I was going to launch into an array would be nice rant. Repeating variables come close and are very very fast. You can even use them as a key value pair if use code() and char() to encode and decode the key into the rep.
Repeating fields for real data? No not ever.
You can even use them as a key value pair if use code() and char() to encode and decode the key into the rep.
aka "Named Buckets" ... I have a slide on that in my Devcon preso.
Set you up nicely for that plug there :-)
I often use repeating fields for icons, which seems to be pretty common.
I also use repeats for fields I call "filtering fields." For example, instead of
with two repeats. On a report layout home page (i.e. a bunch of buttons that produce a report), I'll have the label-field combination:
Date From: dateRange_g
Date To: dateRange_g
Certainly not revolutionary, but it does minimize by filter fields in a table.
We do this extensively in our main solution, however in the rewrite currently underway we're moving all the icons into styled objects.
After lots of investigation, rolled my own scheduler, bascially a calendar with built in funtionality for multiple daily items. Has a day and week view. Based all the calendar mainpulations using FileMaker built in Date functions and repeating fields for the daily views/events. Why didn't I simply use one of the many fine calendars out there that you can "plugin" to your app? 1) I know MY code intimately, 2) my codebase for the module is MUCH smaller and VERY fast. 3) I can modify it to my hearts content.....and repeating fields made it very easy. Didn't go the 42 little daily portal route either. Just write a good stock of re-useable low level functions that manipulate repeating fields. Do as much calculation in memory "array" vars as possible and then write it out to the repeating fields. Add script triggers and SQL and away you go.
More built in routines to "array-ize" repeating fields would be welcome.
We need a real up to 3-dimensional ( at least) array field type.
.....To save e.g, a five year calendar (m,d,y) in 3-d array.
The we need an array caclulation result type - so you can store array data inside an array cell.
The the ability to "implode" , "explode" (to borrow PHP pharsing) and search for specifc values within an array.
The abaliity move array data to and from an FM table simply.
Arrays are more powerful that subscipted variables -- beacuse they reserve slots for empty cells and thus enable adding two arrays together, vector products, and matrix alegbra, linear programming etc,
Also loading the needed data from a found set into array in memory or in single field (that could be done server side) at one shot would make doing math on it (expecially if numeric array elements were stored as binary) very fast - e.g. for satisical calculations .
....Collapsing an array along one or more dimensions using aggragate functions and then writing the result back into a table ....
......Maintaining a transposed version of all the indexed fields in retatively static table .... for very rapid searching for specific records by field value....
.....Array to/from XML functions ....to/from JSON ...
E.g. Paypal returns transaction outcomes as JSON -- It would be so nice it be able to decode that easily.
May be there is a plugin out there that does all this?
Once you can put an array in an array you can have as many dimensions as you require. Assuming you can carry on nesting arrays within other arrays (I am unaware of any language that once you can next an array with an array you can not continue this until you run out of memory.....)
Transforms, such as to and from arrays could almost certainly handled with custom funcations as most people do with XML and JSON pasing currently.
A recordset to array and vice versa would be very awesome (again once you can move a foundset into an array its the same function to move a find into an array).
A lot of these functions could be gained by improving the Set Variable  function or by creating a new Define Variable  function. The Define Variable would be a better route. Given FileMaker already has repeating variables it would seem sensible to extend this into array like functionality rather than creating a distinct construct.
Good post -- Good points