我试图将给定的十进制值转换为其对应的二进制形式。我正在使用Ocaml,对此我不太了解,而且很困惑。到目前为止,我有以下代码Ocaml中从十进制到二进制的转换
let dec_to_bin_helper function 1->'T' | 0->'F'
let dec_to_bin x =
List.fold_left(fun a z -> z mod 2 dec_to_bin_helper a) [] a ;;
我必须包括在这里,我想我的输出将在T的和F的列表的形式,其中T的代表二进制1和F的代表二进制的0 如果我尝试运行上面的代码,它给了我一个错误,说:“错误:这个表达式不是一个函数;它不能被应用” 我明白,我打电话给辅助函数的部分是错误的...在这件事上的任何帮助会不胜感激!
尼基,这正是我想要做的,现在我明白我是如何错误地使用fold_left的。感谢您的解释!但是,为了让事情更清楚,你介绍一下你的嵌套函数“在d2b x [] ;;中使用rec d2b x lst =(* code *)”作品?特别是如果我手工追踪这个问题,“在d2b x [] ;;”工作? – 2010-10-18 17:18:19
啊,当然。 d2b是一个嵌套函数。让rec d2b x =(* code *)在声明函数时,下面的代码在x上调用它(我可能不应该重用相同的变量名,我将编辑它)和一个空列表。我选择这样做的原因是,您可以调用dec_to_bin#并且不必担心列表。 – 2010-10-18 17:34:23
这使得现在很有意义。再次感谢!如果我理解正确的话,那么它意味着来自“dec_to_bin”的“x”被传递为“d2d”作为“y”,然后作为“d2b”自称“y”被修改并因此得到我们的列表?对不起,如果我问了太多问题,我只是想让基础知识正确!非常感谢你的帮助! – 2010-10-18 18:26:06