簡體   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