如何利用上下文来控制符号的语义

经过这一段时间对概念文字,递归函数,lambda演算和组合子逻辑的研究,我发现了一种新的表示方法,这种表示法,可以通过生成上下文,来控制符号的含义,这个基本的思想可以追溯到哲学对于概念的思考,我们的文字和自然语言,都具有上下文,用一个符号指代在上文中出现的概念,那么这个符号本身就是上下文相关的,在编程语言中,因为符号无法被重用,会导致冲突,但是,我注意到有一些编程语言,比如著名的APL和J语言,具有上下文,它使用了隐式符号,来避免了这种冲突,但是我在研究smalltalk的时候,也发现它具有生成新对象的语义,这个新的对象,不就是一个语义嘛,当我想到这里的时候,顿时觉得,用函数生成具有新的上下文的函数,不就是一个新的对象,一个新的概念,而且我们可以使用范畴来控制它的语义,也就是集合的运算,来指定符号的范围,这样可以大大减少新符号的使用,而且,我们的语义更加精确,因为集合的明确抽象,可以避免模糊的语义,一切函数都可以进行集合推断,从而判断它的类型,这不就是最基本的逻辑推理吗?要么定义范围,要么定义内涵。而且可以运用某些测试函数来自动推理范围,这个我还在研究当中。下面给出一个人类推理的过程。

一类物体的大量现象 => 一般的类 => 根据某些性质判断类型 => 得出普遍的性质。

《九章算术》也写道:“事有相推,各有攸归,故枝条虽分而本干知,发其一端而已”。

这里面涉及到充分条件,必要条件的确定,我们就不细说了,但是这个过程无疑是对的。
我们的编程语言具有这样的能力,首先,我们可以生成新的上下文。
1+ 1 = 2
1 + 1 = 1+ 1 = 2
//注意,这里的1 + 1后面两个字符表示“加1”,“1”这个概念和“+”这个概念生成了“加1”这个概念。
这样无限地递归下去。
true 1 2 = 1
false 1 2 = true 2 = 2
首先我们的true把第一个元素拿出来,false先生成一个true,然后直接取出来。
其他的具体就不描述了,下面直接上代码。

(define (array x)
  (define (gen-compare x c n)
    (if (null? x) '()
    (if (c (car x) n)
        (cons (car x) (gen-compare (cdr x) c n))
        (gen-compare (cdr x) c n))))
  (define (gen-add x add n res)
    (if (null? x)
    (if (null? n) (array (reverse res))
        (gen-add x add (cdr n) (cons (car n) res)))
    (gen-add (cdr x) add n (cons (car x) res))))
  (define (qst arr)
    (if (arr = null?) null-arr
    ((qst ((arr cdr) <= (arr car))) +
     ((array (list (arr car))) +
      (qst ((arr cdr) > (arr car)))))))
  
  (lambda (f . n)
    (cond
     ((compare > f) (array (gen-compare x f (car n))))
     ((eq? f +) (gen-add x + ((car n) =) '()))
     ((eq? f car) (car x))
     ((eq? f cdr) (array (cdr x)))
     ((eq? f sort) (qst (array x)))
     ((eq? f =)
      (if (null? n)
      x
      (if (eq? (car n) null?)
          (null? x))))
    (else 'err))))
(define c (array '(1 3 5 7 9)))
(define d (array '(2 4 6 8 10)))
(define f (array '(1 7 8 2 4)))
((c > 2) =)
((c + d) =)
((c + (d + (d + c))) =)
(define null-arr (array '()))

(c = null?)
((f sort) =)
(null-arr =)
(null-arr = null?)


(define (set x)
  (define (belong-to? x n)
    (if (null? x) #f
    (if (eq? (if (procedure? n) (eval (car x) user-initial-environment) (car x)) n) #t
        (belong-to? (cdr x) n))))
  (define (add-set all self n res)
    (if (null? (self =))
    (if (null? (n =)) (set (((array res) sort) =))
        (add-set all self (n cdr)
             (if (all < (n car)) (cons (n car) res) res) ))
    (add-set all (self cdr) n (cons (self car) res))))
  (define (include? self n)
    (if (null? (n =)) #t 
    (if (self < (n car)) #f
        (include? self (n cdr)))))
  (define self
    (lambda (f . n)
      (cond
       ((eq? f +) (add-set self self (car n) '()))
       ((eq? f >) (belong-to? x (car n)))
       ((eq? f <) (not (belong-to? x (car n))))
       ((eq? f >=) (include? self (car n)))
       ((eq? f <=) (not (include? self (car n))))
       ((eq? f =) x)
       ((eq? f car) (car x))
       ((eq? f cdr) (set (cdr x) ))
       (else 'err))))
  self)
(define a (set '(1 2 3)))

(a >= (set '(1 4)))

((a + (set '(2 3 4))) =)

(((set '(1 2 3 6 9 10)) + (set '(2 5 10 13 27))) =)

(a > 1)
(a < 4)
(define compare (set '(> < <= >=)))
(compare > <=)

这里分别定义了两个类,一个是array类,一个是set类,它们虽然具有很多完全相同的符号,但是因为函数生成了新的语义,也就是新的函数和上下文,所以它们根本不会冲突,这样的编写方式非常优雅。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容