sml

    6熱度

    1回答

    我知道我可以這樣寫SML中的y-combinator,如下所示: 首先聲明一個新的數據類型來繞過由於圓形造成的類型不匹配。 datatype 'a mu = Roll of ('a mu -> 'a) val unroll = fn Roll x => x 現在您可以輕鬆定義的Y組合子: val Y = fn f => (fn x => fn a => f (unroll x x) a)

    1熱度

    2回答

    沒有使用大小寫表達式(在類的下一節出現),我看不出爲什麼以下不做快速排序。它在某個地方進入循環,永遠不會結束。 splitAt和append已經過測試,但這裏是他們的代碼。 fun append(xs, ys) = if null xs then ys else (hd xs) :: append(tl xs, ys) fun splitAt(xs : int list, x : int

    0熱度

    2回答

    我有2個列表。它們的長度總是相同,可能看起來就像這個玩具的例子。實際的內容是不可預測的。 val original = [1, 2, 0, 1, 1, 2] val elements = ["a","b","c","d","e","f"] 我想創建以下列表: val mappedList = [["c"],["a","d","e"],["b","f"]] 0 1 2

    3熱度

    2回答

    [...]一對函數tofun : int -> ('a -> 'a)和fromfun : ('a -> 'a) -> int使得(fromfun o tofun) n計算結果爲n每n : int。 任何人都能向我解釋這實際上是什麼要求?我正在尋找更多的解釋,而不是實際的解決方案。

    0熱度

    1回答

    好吧,提前抱歉,這可能是重新發布,但我花了30分鐘搜索stackoverflow並找不到相似程度足以理解。基本上,我不明白爲什麼 fn (f,g,x) => g(f(x)) 給出了從我的理解類型 (’a -> ’b)*(’b -> ’c)*’a -> ’c 應該先從 'a * 'b * 'c... 但是,這顯然是錯誤的。 在此先感謝。

    1熱度

    2回答

    如果我定義 fun id x = x 高階函數,那麼自然id已鍵入'a -> 'a 當然,id 0計算結果爲0,使完美的感覺。 由於這是非常合情合理的,我應該能夠通過一個函數來封裝它: fun applyToZero (f: 'a -> 'a) = f 0 希望能applyToZero將有類型('a -> 'a) -> int和applyToZero id將評估爲0 但是,當我嘗試如上定義

    0熱度

    1回答

    你能不能幫我下一個任務: 我應該有一個功能 fun eval (fn : (string * int) list -> expression -> int) 那得到一個元組列表(變量名,值)的表達式。該函數使用currying並返回表達式的評估值。它至少應該支持運營商+, -, *, /, %表示加,減,乘,整數除法和餘 對於接下來的數據類型: datatype expression = Co

    0熱度

    1回答

    這段代碼有什麼問題? fun expd s:string = if size(s) > 0 then true else false; 錯誤我收到: - fun exnd s:string = if size(s) > a then true else false; stdIn:657.1-837.8 Error: unbound variable or constructor: a Erro

    1熱度

    1回答

    我試圖創建一個程序,將總結大階乘的數字,這就是我在做什麼: fun sumDigits n = if n < 10 then n else n mod 10 + sumDigits(n div 10) fun factLarge 1 = IntInf.toLarge 1 | factLarge n = IntInf.toLarge n * factLa

    0熱度

    1回答

    類型的函數:('a - >('b - >'c)) - >('a - >'b) - >('a - >'c)在修改我的程序語言考試中,Standard ML部分有幾個類型推理問題,我可以通過在頭腦中進行類型推理來完成其中的大部分類型推理問題,而且我非常擅長,但是有一個問題讓我難以理解。 我必須寫類型的函數: ( '一個 - >(' B - > 'C)) - >(' 一個 - > 'B) - >(' 一