据我了解,如果CANDIDATE
强于TARGET
,则CANDIDATE
签名与TARGET
签名相匹配。然后,如果结构some_structure
实现签名CANDIDATE
,它也会实现签名TARGET
。
但根据Robert Haper的Programming in Standard ML(11.02.11版本1.2)第155页:
signature MERGEABLE_QUEUE =
sig
include QUEUE
val merge : 'a queue * 'a queue -> 'a queue
end
匹配
signature MERGEABLE_INT_QUEUE =
sig
include QUEUE
val merge : int queue * int queue -> int queue
end
在我看来,MERGEABLE_INT_QUEUE
匹配MERGEABLE_QUEUE
。因为如果some_structure
实现MERGEABLE_INT_QUEUE
,它也会实现MERGEABLE_QUEUE
。
我的理解有什么问题?
答案 0 :(得分:3)
如果一个结构实现了MERGEABLE_QUEUE
,它提供了一个函数,它接受一对任意类型的队列(只要这两个队列具有相同的类型)并生成一个新的队列。特别是,它可能需要两个int queue
并生成另一个int queue
(因此它实现MERGEABLE_INT_QUEUE
),但它也可能需要两个bool queues
并生成一个合并的bool queue
1}}。对于任何类型a'
,要求MERGEABLE_QUEUE
的结构也会实现假设的MERGEABLE_a'_QUEUE
。
另一种方式并非如此。实现MERGEABLE_INT_QUEUE
的结构只能合并两个int queues
,而不能合并任意类型的任何两个队列。