On this page:
1.1 Lisp and its parenthsis
1.2 Ideogram
1.3 Chineseoid characters
1.4 Character implications
8.15

1 Rationale🔗

ref to: http://www.yanying.wang/SOICOL

1.1 Lisp and its parenthsis🔗

Lisp, as an ancient programming language, when I was learning it with inherent ideas from modern programming languages such as Ruby, I noticed there are a few distinctions. Among these, The most prominent one is the form.

LISP is highly flat in forms, all are parenthesis. On the contrary, most modern PLs adhere to use different forms for different operations:

Operation

Ruby code

Racket code

number addition

1+2+3

(+ 1 2 3)

create array

[1, 2, 3]

(vector 1 2 3)

create hash

{a: 1, b: 2, c: 3}

(hash 'a 1 'b 2)

create array of a range of numbers

Array(1..5)

(build-list 5 values)

create array of duplication elements

Array.new(3, 1)

(make-list 3 1)

By the examples above, we can see in Ruby, different operations are wrote in distinctive forms, but in Racket they are in same form: elements in one parenthesis. This each other resembled form of LISP impedes people differentiate them on a glimpse, therefore, the meaning of operations are more blamed on the function names(first word of elements in parenthesis).

In conclusion, the function names of LISP take more responsibilities to annotate various operations than modern PLs. The more informations that function names convey to us, the better we can distinguish them and understand the purpose and usage of them.

1.2 Ideogram🔗

Following my theory above, we need to break down concepts of current programming languages to atomic components, with those components we build up all the ideogram characters and words for all the function names. (Upon which, we may possibly and hopefully turn bunch of code to sentences in the future.)

To this date since what has been broadly used ideogram is Chinese character, I intentionally design Ming’s ideographs with Chinese characters flavour. This is also the reason that most Chinese speakers find them seeming familar but not recognizable.

Because I also intentionally originate Chinese ideograms to an ancient time, reserve the ideographic components and leave out the phonetic components(hopefully in the future I can make English words used as phonetic components but not suggest sound here espectially borrow its meaning in Ming), thus to be redeveloped and adapted for PL concepts, as well as redesign them be easily learned for international users.

1.3 Chineseoid characters🔗

Compare to English, of which the writing is based on the pronounciation of speaking, Chinese contrarily emphasize its writing more than speaking, which has actually developed a way to write related objects and concepts, we call it LiuShu(六书).

With the fact that chinese characters are just the implementation of using LiuShu for the communication of human, what I am doing here is using it to invent and design lots of chinese resembled characters, where we draw the phrase chineseoid character, which is ideogram and especially called zi, means looking like chinese characters but can not be recognized by most Chinese people.

At last, we use those characters instead of common English words for the concepts of Lisp and even the whole programming language world to make human interact better with it.

Ming code

Racket code

( 'a 'b)

(cons 'a 'b)

(􏿴 'a 'b 'c 'd)

(list 'a 'b 'c 'd)

(􏿝 '(1) '(2) '(3 4) '(5 6))

(append '(1) '(2) '(3 4) '(5 6))

(􏿜 '(1) '(2) '(3 4) '((5 6)))

(append* '(1) '(2) '(3 4) '((5 6)))

(􏼓 6 'foo)

(make-list 6 'foo)

(􏼎 10 )

(build-list 10 values)

( '(a b c d e c f) 'c)

(index-of '(a b c d e c f) 'c)

(􏼏 10)

(range 10)

(􏻿 'a 'b 'c 'd)

(vector 'a 'b 'c 'd)

(􏿰 'a 'b 'c 'd)

(hash 'a 'b 'c 'd)

As chart shown above, the keywords of Ming are much short in length, and in forms the complex characters are usually constituted by other simpler characters, and those simpler characters are usually used for related function names as well.

Further more, the connotations behind the characters work the same way, they are related to each other and complex concepts are broke to simple concepts as well.

Most importantly, the chineseoid characters implemented here also have the ability to imply to human about the arguments and results of functions, check Naming Rules for more.

1.4 Character implications🔗

Since the chineseoid chracters are much complicated than general western characters, there are few terminologies we need to know in advance: radical, component, part(check the wiktionary page for details).

Simply put it, phrase is composed by more than one characters, character is composed by more than on parts. For the parts of an specific character, only one of them can be counted as radical, which usually is another standalone character that provides the basic meaning for the specific character, and the other one can be counted as component, which usually implies the difference(type of input, type of output, etc.) between the meaning of radical and the specific character.

Take example of the procedure , this character is composed of two parts: as component and as radical. By composition, we can deduce that this procedure has a similar usage as since it is the radical. And the additionally means the type of output data is list(read Naming Rules for more).