Skip to content

thecatsam/f-string-apl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

0 Introduction

∆F is a function for Dyalog APL that interprets f‑strings, a concise, yet powerful way to display multiline APL text, arbitrary APL expressions, and multi­dimensional objects using extensions to dfns and other familiar tools.


Preparing to Run ∆F

Show/Hide Preparing to Run ∆F

∆F Installation

  1. Via your browser, go to Github URL https://github.com/thecatsam/f-string-apl.git.
  2. Make a note of your current (or desired) working directory.
  3. Download and copy the file ∆F.dyalog and directory ∆F (which contains several files) into the current working directory, ensuring they are peers, i.e. at the same directory level.

👉 Now, ∆F is available to load and use. Continue in the next section.

Loading and Running ∆F

  1. Confirm that your current directory remains as before.
  2. From your Dyalog session, enter:
    ]load ∆F -target=⎕SE
    Now, the target directory (⎕SE) will contain the function ∆F and namespace ⍙FUtils.
  3. By default, the help file, ∆F/∆FHelp.html is available at ]load time. If so, it will be copied into ⍙FUtils. If not available, a message will note the absence of help information.
  4. Namespace ⎕SE.⍙FUtils contains utilities used by ∆F and, once ]loaded, should not be moved, as ∆F always refers to ⍙FUtils in its original location.
  5. By default, the target namespace (⎕SE) will be added to the end of ⎕PATH, if not already defined there. You may always choose to relocate or assign ∆F anywhere you want so that it is available.

👉 You may now call ∆F with the desired arguments and options.
👉 ∆F is ⎕IO- and ⎕ML-independent.
👉 ∆F’s “help” system uses Dyalog’s HtmlRenderer service to display its documentation or, if unavailable, the Ride development environment. A less robust version of this help information is also available in the file readme.md on Github.

Displaying ∆F Help in APL

👉 To display this HELP information, type: ∆F⍨ 'help'.


Overview

Show/Hide Overview

Inspired by Python f‑strings, ∆F includes a variety of capabilities to make it easy to evaluate, format, annotate, and display related multi­dimensional information. A ∆F f-string is (typically) a character vector, which may reference objects in the environment, additional function arguments, or both.

∆F f‑strings include:

  • The abstraction of 2-dimensional character fields, generated one-by-one from the user’s specifications and data, then aligned and catenated into a single overall character matrix result;

    in Code fields, with several quote styles:

    • double-quotes
      ∆F '{"like this"}' or ∆F '{"on`◇""three""`◇lines"}'

    • double angle quotation marks,
      ∆F '{«with internal quotes like "this" or ''this''»}',
      not to mention:

    • APL’s tried-and-true embedded single-quotes,
      ∆F '{''shown ''''right'''' here''}'

    • Simple shortcuts for

      • formatting numeric arrays, $ (short for ⎕FMT):
        ∆F '{"F7.5" $ ?0 0}'
      • putting a box around a specific expression, `B:
        ∆F '{`B ⍳2 2}'
      • placing the output of one expression above another, %:
        ∆F '{"Pi"% ○1}'
      • formatting date and time expressions from APL timestamps (⎕TS) using `T:
        ∆F '{"hh:mm:ss" `T ⎕TS}'
      • calling arbitrary functions on the fly from the dfns workspace or a user file:
        ∆F '{41=£.pco 12}' ⍝ Is 41 the 12th prime?
      • and more;
    • Simple mechanisms for concisely formatting and displaying data from

      • user arrays of any shape and dimensionality:
        tempC← 10 110 40 ◇ ∆F '{tempC}'
      • arbitrary dfn-style code:
        ∆F '{ 223423 ≡⊃£.dec £.hex 223423: "Checks out" ◇ "Bad"}'
      • arguments to ∆F that follow the format string:
        ∆F '{32+`⍵1×9÷5}' (10 110 40) either positional or keyword (namespace-based) options, based on APL Array Notation (in­tro­duced in Dyalog 20);
  • Multiline (matrix) output built up field-by-field, left-to-right, from values and expressions in the calling environment or arguments to ∆F;

    • After all fields are generated, they are aligned vertically, then concatenated to form a single character matrix: the return value from ∆F.

