繁体   English   中英

OCaml:表示整数列表的简单赋值

[英]OCaml: simple assignment to represent a list of ints

您好,我正在学习 OCaml 语言并完成一项任务。

无限精度自然数可以表示为 0 到 9 之间的整数列表

编写一个 function ,它采用 integer 并用 0 到 9 之间的整数列表表示它,其中列表的头部包含最低有效数字,列表的最后一个元素表示最高有效数字。 如果输入为负,则返回 None。 我们为您提供了一些用例:

例如:

toDec 1234 = Some [4; 3; 2; 1]

toDec 0 = Some []

toDec -1234 = None

我已经为它写了下面的代码。

let rec toDec i = 
(
if i < 10 then i::[]  
else toDec ((i mod 10)::acc) (i/10) in toDec [] i;
);;

我在第 4 行遇到语法错误。由于我是这种语言的新手,所以无法弄清问题所在。 有人可以帮忙吗?

in关键字必须是 go 和let 您可以使用本地 function aux ,如下所示:

let toDec i =
  let rec aux acc i = 
    if i < 10 then i::[]  
    else aux ((i mod 10)::acc) (i/10)
  in
  aux [] i

这不符合您的要求,但语法和类型是有效的,我相信您可以修复 rest。

Vicky,你忘了定义acc也忘了加上else if语句。

如下更新您的代码,

let rec toDec ?acc:(acc=[]) i =
if i < 0 then None
else if i = 0 then Some acc
else toDec ~acc:((i mod 10)::acc) (i / 10)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM