저는 JaneStreet의 Core
라이브러리에 익숙합니다.Pervasives의 Core의`List.init`?
List.init 5 ~f:(Fn.id);;
- : int list = [0; 1; 2; 3; 4]
List.init 5 ~f:(Int.to_string);;
- : string list = ["0"; "1"; "2"; "3"; "4"]
그러나,이 기능이 존재하지 않는 것 :
List.init;;
- : int -> f:(int -> 'a) -> 'a list = <fun>
그것은 당신이 요소를 초기화하는 사용자 정의 기능을 사용하여 목록을 만들 수 있습니다 : 그 List
모듈은 깔끔한 init
기능을 가지고있다 Pervasives
, 이것은 슬프다. 뭔가 빠졌는가, 아니면 직접 구현해야 하는가? 그리고 글을 써야 할 필요가 있다면 어떻게해야합니까?
편집는 :
나는 init
의 필수 버전을 작성했습니다,하지만 이러한 경우를 OCaml의 필수 기능에 의존해야 할 권리를 생각하지 않습니다. :(
let init n ~f =
let i = ref 0 in
let l = ref [] in
while !i < n do
l := (f !i) :: !l;
incr i;
done;
List.rev !l
;;
편집 2 :
나는이 기능을 가지고 OCaml의의 GitHub의에 pull request 열었습니다 포함
일반적인 코멘트 : Pervasives의 어떤 종류의 편의성도 기대하지 마십시오. 전체 표준 라이브러리를 원한다면 현재 코어 또는 컨테이너 또는 배터리 (다른 것들도있을 수 있음)를 사용해야합니다. – user3240588
그래, 나는 이미 그것을 알아 차렸다. – RichouHunter