World: r3wp
[World] For discussion of World language
older newer | first last |
Geomol 13-Dec-2011 [672x4] | That's cool, Brian! :) A note about KWATZ!, you suggest it to be text!, but it's not quite. It sure can be e.g. UTF-8 data: (Setting my Terminal program to character encoding Unicode (UTF-8) and trying to load 3 ASCII letters, 3 danish letters and 3 greek letters) w> load "abc ?????? ??????" == [abc #{C3A6C3B8C3A5} #{CEB1CEB2CEB3}] (Notice World isn't prepared to unicode yet, but can load it, as it can just be seen as bytes.) But beside text, KWATZ! can also handle all other data, like escape codes or any binary format maybe combined with more understandable data, you wanna load. |
On the word KWATZ!, someone found a couple of good links: http://seedsforsanctuary.blogspot.com/2008/06/kwatz.html http://www.livingworkshop.net/kwatz.html I first heard the word in a dialogue between an AI and a poet in a very good book by Dan Simmons. [KWATZ!] | |
About writing docs, I've started the dictionary. See: https://github.com/Geomol/World/wiki | |
Also "Difference from REBOL" has almost nothing yet. I mostly code and not writing docs at this point. | |
sqlab 13-Dec-2011 [676] | re: automatic closing of brackets |
Geomol 13-Dec-2011 [677] | sqlab, I added it to issues at https://github.com/Geomol/World/issues so it isn't forgotten. |
sqlab 13-Dec-2011 [678x2] | maybe you can add an easy switch just by one key code to switch between a line mode |
ahh, yes, thanks | |
Geomol 13-Dec-2011 [680x2] | Maybe a control char? |
Like ctrl-a | |
sqlab 13-Dec-2011 [682] | that's good |
Geomol 13-Dec-2011 [683] | What if World is used through a telnet on a server? Ctrl-A is SOH (Start of Heading). Could that give problems? |
sqlab 13-Dec-2011 [684] | sorry, I had to switch to an other pc, where Altme is already well configured. Good was meant for a control char. Why not make the key, that changes the mode configurable? |
Geomol 13-Dec-2011 [685] | Yes, an idea. |
sqlab 13-Dec-2011 [686] | another issue the current world_win exits after errors |
Geomol 13-Dec-2011 [687] | Did you get cortex.w too? |
sqlab 13-Dec-2011 [688] | seems to be my fault.( |
btiffin 13-Dec-2011 [689x3] | Geomol; by text! I was referring to the old junk! argument. It's not really junk!, it's human text, encoded as humans see fit, gibberish or deep meaning symbolic. Naming things is hard. ;) KWATZ! is ok...but I don't get the 'ahhh, that's optimal in meaning and depth' from it - and I lean Buddhist and did see the Zen references. But kwatz is still sinking in, if it's going to (and perhaps that is the best kind of deep meaning). |
And if you don't mind, I may start poking around in your wiki as btiffin on GitHub. Feel free to tear any writings apart. I'll admit to having some deeply ingrained misunderstandings about REBOL, so those will likely slip right on over to World. (I've got notes from Ladislav, Gabriele and a few others that pointed out these misunderstandings (and when documenting, misunderstandings are simply untruths and need to be treated that way)). In particular, I still don't see clearly the 'value - premake - type - make (and) word' semantics of REBOL (at least in terms of trying to explain it) I'm hoping your World engine code is let out so I get a chance to view my problem from a different angle and hopefully 'see the light'. I'll add that if you want to send any snippets for markup in LaTeX, I'll sign up for grunt work too. | |
Ok, dug in a little. But still reading back matter... Regarding cortex.w - is that in the far-plan? Mezzanines ship with the binary instead of in? Should it be documented that way? | |
Geomol 14-Dec-2011 [692x3] | It's not really junk!, it's human text, encoded as humans see fit, gibberish or deep meaning symbolic. Funny, when I first implemented KWATZ!, I called it gibberish!, but I found KWATZ! better suited and more interesting. And it kinda give you the same feeling, as when you see a computer go down with a "Guru Meditation". :) And if you don't mind, I may start poking around in your wiki as btiffin on GitHub. Feel free to tear any writings apart. The idea with the wiki is, that it's for everybody to edit, so it's not really "mine". And as I have very little time for documentation right now, I will only contribute a little. It may be needed to step in at some point and clear things up, make different pages consistent with each other etc., and that may be me, who does that, but it could be somebody else too. For the dictionary, it may be an idea to write a script, which does most of the documentation (I think, there's an old REBOL script for that lying around somewhere, which may be suited with some modification). system/words may be needed to do that properly, and that's not in World yet. I produce LaTeX output with my NicomDoc format, so I'm covered there with the documentation, I'll do (a proper manual). Regarding cortex.w - is that in the far-plan? Yes, the binary will be as basic as possible. I even consider removing definitions of natives from the binary, as it's possible to define them in cortex.w. Same could be done with datatypes with a little change to World. Then the binary could only define MAKE and DATATYPE! (and probably also SYSTEM), and the rest could be build from that. It's a good idea to split the doc up in a native section and a mezzanine section. And then there's rebol.w, which will make it possible to run even more REBOL scripts. There could be a dictionary for that too. |
Btw. in World, natives are being called functions too (it's easier for the user to understand, I think). You can distinguish them with PICK, as the second item is an integer. Examples: w> type? pick :add 2 == integer! ; so ADD is a native function w> type? pick :loop 2 == block! ; so LOOP is a mezzanine function | |
If LOOP becomes a native, we can just move it in the dictionary. I try to create as few natives as possible to keep World simple, but my need for good performance too might lead to a few mezzanines becoming natives. | |
btiffin 14-Dec-2011 [695] | World is awesome John, I'm in. |
Richard 14-Dec-2011 [696] | + |
BrianH 14-Dec-2011 [697] | Don't use the old R2-style reflectors, like that pick 2 in your example above. Any support at all for that kind of reflection makes it harder to secure code. Use the R3-style reflectors. |
Gregg 14-Dec-2011 [698] | +1 Brian, though we can write mezz wrappers using the PICK interface. Is there a reason they need to be native? |
BrianH 14-Dec-2011 [699] | The important thing is to *not* use PICK for this, to use a different function instead. If you use PICK, it will make it more difficult for PICK to be useful in secure code that should have limited or no access to the reflectors. It slows down PICK too. That is why R3 uses REFLECT instead. |
Geomol 14-Dec-2011 [700] | I'm pretty sure, it doesn't slow down PICK, but I need to make test to be absolutely sure. |
BrianH 14-Dec-2011 [701x2] | R3 uses mezz wrappers around REFLECT, so mezz wrappers aren't the problem. The problem is having it be possible to use PICK for reflection. Consider what would be invloved in turning off reflection but keeping PICK working for non-reflection uses. |
Or we could consider a more practical situation directly related to World: If you can compile blocks, it would make sense to use the reflection facilities to get access to metadata about the compiled blocks (especially since that would be something that you might want to secure, or since functions would need similar reflectors), but PICK already has a defined meaning for blocks. | |
Geomol 15-Dec-2011 [703x8] | New release at https://github.com/Geomol/World |
- Added datatype, struct! - Ctrl-A at the prompt toggle auto-brackets - Ctrl-D at the prompt quits World - Fixed networking like: open tcp://8080 | |
This is first release with struct!, so not all features are there, and it needs further testing. | |
Struct can be made in different ways: make struct! [[float f] none] make struct! [[f float] [1.0]] ; var name before type And there is a STRUCT helper func: struct [float f] none | |
I'll write something about it in cortex_alpha.pdf | |
Example of using struct! in routine definition: my-routine: make routine! [ library "routine" [ [struct!] pointer ] ] | |
A real example under OS X: timeval: make struct! [[ slong sec sint32 usec ] none] timezone: make struct! [[ sint minuteswest sint dsttime ] none] gettimeofday: make routine! [ [typecheck] libc "gettimeofday" [ tp [struct!] pointer tzp [struct!] pointer ] sint ] w> gettimeofday timeval timezone == 0 w> timeval/sec == 1323951188 w> timeval/usec == 314011 w> timezone/minuteswest == -60 w> timezone/dsttime == 0 | |
In the above example, libc is defined as: libc: load/library %/usr/lib/libc.dylib | |
GiuseppeC 15-Dec-2011 [711] | Hi, I am interested into building an maintaining documentation for those programming languages based on REBOL. It would be nice to have a DOCBASE for them. What I search is: - Someone ABLE to SETUP the Linux and the Wiki Software - Someone which would share with me the cost of hosting. Do you like the idea ? Write me at [giuseppe-:-chillemi-:-eu] |
Geomol 15-Dec-2011 [712x2] | There seem to be a problem with routines returning a handle. A library like MagickWand (part of ImageMagick) works this way. I'm not able to test it with MagickWand, as I'm not able to load that library for different reasons, and I don't wanna use too much time on it. So I'm after another library, that has a routine, which returns a handle, so I can test. A library easily to get for OS X, Linux and Windows would be nice. Any suggestions? |
I was able to load MagickWand under Linux, and it seems to work with uint32 datatypes to hold the handle (a C pointer). But it doens't work so well when using the handle! datatype for that. It would be nice, if it worked, I guess. It's probably some type casting problem. | |
Maxim 15-Dec-2011 [714] | actually, any library which returns a string could use a handle! as a return value instead. the handle could be used to store the reference to the string as-is and give it to another routine which requires a string on input. |
Geomol 16-Dec-2011 [715] | Yes, I'll check that out. |
Geomol 18-Dec-2011 [716x2] | New release at https://github.com/Geomol/World |
- Added native function: TRY - Added set-path! notation to set values in structs (POKE) - Added support for: to string! handle - Added context: system/words - Added helper function: ROUTINE - Added mold support for routines (SOURCE) - Added debugging function: ?? - Bugfixes | |
PeterWood 18-Dec-2011 [718] | Fast work John! |
Geomol 18-Dec-2011 [719] | Yeah, I'm in a productive period. |
BrianH 18-Dec-2011 [720] | Does TRY have an /except option? |
Ladislav 18-Dec-2011 [721] | Geomol, what would happen if you evaluate something like try [return 1] |
older newer | first last |