Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Функциональные языки: общие вопросы > [OCaml] Вопрос новичка


Автор: Straight 23.3.2009, 11:39
Хочу создать функцию, принимающую int x и возвращающую список [1;...;x]

Код

let range1 r =
  let inc yy = yy + 1
  and y = 0
  in
  let rec rng xx =
    match xx with 
        0 -> []
      | _ -> (inc y) :: rng(xx-1)
  in
  rng r;;


Но возвращается пустой список.
Где грабли?

Автор: Void 23.3.2009, 14:54
Ну, во-первых, не пустой, а список из одних единиц. Задумка непонятна, аргумент rng определяет только длину списка, а не содержимое.
Можно так:
Код

let range n =
    let rec range' i =
        if i > n then []
        else i :: range' (i + 1)
    in range' 1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)