莊周夢蝶

          生活、程序、未來
             :: 首頁 ::  ::  :: 聚合  :: 管理

          scheme中文編程

          Posted on 2009-03-20 23:27 dennis 閱讀(3122) 評論(8)  編輯  收藏 所屬分類: 動態語言計算機科學與基礎
              受javaeye上的《Ruby中文編程》啟發,帖子中有人提到如果if這樣的關鍵字都可以定義成中文,那就是真正的中文編程。那時我就想到,這個其實要在scheme中實現是多么簡單,將sicp書中的解釋器稍微修改下就可以了,只要修改解析的部分即可。解釋器的完整代碼放后面,我們先看看有趣的例子:
          (定義 你 '男)
          (當 ((是 你 '男) (打印 '男人是泥土做的))
              ((是 你 
          '女) (打印 '女人是水做的))
              (否則
                   (打印 
          '妖怪啊)))

              其實呢,“定義”等價于define,“當”等價于cond,“打印”等價于display,說穿了不值一提,只是有趣罷了。不過設想在某些效率不是攸關的場景嵌入這么一個scheme解釋器來定義DSL給業務人員使用,似乎也是不錯的主意。當然這里還是scheme的前綴表達式,再修改下就可以像自然語言那樣流暢,只不過括號還是少不了呀。

              再看幾個例子:
          (使得 ((a 3)
                 (b 
          2))
                 (
          + a b))

          (定義 成績 
          90)
          (如果 (
          > 成績 80)
                (打印 
          '良好)
                (打印 '要打PP了))
          ((函數(x) (* x x)) 3)  => 9

          (定義 (平方 x) (* x x))
          (平方 3)               =>9
             
              “使得”就是let,如果就是if,函數就是lambda。這不是中文編程嗎?也許可以考慮申請國家專項資金來扶持:D

              完整的解釋器代碼,在drscheme選擇R5RS標準下測試通過(代碼折疊,請展開):

          解釋器源碼


          評論

          # re: scheme中文編程  回復  更多評論   

          2009-03-21 12:44 by tri
          可見中文編程是一件多么愚蠢的事。
          干脆阿拉伯數字也別用,那是印度人發明的。
          干脆變量都用甲乙丙丁,干脆數學符號都改成“大于”、“乘以”

          # re: scheme中文編程  回復  更多評論   

          2009-03-21 19:03 by ttt
          感覺有點惡心

          # re: scheme中文編程[未登錄]  回復  更多評論   

          2009-03-29 13:38 by edwin
          能幫解決個 小問題嗎?用DRscheme 編段元代碼?
          若愿意的話,請發EMAIL通知我

          davidjondy@hotmail.com

          我將題發給你。。
          等待高手幫解決

          # re: scheme中文編程  回復  更多評論   

          2010-06-11 23:04 by guorui
          @tri
          不能太較真,只是好玩而已,別整那么嚴肅。

          # re: scheme中文編程  回復  更多評論   

          2011-11-14 23:53 by xion
          這個是一個很不錯的主意!!

          # re: scheme中文編程  回復  更多評論   

          2012-03-17 13:15 by coreBugZJ
          正在看 SICP,剛看到解釋器實現,學習了。

          # finance55525  回復  更多評論   

          2015-07-22 21:53 by You'll for certain do not have something to lose w
          You'll for certain do not have something to lose with Adiphene, thus for those that actually need to slim while not losing their time and power, then Adiphene is that the product for you. Perhaps the main reason behind this though is that you have developed a dependence on food. Glucomannan is among the most active hunger suppressants in Adiphene, and it works to suppress yearnings and help you handle your parts.

          # christmasvideogame7405  回復  更多評論   

          2015-10-11 22:46 by Hi! I just wish to offer you a huge thumbs up for
          Hi! I just wish to offer you a huge thumbs up for your excellent info you have got right here on this post. I'll be returning to your web site for more soon.
          主站蜘蛛池模板: 农安县| 陕西省| 华坪县| 巫山县| 云阳县| 革吉县| 宝兴县| 永靖县| 南安市| 祁东县| 兴宁市| 万源市| 苏州市| 霞浦县| 湘乡市| 海原县| 佛冈县| 思南县| 措美县| 巨野县| 昌图县| 大姚县| 建阳市| 清水河县| 宣化县| 尼勒克县| 辛集市| 嘉义县| 乌苏市| 威宁| 米易县| 嘉善县| 汝南县| 贵州省| 武平县| 旬阳县| 洞头县| 富顺县| 涟水县| 衢州市| 静海县|