Yet more ::SHE+ILA:: Syntax

65
0
  • Squishy Plushie's avatar Artist
    Squishy Pl...
  • DDG Model
    QWEN
  • Access
    Public
  • Created
    1d ago
  • Try

Prompt

A large purple plushie dog reading a golden book.

More about Yet more ::SHE+ILA:: Syntax

(Continued from "More ::SHE+ILA:: Syntax", and "::SHE+ILA:: Syntax")
Here are some Fundamental Buf Interface ("FBI") operators :
The fundamental datatype in ::SHE+ILA:: is called a Buf (short for Buffer). It can represent arrays (to any nesting depth), strings, quaternions, functions, and arbitary binary blocks of data (such as assembled 80x86 code, or bitmap graphics). The FBI is a set of protected-mode operations located in the Kernel (::SHE::) which operates in-place on Bufs within Segments (swappable datastore blocks), themselves consisting of Pages (contiguous 64K RAM or disk blocks). All addressing in ::SHE+ILA:: uses a Segment/Offset system : the SEGID is in the range 00 to 99, and the offset is a 32bit displacement from the start of the SEGID'th segment. A multi-user protection table (called the GHOST -- Global Hosting Online Segment Table) permits or prevents each user account to access a given set of datastore segments (the "working set"), and can only be changed by the System Administrator, in order to prevent arbitrary corruption of non-owned data segments.
Here are the FBI operations :
Foo <::[maxsize] Value; // Specify -- Create a Buf "Foo" of maximum size "maxsize" (default 65535 bytes) and set it to "Value"
Foo <<[position] Value; // Insert "Value" into Buf "Foo" at the "position"'th element, shifting existing data along
Result <:: Foo[<position>]; // Extract the element at "position" from Buf "Foo", closing up the gap (Note the change of syntax from C++ -- I found ours more consistent :) )
?Foo; // Wait (suspend the thread) while Buf "Foo" is empty (i.e. while #Foo == 0)
Foo?; // Wait (suspend the thread) while Buf "Foo" is full (i.e. while #Foo >= maxsize)
Result <:: Foo[subscript]; // Choose (pick the "subscript"'th value or values of "Foo" and put them in Result). Note that "Subscript" can be a vector, e.g. if Foo is a character table we can convert between codes
Result <:: #Foo; // Length (Result is the number of elements in Foo)
Result <:: ALUop / Foo ; // Reduce (apply ALUop (e.g. "+", "*", etc) to every element of Buf to form a running total (Sigma) )
Result <:: Vector \ Foo ; // Express -- see separate artwork. Useful for Compression and Expansion (hence the name "Express")
Instance <-:: Class; // Instantiate (also written Instance <::- Class). See "Class" artwork :)
Result <:: $~ Foo; // Reverse (e.g. $~ "Sheila" = "aliehS")
Result <:: Position $~ Foo; // Rotate (e.g. 2 $~ "Sheila" == "eilaSh")
Maybe more soon :)

Comments


Loading Dream Comments...

Discover more dreams from this artist