更改
跳到导航
跳到搜索
←上一编辑
下一编辑→
可线索化算术表达式
(查看源代码)
2025年1月16日 (四) 13:01的版本
添加1,473字节
、
2025年1月16日 (四) 13:01
无编辑摘要
第2行:
第2行:
[[文件:Left right threadable expression.png|缩略图|可线索化表达式]]
[[文件:Left right threadable expression.png|缩略图|可线索化表达式]]
+
+
==柯里化与路径表示法==
+
+
在函数式编程里,[[柯里化]]是一个基本的编程技巧,它把一个有多个参数的函数变成一串单参数的函数调用。我们对可线索化算术表达式可以应用这个技巧,由此得到如下的路径表示法。首先引入基本的操作数和操作子:
+
+
* 起始操作数: 语法树最左叶节点
+
* 加法操作子: <math>\oplus_y: x \mapsto x + y</math>
+
* 减法操作子: <math>\ominus_y: x \mapsto x - y</math>
+
* 乘法操作子: <math>\otimes_y: x \mapsto x \cdot e^y</math>
+
* 除法操作子: <math>\oslash_y: x \mapsto x \cdot e^{-y}</math>
+
+
例如 <math>(((((1 \times 2) \times 2) + 1) \times 3) + 6)</math> 可以被柯里化为 <math>\oplus_6(\otimes_{\ln 3}(\oplus_1(\otimes_{\ln 2}(\otimes_{\ln 2}(1)))))</math> 。
+
+
我们有一串操作子 <math>a_1, a_2, \cdots a_{n-1}, a_n</math>,我们引入如下'''路径表示法''':<math>x a_1 a_2 \cdots a_{n-1} a_n := a\_n( a_{n-1}( \cdots a_2( a_1(x) ) \cdots ) )</math>。
+
+
于是,上例可以用路径表示法表示为 <math>1 \otimes_{\ln 2} \otimes_{\ln 2} \oplus_1 \otimes_{\ln 3} \oplus_6 </math>。
+
+
容易证明,一条路径内部的各个操作子是满足[[结合律]]的;同时,对于两条路径,可以引入路径的拼接操作,解释为路径对应函数的复合。此时,同样可证结合律。由此,我们可以知道,一个路径的集合只要运算封闭,就有可能构成一个[[群胚]]。
Mingli
24
个编辑
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
集智百科
集智主页
集智斑图
集智学园
最近更改
所有页面
捐赠我们
帮助
工具
特殊页面
可打印版本