[OCaml] Попинайте код новичка
От: demi США  
Дата: 09.09.11 14:27
Оценка:
Привет, я изучаю OCaml и ФП в частности. Вот функция которая идет по тексту и выкидывает комментарии вида /* ... */. Простенькая задачка Может как-то покрасивше написать можно? Что хорошо получилось, что — плохо? Есть ощущение что многа букаф) В частности, принимаются замечания по coding style, но с обоснованиями.

let substr s from n = 
  let slen = String.length s in
  let last = from + n in
  let nmin = (min slen last) - from
  in String.sub s from nmin;;

let strrange s i j = substr s i (j - i);;

let findComments src = 
  let slen = String.length src in
  let rec loop i = 
    if i < slen then
      match substr src i 2 with
        | "/*" -> let rec findEnd j = match substr src j 2 with
                                        | "*/" -> (i, j + 2) :: loop (j + 2)
                                        | _ -> findEnd (j + 1) in
                  findEnd (i + 2)
        | _ -> loop (i + 1)
    else
      []
  in loop 0;;

let removeCommentsImpl src lst = 
  let slen = String.length src in
  let rec aux i =
    function
      | [] -> strrange src i slen
      | (a, b) :: tail -> (strrange src i a) ^ aux b tail
  in aux 0 lst;;

let removeComments src = removeCommentsImpl src (findComments src);;


Спасибо.
Не стыдно попасть в дерьмо, стыдно в нём остаться!
ocaml newbie code
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.