duangsuse::Echo
不过 Ins 要类型推导也毕竟麻烦,之前模拟的时候说了不支持 Union Type(一个符号可能是两个类型,比如 (define a (if weather_fine 1 #t)),这里全局符号 a 的类型是 (Number ^ Boolean) ^: XOR) 那么不支持 type union 也就是说一些函数启发式类型推导是不能用的(又是我乱想了...)...... 好吧是我瞎想了不支持就是不支持,x => if x { 1 } else { true } 本来类型就是应该推导为 (Integer ^…
https://www.jianshu.com/p/529b21edd418
看完了之后我发现我有些误解,类型检查不仅是为了
王垠比我懂得多,他说
如果这是一个union type的话,调用id(1)会报错,因为id的类型有可能是bool->bool,不能接受int的输入。调用id(True)也会报错,因为id的类型也有可能是int->int,不能接受bool的输入。所以就左右不是人。
其实如果彭飞仔细看那两个变量a和b的类型,就会发现这是intersection type,而不是union type。
看完了之后我发现我有些误解,类型检查不仅是为了
make program compiles 所做的工作,更是为了尽可能确保程序正确做的王垠比我懂得多,他说
^ 是“官方”的 「并集类型」intersection type 标记而 | 才是 Type union 的标记推导出的 int -> int | bool ->bool 表示的确实是一个intersection type,而不是union type。只不过我中间用的|记号跟union type一样,所以看起来比较混淆,然而内部实现确实是intersection type,而不是union type。我怀疑彭飞到底明不明白什么是intersection type。这个type表示这个函数(id)“同时”是int->int和bool->bool,而不是表示它“有时”是int->int,而另外的时候是bool->bool。所以如果你调用id(1),推导出的输出一定是int。如果你输入id(True),它推导出的一定是bool。
现在我把中间的分隔符改成了unicode字符∧,跟intersection type的论文上一样。我想这下他该满意了吧?也就是个表面现象而已。
def ambigous(x):
return x
a = ambigous(1)
b = ambigous(True)
如果这是一个union type的话,调用id(1)会报错,因为id的类型有可能是bool->bool,不能接受int的输入。调用id(True)也会报错,因为id的类型也有可能是int->int,不能接受bool的输入。所以就左右不是人。
其实如果彭飞仔细看那两个变量a和b的类型,就会发现这是intersection type,而不是union type。
简书
到底是谁在欺负我们读书少?
发表了之前的文章《我为什么不再做PL人》之后,我发现有人在知乎上发表文章诬蔑我。本来不想理知乎上的东西,但作者把各种刚从论文上学来的术语,似懂非懂,照本宣科列了一大堆,挺能唬...
duangsuse::Echo
不过 Ins 要类型推导也毕竟麻烦,之前模拟的时候说了不支持 Union Type(一个符号可能是两个类型,比如 (define a (if weather_fine 1 #t)),这里全局符号 a 的类型是 (Number ^ Boolean) ^: XOR) 那么不支持 type union 也就是说一些函数启发式类型推导是不能用的(又是我乱想了...)...... 好吧是我瞎想了不支持就是不支持,x => if x { 1 } else { true } 本来类型就是应该推导为 (Integer ^…
抱歉之前写错了... 我那行
其实是该写成
最后:Ins 的类型推导设置那么多规则甚至用更高级的算法有什么意义呢... 有什么意义呢... 如果常量折叠没有的话
f = x => if x { 1 } else { true } 本来类型就是应该推导为 (Integer ^ Boolean) 的其实是该写成
f 的 「返回类型」是 (Integer ^ Boolean) 或者说 f 的类型是(当然这点输入代码推导不出来它的类型,但假设这是我给它指出的类型) (Boolean -> {Integer | Boolean})
这里写错的 ^ (在你们看是对的,但其实只是歪打正着)被我误解成了是 Type Union 的标记...最后:Ins 的类型推导设置那么多规则甚至用更高级的算法有什么意义呢... 有什么意义呢... 如果常量折叠没有的话
final far safe bo = false; a = if bo { 1 } else { 1R } 这种类型推导还是得个垃圾吧https://www.jianshu.com/p/4149a394ef88 #cs #pl
其实,这个分数的意义远远不止是一个A+,它涵盖的内容可能超乎你的想象。也许你可以从一个很小的例子看出它到底意味着什么。
在课程进行到一半的时候,我花了一个星期的时间,独立解决了曾经困扰程序语言领域十多年的难题——CPS变换。在这十几年里面,有众多的世界级专家参与过这个问题的研究,包括非常强悍的丹麦Aarhus大学教授Olivier Danvy,Andrzej Filinski,Dan Friedman本人以及他的得意门生Matthias Felleisen,Felleisen的得意门生Amr Sabry,普林斯顿大学著名教授Andrew Appel(编译器教材“虎书”的作者)。这些人为这个话题发表了不知道多少论文,Appel还为此专门写了一本书。我之所以会去解决这个问题,是因为Friedman别出心裁,把这个问题作为了一道附加题目放进了B521的作业里。
我不知道这个问题有如此之难,所以愣头愣脑,真把它当成作业题给解决了。按照作业的“道德规范”,完全从问题出发,不看书不看论文不查网络,全凭自己的头脑,在一个星期之内得到了最优的结果。这就是所谓“王垠40行代码”的含义。一个人七天,一群人十年,我想你应该知道这是什么概念。
其实,这个分数的意义远远不止是一个A+,它涵盖的内容可能超乎你的想象。也许你可以从一个很小的例子看出它到底意味着什么。
在课程进行到一半的时候,我花了一个星期的时间,独立解决了曾经困扰程序语言领域十多年的难题——CPS变换。在这十几年里面,有众多的世界级专家参与过这个问题的研究,包括非常强悍的丹麦Aarhus大学教授Olivier Danvy,Andrzej Filinski,Dan Friedman本人以及他的得意门生Matthias Felleisen,Felleisen的得意门生Amr Sabry,普林斯顿大学著名教授Andrew Appel(编译器教材“虎书”的作者)。这些人为这个话题发表了不知道多少论文,Appel还为此专门写了一本书。我之所以会去解决这个问题,是因为Friedman别出心裁,把这个问题作为了一道附加题目放进了B521的作业里。
我不知道这个问题有如此之难,所以愣头愣脑,真把它当成作业题给解决了。按照作业的“道德规范”,完全从问题出发,不看书不看论文不查网络,全凭自己的头脑,在一个星期之内得到了最优的结果。这就是所谓“王垠40行代码”的含义。一个人七天,一群人十年,我想你应该知道这是什么概念。
简书
我为什么在乎这一个A+
我知道有些人至今仍然嘲笑和鄙视我,因为我曾经说过,我在Dan Friedman的两门课程B521(程序语言理论)和B621(高级程序语言理论)都得了A+。只要提到我,他们就会...
#recommended #zhihu
https://www.zhihu.com/question/42016079
我所看到的最佳回答:
其实垠神从来没有黑某个领域,没有黑某个语言,没有黑某个编程思想。
他从来黑的都是像对待宗教一样的盲目崇拜的态度,学者和各个公司里的各种欺世盗名。
他渺小时所崇拜的山峰一样偶像,在他爬上山顶后,轰然倒塌了,他觉得爬山不值,很懊恼。
https://www.zhihu.com/question/42016079
我所看到的最佳回答:
其实垠神从来没有黑某个领域,没有黑某个语言,没有黑某个编程思想。
他从来黑的都是像对待宗教一样的盲目崇拜的态度,学者和各个公司里的各种欺世盗名。
他渺小时所崇拜的山峰一样偶像,在他爬上山顶后,轰然倒塌了,他觉得爬山不值,很懊恼。
Zhihu
如何评价王垠新文章《我为什么不再做PL人》? - 知乎
有问题,上知乎。知乎是中文互联网知名知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。
Forwarded from duangsuse Throws
Forwarded from duangsuse Throws
现在想想当时我在 #GeekApk 时所做的设计... 真是令人头疼,因为实在是太多设计版本了...
我都不知道如果要去修订它、或者说从上面汲取灵感应该从哪里开始...
我都不知道如果要去修订它、或者说从上面汲取灵感应该从哪里开始...
Forwarded from duangsuse Throws
现在
popf.rip 这个域名好像也到期了,VPS 也没钱了,所以 GitApk 做出之前我留下一个快照就 destory 了
duangsuse Throws
Photo
所说的就是第二张「GeekApkSpecShort」,因为当初在 GeekApk 时留下的设计太多了... 真的、真的搞不明白我到底在设计个啥玩意... 版本、分支都太多了... 不知道哪个是真的 哪些特性应该保留 哪些特性应该去掉
#GitHub 上用的 #javascript PDF 渲染器好像有内存泄漏问题... 处理大文件的时候直觉导致我电脑死机四次,我足足按了 3 次 alt+sysrq+i 终止所有程序最后还重启了一次...
我准备先花 20 分钟左右开发个在 Android 上自动启用 USB Tethering (USB 绑定网络)的应用
然后把 METO 的 sm.ms 图床接口代码发上来快速分享给大家
然后补充一下 Gekyll 的设计,有时间时写
然后给 InScript 添加新特性,假期结束前出总文档
👆...
然后把 METO 的 sm.ms 图床接口代码发上来快速分享给大家
然后补充一下 Gekyll 的设计,有时间时写
然后给 InScript 添加新特性,假期结束前出总文档
👆...
duangsuse::Echo
我准备先花 20 分钟左右开发个在 Android 上自动启用 USB Tethering (USB 绑定网络)的应用 然后把 METO 的 sm.ms 图床接口代码发上来快速分享给大家 然后补充一下 Gekyll 的设计,有时间时写 然后给 InScript 添加新特性,假期结束前出总文档 👆...
#METO 的代码(顺便一提,项目包装得很漂亮)分享给大家,为了节省在这里篇幅感谢 is_a? 频道(包含代码原文这样就可以使用链接引用了)
https://github.com/metowolf/smms-cli/tree/master/lib #javascript #es6 #async #cli #tools #project #recommended
API 客户端
CLI 工具
https://github.com/metowolf/smms-cli/tree/master/lib #javascript #es6 #async #cli #tools #project #recommended
API 客户端
CLI 工具
GitHub
metowolf/smms-cli
Upload images to sm.ms. Contribute to metowolf/smms-cli development by creating an account on GitHub.
#INFO #tech 虽然是个人频道,duangsuse::Echo 也打算像 @RachelNotice 那样添加一些熟悉的朋友们可以在有意见的时候做点评论。(因为是技术向的频道呢)
当然由于本频道技术成分比较多,都是干货(删除)所以可能不容易评论的。但还是欢迎朋友们积极评论。
我将给予这些人以写权限:
如果因为各种原因无法授予写权限就算了
当然由于本频道技术成分比较多,都是干货(删除)所以可能不容易评论的。但还是欢迎朋友们积极评论。
我将给予这些人以写权限:
- @kruintian (Elepover)这些是我貌似有点熟悉的帐号,所以首先添加作为管理员,如果想评论的话,尤其是技术 dalao(跑)也欢迎告诉我加入写权限们
- @LetITFly
- @SitandRelax (座和放宽)
- @zhy0919 (losfair, aka xor)
- @Rachel030219 (Rachel)
- @YuutaW (Yuuta, aka Trumeet)
- @metowolf (METO)
- @lwl12 (LWL12)
- @RainSlide
如果因为各种原因无法授予写权限就算了