我收到一个警告,要求减少以下lambda表达式.
\(DataType arg1 arg2) -> DataType (modify arg1) arg2
Run Code Online (Sandbox Code Playgroud)
互联网告诉我eta-reducing意味着省去不必要的lambda.
map (\x -> fun x) list
map fun list
Run Code Online (Sandbox Code Playgroud)
这怎么适用于上面的代码?我可能只是缺少修改数据类型的基本语法?
我是Haskell的新手,我的代码不会编译.
multipleSum :: Int -> Int
multipleSum x = let recSum 0 b = b
recSum a b | a mod 3 == 0 = recSum a-1 b+a
| a mod 5 == 0 = recSum a-1 b+a
| otherwise = recSum a-1 b
in recSum x 0
Run Code Online (Sandbox Code Playgroud)
这是我得到的两个错误,第一个出现在第3行,第二个出现在第6行.我做错了什么?(该函数应该是n下3和5的所有倍数之和)
1.
Occurs check: cannot construct the infinite type: a ~ a -> a -> a
Expected type: (a -> a -> a) -> a -> a
Actual type: ((a -> a …Run Code Online (Sandbox Code Playgroud) 是否可以使用 AWS Keyspace 作为存储后端来运行 JanusGraph Docker 容器?
我尝试使用 Janus Graphs 模板配置 Keyspace cassandra-es。如果我运行下面的 docker-compose.ymlJanusGraph 日志异常并且所有查询都返回一个ScriptEvaluationError: gremlin-groovy is not an available GremlinScriptEngine'. 也许无法建立与Keyspace的连接?
version: "3"
services:
janusgraph:
image: janusgraph/janusgraph:latest
container_name: jce-janusgraph
environment:
JANUS_PROPS_TEMPLATE: cassandra-es
janusgraph.storage.backend: cql
janusgraph.storage.hostname: cassandra.eu-central-1.amazonaws.com
janusgraph.storage.password: <password>
janusgraph.storage.username: <username>
janusgraph.storage.cql.keyspace: janusgraphtest
# janusgraph.storage.cql.ssl.enabled: 'true'
janusgraph.index.search.hostname: jce-elastic
ports:
- "8182:8182"
networks:
- jce-network
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.6.0
container_name: jce-elastic
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "http.host=0.0.0.0"
- "network.host=0.0.0.0"
- "transport.host=127.0.0.1"
- "cluster.name=docker-cluster"
- "xpack.security.enabled=false"
- "discovery.zen.minimum_master_nodes=1"
ports: …Run Code Online (Sandbox Code Playgroud) 我正在努力使用回溯算法来确定数独是否具有唯一的解决方案,或者它是否具有多个解决方案。这是我使用的回溯代码:
static boolean solve(int i, int j, int[][] cells) {
if (i == 9) {
i = 0;
if (++j == 9)
return true;
}
if (cells[i][j] != 0) // skip filled cells
return solve(i+1,j,cells);
for (int val = 1; val <= 9; ++val) {
if (legal(i,j,val,cells)) {
cells[i][j] = val;
if (solve(i+1,j,cells))
return true;
}
}
cells[i][j] = 0; // reset on backtrack
return false;
}
Run Code Online (Sandbox Code Playgroud)
第一种方法:如果我改变
for (int val = 1; val <= 9; ++val) {
for (int …Run Code Online (Sandbox Code Playgroud)