以下是错误代码:
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
问题: 我不知道如何解决错误代码。有人能指出解决方案吗?
答案 0 :(得分:2)
我认为您应该使用(l: list)
而不是(l: 'a list)
而不是{{1}}。