REBOL 3 Docs Guide Concepts Functions Datatypes Errors
  TOC < Back Next >   Updated: 19-Oct-2009 Edit History  

REBOL 3 Guide: Basics: Getting help and advice

Here are some things you can do to get help.

Contents

In general

If you need help:

Online help

Both beginners and experts find the online help useful.

Help on help

Type help or ? at the console prompt (>>) to view a summary of help:

>> help
To use HELP, supply a word or value as an argument:

    help insert

Also, the ? is a shortcut for help:

    ? insert
    ? system
    ? system/options

To search all internal help strings and values:

    help "insert"
    help to-   ; (a partial word)

To see detailed online web docs for a function:

    help/doc forall

For all on-line web documentation, just type:

    docs

To see words with values of a specific datatype:

    help native!
    help function!
    help datatype!

Other debug functions:

    ? self - show words and values (in context)
    ?? - display a variable and its value
    probe - print a value (molded)
    source func - show source code of func
    trace - trace evaluation steps
    what - show a list of known functions
    why? - explain more about last error (via web) 

Other information:

    chat - open DevBase developer forum/BBS
    docs - open DocBase document wiki website
    bugs - open CureCore bug database website
    demo - run demo launcher (from rebol.com)
    about - see general product info
    upgrade - check for newer versions
    changes - show changes for recent version
    install - install (when applicable)
    license - show user license
    usage - view program options

Help about a function

If you provide a function word as an argument, help prints all of the information that was provided about the function. For instance, if you type:

>> help insert

you will see:

USAGE:
    INSERT series value /part range /only /dup count

DESCRIPTION:
     Inserts into a series and returns the series after the insert. (Modifies)
     INSERT is an action value.

ARGUMENTS:
     series -- Series at point to insert (series! port! map! gob! object! bitset! port!)
     value -- The value to insert (any-type!)

REFINEMENTS:
     /part -- Limits to a given length or position.
         length (number! series! pair!)
     /only -- Only inserts a block as a single value (not the contents of the block)
     /dup -- Duplicates the insert a specified number of times.
         count (number! pair!)

Help search

The help function also finds words that contain a specified string. For instance, to find all of the words that include the string path!, type:

>> ? "path"

and the result will be:

Found these related words:
    ??              function! Debug print a word, path, or block of such, f...
    any-path!       typeset!  [path! set-path! get-path! lit-path!]
    any-path?       function! Return TRUE if value is any type of path.
    assert          native!   Assert that condition is true, else throw an ...
    cd              function! Change directory (shell shortcut function).
    change-dir      native!   Changes the current directory path.
    clean-path      function! Returns new directory path with //, . and .. ...
    dirize          function! Returns a copy of the path turned into a dire...
    file!           datatype! file name or path
    get             native!   Gets the value of a word, path, or values of ...
    get-path!       datatype! the value of a path
    get-path?       action!   Returns TRUE if it is this type.
    import          function! Imports a module; locate, load, make, and set...
    list-dir        function! Print contents of a directory (ls).
    lit-path!       datatype! literal path value
    lit-path?       action!   Returns TRUE if it is this type.
    ls              function! Print contents of a directory (ls).
    make-dir        function! Creates the specified directory. No error if ...
    mkdir           function! Creates the specified directory. No error if ...
    more            function! Print file (shell shortcut function).
    path!           datatype! refinements to functions, objects, files
    path?           action!   Returns TRUE if it is this type.
    pwd             native!   Returns the current directory path.
    reduce          native!   Evaluates expressions and returns multiple re...
    request-file    native!   Asks user to select a file and returns full f...
    set             native!   Sets a word, path, block of words, or object ...
    set-path!       datatype! definition of a path's value
    set-path?       action!   Returns TRUE if it is this type.
    source          function! Prints the source code for a word.
    split-path      function! Splits and returns directory path and file as...
    suffix?         function! Return the file suffix of a filename or url. ...
    to-get-path     function! Converts to get-path! value.
    to-lit-path     function! Converts to lit-path! value.
    to-local-file   native!   Converts a REBOL file path to the local syste...
    to-path         function! Converts to path! value.
    to-rebol-file   native!   Converts a local system file path to a REBOL ...
    to-set-path     function! Converts to set-path! value.
    undirize        function! Returns a copy of the path with any trailing ...
    what-dir        native!   Returns the current directory path.
    why?            function! Explain the last error in more detail.

You can also search for all globally defined words that are of a given datatype. For example, to list all words that are function! datatypes, type:

>> ? function!

and the result would be:

