我是 SML 的新手,有點困惑。我正在嘗試撰寫一個名為 makeList 型別為 int -> int list 的函式,該函式將正整數 n 作為輸入并回傳串列 [1, 2, ..., n]
我希望唯一的輸入是結束數字,但我在沒有指定起點的情況下努力做到這一點。
fun createList(start:int, ending:int) =
if(start = ending)
then []
else
start::createList(start 1, ending);
我希望能夠只輸入一個數字,例如 6 并獲得一個串列,例如: [1,2,3,4,5,6] 我想在不使用像 list.something 這樣的外部庫的情況下做到這一點
這是我被教導的唯一方法,我會很感激有關如何改進的提示。
uj5u.com熱心網友回復:
你已經完成了99%的作業。使用您當前的功能,createList(1, 7)產生[1, 2, 3, 4, 5, 6]. 您只需要另一個自動填充其中一個引數的函式。
fun createList(start, ending) =
if start = ending then []
else start :: createList(start 1, ending);
fun createList'(ending) =
createList(1, ending 1);
試試這個,createList'(6)會產生[1, 2, 3, 4, 5, 6]的。
現在,假設您不希望兩者都可見。您可以“隱藏”一個函式作為本地系結。
fun createList(ending) =
let
fun aux(start, ending) =
if start = ending then []
else start :: aux(start 1, ending)
in
aux(1, ending 1)
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/412392.html
標籤:
