On this page:
The Raqet Manual
8.15.0.2

The Raqet Manual🔗ℹ

ydyr

 (require qing) package: raqet

In the rapidly advancing era of global informationization, information technology has become a significant driving force for social advancement. With the continuous progress of China’s informationization, especially the high-speed development of the internet industry, China has stepped into the threshold of a powerful information nation. However, compared to developed countries, there are still significant gaps in terms of innovation in information technology and technology sharing.

The reasons for this current state encompass multiple aspects, but we believe that there is a fundamental issue: China lacks a fertile “soil” for learning programming. The mainstream programming languages are all carried by English, and various language documents and user manuals are also in English, which poses a certain usage barrier for those whose native language is not English. For professional software developers, they can overcome the difficulties through learning English, but for amateurs and students, this significantly increases the learning cost. In fact, many renowned foreign programmers, including Bill Gates and Mark Zuckerberg, started to learn programming from a young age or even childhood, so they do not face a fundamental language barrier due to their native English. Conversely, in China, although there has been a recent push to include programming in the curriculum, the overall promotional effect has not been ideal. This has resulted in a lack of widespread and high-quality programming “soil”, which will become a disadvantage for China in striving for technological leadership.

To address this issue, we need a programming language that uses Chinese as its carrier, making it convenient for the general public to learn and use.

Before Qing Language, there have already been some Chinese programming languages, among which the most successful ones are E Language, C (习) Language, etc. However, these languages have some issues, such as being closed-source, not supporting cross-platform, etc. The mainstream programming languages all adopt an open-source development model, where companies and communities jointly expand the language’s functions and build a good language ecosystem. In contrast, the existing Chinese programming languages mostly adopt a closed-source model, which results in the development force being single, the development strength being weak, and the inability to form a basic language ecosystem, ultimately preventing it from entering the mainstream public view.

Based on this, there has been someone who decided to create a completely open-source Chinese programming language - Qing Language.

It was named Qing Language, aiming at it being primarily for the learning and use of programming by a broad group of teenagers, children, and amateur enthusiasts, and also hoping that this language is full of youthful vigor and thriving.

To meet the needs of our target audience, our design goals for Qing Language are as follows:

In its concrete design structure, it is a noticeable principle that "the core language referes to the Lisp language". However, Qing language, in contrast to most modern Lisp implementations, does not support static compilation, linking, metaprogramming, functional development, etc. It is of essential necessarity to literally make Qing a “Lisp”.

Develop using Racket, running on the Racket platform. Currently, the Racket platform is one of the most suitable for Language Oriented Programming, as it has built-in support for language parsing and compilation. Based on the Racket platform, Raqet Language can have a good cross-platform compatibility, and conveniently expand its functions.

Raqet code is directly compiled to Racket syntax objects, empowering it seamless interoperability with Racket ecosystem. Although Racket has scarce community packages (around 2,000) compared to other mainstream programming languages, Raqet users do not have to encapsulate functionalities in DLLs themselves; functions, types and even macros can be referenced in Raqet code straightforwardly as it is in Racket.

Currently, we have already implemented most parts kernel of Raqet Language, and auxiliary facilities including standard library and GUI extension are on the road. In the future, we hope to further expand the functions of Raqet Language with the help of the open-source community, and build a good language ecosystem.

In addition to the development of the language itself and the extension functions, the development of the language also relies on rich and high-quality documentation support. Therefore, we also hope that the community can further supplement Raqet Language’s tutorials, usage documents, code examples, and other documentation content.

The road is at our feet, and let us walk together towards a new world.

    1 Installation

      1.1 REPL

      1.2 Text File

    2 Overview

      2.1 Overview of Basic Syntax

        2.1.1 First Program

        2.1.2 Comments

        2.1.3 Data Types

        2.1.4 Assignment

        2.1.5 Value Retrieval

        2.1.6 Infix Operations

        2.1.7 Arrays

        2.1.8 Objects

        2.1.9 Path

        2.1.10 User-defined Functions

        2.1.11 Branching

        2.1.12 Looping

    3 Core Syntax

      3.1 Comments

      3.2 Variables

      3.3 Variable Assignments

      3.4 Data Types

      3.5 Collections

      3.6 Path

      3.7 Operators

      3.8 Flow Control

        3.8.1 Branching

        3.8.2 Looping

          3.8.2.1 重复

          3.8.2.2 当 1

          3.8.2.3 当 2

          3.8.2.4 执行 ... 直到 ...

          3.8.2.5 跳出 and 继续

      3.9 Iteration

      3.10 Functions

        3.10.1 Function Invocation

      3.11 User-define Functions

      3.12 Exception Handling

        3.12.1 Intentionally Triggering Exceptions

      3.13 Complex Path

        3.13.1 Long Path

        3.13.2 Expression Evaluation within Paths

      3.14 Function Calls within Paths

      3.15 Modulization

        3.15.1 Requiring

        3.15.2 Providing

      3.16 Label Type

      3.17 Metaprogramming

    4 Standard Library Reference

    5 Racket Interoperability

    6 GUI Guide

    Index