Ocaml不会让我命名我的名单

时间:2014-11-16 14:03:38

标签: ocaml

代码:

open Hashtbl;;

type 'a option = None | Some of 'a;;

let ht = create 0;;

let rec charCount fd =
  let x = 
    try Some (input_char fd)
    with End_of_file -> None
  in
  match x with
  | Some c -> 
    let v = 
      try find ht c
      with Not_found -> 0
    in
    replace ht c (v+1);
    charCount fd
  | None -> ();;

let loadHisto fn = 
  let fd = open_in fn in 
    charCount fd;;

let rec printList l = match l with
  | [] -> print_newline ()
  | h::t -> print_char h; print_string " "; printList t;;

let hashtbl_keys h = Hashtbl.fold (fun key _ l -> key :: l) h [];;
let compare_function a b = compare (find ht b) (find ht a);;
let akeys = List.sort compare_function (hashtbl_keys ht);;

printList (List.sort compare_function (hashtbl_keys ht));;
printList akeys;;

结果:

ocaml histo.ml
  e t s u a i n p j (*here is the first printList*)
(*and here should be the second one, but there is only a blank*)    

问题在于: 我对列表进行了排序,并尝试显示它的内容,但正如您所看到的,似乎我不能为我的结果列表命名

编辑: 我不认为这是一个缓冲问题,因为即使我只打印akeys,也没有什么

编辑:我添加了下面要求的代码 并且ht是一个hashtbl,它包含它应包含的内容(我检查了这个)

0 个答案:

没有答案