Erlang 哈希树
我正在开发一个使用哈希树的 p2p 应用程序。
我正在编写哈希树构造函数(publ/4 和 publ_top/4),但我不知道如何修复 publ_top/4。
我尝试用 publ/1 构建一棵树:
nivd:publ("file.txt").
prints hashes...
** exception error: no match of right hand side value [67324168]
in function nivd:publ_top/4
in call from nivd:publ/1
有问题的代码在这里:
http://github.com/AndreasBWagner/nivoa/blob/886c624c116c33cc821b15d371d1090d3658f961/nivd.erl
您认为问题出在哪里?
谢谢你, 安德烈亚斯
I'm working on a p2p app that uses hash trees.
I am writing the hash tree construction functions (publ/4 and publ_top/4) but I can't see how to fix publ_top/4.
I try to build a tree with publ/1:
nivd:publ("file.txt").
prints hashes...
** exception error: no match of right hand side value [67324168]
in function nivd:publ_top/4
in call from nivd:publ/1
The code in question is here:
http://github.com/AndreasBWagner/nivoa/blob/886c624c116c33cc821b15d371d1090d3658f961/nivd.erl
Where do you think the problem is?
Thank You,
Andreas
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
查看您的代码,我可以看到一个问题,该问题会
在您与空列表匹配的第一个函数声明中生成特定的异常错误。 在第二个声明中,您将匹配长度(至少)为 2 (
[F,S|T]
) 的列表。 当FullLevelLen
不同于 1 并且RestOfLevel
是长度为 1 的列表时会发生什么? (提示:您将收到上述错误)。如果您对函数参数进行模式匹配,则错误会更容易发现,也许类似于:
Looking at your code I can see one issue that would generate that particular exception error
In the first function declaration you match against the empty list. In the second declaration you match against a list of length (at least) 2 (
[F,S|T]
). What happens whenFullLevelLen
is different from 1 andRestOfLevel
is a list of length 1? (Hint: You'll get the above error).The error would be easier to spot if you would pattern match on the function arguments, perhaps something like: