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.

Reply via email to