On Mon, 5 Sep 2011, Hans-Christoph Steiner wrote:

Unfortunately terms to describe typing do not have clear boundaries. But which words are used are not important to me, as long as the meaning gets across. Does "dynamic typing" make you happy? Python, Ruby, Perl, Tcl, and to a large extent Pd, all have "dynamic typing".

A lot like to say "dynamic typing", but it's too vague. Thinking about more precise words helps noticing facts about programming languages.

I found that there's a big distinction to be made between 4 kinds of typing, and I think that it's an interesting tool to compare approaches and languages :

1. typed expressions : compile-time checks to enforce correct types. That's much of the reason you have to do many pointer casts in C or Java.

2. typed variables : there may be type-checks at the time of storing into variables or passing parameters.

3. typed values : a piece of data has a tag onto it that tells the type of the data, in case the type of the variable isn't specific enough.

4. typed use : the type is what I ask the piece of data to act like.

A language may have any combination of the four, but typically, C is naturally 1&2, C++ is naturally 1&2&3, though automatic casts may make it feel a bit like it is #4 too. Perl is mostly about 2&3&4, Python/Ruby/Lua/Javascript/Smalltalk are 3, plain Tcl is almost only 4, Tcl with objects is 3&4.

I didn't take that from any textbook, so I can't give a reference. That categorisation is mine. (If anyone knows a similar categorisation, I'd like to know)

So in the sense of Pd, anything that can be intepreted as a number should be. But that's in conflict with having symbols that have things that can be intepreted as a number. So make Pd consistent, either it needs to be illegal to have symbols that can be interpreted as a number,
This could break some existing patches.

Do you have an examples? That would be very helpful. Off the top of my head, it seems that it would only break patches that rely on errors, which is not a very common situation.

Take any method that needs a A_SYMBOL argument, and give it the result of [makefilename] that is an A_FLOAT because it would have been an illegal A_SYMBOL. The thing is, I really needed to give that number as a string for printing and, if there is not the automatic conversions were are talking about (or if the externals don't use it yet), then you won't be able to give it the string "123" or whatever.

Note that even with automatic conversions enabled, there wouldn't be a way to do something like [makefilename %.2f] or [makefilename %.8f] in a reliable way. How would a [text3d] or [netsend] or [string2bytes] know how many digits it should send ? It will never know.

 _______________________________________________________________________
| Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC
_______________________________________________
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to