0
我使用emacs寫在SML的功能,當我嘗試編譯這段代碼SML錯誤插入EQUALOP
fun tryDivide small n =
if n = 1 then true
else if ((small mod n) = 0) then tryDivide small (n-1)
else false
fun lcmHelper small div =
if tryDivide (small div) = false then lcmHelper ((small+div) div)
else small
(*Start by calling this*)
fun lcm d =
val small = d
lcmHelper (small d)
它應該發現,可以通過d分的最低值(LCM樂趣d ) 我很確定該算法的工作原理,但有語法錯誤。
在開始「好玩LCM d =」我知道,說「錯誤插入EQUALOP」錯誤
任何想法可能會導致什麼呢? 在此先感謝!
它們有語法錯誤。這解決了它。讓val = ... in ... end,而不是val = ... – seanmcl 2014-11-07 11:39:58
謝謝,是的,它解決了這個問題。可悲的是,似乎還有其他問題。現在它抱怨lcmHelper函數:「錯誤:右邊的子句不符合函數結果類型[tycon不匹配] 表達式_-> _-> int 結果_-> int – 2014-11-10 17:05:32
看來lcmHelper有一個主機的問題,'small + div'意味着small和div是ints(禁止重載)。因此,在表達式'(small div)'中有一個類型錯誤,它試圖將div應用到small。 。當你學習sml時寫這些類型通常很有幫助,例如fun lcmHelper(small:int)(dev:int):int = ... – seanmcl 2014-11-10 17:56:29