The Rye console is an interactive environment for evaluating Rye code and exploring the language. It provides specialized functions for navigating contexts, discovering available functions, and understanding the structure of your program’s environment.
When you start Rye with the rye command, you enter the interactive console. A new context is created with the builtin functions available as the parent context.
$ rye
Welcome to Rye console
x> ; your cursor will be here
The Rye environment is organized around contexts - containers for words (variables and functions). You can navigate and explore these contexts using console-specific functions.
Use lc (list context) to see what’s defined in your current context:
x> lc
Empty context
[Bool: true] ; the returned value
Use lcp (list context parent) to see the builtin functions available:
x> lcp
Context: Context of builtins
^check: [BFunction(2): Returning Check. (core) (^check)]
^fail: [BFunction(1): Returning Fail. (core) (^fail)]
^fix: [BFunction(2): Fix as a returning function. If Arg 1 is failure, do the block and return to caller. (core) (^fix)]
_+: [Pure BFunction(2): Adds or joins two values together (Integers, Strings, Uri-s and Blocks) (core) (_+)]
_-: [Pure BFunction(2): Subtracts two numbers. (core) (_-)]
_*: [Pure BFunction(2): Multiplies two numbers. (core) (_*)]
...and hundreds more...
Use lc\ with a string to filter functions by name:
x> lc\ "print"
Context: Context of builtins
print: [BFunction(1): Prints a value and adds a newline. (core) (print)]
print\csv: [BFunction(1): Prints CSV formatted output. (core) (print\csv)]
print\json: [BFunction(1): Prints JSON formatted output. (core) (print\json)]
printv: [BFunction(2): Prints a value with custom formatting. (core) (printv)]
Filter by value type using a word:
x> lc\ 'context
Context: Context of builtins
math: [Context: Mathematical functions]
os: [Context: Operating system functions]
pipes: [Context: Pipeline functions]
Use cc (change context) to move into a specific context:
x> cc math
x> lc
Context: Mathematical context
sin: [BFunction(1): Sine function]
cos: [BFunction(1): Cosine function]
...
Use ccp (change to context parent) to move up one level:
x> ccp
; Returns the context you're moving from
x> lc
; Now shows the parent context
Use ccb (change context back) to move back to the previous context. Runtime stores a stack of contexts you navigated through:
x> ccp
; Returns the context you're moving from
x> lc
; Now shows the parent context
Rye supports generic functions that dispatch based on the type of their first argument. These are listed separately from regular functions.
Use lk (list kinds) to list available kinds.
x> lk
Ed25519-priv-key
Ed25519-pub-key
Gin-context
Gin-group
Gin-router
Go-server
Go-server-request
...
x> lk\ "uri"
file-uri
ftp-uri
http-uri
https-uri
mqtt-uri
mysql-uri
...
Use lg (list generic) to see generic functions that work with specific types:
x> lg 'https-uri
Methods (https-uri):
Get [Builtin(1): Makes a HTTPS GET request and returns the response body as a string. (io) (https-uri//Get)]
Open [Builtin(1): Opens a HTTPS GET request and returns a reader for the response body. (io) (https-uri//Open)]
Post [Builtin(3): Makes a HTTPS POST request and returns the response body as a string. (io) (https-uri//Post)]
Request [Builtin(3): Creates a new HTTPS request object. (io) (https-uri//Request)]
The Rye console supports various keyboard shortcuts for efficient editing and navigation:
This is still in development and fine tuning.
Currently, if you press Tab without any text entered console will display words in current context and you will be able to cycle over them and see their values.
If you already antered text and then press tab console will show suggestions based on all indexed words. You will again be able to cycle over them and see their values.
x> <Tab>
; [name] say-hi
; [String: Anne]
: prin<Tab>
; [print] print2 print\csv print\ssv
If blocks or strings don’t finish by the end of the line console will go into multiline mode and you will be able to write multiple lines until you close the block or string.
x> list {
... 1 2 3
... 4 5 6
}
[List: [1 2 3 4 5 6]]
lc\ or lcp\ with search terms to quickly find functions related to your tasklk or lg to discover generic functions that work with specific kinds of valuesenter-console "description" within your programs to drop into consoleThe Rye console is designed for exploration and experimentation - don’t hesitate to try functions and inspect the environment to learn how the language works!