redSetEncoding, redOpenLogFile, redCloseLogFile, redVString, redVFormError. Furthermore, file %libRed.def overlaps with the #export directive in %libRed.red, *except* that redUnset(), redPair(), redMold() are not in %libRed.def.%libRed.def.#export list. Though, maybe a smart Red macro could do the job... ;-)%libRed.red a .red file, when all the code it contains is enclosed in #system [...]?at, next and backnot implemented?redCall can call any functions already, so the provided actions wrappers are just shortcut for the actions we think will be the most used. So redSkip already provides a navigation function, adding more brings no visible advantage to the user.by):A reaction is removed by with the /unlink refinement and with one of the following as a <source> argument: * The 'all word, will remove all reactive relations created by the reaction. * An object value, will remove only relations where that object is the reactive source. * A list of objects, will remove only relations where those objects are the reactive source.
/docs repository itself, but the Gitbook is either not updated or it displays it differently (stilll no bullets). en/styles/website.css).==== redLogic() ---- red_logic redLogic(long logic) ---- Returns an _logic!_ value. A _logic_ value of `0` gives a `false` value, all other values give a `true`. ==== redInteger() ---- red_integer redInteger(long number) ---- Returns an `integer!` value from _number_.
nullor
0to signify the end of the function argument list.
redCall(redWord("f")) or redCall(redWord("f"), redInteger(0)) ? 0 or null value to mark the ending of an arguments list.facebeing piškot(sponge cake) is imo just absurd and it makes me crazy each time I face it. face (tvář)and since then I would probably use the original term. parse documentation and books, [this one](https://www.goodreads.com/book/show/1756599.Parsing_Techniques) comed up in some Lobster article today, has anyone read it?>> ? typeset!
any-block! : make typeset! [block! paren! path! lit-path! set-path! get-path! hash!]
any-function! : make typeset! [native! action! op! function! routine!]
any-list! : make typeset! [block! paren! hash!]
any-object! : make typeset! [object! error!]
any-path! : make typeset! [path! lit-path! set-path! get-path!]
any-string! : make typeset! [string! file! url! tag! email!]
any-type! : make typeset! [datatype! unset! none! logic! block! paren! string! file! url! char! integer! float! word! set-word! lit-word! get-word! refinement! issue! native! action! op! function! path! lit-path! set-path! get-path! routine! bitset! object! typeset! error! vector! hash! pair! percent! tuple! map! binary! time! tag! email! handle! image!]
any-word! : make typeset! [word! set-word! lit-word! get-word! refinement! issue!]
default! : make typeset! [datatype! none! logic! block! paren! string! file! url! char! integer! float! word! set-word! lit-word! get-word! refinement! issue! native! action! op! function! path! lit-path! set-path! get-path! routine! bitset! object! typeset! error! vector! hash! pair! percent! tuple! map! binary! time! tag! email! image!]
immediate! : make typeset! [datatype! none! logic! char! integer! float! word! set-word! lit-word! get-word! refinement! issue! typeset! pair! percent! tuple! time!]
internal! : make typeset! [unset! handle!]
number! : make typeset! [integer! float! percent!]
scalar! : make typeset! [char! integer! float! pair! percent! tuple! time!]
series! : make typeset! [block! paren! string! file! url! path! lit-path! set-path! get-path! vector! hash! binary! tag! email! image!]
typeset! is a datatype! of value: typeset!any-type! [ event! unset! any-function! [native! action! op! function! routine!] any-object! [object! error!] series! [ any-block! [ any-list! [block! paren! hash!] any-path! [path! lit-path! set-path! get-path!] ] any-string! [string! file! url! tag! email!] binary! image! vector! ] immediate! [ any-word! [word! set-word! lit-word! get-word! refinement! issue!] scalar! [ number! [integer! float! percent!] char! pair! tuple! time! ] datatype! none! logic! typeset! ] ]
map!, bitset! and handle! ;). point! type is missing. Where should I put it? It is not in any-type!pair? draw version :satisfied: the 2nd diagram is really cool btwpoint! used by Parse engine (to expose some stack slots to users in Parse callbacks), though, it has no literal form, as reusing the pair form would lead to hardly readable values: 453x73235x2345 or 12.3434x3.56722x16533.234.pair! already leads to hard to read values, IMO.453x73235x2345 isn't pretty, neither is 732352x534567. Decimals do make it even worse. I'm not sure I want to extend the separator (e.g. 1920_x_1080), but the real question is how often the bad cases come up. 10x12x15 isn't bad. 1x23x456 isn't great. 1234x56x789...but, and this is another consideration, if you look at numbers like this regularly, they may not seem as bad. I can't say. It's a tough call. Need to make that call, though, and say what people *should* use if we don't extend pair.[17.1018096 50.2095115] will always be not very readable.12.3434_3.56722_16533.234 really more readable ? Not sure.x !>> ? insert
...
ARGUMENTS:
series [series! bitset! map!]
value [any-type!]
...
>> insert #() [a b]
*** Script Error: insert does not allow map! for its series argument
*** Where: insertsplit has some undocumented obscure refinement>> ? split
USAGE:
split series dlm
DESCRIPTION:
Break a string series into pieces using the provided delimiters.
split is of type: function!
ARGUMENTS:
series [any-string!]
dlm [string! char! bitset!]
REFINEMENTS:
>> split/local
*** Script Error: split/local is missing its series argument
*** Where: split
>> split/local "123"
*** Script Error: split/local is missing its dlm argument
*** Where: split
>> split/local "123" space
*** Script Error: split/local is missing its s argument
*** Where: split
>> split/local "123" space 'what
*** Script Error: split/local is missing its num argument
*** Where: split
>> split/local "123" space 'what 1337
== ["123"]
>>insert is not defined for map! values. You might raise an issue./local means :(help is just extracting the info from functions, it doesn't rely on any document. So, what you see in help's output is what is in the function (try probe :insert). And yes, map! should be excluded./local is standard practice to define "local" words. See http://red.qyz.cz/safe-and-persistent-locals.html for some details./local is standard refinement as any other, it is just by convention ignored by tools like help.parse and dialect -oriented book./refinement to the term used [formally](https://en.wikipedia.org/wiki/Refinement_%28computing%29#Refinement_types)?construct is without any documentation (docstrings are missing). May we know what it is intended to do?/only do?>> probe construct [state: true value: none]
make object! [
state: true
value: none
]
== make object! [
state: true
value: none
]
>> probe construct/only [state: true value: none]
make object! [
state: 'true
value: 'none
]
== make object! [
state: 'true
value: 'none
]/only?>> ? construct
USAGE:
CONSTRUCT block /with object
DESCRIPTION:
Creates an object, but without evaluating its specification.
CONSTRUCT is a native value.
ARGUMENTS:
block -- Object specification block (Type: block)
REFINEMENTS:
/with -- Provide a default base object
object -- (Type: object)/only is an addition I didn't know about. Looks like it simply doesn't [reduce](https://github.com/red/red/commit/d2b8caa4121bbb53bdf66ba7bb901fd25ab59414#diff-47bd63b2c65d7245defba4efb9d5e84dR534) logic and none values. construct. @dockimbel, it's by design (from looking at the code), so nothing to fix. Maybe it was an experiment, hence no docs?/only just suppresses reduction of all the logic words and 'none. I know using construct in R2 was confusing at times, when dealing with loaded data (e.g. config files), where it wasn't clear whether users needed to use lit-word syntax, or just words. I think the default behavior in Red is correct. construct/only doesn't appear to be used anywhere.construct/only doesn't appear to be used anywhere (in the toolchain I suppose)" I can confirm that with my grep>> grep/quiet "construct/only" %/C/Projects/Red/sources/ done, checked 206197 lines in 480 files/urls in 3307 msec, found 0 matches
construct/with/only too, right? Doesn't look like it shows up either...construct/only.Red )load>> ? load
USAGE:
LOAD source
DESCRIPTION:
Returns a value or block of values by reading and evaluating a source.
LOAD is a function! value.
ARGUMENTS:
source [file! url! string! binary!]
REFINEMENTS:
/header => TBD.
/all => Load all values, returns a block. TBD: Don't evaluate Red header.
/trap => Load all values, returns [[values] position error].
/next => Load the next value only, updates source series word.
position [word!] "Word updated with new series position".
/part =>
length [integer! string!]
/into => Put results in out block, instead of creating a new block.
out [block!] "Target block for results".
/as => Specify the type of data; use NONE to load as code.
type [word! none!] "E.g. json, html, jpeg, png, etc".load/binary, mold/binary and save/binary.syntax blocks in the docs?., instead of blank line[source ..] part is optional, I guess not relevant here as it isn't exactly *Red syntax*. only for now (I like [source ..] but its purpose is diffrent; not to avoid parser confusion).s: declare struct! [ a [integer!] b [c-string!] c [struct! [d [integer!] e [float!]]] ] In this example, the struct value has 3 members: a, b, c, each with a different datatype. The c member is a struct! value pointer, it needs to be assigned to a struct value to be used. So a correct initialization for the c member would be: s/c: declare struct! [d [integer!]]
Red [needs 'View]
view[
canvas: base white 200x200 draw[
box 0x0 100x100 ;TL BR
box 97x97 2x2 ;BR TL
box 95x3 0x95 ;TR BL
]
]point-1/2. Using an image makes it clear that what is considered TL/BR has a distinct effect:img: load https://pbs.twimg.com/profile_images/501701094032941056/R-a4YJ5K.png
view [
canvas: base 200x200 draw [
image img 100x100 0x0
]
]TL. No matter how you transform or orient the box, the same corner is always marked TL.REBOL_Programming to Rebol_programmingif time > 10:30 [send jim news] etcjoin/append change in the switch example is probably OK, but not exactly the same behavior. That is, join will copy the source each time, while append will modify it.parse/case? Otherwise, say, c3 will be accepted tooseries! values are parse-able, except for image! and vector!parse in Red is the same as parse/all in Rebol.invent and absorb, but will think more about it.collect and keep are considered keywords, just as copy and set are, even though they have same-named funcs in Red proper.>> bin: 2#{11110000 11110000}
== #{F0F0}
>> bin: 2#{11110000 1111 0000}
*** Syntax Error: invalid binary! at "2#{11110000 1111 0000}"
*** Where: do
*** Stack: loadform word is used a lot of time without explanation.binary!:;base 2, with spaces
red>> #2{11110000 1111 0000}
== "11110000 1111 0000"
;base 64
red>> #64{ffff"}
== {ffff"}#2{...} should be 2#{...} and #64{...} 64#{...}. Currently == ... shows only string {...}. Correct values for those examples are:>> 2#{11110000 1111 0000}
*** Syntax Error: invalid binary! at "2#{11110000 1111 0000}"
>> 64#{ffff"}
*** Syntax Error: invalid binary! at {64#{ffff"}}