Found these related words:
    ?               function! Prints information about words and values.
    ??              function! Debug print a word, path, or block of such, f...
    about           function! Information about REBOL
    alter           function! If a value is not found in a series, append i...
    any-block?      function! Return TRUE if value is any type of block.
    any-function?   function! Return TRUE if value is any type of function.
    any-object?     function! Return TRUE if value is any type of object.
    any-path?       function! Return TRUE if value is any type of path.
    any-string?     function! Return TRUE if value is any type of string.
    any-word?       function! Return TRUE if value is any type of word.
    array           function! Makes and initializes a series of a given siz...
    as-pair         function! Combine X and Y values into a pair.
    ask             function! Ask the user for input.
...

To obtain a list of all REBOL datatypes, type:

>> ? datatype!

Found these related words:
    action!         datatype! datatype native function (standard polymorphic)
    binary!         datatype! string series of bytes
    bitset!         datatype! set of bit flags
    block!          datatype! series of values
    char!           datatype! 8bit and 16bit character
...

Help on objects

If you use help on an object, it will list a summary of the object's fields.

>> ? system
SYSTEM is an object of value:
    product         word!     core
    version         tuple!    2.100.90.3.1
    build           date!     14-Oct-2009/22:40:04
    license         string!   {Alpha prototype version. For testing only. U...
    catalog         object!   [datatypes actions natives errors reflectors ...
    contexts        object!   [root system exports user]
    state           object!   [note last-error]
    intrinsic       object!   [do make-module make-port parse-url begin]
    modules         block!    length: 3
    codecs          object!   [bmp gif png jpeg]
    dialects        object!   [secure draw effect text rebcode]
    schemes         object!   [system console file dir event dns tcp clipbo...
    ports           object!   [wait-list input output echo system]
    locale          object!   [language language* locale locale* months day...
    options         object!   [boot home path flags script args do-arg impo...
    script          object!   [title header parent path args]
    standard        object!   [error script header scheme port port-spec-he...
    view            object!   [screen-gob handler event-port metrics event-...

Help on errors

There is a special mechanism for getting help on errors.

When you get an error message at the console, you can type why? to see info about that specific error.

For example:

>> test
** Script error: test has no value

>> why?
Opening web browser...

and, this page, no-value, would be displayed.

See why? for more about this function.

Community chat

The REBOL community is also a good way to learn more and get some answers to questions. It's easy to access directly from R3 with the chat function.

Chat has two modes: command line interface and graphical graphical user interface. Both are useful. (For example, if your SSH'd onto a server, you'll need the command line mode.)

Here's an example (showing the command line mode):

>> chat
Fetching chat...
Script: "RebDev Command Line Interface" Version: 0.4.19 Date: 20-Aug-2009/0:00
--- Note: login initiated
--- Note: fetching user list
--- Note: checking for new messages
--- Note: there are new messages
5786 message records

Alerts:
   141 ! Enter 140 for chat about chat.               140 Carl     280d

Top headings:
     2 H Server admin                                   0 admin    5:15h
     4 H User messages                                  0 admin    40d
     5 H General                                        0 Kaj      3:31h
    14 H R3                                             0 Steeve   3:49h
    15 H R2                                             0 maxim    61d
    16 H Tools                                          0 DideC    46d
    17 H Websites                                       0 Henrik   32d
>   18 H Community                                      0 maxim    39d

Hint: n = new messages, who = users online, ? = help, ?? = list commands.
...

Use ? to get help, and N to view the newest messages.

Listing built-in functions

To see a list of all built-in functions, use the what function:

This list may be large. If you are unable to scroll in the console to your desired function, use the echo command as a means to capture that list into a file which you can later look through.

>> what
...
about               Information about REBOL
abs                 Returns the absolute value.
absolute            Returns the absolute value.
action              Creates datatype action (for internal usage only).
action?             Returns TRUE if it is this type.
add                 Returns the result of adding two values.
ajoin               Reduces and joins a block of values into a new string.
alias               Creates an alternate spelling for a word.
...

Viewing source code

The source function helps users learn more about specific functions by examining their source code.

For example, type:

>> source join

The source to the join function will be returned:

join: make function! [[
    "Concatenates values."
    value "Base value"
    rest "Value or block of values"
][
    value: either series? :value [copy value] [form :value]
    repend value :rest
]]

REBOL defined functions include the mezzanine functions (built-in interpreted functions) and user defined functions.

More detailed help with errors

Error messages can sometimes be confusing, especially to new users.

When an error occurs in your script, you'll see an error message. You can use the why? function to open a web page to get a more detailed explanation about the error. See the code: debugging tips section for more about errors.


  TOC < Back Next > REBOL.com - WIP Wiki Feedback Admin