As for assigning array types, it would be as simple as defining the list:
var/list/mob/players
Try putting that in Dream Maker, a line to access the variable, and compiling. It compiles without an "undefined type" error! Also, try declaring a new prototype, derived from /list. It doesn't let you! Apparently, the idea was already conjured, and partially implemented.
Now let's talk about procedure definition.
proc/list/turf/GetSpawnTurf()
Oh, look! It compiles perfectly again! One thing I noticed, is that if you have a code-less procedures defined like this:
proc
list/DeadPeople()
You'll get an "invalid proc definition" error, but never fear! The compiler is young, and a little confused. You can explicitly tell it where the procedure starts and ends be adding a couple braces, as so:
proc
list/DeadPeople(){}
Compiles just right. That only seems to happen if the procedure is on a line after it's "proc" keyword.
When I was new the DM language, I've always type-casted list variables like that. Don't ask why, I just thought that was the way it SHOULD be done, back then. Here are some more examples of type casting:
var/list/list/job/jobMatrix = list(...) // Multi-dimentional!
mob/var/list/job/jobs = list()
job/proc
job/NewEmployee() return new/job
proc
list/mob/GetMobList() {...}
GenericProcName()
global.GetMobList()[1].jobs[1] = global.jobMatrix[2][4].NewEmlpoyee()
// That is scary, but it makes sense.
world.status = "Players: [global.GetMobList().len]"
// There's a simpler example.
var/list/mob/players
I don't think the idea was partially implemented, rather that DM is not correctly giving you the error it should for that situation.
Adding list typing is a fruitless endeavor for reasons already discussed multiple times (the forum search is your friend).
Assigning a return type to procs is only slightly less inane. It sounds like a good idea until you realize there's nothing you can do with the type, for one of the same reasons it's daft to type a list. The : operator would be ambiguous if it was allowable to access a list item's or proc result's vars/procs directly.
Lummox JR