smlnj

    0熱度

    1回答

    我一直在試圖學習SML NJ(標準ML新澤西州),我遇到了一個函數,我明白是遞歸,但不能完全圖爲什麼函數返回它所做的值。 功能: fun sum 0 = 0 | sum n = n+sum (n-1); 我明白,如果和的值是0,那麼將返回0。但是,我不明白第二部分是如何工作的。 測試功能: Input: sum 0; ---> output: 0; Input: sum 1; ---> ou

    1熱度

    1回答

    是否有可能對匿名函數的參數和外殼進行模式匹配?如果是這樣,語法是什麼? 存有LOREM

    0熱度

    1回答

    我嘗試安裝一個用新澤西州標準ML(SML/NJ)編寫的軟件。 我不知道這一切的語言,但在邏輯上,我只是在我的機器上使用下面的命令安裝SML/NJ: sudo apt-get install smlnj 然後軟件的作者解釋說,有一個CM需要使用CM.Make "sources.cm"進行編譯的文件。 這裏是文件sources.cm: Group is $/basis.cm $

    1熱度

    1回答

    我想問一下如何在SML/NJ中概念性地解釋[]::[]和[]::[]::[]。 我的想法: 我認爲[]::[]會產生錯誤或產生一個空的列表,但實際上它產生val it = [[]] : 'a list list。 後,我知道[]::[]產生[[]] : 'a list list,我認爲[]::[]::[]會產生[[[]]] : 'a list list list但實際上它產生[[],[]] : '

    0熱度

    1回答

    我有這個問題解決 和我設法解決這個問題,但沒有該功能execute_ops。這是我的解決方案: datatype list_op = insert of int*int | delete of int | setsize of int; exception wrong_case; fun insert(x,pos,nil) = [x] | insert(x,pos,h::t) =

    3熱度

    1回答

    假設我有一個SML簽名ALPHA。但我也有多個結構/函子alpha1,alpha2等,我希望與ALPHA一起使用。我的問題是,如果我有一個結構在這些模塊之外執行單元測試,我將如何單獨測試ALPHA簽名而不必指定我正在使用的結構? 爲了把事情的角度,這裏是一些代碼: signature ALPHA = sig val func1 val func2 end struct

    0熱度

    1回答

    作爲新SML,使用SML NJ我匿名函數行爲的功能識別功能的這種行爲: - fun test g= fn x=>x; val test : 'a -> 'b -> 'b = _fn - test 1 2; val it : int = 2 - test 1; val it : '1 -> '1 = _fn 是這樣嗎,該解釋器使用unit爲數據類型的輸入參數g ,如果在函數的調用中沒有

    1熱度

    1回答

    我必須編寫一個SML函數,返回由給定列表中的空格分隔的單詞組成的句子。我必須至少使用foldl/foldr/map函數中的一個。 這是我寫的: fun add_spaces nil = "" | add_spaces(x::xs) = foldr (fn (x,xs) => (add_spaces x)^" "^xs) x [xs]; add_spaces(["Testing","f

    1熱度

    2回答

    這是從教學的例子來說明CPS和尾遞歸: fun sum [] k = k 0 | sum (x::xs) k = sum xs (fn y=>k(x+y)); 我理解如何匿名函數fn y=>k(x+y)將正確總結輸入列表中的元素問題。 據我所知,匿名函數意味着一個帶有一個參數y的新函數,其中函數體調用原函數k,參數爲y+x。 如果我調用sum [1,2,3,4,5] (fn x=>x

    2熱度

    3回答

    我有一個功能: fn x => x 現在,參數x被應用到真實和INT(例如(X:真))。所不同的是,什麼是對兩個功能相同,即使他們似乎有效地做同樣的事情: 1. fn (x:int) => x; 2. fn (x:real) => x;