小编vuz*_*zun的帖子

Yacc相当于Java

我正在使用Java编写一个编译器设计项目.完成词法分析(使用jflex),我想知道哪种类似yacc的工具最适合(最有效,最容易使用等)进行语法分析以及原因.

java yacc

28
推荐指数
3
解决办法
2万
查看次数

将查询的所有结果放在Prolog的列表中

我想知道如何创建一个谓词,将所有结果从一些查询中获取(所以我得到一个结果并按分号直到我得到False)在列表中.

例如,如果我foo(X,[1,2,3]).在一些Prolog听众中写,假设结果是

X=[11];
X=[22];
False.
Run Code Online (Sandbox Code Playgroud)

我想把所有这些结果都列在一个列表中,所以会发生类似下面的事情.

?-another_foo(X,[1,2,3]).
X=[[11],[22]].
Run Code Online (Sandbox Code Playgroud)

another_foo会以某种方式使用foo创建一个包含foo所有结果的列表.我只是不知道如何.

prolog

14
推荐指数
1
解决办法
9167
查看次数

具有已知全局最优的旅行推销员示例

我用Python制作了一个用于旅行商问题的模因算法.但是,我遇到的所有测试数据(城市之间的距离列表)缺乏最佳解决方案的信息,所以我不知道我的算法得到的全局最优值有多接近.

有没有人知道在哪里可以找到一些已知的最佳解决方案的tsp测试数据(最好是矩阵形式,但一切都很好)?

algorithm test-data traveling-salesman

6
推荐指数
1
解决办法
4547
查看次数

为什么懒惰与参考透明度相吻合?

我正在阅读Haskell教程(Learn You a Haskell),其中作者说懒惰与参考透明度相得益彰.经过更多的阅读和一些搜索,我仍然不明白为什么.请注意,我确实理解参考透明度和懒惰的优点,但是它们在一起令我感到不安.

这两者结合有什么特别的好处吗?

或者也许作者只是想说他们都很高兴并且表达得那么含糊不清?

haskell referential-transparency lazy-evaluation

6
推荐指数
2
解决办法
579
查看次数

在R中的map()中使用管道

尝试在map()内进行管道传递时出现意外结果

map(ls(), ~ . %>% get %>% dim)
Run Code Online (Sandbox Code Playgroud)

返回以下消息:

Functional sequence with the following components:

 1. get(.)
 2. dim(.)

Use 'functions' to extract the individual functions. 
Run Code Online (Sandbox Code Playgroud)

我真的不知道functions()将如何获得我想要的结果。

有没有办法用管道和地图做到这一点?

不使用管道

map(ls(), ~ get(dim(.)))
Run Code Online (Sandbox Code Playgroud)

,结果就是我所期望的。

r dplyr purrr

6
推荐指数
1
解决办法
469
查看次数

问题与Haskell的"做"

我编写了一个Haskell函数,用于计算给定列表中每个数字的阶乘,并将其打印到屏幕上.

factPrint list =
if null list
    then putStrLn ""
    else do putStrLn ((show.fact.head) list)
        factPrint (tail list)
Run Code Online (Sandbox Code Playgroud)

该功能有效,但我发现第三行有点令人困惑.为什么编译器(GHC)没有报告错误,因为在"putStrLn"(准?)函数之前没有"do"?如果我从第4行省略"do",则会按预期弹出错误.

我对Haskell及其方式都很陌生,所以如果我说的话过于愚蠢,请原谅我.

syntax monads haskell

4
推荐指数
2
解决办法
399
查看次数