∆F is designed for ease of use, ad hoc debugging, fine-grained formatting and informal user interaction, built using Dyalog functions and operators.

 Recap: The Three Field Types

Field Type Syntax Examples Displaying
Text F. Unicode text Cats`◇and`◇dogs! 2-D Text
Code F. {dfn code plus} {shortcuts} {"1`◇one"} {"2`◇two"}` {"F5.1" $ (32+9×÷∘5)degC} Arbitrary APL Express­ions via dfns, including Quoted Strings
Space F.
(Null Space F.)
{␠ ␠ ␠}
{}
{ }
{}
Spacing
(Field Separation)

2a. The Three Field Types


Quick Start

Show/Hide Quick Start

Here’s a quick start for the TL;DR crowd.

3.1: Embed variables

   n← ⍪1+⍳3 ◇ nPi← ⍪○n  
   ∆F 'For n={ n }, n×Pi={ nPi }'  
For n=1, n×Pi=3.141592653589793
      2       6.283185307179586
      3       9.42477796076938 

3.2: Embed expressions

   ∆F 'For n={ ⍪1+⍳3 }, n×Pi={ ⍪○1+⍳3 }'  
For n=1, n×Pi=3.141592653589793
      2       6.283185307179586
      3       9.42477796076938 

3.3: Build multiline text fields and code fields

⍝      <----  text field  ---->   <- text field ->    <- code field str ->
   ∆F 'Cats`◇Elephants`◇Monkeys{ }like`◇enjoy`◇eat{ }{"toys.`◇tv.`◇fruit."}'
Cats      like  toys. 
Elephants enjoy tv.   
Monkeys   eat   fruit.

3.4: Apply the Format shortcut $

   ∆F 'For n={ ⍪1 2 3 }, n×Pi={ "F7.5"$ ○1 2 3 }'  
For n=1, n×Pi=3.14159
      2       6.28319
      3       9.42478

3.5: Add Omega shortcut expressions

⍝  `⍵1 ==> (⍵⊃⍨ 1+⎕IO), i.e. ⎕IO-independently
   ∆F 'For n={ ⍪`⍵2 }, n×Pi={ `⍵1 $ ○`⍵2 }' 'F7.5' (1 2 3)
For n=1, n×Pi=3.14159
      2       6.28319
      3       9.42478

3.6: Add the Box shortcut

   ∆F 'For n={ `B ⍪`⍵1 }, n×Pi={ `B "F7.5"$ ○`⍵1 }' (1 2 3)
For n=┌─┐, n×Pi=┌───────┐
      │1│       │3.14159│
      │2│       │6.28319│
      │3│       │9.42478│
      └─┘       └───────┘

3.7: Use Self-Documenting Code Fields and the Box option

   names←  ⍪'Ted' 'Mary' 'Sam'
   scores← ⍪(70 66 44) (82 88 92) (90 77 83)
   Ave← +/÷≢
   (box: 1) ∆F '{names↓}{scores↓}{1⍕Ave¨scores↓}'
┌──────┬──────────┬─────────────┐
│names↓│ scores↓  │1⍕Ave¨scores↓│
│ Ted  │ 70 66 44 │     60.0    │
│ Mary │ 82 88 92 │     87.3    │
│ Sam  │ 90 77 83 │     83.3    │
└──────┴──────────┴─────────────┘

3.8: Serialise an object in Array Notation

⍝  Dyalog 20: anim←(cat: 1 ◇ dog: 2 ◇ mouse: 3)
   cat dog mouse← 1 2 3 
   anim←⎕NS 'cat' 'dog' 'mouse' 
⍝  Works in Dyalog 19 or 20!
   ∆F '{`⍵1 `S anim ↓} { `⍵2 `S anim↓}' 1 0    
  `⍵1 `S anim ↓        `⍵1 `S anim↓ 
(cat:1◇dog:2◇mouse:3◇)  (        
                         cat:1   
                         dog:2   
                         mouse:3 
                       )          

3.9: Grab utility automagically from dfns workspace (or from a file)

   ∆F'{ £.hex 57005 48879 51966}'   ⍝ Get hex fn to convert dec to hexadecimal!
 dead  beef  cafe 

That’s 80% of what you need. Read on for more…

∆F Reference

Show/Hide Syntax Info

∆F Call Syntax Overview

Call Syntax Description
∆Ff‑string Display an f‑string; use the default options. The string may reference objects in the environment or in the string itself. Returns a character matrix.
Single or multi­line f-string: An f-string must be a character vector of any length or a vector of character vectors. If the latter, it will be converted (via enlist, ) to one, longer character vector, without any added spaces, newlines, etc.
∆Ff‑stringargs Display an f‑string (see above); use the default options. Arguments presented may be referred to in the f‑string. Returns a character matrix.
options∆Ff‑string [args] Display an f‑string (see above); control the result with options specified (see below).
If dfn (see below) is 0 or omitted, returns a character matrix.
If dfn is 1, returns a dfn that will display such a matrix (given an identical system state).
‘help’ ∆F ‘ ’ or∆F⍨‘help’ Display help info and examples for ∆F. The f‑string is not examined. 👉 See below for details and related examples.
Return value See below.

5a. ∆F Call Syntax Overview

∆F Option Details


Mode
Positional
Option
[index]
Keyword
Option
(kw: def)

Description
Dfn [0] dfn: 0 If dfn: 1, ∆F returns a dfn, which (upon execution) produces the same output as the default mode.
If dfn: 0 (default), ∆F returns a char. matrix.
Verbose [1] verbose: 0 If verbose: 1, Renders newline characters from `◇ as the visible character. Displays the source code that the f‑string actually generates; if dfn is also 1, this will include the embedded f‑string source (accessed as `⍵0). After the source code is displayed, it will be executed or converted to a dfn and returned (see the dfn option above).
If verbose: 0 (default), newline characters from `◇ are rendered normally as carriage returns, ⎕UCS 13; the dfn source code is not displayed.
Box [2] box: 0 If box: 1, each field (except a null Text field) is boxed separately.
If box: 0 (default), nothing is boxed automatically. Any Code field expression may be explicitly boxed using the Box shortcut, `B.
👉 Box mode can be used with settings dfn: 1 and dfn: 0.
Auto [3] auto: 1 If auto: 0, user must manually load/create any Session Library objects for use with the £ or `L shortcuts.
If auto: 1 (default), honors the default and user-defined settings for auto.
👉 Depends on (i) user parameter file ./.∆F and (ii) the namespace ⍙FUtils created during the ]load process.
Inline [4] inline: 0 If inline: 1, the code for each internal support function used is included in the result. If dfn is also 1, no reference to namespace ⍙FUtils will be made during the execution of the generated dfn. (Exception: see Session Library Shortcuts below.)
If inline: 0 (default), whenever ∆F or a dfn generated by it is executed, it makes calls to library routines in the namespace ⍙FUtils, created during the ]load process for ∆F.
👉 This option is experimental and may simply disappear one day.
Special ‘help’ If ‘help’ is specified, this amazing doc­ument­ation is displayed.
Special ‘parms’ If ‘parms’ is specified, updates and displays Session Library (£ or `L) pa­ram­eters.

5b. ∆F Option Details

  • Default options: If the left argument is omitted, the options default as shown here.

Option Style Defaults
Positional 0 0 0 1 0
Keyword (dfn: 0 ◇ verbose: 0 ◇ box: 0 ◇ auto: 1 ◇ inline: 0)

5c. ∆F Default Options

  • Positional-style options: If ∆F’s left argument is a simple integer vector (or a scalar), omitted (trailing) elements are replaced by the corresponding elements of the default, 0 0 0 1 0.
    👉 Extra elements will be ignored!
  • Keyword-style options: If the left argument is a namespace, it is assumed to contain option names (in any order) with their non-default values,
      e.g. (verbose: 1 ◇ auto: 0);
    Keyword options are new for Dyalog 20. They are sometimes clearer and more convenient than positional keywords.
  • Help option: If the left argument starts with 'help' (case ignored), this help information is displayed. In this case, the right argument to ∆F is ignored.
  • Parms option: If the left argument matches 'parms' (case ignored), the Session Library parameters are (re-)loaded and displayed. In this case, the right argument to ∆F is ignored.
  • Otherwise, an error is signaled.

∆F Return Value

  • Unless the dfn option is selected, ∆F always returns a character matrix of at least one row and zero columns, 1 0⍴0, on success. If the ‘help’ option is specified, ∆F displays this information, returning 1 0⍴0. If the ‘parms’ option is specified, ∆F shows the Session Library parameters as a character matrix.
  • If the dfn option is selected, ∆F always returns a standard Dyalog dfn on success.
  • On failure of any sort, an informative APL error is signaled.

∆F F‑string Building Blocks

The first element in the right arg to ∆F is a character vector, an f‑string, which contains one or more Text fields, Code fields, and Space fields in any combination.

  • Text fields consist of simple text, which may include any Unicode characters desired, including newlines.
    • Newlines (actually, carriage returns, ⎕UCS 13) are normally entered via the sequence `◇.
    • Additionally, literal curly braces can be added via `{ and `}, so they are distinct from the simple curly braces used to begin and end Code fields and Space fields.
    • Finally, to enter a single backtick ` just before the special symbols {, }, , or `, enter two backticks ``; if preceding any ordinary symbol, a single backtick will suffice.
    • If ∆F is called with an empty string, ∆F '', it is interpreted as containing a single 0-length Text field, returning a matrix of shape 1 0.
  • Code fields are run-time evaluated expressions enclosed within simple, unescaped curly braces { }, i.e. those not preceded by a backtick (see the previous paragraph).
    • Code fields are, under the covers, Dyalog dfns with some extras.
    • For escape sequences, see Escape Sequences below.
  • Space fields appear to be a special, degenerate, form of Code fields, consisting of a single pair of simple (unescaped) curly braces {} with zero or more spaces in between.
    • A Space field with zero spaces is a null Space field; while it may separate any other fields, its typical use is to separate two adjacent Text fields.
    • Between fields, ∆F adds no automatic spaces; that spacing is under user control.

Code Field Shortcuts

∆F Code fields may contain various shortcuts, intended to be concise and expressive tools for common tasks. Shortcuts are valid in Code fields only outside Quoted strings.

Shortcuts include:

Shortcut Name Syntax Meaning
`A, % Above [⍺] % ⍵ Centers array above array .
If omitted, ⍺←'', i.e. a blank line.
`B Box `B ⍵ Places in a box. is any array.
`C Commas [⍺]`C ⍵ By default, adds commas after every 3rd digit (from the right) of the integer part of each number in (leaving the fractional part as is). is zero or more num strings and/or numbers. If specified, ⍺[0] is the stride, if not 3, as an integer or as a single quoted digit; if specified, ⍺[1] is the character (even “`◇”) to insert in place of a comma.
Examples: “5_” adds an underscore every 5 digits from the right. “3`◇” puts each set of 3 digits on its own line.
`D Date-Time [⍺]`D ⍵ Synonym for `T.
`F, $ ⎕FMT [⍺] $ ⍵ Short for [⍺] ⎕FMT ⍵. (See APL doc­ument­ation).
`J Justify [⍺]`J ⍵ Justify each row of object as text:
  left: ⍺=“L”; center: ⍺=“C”; right ⍺=“R”.
You may use ¯1|0|1 in place of "L"|"C"|"R". If omitted, ⍺←'L'. Displays numbers with the maximum precision available.
`L, £ Session Library £.nm
£.nm.nm2
£ denotes a private library (namespace) local to the ∆F runtime environ­ment into which functions or objects (including name­spaces) may be placed (e.g. via ⎕CY) for the duration of the APL session.
Autoload: Outside of simple assignments, ∆F will attempt to copy an undefined object named nm in the expression £.nm, £.nm.nm2, etc., from, in order:
DIRECTORY:./MyDyalogLib/  >  APL WS:dfns  > DIRECTORY:./
Other £ expressions like £.(hex dec) are valid, but no autoload takes place.
For filetypes and customisation, see Session Library Shortcut: Details below.
`Q Quote [⍺]`Q ⍵ Recursively scans , putting char. vectors, scalars, and rows of higher-dimensional strings in APL quotes, leaving other elements as is. If omitted, ⍺←''''.
`S Serialise [⍺]`S ⍵ Serialise an APL array (via ⎕SE.Dyalog.Array.Serialise), i.e. show in APL Array Notation (APLAN), either (⍺=0, the default) in tabular (multiline) form or (⍺=1) compactly with statement separators in place of newlines. If omitted, ⍺←0. See details below.
`T Date-Time [⍺]`T ⍵ Displays timestamp(s) according to date-time template . is one or more APL timestamps ⎕TS. is a date-time template in 1200⌶ format. If omitted, ⍺← '%ISO%'.
`W Wrap [⍺]`W ⍵ Wraps the rows of simple arrays in ⍵ in decorators 0⊃2⍴⍺ (on the left) and 1⊃2⍴⍺ (on the right). If omitted, ⍺←''''. See details below.
`⍵𝑑𝑑, ⍹𝑑𝑑 Omega Shortcut
(EXPLICIT)
A shortcut of the form `⍵𝑑𝑑 (or ⍹𝑑𝑑), to access the 𝑑𝑑th element of , i.e. (⍵⊃⍨ 𝑑𝑑+⎕IO). See details below.
`⍵, Omega Shortcut
(IMPLICIT)
A shortcut of the form `⍵ (or ), to access the next element of . See details below.

or %
Self-documenting Code Fields (SDCFs) at end of Code field signals that the source code for the field appears to the left of its value. Surrounding blanks are significant.
(or, %) at end of Code field signals that the source code for the field appears above its value. Surrounding blanks are significant.
See SDCFs in Examples for details.

5d. Code Field Shortcuts


Escape Sequences: Text Fields & Quoted Strings

treated literally.

Quoted Strings in Code Fields

As mentioned in the introduction, Quoted strings in Code fields allow several delimiting quote styles:

  • double-quotes
    ∆F '{"like «this» one"}' or ∆F '{"like ''this'' one."}',
  • double angle quotation marks,
    ∆F '{«like "this" or ''this''.»}',
    as well as
  • APL’s tried-and-true embedded single-quotes,
    ∆F '{''shown like ''''this'''', "this" or «this».''}'.


Valid:∆F '{"abc""def"}' If you wish to include a traditional delimiting quote (' or ") or the closing quote of a quote pair («») within the Quoted string, you must double it. You may not use an escape sequence (e.g. `") for this purpose.

Quote(s) Example Result
" ∆F '{"like ""this"" example"}' like "this" example
' ∆F '{''like ''''this'''' example''}' like 'this' example
« » ∆F '{«or «this»» one»}' or «this» one

5f. Doubling Quote Character in Quoted String

Note that the opening quote « is treated as an ordinary character within the string. The clumsiness of the standard single quote ' examples is due to the fact that the single quote is the required delimiter for the outermost (APL-level) string.

Omega Shortcut Expressions: Details

  1. All Omega shortcut expressions in the f‑string are evaluated left to right and are ⎕IO-independent.
  2. is a synonym for `⍵. It is Unicode character ⎕UCS 9081. Either glyph is valid only in Code fields and outside Quoted strings.
  3. `⍵𝑑𝑑 or ⍹𝑑𝑑 is equivalent to the expression (⍵⊃⍨dd+⎕IO). Here 𝑑𝑑 must be a non-negative integer with at least 1 digit.
  4. `⍵ or (with no digits appended) is equivalent to (⍵⊃⍨1+ii+⎕IO), where ii is the index of the most recent Omega expression (of either type) to its left in the f-string;if there is no such expression, ii is 1.
  5. The f‑string itself (the 0-th element of ) is always accessed as `⍵0 or ⍹0. It may only be accessed explicitly.
  6. If an element of the dfn’s right argument is accessed at runtime via any means, shortcut or traditional, that element must exist.

Serialise Shortcut Expressions: Details

Serialise ( `S) uses Dyalog APL’s Array Notation (APLAN) to display the object to its right. It is intended to have roughly the same behaviour as displaying an object with ]APLAN.output on. (See Dyalog documentation for details).

  1. Serialise displays objects of classes 2 and 9— data arrays and namespaces— in Array Notation, as long as they contain no functions or operators.
  2. If includes a function or operator,`S will display unformatted, rather than in APLAN format.

Wrap Shortcut: Details

  1. Syntax: [⍺←''''] `W ⍵.
  2. Let L←0⊃2⍴⍺ and R←1⊃2⍴⍺.
  3. Wrap each row X′ of the simple arrays X in (or the entire array X if a simple vector or scalar) in decorators L and R: L,(⍕X′),R.
  4. is an array of any shape and depth.Land Rare char. vectors or scalars or (treated as '').
  5. If there is one scalar or enclosed vector , it is replicated per (2) above.
  6. By default,⍺← '''',i.e. APL quotes will wrap the array ⍵, row by row, whether character, numeric or otherwise.

Session Library Shortcut: Details

  1. If an object £.name is referenced, but not yet defined in £, an attempt is made— during ∆F’s left-to-right scanning phase— to copy it to £ from (in order) directory ./MyDyalogLib, workspace dfns, and the current directory ./, unless it is being assigned (via a simple ) or has already been seen in this ∆F call. It will be available for the duration of the APL session.

  2. If a name is a qualified name, i.e. if it is of the form £.nm1.nm2, £.nm1.nm2.nm3, etc., then ∆F attempts to load the name nm1, presumed to be a namespace (or a function returning a namespace). If a namespace, the entire namespace is loaded, not just the object specified.

  3. While objects of the form £.name will be automatically retrieved (if not defined), names in other £ expressions, like £.(name1 name2) or £.⎕NC "name3", will be ignored during the scanning phase;

  4. In the case of a simple assignment (£.name←val), the object assigned must be new or of an APL class compatible with its existing value, else a domain error will be signaled. Even if seen later in the scan, the object will be assumed to have been set by the user.

  5. Simple modified assignments of the form £.name+←val are allowed: the object name will be retrieved (if not present) before modification.

Session Library Shortcut: Filetypes of Source Files


Filetype

Action
APL Class ⎕NC Key APL
Service
Available
by Default?
Type
Enforced?
.aplf Fixes function 3 ⎕FIX ✔ FUTURE
.aplo Fixes operator 4 ⎕FIX ✔ FUTURE
.apln Fixes ns script 9 ⎕FIX ✔ FUTURE
.apla Assigns array or ns
(array notation)
2, 9 assignment
.json Fixes ns from JSON5 9 ⎕JSON
.txt Assigns char. vectors 2 assignment
.dyalog Fixes object 3, 4, 9 ⎕FIX ✘ NEVER
user-specified Fixes object 3, 4, 9 ⎕FIX ✘ NEVER

5g. Library Filetypes: Meaning

Session Library Shortcut: Parameters

The filetypes that indicate the types of objects in our “library,” along with any expected conversions.

The built-in (default) parameter file ∆F⍨'help-narrow'. With this variant, the help session will start up in a narrower window without side notes. If the user widens the window, the side notes will appear, as in the default case: ∆F⍨'help'.

∆F’s Library Parameter Option: ‘parms’

Normally, ∆F £ibrary parameters are established when ∆F and associated libraries are loaded (e.g. via ]load ∆F -t=⎕SE). After editing the parameter file ./.∆F, you may wish to update the active parameters, while maintaining existing user £ibrary session objects, which would otherwise be lost during a ]load operation. For such an update, use ∆F’s 'parms' option.

∆F⍨ 'parms' reads the user parameter file ./.∆F, updates the £ibrary parameters, returning them in alphabetical order along with their values as a single character matrix. No current session objects are affected.

Appendix II: Python f‑strings

For more information on Python f-strings, see:

https://docs.python.org/3/tutorial/inputoutput.html#formatted-string-literals.

Index of Topics

Show/Hide Index


■ Topic in table or figure
■ Regular entry

`A (above)4.12
Above shortcut4.12
Appendices6.
Array notation, serialise4.19
`B (box)4.5
Box option4.6
Box shortcut4.5
`C (numeric commas)4.10
Call syntaxTable 5a.
Code field escape sequencesTable 5e.
Code field shortcuts5.5
Code field shortcuts, briefTable 3d.
Code field shortcuts, detailsTable 5d.
Code fields4.1
Code fields (continued)4.4
Code fields, quoted strings in5.7
Commas shortcut, numeric4.10
`D (date)4.17
Date shortcut (alias)4.17
Default optionsTable 5c.
Dfn option, precomputed F-strings4.22
Doubling quote charactersTable 5f.
Escape omega, details5.8
Escape sequencesTable 5e.
Escape sequences in quoted strings5.6
Escape sequences in text fields5.6
Examples4.
`F (format)4.9
Field typesTable 2a.
File, of library parameters (.∆F)Fig. 4.21
Filetypes, library: see `L and £Table 5g.
Format shortcut4.9
F-string, referencing4.8
F-strings, definition0.
F-strings, Python6.2
∆F Call SyntaxTable 5a.
∆F call syntax overview5.1
∆F f-string building blocks5.4
∆F installation1.1
∆F loading and running1.2
∆F option details5.2
∆F preparing to run1.
∆F reference section5.
∆F return values5.3
Help, displaying in Apl1.3
Horizontal SDCF (→)4.11
Installing ∆F1.1
`J (Justification)4.13
Justification shortcut4.13
`L (library)4.21
Library Filetypes: see `L and £Table 5g.
Library parameters, file of (.∆F)Fig. 4.21
Library shortcut, details5.11
Library shortcut, session4.21
Loading ∆F1.2
Multiline f-strings, Dyalog 204.23
Null space fields4.3
Numeric commas shortcut4.10
Omega shortcut expressions, details5.8
Omega shortcuts, explicit4.7
Omega shortcuts, implicit4.14
Omega underscore (⍹), details5.8
Option detailsTable 5b.
Options, defaultTable 5c.
Overview2.
Precomputed F‑strings4.22
Preparing to run ∆F1.
Python f‑strings6.2
`Q (quote)4.18
Quick start3.
Quote characters, doublingTable 5f.
Quote shortcut4.18
Quoted strings, doubling quote chars.Table 5f.
Quoted strings, escape sequences in5.6
Quoted strings in code fields5.7
Running ∆F1.2
`S (serialise)4.19
SDCFs: self-documenting code fields4.11
Self-documenting code fields (SDCFs)4.11
Serialise shortcut, array notation4.19
Serialise shortcut, details5.9
Session library parameters, file (.∆F)Fig. 4.21
Session library shortcut4.21
Session library shortcut, details5.11
Shortcuts, all5.5
Shortcuts, briefTable 3a.
Shortcuts, detailsTable 5d.
Shortcuts, with Apl expressions4.15
Space fields4.2
Space fields, null4.3
Syntax (∆F reference)5.
Syntax, ∆F CallTable 5a.
`T (time)4.16
Text field escape sequencesTable 5e.
Text fields4.2
Text fields, escape sequences in5.6
Time shortcut4.16
Underdocumented features6.1
Undocumented features6.1
Vertical SDCF (↓ or %)4.11
`W (wrap)4.20
Wrap shortcut4.20
Wrap shortcut, details5.10
$ (format)4.9
% (above)4.12
% (vertical SDCF)4.11
£ (library)4.21
→ (horizontal SDCF)4.11
↓ (vertical SDCF)4.11
`⍵ and ⍹, details5.8
`⍵, ⍹ (omega, implicit)4.14
`⍵𝑑𝑑, ⍹𝑑𝑑 (omega, explicit)4.7
⍹ [-underscore]: see `⍵4.14
⍹𝑑𝑑 [-underscore]: see `⍵𝑑𝑑4.7

⍠⍠⍠          ⍠⍠⍠


Copyright © 2026 Sam the Cat Foundation. [Version 0.1.3: 2026-01-20]

About

∆F f-string utility

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published