Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use of Interlisp CLISP (infix) in FFILEPOS and elsewhere #860

Closed
masinter opened this issue Jul 22, 2022 · 5 comments
Closed

Use of Interlisp CLISP (infix) in FFILEPOS and elsewhere #860

masinter opened this issue Jul 22, 2022 · 5 comments

Comments

@masinter
Copy link
Member

Originally posted by @rmkaplan in #853 (comment)

However, the original code had another oddity about the treatment of seprs that so far I have carried forward.

The characters that are treated as atom-markers are calculated by the function SEPRCASE, which returns the case array for the characters in a particular readtable. But it also has an argument CLFLG which if T indicates that the characters in CLISPCHARS (+ should be put into the equivalence class along with the read-table's breaks and seprs. CLISPCHARS has the characters ^/+=_:'+<>@!←↑. Note in particular that his includes the single quote, which at least in the Interlisp readtable is not a break character--it is a read macro.

In EDITCALLERS, DWIMIFYCOMPFLG is passed as the CLFLG argument, and DWIMIFYCOMPFLG appears to be NIL in my full sysout. The effect is that EDITCALLERS won't find 'XXX.

So, should DWIMIFYCOMPFLG be T? Should CLFLG simply be passed as the constant T? Should single quote be added separately to the equivalence class? I'm not sure why the dependence on DWIMIFYCOMPFLG.

(Separately, I see also that a case array has to be passed explicitly to FFILEPOS (and thus the slow case) if the readtable is case-insensitive. I'll fix that.)

@masinter reply
The introduction of Common Lisp and its usurpation of ":" for the package delimiter broke the most important use of CLISP to make RECORD-package references from A:B to (fetch B of A) and A:R.B to (fetch (R B) of A) 
So none of the source files in the post-Lyric era have CLISP and CLISP-expansion was put on a FLG basis.
As for EDITCALLERS use of FFILEPOS I think you want to err on the side of 

@masinter
Copy link
Member Author

... on the side of recall over precision, since the results of FFILEPOS are filtered by searching the S-expression after READing the results.

@rmkaplan
Copy link
Contributor

rmkaplan commented Jul 22, 2022 via email

@masinter
Copy link
Member Author

If you look at man EDITCALLERS it allows prefix and suffix. There's a reference to Editcallers in the "MANAGER" lispusers (which I'd like to put into FULL as a friendlier interface to the file package, especially for CL users).
FYI using the output of grep

ShellCommand("grep -boiwr editcallers .") 

b: include byte offsets
o: only show what matched (you could filter differently)
i: case insensitive match (include files like those in CLOS)
w: word delimited (simpler than writing a regexp)
r: recursive (give a list of file names instead)

@rmkaplan
Copy link
Contributor

rmkaplan commented Jul 22, 2022 via email

@masinter
Copy link
Member Author

I'm not sure what this issue is about... my temptation is to turn it into a Discussion since there isn't a problem per see.

If the issue is 'reviving CLISP' there is a lot of design work to do, and I'm not quite sure it's in our goals.
s

@Interlisp Interlisp locked and limited conversation to collaborators Aug 21, 2022
@masinter masinter converted this issue into discussion #905 Aug 21, 2022

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants