V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  netabare  ›  全部回复第 1 页 / 共 40 页
回复总数  787
1  2  3  4  5  6  7  8  9  10 ... 40  
2 天前
回复了 onc 创建的主题 程序员 全自动化编程系统
具体是什么样的呢?
3 天前
回复了 llej 创建的主题 程序员 对于依赖注入的思考-二
以及你的链接里面提到了 zone.js ,虽然我找不到理由,但直觉让我感觉 zone.js 其实是歪路,有点 dirty hack 的味道。

不过只是一个直觉,可能不靠谱。代数效应这玩意都没什么人研究,现在也没有真的用于生产的代数效应框架或语言,所以可能也是没办法的吧。

我对 JS 了解有限,从 PL 的角度讲上下文和传参数你也提到了。代数效应是函数式编程里面解决可变变量、副作用这些问题又不想引入 monad 传染性的思路,那作为不纯的 JS 语言,也许可以反过来用可变变量和副作用来实现本来你想用代数效应做到的东西。。。。不过这似乎又回到 XY 问题了(

依稀记得有道题用 Kotlin 的 coroutine 来模拟 Haskell 的 do-notation 。不知道能不能用 async/await 。。。写到一半又发现 XY 问题在看着我。

然后写完了回过头看也有点不知所云,但也想不到别的思路了(
@SenseHu 这玩意本身也是很模版化的吧,自动化本身倒也没多难

@sillydaddy 确实是这样

@kenshinhu 我自己的项目里面就没什么产品经理可言了…话说过来哪怕生产项目,也总有相对稳定可以提出来测试的部分吧?

@zhouyin 并不会,就像上面有个评论说的,测试本身都是自动化的。我想说的「写测试」更多是说一些测试用例或者构想可能的使用场景,这些东西算是我可以比较容易地去想很多的东西(不写代码的前提下)

@guiyumin 认同,三类代码的划分法也基本上是我的思路
4 天前
回复了 levelworm 创建的主题 程序员 不知道为什么,我很厌恶 map()
@levelworm 我的理解是这个问题可能比起智商倒不如是语言设计的问题。你也多次提到了「要是他不叫 map 好理解一点」。

也许换个语言会好很多(不过如果是工作要求就没办法)
4 天前
回复了 llej 创建的主题 程序员 对于依赖注入的思考-二
感觉如果语言本身没有直接提供代数效应支持的话,依赖注入还是很麻烦的一件事情
5 天前
回复了 levelworm 创建的主题 程序员 不知道为什么,我很厌恶 map()
不过是个 Functor 而已。

或者也许 Python 的 lambda 语法太丑了。要是换成 map (fn x => x + 1) [1,2,3,4] 这不就清晰多了吗。

List comprehension 这玩意能出现的前提是它是个 monad ,按照那个著名的话,monad 得先是个 functor ,换句话说能写出 list comprehension 的东西,它也肯定会写得出 map……这不就变成先有鸡还是先有蛋的问题了。
你说的提升是面向就业(短期,三个月这种)还是出于兴趣?
7 天前
回复了 nnegier 创建的主题 程序员 可以讲下你看到的编程语言的美吗?
@Orlion 诶,感谢指路(似乎发现了好东西)
我感觉还有容易断线、断线的时候会一直反复读条加载,还有玩到一半直接卡回桌面。
@letianqiu
@glcolof

打算做的是纯函数式编程,语法接近 ML 系或 Scala 或 Haskell (肯定没那么精简,我也在看哪些语法叠起来相对简单而不那么容易产生二义性)。长期的规划以后再看了,也许可以添加少量 OOP 功能,但肯定不是 Java 的路子。

话说过来 C++、C#和 Java 的解析难度是跟那个泛型标记有关吗?如果从我的路子讲倒是不太用担心这个问题……?毕竟按照 ML 系的类型推导,大部分时候并不需要显式标记类型,类型标记语法也可以设计成避免出现尖括号嵌套这种情况的样子。不过我不确定其他地方是否会遇到别的 LL(1)无能为力的例子了。

@Orlion

手写 LR 也可以的吗?记得都说 LR 语法好像不太适合手写反而比较适合 pg ?但我并不打算现在就考虑设计 pg 的事情。

@ftfunjth

我这边的话,快速实现可能就靠 parser combinator 了,这倒是我原先就有的路径,快速出活是真的快,但这也就回到题目里面的问题……快速写完原型后,这个原型能够长期不断扩展嘛?推倒重写应该还是基于相似的技术选型和路径,而不是说比如今天用了 flex+bison 明天改成 parsec 这样的吧。主要担心的是会不会到头来推倒重做的难度会后期逐步加大,然后语法已经复杂到重构的代价很高昂了。

@qieqie

我没有说「 parser generator 」搞不定我的语法,我想说的是我不太想用 parser generator ,因为不想被技术栈限制或者被 pg 的设计思路所限制(这是以前我遇到过的问题)。

@mahaoqu

也就是说这个问题的回答可以说是「手写递归下降足以覆盖」嘛?明白了,多谢。

@w568w

是在实现自己的语言……目前的进度大概是跳过了 parser ,实现了个解释器和类型系统。大概是计划三五年做出能真的用得上的语言(而不是简单的 toy lang )。

@jones2000

我做的流程应该相当标准了,只是我觉得其他部分跟我想讨论的话题无关而已。解释器和类型系统我都实现了,但为了节省时间我直接跳过了 parser 步骤手写了百来个硬编码的 AST 树的测试用例,然后现在想回过头复查一下 parser 话题而已。至于中间代码和优化那些又是别的话题了。
21 天前
回复了 aqtata 创建的主题 C++ 这种情况如何消除几百个 if/else
用表驱动和高阶函数会比较好
22 天前
回复了 exploretheworld 创建的主题 Java 项目全部是 map 传参
我之前在做 PL 作业的时候,也发现用 Java 的 Map 可以起到类似闭包作用域的作用。
22 天前
回复了 cj323 创建的主题 程序员 函数式编程适不适合游戏开发
游戏开发需要处理大量对象吧,似乎是计算密集型的任务,纯函数式编程会产生巨量生命周期极短的对象,似乎和游戏开发不太合得来。

不过要是写小型游戏或者后端应该会很爽,而且 FRP 和 Signal 之类的工具表现力也很强。不过能不能习惯就是另一个问题了。
AI 补光灯是啥,没听说过
@zhuisui 这个也是我的想法倒是…如果非要使用副作用的话
@zhuisui
@mahaoqu

感谢讲解!

所以这里我想我可能陷入了一个很大的误区,就是把 visitor 机械地等同于 pattern matching ,然后把 pattern matching 在 subtyping 下面的作用(也就是 dynamic dispatch )给搬运到了 visitor pattern 下,但是这个 dynamic dispatch 只是 visitor 的其中一个「稍微显著但不是主要的作用」,而 visitor pattern 的主要作用,就像 @mahaoqu 说的,「面向对象把一个类的多个方法放在一起,而 Visitor 模式恰好反过来了」,或者 @zhuisui 所说的「多个 visitor 分别代表可以输出不同形式的业务逻辑,visitor 之间是互相独立的」这样的作用。

我的理解是你说的「避免了业务侧用 switch case 做模式匹配,仅需 iterate elements 的 accept 方法即可完成调用」用我前面的表达其实就是「 dynamic dispatch 」对吧。比如用户解析 Tree 的时候,它不关心 Tree 具体长啥样或者具体怎么解析,它只希望能够正确的拿到 XML/JSON 或者 Table 。那么 visitor pattern 就充当了这个解析的作用吧。

这么说来倒是很多东西都说得清了。

至于副作用的问题,主要是我对这样的代码有很大的意见:

```java
class ... {
/* L.18 */ResultType result;

public void visitSomeArm(...) {

/* L.259 */ ResultType oldResult = result;

/* L.343 */ ... = visitAnotherArm(...);

/* L.569 */ result = ...;
}

public void VisitAnotherArm(...) {
/* L.1982 */ result = ...
}
}
```

当然这个其实并不是 effectful visitor 的问题而更像是某种 structural 的 code smell 了,如果一个 visitor 的实现能够把副作用清晰的表达出来,让我能够人肉去建模出 Effect 大概长啥样,我对这样的代码并没有太大的意见。

顺祝新年快乐!
35 天前
回复了 kran 创建的主题 Java 你喜欢使用 Java 下的哪个 web 框架?
不喜欢,但如果我自己选我不会选 Java 。非要用的话可能会考虑 Javalin 、vertx 或者 Ktor 吧。
38 天前
回复了 freesun165 创建的主题 git 求助 git 自动 merge 丢代码
所以不要把 master 合入分支,分支上面只用 rebase 。
1  2  3  4  5  6  7  8  9  10 ... 40  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2322 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 16:04 · PVG 00:04 · LAX 08:04 · JFK 11:04
Developed with CodeLauncher
♥ Do have faith in what you're doing.