Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Pretty neat that it was implemented in less than 600 lines of C.

One drawback, though, is that you couldn't use it for arbitrary data. The strings seem to be mapped to C strings, so variables can't contain nulls. No way to express a null in a string literal, either.

Edit: antirez (redis creator) also made a tiny tcl interpreter...actually a little smaller than Partcl. Has the same issues with null chars: http://oldblog.antirez.com/post/picol.html



When I made partcl, I also wrote a brief post of why+how I implemented it: http://zserge.com/blog/tcl-interpreter.html I tried to keep data representation separate from the main interpreter code, so if one needs to use binary data or real lists - he may only rewrite a small part of code.


Well you could always do something like base64, which might be a fine work-around in some situations.


I mentioned it mostly because the actual tcl interpreter originally had this issue. When it was fixed, the language became much more useful.

Base64 wouldn't help much dealing with existing binary files, for example. Or network protocols, or unicode, and so forth.


If fixed properly, it would open the door to non-string types - like, you could have a type that's entirely opaque to tcl, just a void * or whatever, accessed only through functions. This might even actually end up being a step up compared to "proper" tcl...

This would push the line count over 600, but I bet it would still come in at less than a nice round 1,000, while making the thing a lot more useful.

(I have a side project that's starting to feel like it might need a scripting language. And I always liked tcl. Must... resist... rabbit holes...)


Probably a rabbit hole, but tcl strings are sort of dual typed.

Normally, they are arrays of unicode, including multibyte.

But tcl offers a keyword "binary" to treat them as arrays of single bytes.

http://wiki.tcl.tk/1181




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: