<div dir="auto">I'd just like to point out that the logic is sometimes inverted. Specifically when you're interfacing to certain types of hardware. <div dir="auto"><div dir="auto"><br></div><div dir="auto">Cheers,</div><div dir="auto">Mark<br><br><div data-smartmail="gmail_signature" dir="auto">Sent from my PDP-11</div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Jan 20, 2018 8:14 PM, "Viktor Söderqvist" <<a href="mailto:viktor@zuiderkwast.se">viktor@zuiderkwast.se</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The topic 1=true and 0=false as a convention seems to be controversial. :-)<br>
<br>
If not adding booleans in bit syntax, then how about adding build-in<br>
conversion functions for booleans and bit values? E.g. boolean_to_integer/1.<br>
<br>
If we can't assume that convention, then how about adding four<br>
functions: is_zero/1, is_one/1, true_count/1 and false_count/1 instead?<br>
That should get rid of any confusion.<br>
<br>
Theoretically, of course there are two possible bijective mappings<br>
between bit values (0, 1) and boolean values (true, false).<br>
<br>
It may be radical, but in practice, I believe the convention (1 for<br>
true) can be safely assumed to be generally understood by almost<br>
everyone in almost every such such mapping situation. Even persons who<br>
doesn't have any insight in programming often have an intuition that it<br>
is all about ones and zeroes, representing true/false, or electric<br>
switch on/off; the bit as the smallest and most basic unit of<br>
information in computers.<br>
<br>
Replies to Jacob and Kostis inline.<br>
<br>
On 2018-01-20 15:53, Jacob wrote:<br>
> In my opinion, it changes much without really filling a gap. So far, the<br>
> <<>> expressions/matches only convert numbers to binaries/bitstrings and<br>
> vice versa.<br>
<br>
Bit syntax can also convert between Unicode codepoints, UTF-8, UTF-16<br>
and UTF-32. It can convert endianess for IEEE floats and integers too.<br>
Pretty much any convenient conversion for basic types to/from binary.<br>
<br>
    << <<X/utf16-little>> || <<X/utf8>> <= <<"Example">> >>.<br>
<br>
On 2018-01-20 15:58, Kostis Sagonas wrote:<br>
> Yes. The Erlang type language already has a type boolean() which is<br>
> defined to comprise of the atoms 'true' and 'false'.<br>
<br>
true and false are not just any atoms. They have special meaning in<br>
language constructs for branching, i.e. logic. Arguably the most basic<br>
values of all.<br>
<br>
On 2018-01-20 15:53, Jacob wrote:<br>
> What about<br>
><br>
>   decode_stuff(<<F1:1, F2:1, 0:6, Rest/binary>>) -><br>
>       {F1 =:= 1, F2 =:= 1, Rest}<br>
><br>
> it's even shorter than your proposal and already works (okay, encoding<br>
> bools is a different thing).<br>
<br>
You are right, the manual conversion is really just three tokens.<br>
<br>
The simplest encoding I can think of would be a function call, given you<br>
already have such a function in your module.<br>
<br>
> I prefer to have explicit conversions, IMO they are much better to<br>
> maintain than using conversion magic.<br>
<br>
Doesn't the type specifier in the bit syntax indicate an explicit<br>
conversion between binary and the explicitly specified type?<br>
<br>
On 2018-01-20 15:58, Kostis Sagonas wrote:<br>
> Suddenly adding some syntactic sugar which transforms 1s to trues and 0s<br>
> to falses in binaries does not add any significant expressive power to<br>
> the language; just confusion.<br>
<br>
Isn't most of the binary syntax just syntactic sugar for conversions?<br>
<br>
Viktor<br>
______________________________<wbr>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a><br>
</blockquote></div></div>