2012-10-18 65 views
-2

所以我做的ocaml的分配,我就糊塗瞭如何寫這應該比較函數和一個int x中的功能不動點之一,F(X),並保持遞歸比較它們像f(f(x)),f(f(f(x))),直到兩個連續值相等,然後打印該值。ocaml的不動點功能

我們應該用我們以前寫的wwhile功能是

let rec wwhile (f,b) = match f(b) with 
|(integer, boolean) -> if boolean == false then integer 
         else wwhile (f, integer) 

的鏈接可以在這裏找到

http://cseweb.ucsd.edu/classes/fa12/cse130-a/homeworks/hw2.html

它的不動點函數I「M卡上。

+1

我覺得功課通常的規則是,你應該表現出一定的你試過的代碼。沒有什麼可以評論的,沒有解決問題就很難提供幫助。假設你正確地顯示'wwhile',我會說你的問題是要弄清楚函數'f'需要看起來像做你想做的事情。 –

+2

boolean == false在2分中不是一個好表達。 1)你應該使用(=)而不是(==),除非你真的需要(==),指針相等。 2)比較布爾值是多餘的。寫入不是布爾值。 – camlspotter

+2

雖然我們在此,但您不應該與僅有一種情況的表達式匹配。相反,使用let(整數,布爾)= f(b)。 – Chris

回答

0

正如前面提到的,你不應該只有一個匹配案例。

後,考慮以下因素:

  • 這將是interresting以避免無限循環
  • 你有兩種情況:F(X)= X和F(X)= X,你可以使用這個在比賽中測試,但不僅如此。
  • 可以匹配兩個表達式:

    匹配值1,值=值3與

    | v1case1,v2vase1 - > ... | v1case2,v2case2 - > ...

我的功能的作品,但它是你的功課,所以你要努力一點;-)