无法弄清楚错误意味着什么以及如何解决它

时间:2014-03-06 20:32:41

标签: recursion ocaml

以下是错误代码

Characters 2004-2008
Error: The type constructor list expects 1 argument(s),
but is here applied to 0 argument(s)

以下是我写的 Ocaml代码

let createHuffmanTree (s:string) = match s with
    | "" -> Empty    (*Return an empty huffman tree ifstring is empty*)
    | _ -> let rec ca (l: list) (a: huffman) = match l with (*ERROR SHOULD BE ON THIS LINE*)
        | [] -> a (*If list is [] return the huffman tree*)
        | x,_ -> fold_left (ca) l level(leaf(x),a) (*For all the ellement of the list create a level and corresponding leaf*)
        in ca listFreq(explode(s)) Empty (*Start with an empty tree*)

注意:

explode取一个字符串将其作为char列表返回 例如:

# explode "Test";; 
- : char list = ['T'; 'e'; 's'; 't'] 

listFreq从爆炸中取出列表并返回一对char * int作为char,并通过explode返回列表返回的时间 例如:

# listeFreq (explode "AABCAABADBACAAB");; 
- : (char * int) list = [('A', 8); ('B', 4); ('C', 2); ('D', 1)] 

我试图创建的霍夫曼树取一个字符串(例如"AAABBC") 并这样做:

        level
|                   |
v                   v
leaf A            level
               |         |
               v         v
               leaf B    leaf C

树也可以是Empty

问题: 我不知道如何解决错误代码。有人能指出解决方案吗?

1 个答案:

答案 0 :(得分:2)

我认为您应该使用(l: list)而不是(l: 'a list)而不是{{1}}。