jiangyedong 5 years ago
parent fd0df5bb73
commit ed9b836727

@ -0,0 +1 @@
改错比较简单,注意按值传递的不可修改即可。

@ -0,0 +1,13 @@
lambda-packexpansion.cc来自http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0780r2.html。
当有对象在某lambda中被使用且无后续使用为了避免copy产生的开销最好move到闭包。c++14引入了初始化捕获完成闭包转移。但是这不支持含有省略号的参数对这种参数进行move时需要使用tuple。新增的特性使得初始化捕获支持这样的参数包。
lambda-partmurable.cc来自http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2034r0.pdf。
在捕获列表里可以自选mutable的变量更加灵活。
py-lambda-example.py是python的lambda表达式一些特性的例子。python中lambda表达式的形式为
lambda arguments_list: expression
其中expression是由argument_list中变量组成的一个表达式。python中的lambda可以作为函数的返回值也可以作为map等函数的参数并支持初始化。lambda表达式使python代码更紧凑但是一个lambda表达式只能有一个expression, 大大限制了它的能力。
cc-lambda-order.cc和py-lambda-order.py分别是c++与python规约策略的例子两者都是采用Applicative-order。

@ -0,0 +1,8 @@
interpreter.ml中描述了包含bool,int两个类型的系统的类型检查以及求值。
Type描述类型种类Term描述项。
共有Z描述0S tt的后继TrueFalseIf(t1t2t3)if t1 then t2 else t3)Iszero t六种。
Typecheck用来检测一项的类型如果没有类型匹配则返回None。
S要求t是Int类型该项归为IntIf要求t1是Bool类型且t2与t3类型相同归为t2的类型Iszero要求t是Int类型归为Bool。
value总共有四种情况零Z、后继S、True和False。eval函数将项归约成值假设该项良类型
本项目中interpreter.ml是加入Num类型的代码。

@ -1,11 +1,3 @@
1.
小组成员:姜也东 陈泓霖 Nina
2.
3.interpreter.ml中描述了包含bool,int两个类型的系统的类型检查以及求值。
Type描述类型种类Term描述项的规则
共有Z描述0S tTrueFalseIf(t1t2t3)(表示if t1 then t2 else t3)Iszero t六种。
Typecheck用来检测一项的类型如果没有类型匹配则返回None。
S要求t是Int类型该项归为IntIf要求t1是Bool类型且t2与t3类型相同归为t2的类型Iszero要求t是Int类型归为Bool。
value总共有四种情况零Z、任意非零整数S、True和False。eval函数将项归约成值假设该项良类型
本项目中interpreter.ml是加入Num类型的代码,通过bash ./tst.sh可执行。
这是GW1的主文件夹各小题的代码与说明在对应的子文件夹中。

Loading…
Cancel
Save