Hi Jussi,
Your version compiles down more neatly than the ifelse version. On my
system, BenchmarkTools gives nearly identical results; I don't know why,
but the ifelse version is consistently a smidge faster (~%2, relative
speed). Here is the llvm code and local native code for each, your version
looks more tidy.
```
implies(p::Bool, q::Bool) = (p <= q) implies(p::Bool, q::Bool)
= ifelse( p, q, true )
# llvm
%2 = xor i8 %0, 1 %2 = and i8 %0, 1
%3 = or i8 %2, %1 %3 = icmp eq i8 %2, 0
ret i8 %3 %4 = select i1 %3, i8 1,
i8 %1
ret i8 %3
# native with some common code removed
xorb $1, %dil testb $1, %dil
orb %sil, %dil movb $1, %al
movb %dil, %al je L15
popq %rbp movb %sil, %al
retq L15: popq %rbp
retq
```
On Friday, October 7, 2016 at 12:22:23 AM UTC-4, Jussi Piitulainen wrote:
>
>
> implies(p::Bool, q::Bool) = p <= q
>
>
>
> torstai 6. lokakuuta 2016 19.10.51 UTC+3 Kevin Liu kirjoitti:
>>
>> How is an implication represented in Julia?
>>
>>
>> https://en.wikipedia.org/wiki/Material_conditional#Definitions_of_the_material_conditional
>>
>