Sure, that's as good a definition as any. On Thu, Nov 11, 2021, 6:04 AM Yushuo Xiao <[email protected]> wrote:
> Thank you for your comprehensive answer! It helps a lot. I also read more > about Racket after I posted the question and now I think that the few > special forms (as stated in "fully expanded program") are the core. All > languages built in Racket will parse and convert their syntax into syntax > objects (S-expressions) and then expand to these special forms. Am I right? > > On Sunday, November 7, 2021 at 6:53:53 AM UTC+8 [email protected] wrote: > >> Hi Yushuo, >> >> On Sat, Nov 6, 2021 at 5:33 AM Yushuo Xiao <[email protected]> wrote: >> >>> I've learned some Racket, and can comfortably program in it, but I only >>> learned it as an ordinary language, much like Scheme. I know Racket is much >>> more than that, for its "language-oriented" features. Languages become a >>> first-class member in Racket, and to my understanding, even "#lang racket" >>> is just a language built on some core. What I want to know is, what's the >>> very core of Racket? >> >> >> It depends on where you stop measuring. You could argue that... >> >> ...#lang racket is the core, because it's what comes in the >> installation. Things like gregor, struct-plus-plus, and csv-reading are >> packages that you install from http://pkgs.racket-lang.org/ and are >> therefore outside the core. >> >> ...#lang racket/base is the core, because it's the most limited set of >> Racket that comes by default. It mostly consists of only the basic list >> manipulation functions, and if you want to use other things then you need >> to include relevant libraries such as racket/match (giving you the 'match' >> special form) or racket/format (giving you the ~a function), or >> racket-string (giving you the string-length function), etc. >> >> ...Raw lambdas and a few special forms are the core, because everything >> compiles down to those. (Approximately speaking.) >> >> ...Lambda calculus is the core, because it's what all LISP descendants >> are based on. >> >> Once you start talking about other Racket languages with different syntax >> and semantics, well then all bets are off. >> >> >> Does this help? >> >> >>> I've noticed that in the Racket Reference there is a section "Fully >>> Expanded Programs", which seems the very core of Racket. But it still takes >>> an S-expression form, and apparently Racket allows language customization >>> on the syntax level. I wonder if the S-expression language is the core of >>> Racket, or the entire Racket has a different structure? >>> >>> I would really appreciate it if anyone could explain it in a simple way >>> or could point out some good (and short) material for me to read. The >>> Racket Reference is too long, and I believe the core Racket can be well >>> explained in a much shorter piece of text, if I just look for a brief >>> understanding. >>> >>> Also my question may be confusing, because I don't understand Racket >>> well at all. Feel free to correct me or ask for clarification. Thanks in >>> advance! >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Racket Users" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/racket-users/63b1134b-16e4-4447-828a-1e607013bd7cn%40googlegroups.com >>> <https://groups.google.com/d/msgid/racket-users/63b1134b-16e4-4447-828a-1e607013bd7cn%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/racket-users/6929457c-459f-4c25-94c0-ea973b121c65n%40googlegroups.com > <https://groups.google.com/d/msgid/racket-users/6929457c-459f-4c25-94c0-ea973b121c65n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/CAE8gKoc-8rGaY%2BF2nDLR5BULe1tGnO5BnGAZt-DgBmhCVg_9dw%40mail.gmail.com.

