00:12:47 Pengcheng Xu: amd 垃圾 00:12:51 Pengcheng Xu: 啥卡啊 00:24:40 Shengqi Chen: T y p e E r r o r 00:26:45 Paul Zhu: Java其实也有类型上界的约束 00:27:13 Pengcheng Xu: 00:27:47 Shengqi Chen: 都不协变,不好用( 00:27:51 Fan Dang: copy是什么 00:28:00 Pengcheng Xu: trivially copyable 00:28:00 Paul Zhu: [+A] 00:28:01 Shengqi Chen: Copy 就是可以复制 00:28:09 Pengcheng Xu: Clone 是 deep copy 00:28:19 Fan Dang: 你们rust还区分能不能复制么 00:28:27 Fan Dang: (怎么这么Clojure 00:28:30 wrc: 可以用 mem::swap( 00:28:32 Shengqi Chen: 那显然有东西不能copy 00:28:42 Ao Shen 2017012518: C++不也一样区分( 00:28:44 Pengcheng Xu: 主要是不知道怎麽 copy 00:29:00 Fan Dang: 我不会C++( 00:29:01 喵喵: 诶Copy里面不就是clone嘛( 00:29:11 Shengqi Chen: copy是自动clone的意思吧? 00:29:18 喵喵: 橙tql! 00:29:26 Fan Dang: 橙tql 00:29:29 Ao Shen 2017012518: 🍊tql 00:29:33 Jiajie Chen: Clone表示可以复制 00:29:40 Jiajie Chen: Copy表示可以按字节复制进行复制 00:29:45 Shengqi Chen: 诶 00:29:47 Jiajie Chen: Copy的时候可以忽略.clone 00:29:56 Paul Zhu: 所以 Copy <: Clone? 00:30:02 Fan Dang: 哦,那不Clojure了( 00:30:07 Pengcheng Xu: 對吧 00:30:22 Pengcheng Xu: 有的東西 memcpy 不 make sense 00:30:26 Pengcheng Xu: 就 !Copy 00:30:29 Pengcheng Xu: 例如 Rc 00:32:53 Paul Zhu: 但是 .NET 还是存得有类型,不像 JVM 都是 Object 00:33:07 Pengcheng Xu: 所以 java 的 generic 是 syntactic sugar? 00:33:18 12101111: rust的Box也是装箱 00:33:27 Paul Zhu: 反正 JVM 已经不知道任何类型的东西了 00:33:44 Paul Zhu: JVM 只有基本类型和Object 00:33:46 Jiajie Chen: java只检查类型,运行时就是Object 00:33:53 Sakura: 可以知道 要反射获取类型T 00:34:08 Fan Dang: 杰哥你的jvm不写了么( 00:34:16 Paul Zhu: JieVM? 00:34:29 Shengqi Chen: JVM的泛型擦除类型是legacy 00:34:34 Shengqi Chen: 导致一大堆语言都跟着特别难用 00:35:02 Shengqi Chen: Kotlin 有个 reified 00:35:09 Shengqi Chen: 看起来还好用( 00:35:57 Fan Dang: 居然是哈利的声音( 00:36:56 Paul Zhu: cast T 连Java都可以吧。。。 00:37:05 Sakura: 可以知道T 00:37:08 Paul Zhu: 运行时反射强转 00:37:11 Sakura: 需要反射获取 00:37:32 Paul Zhu: 桌面很有趣 00:37:37 Nighthawk: 有趣 00:38:01 洛舒: 好模糊啊 00:38:17 Paul Zhu: 是不是设置有问题? 00:38:20 洛舒: 跟网络状况有关系吧 00:38:27 洛舒: 现在好多了 00:38:57 洛舒: 就这样叭。。 00:39:13 徐浩然: 桌面一闪一闪 00:39:46 Fan Dang: reified是咋实现的? 00:40:13 Paul Zhu: 也许直接Share Screen会好一点 00:40:48 洛舒: Pin住就行了 00:40:58 Paul Zhu: 对,Pin video 00:41:05 OPPO: 我聋了? 00:42:27 洛舒: 我这边没问题。。 00:42:36 su root阿德烈: 没问题 00:42:58 洛舒: 正常 00:43:06 Fan Dang: ok 00:43:47 Zhehao Li: 请问一下刚才网站的网址是? 00:43:55 Paul Zhu: jshell> class A { public void foo(Object o) { T t = (T) o; } } | Warning: | unchecked cast | required: T | found: java.lang.Object | class A { public void foo(Object o) { T t = (T) o; } } | ^ | created class A 00:44:06 Paul Zhu: 是可以compile的呢 00:44:16 Shengqi Chen: 我是说不能 new T() 00:44:20 Shengqi Chen: 这个确实是我记错了( 00:44:41 Paul Zhu: 好吧。。。new肯定就很麻烦了 00:45:40 Paul Zhu: “Code as first-class object” 00:45:55 Pengcheng Xu: L I S P 00:46:06 Paul Zhu: Haskell 的 deriving 00:49:00 Shengqi Chen: 那个operator<-是啥 00:49:13 Pengcheng Xu: pro'mise 00:49:14 Sakura: https://github.com/ThoughtWorksInc/each 00:49:20 Pengcheng Xu: 這讀音好迷 00:49:21 Paul Zhu: <- 就是语法糖 00:49:26 Sakura: 这时候就要推销each了(x 00:49:44 Paul Zhu: for 就是 flatMap, map 00:49:56 Paul Zhu: withFilter (如果有 if) 00:50:00 Fan Dang: Scala香啊 00:51:09 Paul Zhu: 魔改编译器还是ruby最厉害 00:51:17 Shengqi Chen: ruby有定过分了( 00:52:08 Fan Dang: linq是咋搞的 00:52:18 Paul Zhu: 估计也是语法糖吧 00:52:37 Paul Zhu: 我还记得C#的 map 叫做 Select 00:52:42 Paul Zhu: 简直搞笑 00:52:54 Paul Zhu: Lin-Q 00:53:03 su root阿德烈: emmm 00:53:14 Fan Dang: 唔 00:55:04 Pengcheng Xu: FnMut? 00:55:06 Pengcheng Xu: 之類的 00:59:55 Fan Dang: json的序列化不是编译时做的么? 01:01:39 Paul Zhu: 手写语法树 01:02:39 Paul Zhu: DrRacket 01:02:51 Pengcheng Xu: Scheme 家祖 01:03:07 Paul Zhu: Scheme是不是SICP里面用的? 01:03:17 洛舒: 人人都读sicp 01:03:20 Pengcheng Xu: 對 01:03:25 Paul Zhu: 还有 typed Racket 01:03:32 Paul Zhu: 虽然语法很丑陋 01:03:32 洛舒: MIT计算机基础课hhh 01:03:38 Ao Shen 2017012518: sicp scheme 用的是 mit 自产的解释器来着吧( 01:03:47 Sakura: 人人都读sicp 01:04:14 洛舒: 最开始就是用来做AI的 01:04:27 su root阿德烈: 听清华上课我飘了🤭 01:04:44 Jiajie Chen: 并不是上课 01:05:01 Paul Zhu: 拿龙书来垫更好 01:05:01 Ao Shen 2017012518: sicp-in-elisp 最好了( 01:05:22 兴国 罕: guile-emacs 最好 01:05:42 洛舒: 太真实了吧 01:05:52 Paul Zhu: GC这么多? 01:06:23 洛舒: 有点糊 01:08:16 Paul Zhu: 快速入门 01:09:35 Paul Zhu: LISP宗教 01:10:58 Pengcheng Xu: 宏裡跑東西,一鍵 surprise 01:11:15 Paul Zhu: debug macros! 01:12:02 Xh: quote 01:12:23 Paul Zhu: 好像就是literal的一种语法 01:12:49 Pengcheng Xu: '(3 4) === (quote 3 4) 01:13:08 Pengcheng Xu: caddadr 01:15:19 Pengcheng Xu: tips: [] 和 () 是一樣的 01:18:18 Pengcheng Xu: stringify!(..) 01:19:30 洛舒: 问题不大 01:19:31 Xh: 能 01:19:37 徐浩然: ok 01:19:50 Paul Zhu: 越dirty 才越 meta( 01:21:49 su root阿德烈: 这个我总算听得懂了 01:22:03 Paul Zhu: 据说 C++ template 可以做证明 01:22:25 Paul Zhu: 某问答平台常见 01:23:07 Ao Shen 2017012518: 可读写text段运行时修改程序( 01:23:24 Paul Zhu: 内联汇编 01:23:36 洛舒: 直接写IR了吧这是 01:23:41 Paul Zhu: 对啊 01:23:46 Paul Zhu: IR就是JVM的asm 01:24:24 Pengcheng Xu: 坑 01:25:04 Paul Zhu: 你们rs到处都是! 01:25:25 Pengcheng Xu: declarative macro 很容易 parser 錯誤…… 01:25:38 Pengcheng Xu: 移進規約衝突 01:25:39 Pengcheng Xu: 氣死 01:25:45 Shengqi Chen: reduce shift error 01:25:46 Shengqi Chen: 好! 01:25:57 Pengcheng Xu: 還特別難排查 01:25:58 Paul Zhu: Lex/Yacc 01:26:14 Qi-An Fu: 所以 rust 的 parser 的能力是啥( 01:26:20 洛舒: 按王垠的说法Rust可真的是恼人。。 01:26:26 Pengcheng Xu: GLR? 01:26:33 Pengcheng Xu: 不過 01:26:36 Paul Zhu: wangyin 是娱乐圈的 01:26:47 Paul Zhu: 他的很多看法仅供参考 01:26:53 Pengcheng Xu: 有 proc macro 之後不能用普通的 parser 的能力去評價了 01:27:01 Qi-An Fu: 是 01:27:14 Shengqi Chen: 能力就是无穷的吧 01:27:23 Shengqi Chen: macro body 干的事情就是编译器的能力 01:27:37 Pengcheng Xu: Compiler: 老子不再是 termination 保證的了 01:27:55 Qi-An Fu: 可以在 macro body 里把代码发送给杰哥( 01:27:57 Ao Shen 2017012518: 一切皆可图灵完备 01:27:57 Paul Zhu: Scala编译器不用元编程就已经不终止了呢 01:28:15 Pengcheng Xu: 原來的 Rust 應該是可終止的 01:28:21 洛舒: Vsc插件太多了吧。。启动慢的话 01:28:28 Ao Shen 2017012518: 那还不是贵 scala 类型系统太复杂( 01:28:33 徐浩然: 很糊 01:28:33 Qi-An Fu: 太糊了 01:28:34 洛舒: 放大一些吧。。 01:28:37 Paul Zhu: 不过Mac上VSCode还算很快 01:28:40 Ao Shen 2017012518: 用emacs吧( 01:28:53 Qi-An Fu: 我这边 download 19.KBps 01:28:57 洛舒: 这个要脑内超分辨率算法了 01:28:59 Qi-An Fu: 码率感人 01:29:01 Fan Dang: 直接共享桌面吧 01:29:13 Paxos: 压缩严重 01:29:21 Ao Shen 2017012518: https://live.bilibili.com/8549438 b站流似乎不糊( 01:29:25 Paul Zhu: 应该是可以一边共享桌面 01:29:30 Paul Zhu: 一边obs吧。。。 01:29:54 洛舒: B站就不好交流了啊 01:29:56 千千: 2333 01:30:00 徐浩然: 哇,重见光明 01:30:05 Ao Shen 2017012518: 刚才一直分屏开着b站( 01:30:10 Paul Zhu: B站只能danmuku 01:30:14 洛舒: 治好了眼疾 01:31:57 Pengcheng Xu: proc macro 已經兩年多了嗎…… 01:32:04 Paul Zhu: 发现有个Git插件 01:32:16 Paul Zhu: 它会显示每一行的commit info 01:34:46 Shengqi Chen: 跑路了,大家玩得开心~ 01:36:32 Paul Zhu: (这个Metals一直在下载。。。 01:41:00 Qi-An Fu: 啊 rust 支持偏特化了嘛(stable 01:42:38 Pengcheng Xu: 可以的吧,寫 impl A for B ? 01:44:15 Qi-An Fu: 这里有 overlap 吗 01:44:32 Paul Zhu: Talk学习法:开课之前现学 01:44:44 Qi-An Fu: 好像没有 overlap(那我问得问题不太相关 01:46:26 Paul Zhu: “偏特化”就是curried的意思? 01:47:36 Pengcheng Xu: 不是吧 01:47:41 Qi-An Fu: 比如 impl A for B 和 impl A for B 应该用哪个(我貌似用错词了( 01:47:54 Pengcheng Xu: 他說的是 template partial specializatin 01:48:05 Qi-An Fu: 刚看到了一个 impl 和 impl 01:48:29 洛舒: Zoom是有毒,而且还不修 01:49:05 Pengcheng Xu: 哦 01:49:11 Pengcheng Xu: 他不支持 partial specialization 01:49:13 Pengcheng Xu: 會說衝突 01:49:22 Paul Zhu: 看起来还是Scala3还是比较科学。。。 01:49:27 Qi-An Fu: 那刚才那个不冲突嘛( 01:49:47 Sakura: 那个meat就是idea全线标红 01:49:49 Ao Shen 2017012518: 有 tex macro 恐怖嘛( 01:49:51 Sakura: meta 01:49:52 Qi-An Fu: 哦好像没问题 T: XX 暗含 T: XX + SIzed ? 01:49:56 Qi-An Fu: 不懂( 01:50:08 Paul Zhu: TeX 全文都是macro 01:50:12 Sakura: 然后还能编译过(x 01:51:04 Paul Zhu: Call-by-name? 01:51:33 Pengcheng Xu: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=0f60e58031bfcac96b0235f1d1347fd3 01:51:42 Pengcheng Xu: @qi an fu 01:52:36 Qi-An Fu: 那刚刚代码里面是咋编过的。。。。 01:52:42 Qi-An Fu: unstable? 01:52:45 Pengcheng Xu: 看錯了? 01:52:49 Qi-An Fu: 好吧 01:54:02 Qi-An Fu: 嗷看错了,impl for 后面的类型不一样 01:54:34 Sakura: sb tools名不虚传(x 01:54:37 洛舒: 慢慢讲,关系不大( 01:54:37 Ao Shen 2017012518: slow build tool 01:54:38 Paul Zhu: sbt就比VSCode还慢慢 01:54:50 su root阿德烈: 😂😂 01:55:16 Sakura: 建议使用haoyili的mill 01:55:32 Paul Zhu: liyaoyi不是喜欢macro吗 01:55:36 Paul Zhu: 写啥都是macro 01:56:08 Ao Shen 2017012518: 写啥都是 macro 还行 01:56:08 洛舒: 可 01:56:09 刘元庭: 能 01:56:12 徐浩然: ok 01:57:04 洛舒: 文件名好儒雅随和 01:57:42 Pengcheng Xu: sbt 可以 server 的吧 01:57:47 Pengcheng Xu: 起個 shell 02:05:22 Pengcheng Xu: 這個 $ 和 ' 好科學 02:06:58 Paul Zhu: 但是Martin觉得这个还不是最好的设计 02:07:08 Pengcheng Xu: dotty 是取締了 { } 了嗎…… 02:07:27 Paul Zhu: 可以layout 02:07:31 Pengcheng Xu: 變成 python 了 02:08:01 Paul Zhu: .+(1) 02:08:05 Paul Zhu: 非常Scala 02:09:32 Pengcheng Xu: 和 implicit Context 區別是啥 02:10:21 Qi-An Fu: dotty 还有 implicit 嘛( 02:10:29 Paul Zhu: typeclass 02:10:30 Paul Zhu: 大法 02:10:33 Pengcheng Xu: 噫 02:11:07 Paul Zhu: 但是我觉得implicit还是挺好的。。。 02:11:12 Pengcheng Xu: 是啊 02:11:13 Paul Zhu: 功能很强大 02:11:15 Pengcheng Xu: 也好用 02:11:33 Ao Shen 2017012518: 裙除我会 scala 02:11:45 Qi-An Fu: 群除我会 scala 02:11:57 Paul Zhu: implicit编译很慢,而且容易出错 02:12:05 Paul Zhu: 指的编译器出错 02:12:14 Pengcheng Xu: ICE 02:12:18 Pengcheng Xu: ? 02:12:37 Qi-An Fu: 我用 slick 的时候遇到过本来可以推出来的类型推不出来 02:12:52 Qi-An Fu: slick 里面据说非常黑? 02:13:02 Sakura: 当然是匹配AST啊 02:13:07 Sakura: 改写AST啊 02:13:13 Paul Zhu: parsing 02:13:19 Paul Zhu: 的库也许更容易写了 02:13:32 Pengcheng Xu: 正宮 Rust::syn 02:15:16 Paul Zhu: C++选手总想把所有结果在编译期计算出来QAQ 02:15:32 Sakura: C++的浪漫(x 02:15:44 Ao Shen 2017012518: 编译时间极大提升 02:15:50 洛舒: 人之常情,Rust也想在静态分析的时候解决几乎所有问题 02:16:07 Paul Zhu: 静态分析显然做不了所有的问题 02:16:11 洛舒: 是的( 02:16:21 Paul Zhu: (你需要Coq 02:16:31 Qi-An Fu: 哈利走了吧 02:16:35 Paul Zhu: 哈利不是跑路了? 02:16:52 洛舒: 过于真实 02:17:05 Ao Shen 2017012518: 忽然安静 02:17:08 Pengcheng Xu: 續老師是不是也 02:17:10 Pengcheng Xu: 跑路了 02:17:15 Qi-An Fu: 续老师也溜了? 02:17:32 Qi-An Fu: 因为我麦克风坏了 02:17:36 Ao Shen 2017012518: 普通话太差了(x 02:17:41 Sakura: 麦渣 02:21:32 Sakura: 咋不敢用 scala/bug 那么多issue scala还不是用的飞起 02:22:07 Sakura: https://github.com/scala/bug/issues 02:22:14 Sakura: 现在还open 1800+ 02:22:23 Ao Shen 2017012518: 能进行字符串操作和 eval 就能 meta( 02:25:10 Pengcheng Xu: Foundation 02:25:13 Pengcheng Xu: 突然 oc 02:26:19 Sakura: anltr4 02:26:26 Sakura: 再问就这玩意(x 02:29:35 洛舒: Rust真的好用吗 02:30:41 Qi-An Fu: HM type 比 C++ 舒服啊( 02:31:32 Sakura: 可以使用scala继承 C3线性算法啊 02:32:03 洛舒: 感谢分享 02:32:05 Sakura: c++还不是因为有布局要求 用不了嘛 02:32:09 Pengcheng Xu: 感謝 speaker 02:32:12 洛舒: 这个录像会放到哪里 02:32:30 Qi-An Fu: 你不是有 B 站嘛 02:32:40 洛舒: 看起来是云录像? 02:33:53 Sakura: 还有Python对于多重继承也是C3线性化 02:34:09 洛舒: 谢谢分享