2014-03-07 56 views
0

我需要一個函數,它接受一個字符串和一個字符,它滑動字符串,如果它發現字符返回TRUE其他錯誤。函數字符串Caml燈

這是我的起點:

let rec check s a = match s with 
    "" -> false 
    | x::xs -> if x = a then true else check xs a ;; 

我不能使用CAML光的庫函數(如index_char)

感謝您的幫助!

+0

你的問題是什麼? –

+0

您的代碼可以完美地處理字符列表。但是一個字符串不是OCaml中的字符列表(儘管有時它會很好)。 –

回答

0

我會離開它是如何工作給你的解釋,這是我的解決方案:

[email protected]:~> rlwrap camllight 
>  Caml Light version 0.75  
let findchar c s = 
let len = string_length s in 
let rec f1 i s = 
    if i = len then false 
    else if s.[i]=c then true else f1 (succ i) s in 
    f1 0 s 
;; 
findchar : char -> string -> bool = <fun> 
#let s = "this is the searched string";; 
s : string = "this is the searched string" 
#findchar `a` s;; 
- : bool = true 
#findchar `y` s;; 
- : bool = false 

附加練習:

  • 可能我們在F1定義漏下參數s?
  • 我們如何在f1的主體中調用len的使用/發生?