new "define" in assembly code
---------------------------------
1. be able to handle empty function-body
2. add "define-verb" as "define-function"
   but "define-noun" is different from "define"
3. 在 尝试以 统一的方式 处理 define 时遇到了困难
   即 当 define 看到 <pair-like> 的量时
   就应该 执行 try,white->grey
   而我不可能把 所依赖的所有的函数都转移到 汇编代码中
   这个问题 有三个解法:
   1) 用别的语言写一个 cicada 代码 到 汇编代码的编译器
      - 优点是 :: 整个代码都可以互相调用了
      - 缺点是 :: 要处理命名规则
                  还有 其他的 可能存在的 跟汇编代码中 symbol 的冲突
   2) 在 cicada 的 runtime 即 basic-REPL 中实现 编译语义的性质
      即等待 未定义的 变量和函数
      这样 "define" 在 cicada 代码中的位置就无所谓了
      - 优点是 :: 没有对其他语言的依赖
                  并且这个性状是早晚都要实现的
      - 缺点是 :: 并不是全部的代码都可以相互调用
   3) 我将 需要 在 cicada 代码中重新定义 几次 "define"
      first version of "define" will do no error handling
4. 我选择第三个解法
5. 在解释器的开始 我必须有 define-verb 能够使用
   并且 首先需要定义的函数就是 define
6. 如果在 开始 就希望 runtime 中形成编译语义
   我就必须把 对类型系统的处理 还有 hash-table 都转移到 汇编代码当中
   这样在 用 cicada 代码 来实现的就只是
   gc 还有 list-processing 还有 lambda-calculus 了
7. 把越来越多的函数转移到 汇编代码中让我感觉很不好
   但是 现在的 runtime 更加复杂了
   而 在有 能编译自身 的编译器出现之前
   我必须把 runtime 所需要的函数都放到 汇编代码中
8. 但是 底线是
   gc 还有 list-processing 还有 lambda-calculus 应该 用 cicada 来写
---------------------------------
1. 通过 引入 address 这个语法关键词
   我就可以统一 define 的使用了
   将 只有 单一的 define 没有别的 东西了
2. 新的 define 还有一个问题是
   每个名词 可以给出 几个值到 Argument-stack
   是不确定的
   这是可以接受的
   就像是 对函数的注释 一样
   只要给 对名词的定义 相应的注释就行了
   并且 之后 还可以用 设计良好的 文本 编辑器 来解决这个问题
3. 每个 名词 都有固定个数的 Cell
   define-constant-string 也将没消除了
   也就是说 在汇编代码中 也需要使用 具有可变长度的 名词
   也就是说 相关的 macro 应该被重写了
   我正好可以改一下 macro 的命名
----------------------------------