ml

    0熱度

    1回答

    我正在寫一個函數式語言(ML)的幾個遞歸函數,並在其中幾個是必須保持計數。我不允許使用尾遞歸或輔助函數。我應該如何保持計數? 例如,如果有一個問題需要刪除字符串的第n個元素,那麼在刪除該元素之前,如何知道遞歸函數已被調用n次?

    1熱度

    1回答

    我正在使用兩個函數。一個列表,第二個對列表元素進行一些工作。第二個功能,multinHelp,是給我的錯誤 「標準輸入:79.6-79.16錯誤:未綁定變量或構造函數:multinHelp」 fun multin(L)= let val a = hd(L) val b = hd(tl(L)) val c = hd(tl(tl(L))) in multinHelp([a,b,c]) e

    0熱度

    1回答

    我正在爲類的函數工作,並且出現此錯誤。 錯誤:操作符和操作數不贊同[tycon失配] 運營商域: 'Z列表 操作數:' Y列表 - >「Y列表在表達 : 空tl fun removedub(L) = if (null L) then nil else if (null tl(L)) then hd(L) else if hd(L) = hd(tl(L)) then r

    0熱度

    1回答

    在ML中工作我有一個遞歸函數,用if,then,else編寫。該函數有兩個基本情況,空列表和空列表的尾部。第一個基本情況很容易轉換爲模式匹配樣式。 if(Null L) then false 成爲 fun oddNum(nil) = false 我不知道如何編寫模式匹配風格等基本情況。 else if (Null tl(L)) then true 我已經試過這 | oddNum(nil

    0熱度

    1回答

    我正在寫入一種形式的OCaml轉換形式,它接受函數並接受一個列表進行轉換。我明白我的模式匹配在類型檢查方面有些問題,因爲它不會編譯並聲明類型不匹配,但我不確定我的情況究竟出了什麼問題。 當我嘗試編譯時,我收到一個實際的聲明錯誤,強調函數的名稱。 let rec convert (fun: 'b -> 'c option) (l: 'b list) : 'c list = begin match

    1熱度

    1回答

    我有一個ML編程任務,並在幾個函數中,保持計數是有用的。例如,在一個函數中,我需要返回一個元素出現的索引列表。我不知道如何在遞歸中跟蹤這些事情,因爲曾經的函數調用會殺死我的數量。在現實世界中,我會考慮計數變量,但這在學校中不是一種選擇。有小費嗎?

    1熱度

    1回答

    下面是使用梯形方法計算定積分的SML代碼,給定輸入f =一元函數a & b =在積分下的範圍,以及n =除以子區間的數量進入的範圍。 fun integrate f a b n = let val w = (b - a)/(real n) fun genBlock c = let val BB = f c val SB = f (c+w) in (BB + SB) *

    1熱度

    1回答

    我正在寫一個遞歸ML函數,它接受一個字符串和一個索引值,並將該字符串分割給定索引。該函數應該返回一個包含兩個字符串的列表。 據我所知,我需要兩個基本案例來檢查是否已達到索引,另一個檢查字符串是否超出字符。我被困在如何將字符分配給不同的字符串。請注意,我使用了一個輔助函數來清除最初的調用,這樣在每次函數調用時都不需要輸入爆炸。 fun spliatHelp(S, num) = if nul

    0熱度

    1回答

    ML的功能,將接受一個布爾函數和值的列表,並在滿足特定條件或無如果列表中沒有價值做返回列表中的最後一個值 我目前的函數看起來像這樣的: fun last func nil = NONE | last func L = let val f = fun getlast(x) = SOME x | getlast(x::xs) = getlast xs in

    1熱度

    1回答

    val g1 = fn x => fn y => fn z => (x y) :: z; val g1 = fn : ('a -> 'b) -> 'a -> 'b list -> 'b list 這是代碼和輸出。我不知道爲什麼輸出是這樣的。 我明白'b list -> 'b list因爲z顯然是一個列表,所以(x y) :: z也是列表。 但是,我不明白爲什麼fn x => fn y是('a