https://github.com/jrincayc/ucblogo-code
Tip revision: e494a4e0c0e335b25b7436b36075800bcc1657c0 authored by Dan Malec on 05 September 2024, 01:42:59 UTC
Merge pull request #185 from jrincayc/artifacts
Merge pull request #185 from jrincayc/artifacts
Tip revision: e494a4e
RENAME-GRAVE-ACCENT
` list (library procedure)
outputs a list equal to its input but with certain substitutions.
If a member of the input list is the word "," (comma) then the
following member should be an instructionlist that produces an
output when run. That output value replaces the comma and the
instructionlist. If a member of the input list is the word ",@"
(comma atsign) then the following member should be an instructionlist
that outputs a list when run. The members of that list replace the
,@ and the instructionlist. Example:
show `[foo baz ,[bf [a b c]] garply ,@[bf [a b c]]]
will print
[foo baz [b c] garply b c]
A word starting with , or ,@ is treated as if the rest of the word
were a one-word list, e.g., ,:FOO is equivalent to ,[:FOO].
A word starting with ", (quote comma) or :, (colon comma) becomes a
word starting with " or : but with the result of running the
substitution (or its first word, if the result is a list) replacing
what comes after the comma.
Backquotes can be nested. Substitution is done only for commas at
the same depth as the backquote in which they are found:
? show `[a `[b ,[1+2] ,[foo ,[1+3] d] e] f]
[a ` [b , [1+2] , [foo 4 d] e] f]
?make "name1 "x
?make "name2 "y
? show `[a `[b ,:,:name1 ,",:name2 d] e]
[a ` [b , [:x] , ["y] d] e]