用巨蟒写的教堂编码,

church_encoding的Python项目详细描述


#python中的教堂编码

这个练习是以一种更为复杂的方式演示和玩弄教堂编码,并且作为我获得python和它的类型系统经验的一种方式。

教堂编码是由已故著名的阿隆佐教堂开发的。church可能最著名的发明是lambda微积分,这是一种引入lambasanonymous函数概念的数学形式分支。你可能以前在编程时用过它们。

church编码是由lambda演算产生的一个非常有趣的开发。church发现编程语言中的每个概念都可以用函数来表示!从布尔逻辑,条件语句,数字(自然,整数,实,复,虚),甚至循环(无限循环也)!

最有趣的是,数字在数学上没有什么特别之处,它们只是方便的占位符。数学其实只是最纯粹形式的逻辑。

到目前为止,我已经翻译了church布尔、church布尔运算符、church条件、church比较运算符、church数字(自然数)、church算术运算符(自然数)、church列表、church整数、带有z-组合符的循环和church算术运算符(整数)减去指数和阶乘。操作员。

在[pypi]上查看包(http://pypi.python.org/pypi/church_encoding/)

##z组合器

在不实现延迟计算或按名称调用的常规形式的编程语言中,使用z组合器代替y组合器。有关详细信息,请参见[定点组合器](https://en.wikipedia.org/wiki/Fixed-point_combinator)wiki。

##条件

一些lambda函数的转换涉及使用常规if/then语句而不是ifelselamdba函数。我怀疑这可能又是一个类似于z组合子的限制,在z组合子中,求值顺序在能够最真实地使用lambdas中起着作用。总有一天我会找到办法让它工作的。

##安装

  • 使用pip安装。
    pip install --user church_encoding
  • 导入教堂模块。
    python>>> import church_encoding.church as church
  • 使用这些功能。
    >>> dir(church)>>> (church.unchurch_bool) ((church.AND) (church.true) (church.false))False

下面是命令的完整列表:

布尔真/假:truefalseunchurch_bool

布尔运算符:ANDNOTORXOR

z-组合体:Z

条件:ifelse

自然数:zeroonetwothreenumunchurch_num

整数:convertNZunchurch_int

比较运算符(自然数):^{TT24}$,^{TT25}$,^{TT26}$,^{TT27}$,^{TT28}$

算术运算符(自然数):^{TT29}$,^{TT30}$,^{TT31}$,^{TT32}$,^{TT33}$,^{TT34}$,^{TT35}$,^{TT36}$,^{TT37}$,^{TT38}$/p>

算术运算符(整数):^{TT39}$,^{TT40}$,^{TT41}$,^{TT42}$,^{TT43}$,^{TT44}$

列表:carcdrcons

有关用法示例,请参见[测试套件](https://github.com/Risto-Stevcev/python-church-encodings/blob/master/church_encoding/test/church_test.py

##学分

我想在到期的地方赊账:

最后,教会自己,因为他是个坏蛋!

啊![阿隆佐教堂](https://upload.wikimedia.org/wikipedia/en/a/a6/Alonzo_Church.jpg) 阿隆佐教堂

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何避免springbootstarterparent和dependency中的flyway包冲突   java文本文件写入不起作用   java获取名为DAO类的Bean创建异常   java类路径和清单文件   如何使用Java中的模式来获取像C中的“sscanf”这样的组?   java Spring自动连接具有构造函数的类   clientSecurity运行的java geode示例失败   java JavaFX:在FXML中从ResourceBundle访问非string对象   java登录到google firebase   java对象在通过构造函数后不会更改。为什么?   java(Android)对特定页面的操作webView   javascript如何在webview的js中从java调用变量   持久化—一种在Java中存储和检索对象而不使用关系数据库的简单方法?   java Ldap获取通讯组列表中的用户   java检查温度条件   java后退按钮警报框(Android Studio)   数组java列表问题:为什么我运行它时,它会在第三次打印时打印出4?   java相对路径与绝对路径