2016-11-28 74 views
0

這段代碼有什麼問題?函數在預計bool時返回字符串

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 
Error: right-hand-side of clause doesn't agree with function result type [tycon mismatch] 
    expression: bool 
    result type: string 

這究竟是爲什麼?

回答

4

您需要大約s:string括號,因爲現在string被解釋爲函數的輸出類型和參數s的不是類型:

fun expd (s:string) = if size(s) > 0 then true else false 

順便說一句,編譯器可以推斷出所有類型這裏沒有任何類型的註釋。請嘗試以下操作:

fun expd s = if size(s) > 0 then true else false 

,當然,你可以簡化這個定義爲:

fun expd s = size(s) > 0