Consider this. I say: "everybody in the room next door is called John". You look inside the room and see nobody there and tell me so. If I then said: "Yes, everybody in the room is called John!", you might look sideways at me.
Yet this is not only mathematically correct but also what we see in functional language.
Take this Java:
Set<String> emptySet = new HashSet<String>();
Predicate<? super String> isHelloWorld = (String x) -> { return "hello world".equals(x); };
System.out.println(emptySet.stream().allMatch(isHelloWorld)); // true
System.out.println(emptySet.stream().anyMatch(isHelloWorld)); // false
def isHelloWorld: (String) => Boolean = "hello world".equals(_)
val emptySet: Set[String] = Set[String]()
println(emptySet.forall(isHelloWorld)) // true
println(emptySet.exists(isHelloWorld)) // false
Any assertion on all the elements of an empty set is always true.
No comments:
Post a Comment