Comments on: List of R3 datatypes and their definitions

Carl Sassenrath, CTO
REBOL Technologies
2-Apr-2007 1:17 GMT

Article #0076
Main page || Index || Prior Article [0075] || Next Article [0077] || 16 Comments || Send feedback

Here is a list of current REBOL 3.0 datatypes and their definitions.

This list was generated by REBOL itself.

How? In REBOL 3, datatype values include a "spec" that is useful for functions like help and REBOL documentation generating scripts. The spec object is returned by calling the new spec-of function on the datatype. (I should note that the datatype spec objects are created dynamically, so they do not waste memory during normal operation.)

So now, when you type:

help datatype!

you get:

action!      datatype-relative native function (standardized polymorphic function) 
binary!      string series of bytes 
bitset!      set of bit flags 
block!       series of values 
char!        8bit and 16bit character 
closure!     function with persistent local values (indefinite extent) 
datatype!    datatype value 
date!        day, month, year, time of day, and timezone 
decimal!     64bit floating point number (IEEE standard) 
dictionary!  hashed name-value pairs 
email!       email address 
end!         internal marker for end of block 
error!       error value 
event!       user interface event (efficiently sized) 
file!        file name or path 
frame!       internal context frame 
function!    interpreted function (user-defined or mezzanine) 
get-path!    the value of a path 
get-word!    the value of a word (variable) 
gob!         graphical object 
handle!      arbitrary internal object or value 
image!       RGB image with alpha channel 
integer!     64 bit integer 
issue!       identifying string or script marker 
library!     external library reference 
lit-path!    literal path value 
lit-word!    literal word value 
logic!       boolean true or false 
module!      loadable context of code and data 
money!       arbitrary precision decimal numbers with optional denomination 
native!      direct CPU evaluated function 
none!        no value represented 
object!      context of names with values 
op!          infix operator (special evaluation exception) 
pair!        two dimensional point or size 
paren!       automatically evaluating block 
path!        refinement path for functions, objects, files, etc. 
percent!     special form of decimals (used mainly for layout) 
port!        external series, an I/O channel 
rebcode!     virtual machine function 
refinement!  variation of meaning or location 
routine!     external library function 
set-path!    definition of a path's value 
set-word!    definition of a word's value 
string!      string series of characters 
struct!      native structure definition 
tag!         markup string (HTML or XML) 
task!        evaluation environment 
time!        time of day or duration 
tuple!       sequence of small integers (used for colors, versions, IP addresses) 
typeset!     set of datatypes 
unicode!     string of unicoded characters 
unset!       no value returned or set 
url!         uniform resource locater or identifier 
utype!       user defined datatype 
vector!      multidimensional directly mapped arrays (of same datatype) 
word!        word (symbol or variable)

That list is a lot more useful than what you get in REBOL 2!


  1. This is not the final list of datatypes.
  2. Not the final comment text for datatypes. Feel free to suggest improvements.
  3. The pseudo-datatypes are no longer listed. That's because they are no longer datatypes. They are defined now as typesets -- collections of datatypes.



Peter Wood
3-Apr-2007 2:21:10
This is another good improvement over Rebol 2.

Are the datatype names cast in stone? I ask because "gob" has a number of meanings in everyday English. One, from the Oxford Dictionary, being "a clot of slimy matter"

Peter Wood
3-Apr-2007 2:23:14
Is arbitrary precision decimal numbers the same as binary-coded decimal numbers?
Gregg Irwin
3-Apr-2007 3:08:12
I was thinking the same thing about gob and wondering the same about BCD. :-) But, WOW! It's going to be like a whole new REBOL.
3-Apr-2007 5:32:34
closure! frame! percent! unicode! make my day, and utype! Gabrieles :)
3-Apr-2007 7:07:54
where is sound! ? ;-)
3-Apr-2007 7:44:58
Thanks for these recent blog updates. It's great to see all the work on R3 coming together.
John Niclasen
3-Apr-2007 8:56:35
64-bit, graphical objects, modules, rebcode, tasks, unicode, user defined datatypes and vectors!

This looks promising. REBOL's gettin' mature! :-)

3-Apr-2007 9:43:23
object!      context of names with values

Were you not getting rid of CONTEXT?

Brian Tiffin
3-Apr-2007 11:55:36

Is the R3 interpreter still going to have "syntax" errors? It would be handy to have "$12$23" parsed as junk! or unknown! or somesuch data garbage! type.

Thanks for listening.

Brian Tiffin
3-Apr-2007 12:36:42

If gob! is what I think it is, being more than an image! but perhaps less than a face, but still a reactive type, how about tactile!

Giddy (and avoiding the tasks at hand).

Carl Sassenrath
3-Apr-2007 12:44:29
Peter: on gob - they are low level. I like the name. Short and to-the-point - clots of slimy matter.

On BCD... similar result, but I believe it has a higher bit density. Ladislav is the expert.

Rebolek: about sound: it should not require its own datatype. Vectors should do, along with ports. But, that is not final.

Henrik: I moved away from the word context... due to "theory" concerns. Precisely, a context is not just a frame, but a collection of frames. This is a blog for another day, and by no means final.

Brian: we can make that possible as an option. We need to define the point at which normal lexical scan resumes.

Brian Tiffin
3-Apr-2007 13:17:21

Just so ya know what I do to work around things today. I code an error handler that pulls out errorobject/arg2, adds quotes and REPLACEs it in the stream. This allows clients to add there own entries to data blocks that I can highlight as erroneous without the script breaking on load (when I learn to write scripts that don't break).

Thanks for listening.

Maxim Olivier-Adlhoch
3-Apr-2007 17:19:18
about gobs... hehe I have my own graphic element engine and they are called glob. seems REBOLers think alike.
Brian Tiffin
13-Apr-2007 22:16:40
SNMP related (and perhaps Relaxed evaluation)

How do you envision handling MIBs.

Expanded tuple!, utype!, vector!? tuple pairs?

It is going to be hard not to want to support MIBs as tuples, but it means supporting more than 10 sections and they can't be limited to small. What kind of chaos does this throw into the lexical scanner?

Just askin'

Gregg Irwin
2-May-2007 11:37:02
Comment text suggestions:
binary!      series of bytes 
bitset!      set of bits
char!        8bit or 16bit character 
date!        calendar date, incl. time and timezone 
end!         internal end of block marker
event!       user interface event
file!        file name or path 
function!    user-defined (mezzanine) function
string!      series of characters 
unicode!     series of unicode characters 
24-Apr-2008 21:09:14
To attract m or mumps programmers or to help rebol programmers break into the medical archive/records industry, should we have a type call mump! ?

Post a Comment:

You can post a comment here. Keep it on-topic.


Blog id:



 Note: HTML tags allowed for: b i u li ol ul font span div a p br pre tt blockquote

This is a technical blog related to the above topic. We reserve the right to remove comments that are off-topic, irrelevant links, advertisements, spams, personal attacks, politics, religion, etc.

Updated 26-Mar-2017 - Edit - Copyright REBOL Technologies -