Updated 2016-10-03 04:45:23 by pooryorick

Everything's a ... is a discussion about radical minimalism in Tcl

See Also  edit

Everything Isa
A nice list of Isa's.

Description  edit

Tcl
everything is a string
Starkit
everything's a metakit
RS
everything's a proc
vfs
everything's a file system
[reality]
everything's a thing

Discussion  edit

CMCc thinks there are a lot of radical minimalists among Tclers, and that's a good thing (although one might ask why there needs to be more than one minimalist, or more than one kind of minimalism :)

RS: First of all, I have neither invented procs, nor am I the only one who writes them. And I'm still discovering in how many situation we don't even have to write a proc, when an interp alias can do it in a lightweight way... For my thoughts on code minimalism ("Tcl'ing is fun. Less Tcl'ing can be more fun"), see KISS. CMcC: it wasn't a criticism, I just remember RS as coming up with the most creative abuses of proc.

Some more Everything's a ...

  • CMCc: everything's an array

I'm considering a mapping from array to directory, such that get/set are read/write files, array names is glob, and so on. This is the dual of vfs's everything's a file system

This would be quite nice for persisting config arrays, and reasonably efficient by combination with Everything's a file system

(AK: The OS [Plan 9] treats practically every resource a process can ask for as a filesystem or a file in such.)

jcw 2003-03-28: Oooh... everything's an array - yes, please! (then we could go beyond Tequila, DKF's namespaces-as-ensembles, yet another object system, and add seasoning to taste...)

(There's a vfs driver for namespaces, both commands and vars/arrays, the command variant is now part of the tclvfs project, see "tclprocvfs.tcl")

In all seriousness, though "everything is an array" has IMO a lot of fascinating implications, if they can handle both traces and persistence. For example, with traces a write trace can be "call", while a read trace access the result value - that in turn is a way to introduce async processing, "futures", Abstract State Machines, ... eh, well, by now I admit that I haven't the faintest idea how much of this can work and be useful.

For a completely different "everything is a..." perspective, see some 2002'ish ramblings on Data Views [1] and Generalized Data Structures [2].

TAC: Compared to Tcl, in Erlang nothing is a string. (e.g. "hello" is internally represented as a list of characters)