如何了解到
MoonBit
,为什么对
MoonBit
感兴趣,希望在
MoonBit
做什么?
: ...
套近乎瞎聊时间:
MoonBit
的 option
语法糖,嵌套问题。
: 单纯语法糖,可以嵌套。
MoonBit
的 result
语法糖,为什么在左边的是 right。
: 习惯和口味问题,因为原来设计的是类似 rust 的 Result<T, E>
,所以保留了顺序。
MoonBit
的错误处理作为二等公民,与 rust 这样的将错误处理作为一等公民的方式有何不同,在程序分析中有什么分别?还特别问了一个问题:在 rust 中,某函数的每一个分支都事实上会返回 Ok(T)
,用什么方法能够确定这个函数其实应该返回 T
而不是 Result<T, _>
呢?
: (根本不懂,胡扯了一下什么生存分析,什么不动点)。
在 try catch 的方式中,抛出错误的点是明显的,方便程序分析。
在
Second State
做了什么工作?
: rust 库到 WASI 的移植。有时会通过 host function 的方式移植。
host function 是什么?
: 在 host 执行的 native 代码,...
对 WASM 的提案有哪些了解和想法,如果有机会有没有想提的提案。
: 提了一下 WASMGC 和 TCO。后面一个问题没回答。
对 WASMGC 的了解和想法。
: 不太了解。中间提到了 i31
,可惜没有机会说出 tagged pointer 这个名词。i31
在 OCaml 中也存在。
对 WASM 的控制流有什么想法,为什么用 loop
label
的方式,而不是 goto
?
: 方便抽象更高的语言编译;方便 simd 优化。
WASM 是栈机,goto
不容易保持栈平衡。
希望在
MoonBit
做什么工作?
: 语法和特性,非优化和分析方面。
偏好用什么 parser?
: 小的用 parser combinator,大的手写,几乎不用 parser generator。最近写的是 pratt 的。
LL, LR, L ..K 的区别(我完全不懂,听不明白)。
: 不太了解。
写 parser 遇到的心得体会?
: 聊了一个 tokenizer 的 glue 问题:parser 期待的是两个 :
,而因为 token 中存在 ::
,token stream 中来的也就是 ::
,在 parse 过程中判断困难。
用 pratt 的优势?
: 聊了一下 matklad 的文章。
为什么大多数语言都不用 parser generator?手写的优势是什么?
: 可能更好的性能;更好的报错信息。