sml

    -1熱度

    1回答

    我已經在SML中編寫了下面的代碼,但遇到了編譯錯誤。 fun getTransIndex(t : TRANSACTION, (h::L) : TRANSLIST) : int = let val i=0 in if (h=t) then i else if (getTransIndex(t,L)<>~1 then getTransIndex(

    0熱度

    1回答

    鑑於這些聲明我有在SML無法理解流牽引件: exception Bad of string; fun from seed next = Cons(seed,fn() => from (next seed) next); fun head (Nil) = raise Bad("got nil in head") | head (Cons(a,b)) = a; fun tail (N

    -1熱度

    2回答

    我試圖通過一個數據類型,SET,包含其他數據類型,包括本身,並打印出使用循環函數,循環這些數據類型。 fun printEXP(SET(hd::tl::[])) = let fun loop (hd::tl) = printEXP(hd):: loop tl | loop [] = []; in() end; ... 我得到tycon不匹配錯誤,我不知道如何解

    2熱度

    1回答

    datatype 'a stream = Nil | Cons of 'a * (unit -> 'a stream); exception Bad of string; fun from seed next = Cons (seed, fn() => from (next seed) next); fun head (Nil) = raise Bad "got n

    2熱度

    1回答

    我想一個字符串比較的SML一Charlist,使用REPL我有這樣的: val alphabet = "abcdefghijklmnopqrstuvwxyz"; val charalphabet = explode alphabet; val str = "the quick brown fox"; val res = Char.contains(str, charalphabet);

    1熱度

    2回答

    我正在經歷在Appel的「ML中的現代編譯器實現」一書中生成Tiger Parser的Ch3編程練習。我的tiger.grm文件是here。我試圖診斷的錯誤是由一元和二元減算子的規則引起的減少 - 減少衝突。這裏是YACC錯誤: error: state 128: reduce/reduce conflict between rule 48 and rule 46 on OR error: st

    0熱度

    1回答

    內我有這樣的功能: addBinaryTreeNode((genRandomNumber(100), genRandomNumber(100), genRandomNumber(100)), tree, 1, []) 返回一個數據類型「二叉樹」。它將編譯時是自己,但是當我把它在一個函數: generate3DNodeTree(addBinaryTreeNode((genRandomNumber

    1熱度

    2回答

    如何在Windows機器上播種SML/NJ的隨機數發生器? 函數Random.rand()需要一對整數並使用它們來爲隨機數生成器播種。根據我對其他編程語言的經驗,我期望有一種基於系統時鐘的相對簡單的方法(類似於C中的srand(time(null));)。除非我忽略了一些明顯的東西,否則似乎沒有任何直接的方法,至少如果您使用的是Windows。 SML中最接近time(null)的是Posix.P

    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) *