[OCaml] Вопрос новичка

 
0
 
Functional languages
ava
Straight | 23.03.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;;


Но возвращается пустой список.
Где грабли?
Comments (1)
ava
Void | 23.03.2009, 14:54 #
Ну, во-первых, не пустой, а список из одних единиц. Задумка непонятна, аргумент rng определяет только длину списка, а не содержимое.
Можно так:

let range n =
    let rec range' i =
        if i > n then []
        else i :: range' (i + 1)
    in range' 1
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Void   Straight
advanced
Submit