小编Mar*_*len的帖子

Erlang:如何实现Erlang列表理解?

实现一个Erlang列表理解,它从列表中获取两个元素并创建一个新的列表列表.

我有这个代码

pair([], Acc) -> lists:reverse(Acc);

pair(L, Acc0) -> 
    [ A, B | T ] = L,
    Acc = [ [A, B] | Acc0 ],
    pair(T, Acc).
Run Code Online (Sandbox Code Playgroud)

哪个工作正常:

7> l:pair(lists:seq(1,6), []).  
[[1,2],[3,4],[5,6]]
Run Code Online (Sandbox Code Playgroud)

但似乎我应该能够将其作为列表理解来实现.我的二郎福太弱了,无法想出来.

有什么建议?

谢谢

erlang list-comprehension

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

当模式匹配映射到Erlang时,为什么这个变量没有绑定?

-module(count).
-export([count/1]).

count(L) when is_list(L) ->
  do_count(L, #{});
count(_) ->
  error(badarg).

do_count([], Acc) -> Acc;
do_count([H|T], #{}) -> do_count(T, #{ H => 1 });
do_count([H|T], Acc = #{ H := C }) -> do_count(T, Acc#{ H := C + 1});
do_count([H|T], Acc) -> do_count(T, Acc#{ H => 1 }).
Run Code Online (Sandbox Code Playgroud)

在此示例中,映射键"H"存在且具有与之关联的计数的第三个子句将无法编译.编译器抱怨:

count.erl:11: variable 'H' is unbound    
Run Code Online (Sandbox Code Playgroud)

为何H不受约束?

这顺便说一下:

do_count([], Acc) -> Acc;
do_count([H|T], Acc) -> do_count(T, maps:update_with(H, fun(C) -> C + 1 end, 1, Acc)).
Run Code Online (Sandbox Code Playgroud)

但似乎模式匹配应该起作用,而事实并非如此.

erlang maps pattern-matching

5
推荐指数
1
解决办法
656
查看次数

docker buildx oci 输出

有人可以帮助我了解如何docker buildx build -o type=oci,dest=/tmp/foo.tar .正确工作吗?我不断收到此错误,这对我来说毫无意义。

$ sudo docker buildx build -o type=oci,dest=/tmp/test-oci.tar -f .buildkite/scripts/Dockerfile-amd64 .
OCI exporter feature is currently not supported for docker driver. Please switch to a different driver (eg. "docker buildx create --use")
Run Code Online (Sandbox Code Playgroud)

然后我尝试了

$ sudo docker buildx create --driver docker-container --use oci
Run Code Online (Sandbox Code Playgroud)

但现在我明白了

[+] Building 0.0s (0/0)
error during connect: Get http://oci:2375/v1.24/containers/buildx_buildkit_romantic_jang10/json: dial tcp: lookup oci on 172.18.96.1:53: no such host
Run Code Online (Sandbox Code Playgroud)

我显然在这里遗漏了一些东西。我在github上的 README 中没有看到任何好的示例,所以请帮助:)

build oracle-call-interface docker

2
推荐指数
1
解决办法
4462
查看次数