On this page:
1.1 Lisp and its parenthesis
1.2 Ideogram
1.3 Chineseoid character
1.4 Character implication
1.5 Character implication in word
8.16

1 Rationale🔗

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

1.1 Lisp and its parenthesis🔗

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 observation 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 character🔗

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 shorter 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.

1.4 Character implication🔗

Since the chineseoid chracters are more 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 seen 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,

  • as radical.

By above 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 General Ideographs for more)

1.5 Character implication in word🔗

Furthermore, word is composed by more than one characters. And there are also rules implemented on words. Take the basic one, also the example :
  • is actually shorts for 􏿴弔.

  • Then we have procedures like 􏻿弔 and 􏿰弔, etc.

  • Thus, 􏻿 and 􏿰 prefixed in actually change the type of processing object(consequently the data type of input and output). (􏻿PFX, 􏿰PFX)

Likewise, for the procedure of , from it we can deduce how the procedures 􏿰伄 or 􏻿伄 acts, it is just we haven’t implemented them yet.