庄周梦蝶

生活、程序、未来
   :: 首页 ::  ::  :: 聚合  :: 管理

scheme中文编程

Posted on 2009-03-20 23:27 dennis 阅读(3113) 评论(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.

只有注册用户登录后才能发表评论。


网站导航: