<div>
                    Initial message failed - retrying 
                </div>
                <div><div><br></div><div>-- </div><div>Adrian Roe</div><div>Sent with <a href="http://www.sparrowmailapp.com/?sig">Sparrow</a></div><div><br></div></div>
                 
                <p style="color: #A0A0A8;">Forwarded message:</p>
                <blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;">
                    <div>
                         
                        <b>From:</b> Adrian Roe <roe.adrian@gmail.com><br>
                         
                         
                         
                        <b>To:</b> jasingleton.work@gmail.com<br>
                         
                         
                        <b>Cc:</b> erlang-programming@googlegroups.com<br>
                         
                        <b>Date:</b> Tuesday, 24 September 2013 20:44:41<br>
                        <b>Subject:</b> Re: [erlang-questions] Erlang n00b figuring out bins<br>
                    </div>
                     
                    <br>
                     
                    <div><div><div>
                <div>
                    The first thing I'd say is to ask why you want a list of strings (lists) - I initially went down the strings are lists route but am definitely in the strings as binaries camp now, as are an increasing number of Erlang projects.  Definitely a question of style, but the style du jour appears to be binaries. Also the example you give doesn't run for me (as I'd expect) - <font face="Courier">binary_to_list( [<<"s">>, <<"t">>, <<"u">>, <<"f">>, <<"f">>])</font> is trying to convert a list of binaries rather than a binary which is what it expects</div><div><br></div><div><div><font face="Courier">Eshell V5.10.1  (abort with ^G)</font></div><div><font face="Courier">1> binary_to_list( [<<"s">>, <<"t">>, <<"u">>, <<"f">>, <<"f">>]).</font></div><div><font face="Courier">** exception error: bad argument</font></div><div><font face="Courier">     in function  binary_to_list/1</font></div><div><font face="Courier">        called as binary_to_list([<<"s">>,<<"t">>,<<"u">>,<<"f">>,<<"f">>])</font></div></div><div><br></div><div>That aside there are two jobs going on there:</div><div><ul><li>You need to split the input on "."</li><li>You want the output as a list of strings (= list of lists)</li></ul><div>You can go about that in (at least) two different ways</div></div>
                <div><div><ul><li>Split the binary and convert the binary parts into strings</li><li>Convert the input to a list and split it</li></ul><div>Thankfully there are library calls that do just what you need.  Lets look at splitting then converting - binary:split/2 looks like it does the job</div><div><font face="Courier"><br></font></div><div><div><font face="Courier">Eshell V5.10.1  (abort with ^G)</font></div><div><font face="Courier">1> X = <<"stuff.junk.excess">>.</font></div><div><font face="Courier"><<"stuff.junk.excess">></font></div><div><font face="Courier">2> binary:split(X, [<<".">>]).</font></div><div><font face="Courier">[<<"stuff">>,<<"junk.excess">>]</font></div></div><div><br></div><div>Close, but not quite what we want as it has only split on the first occurrence.  Thankfully there's binary:split/3 which gives us a little more control</div><div><font face="Courier"><br></font></div><div><div><font face="Courier">3> binary:split(X, [<<".">>], [global]).</font></div><div><font face="Courier">[<<"stuff">>,<<"junk">>,<<"excess">>]</font></div></div><div><br></div><div>Perfect - now we just need to convert the binary strings into lists.  Maybe something like</div><div><br></div><div><div><font face="Courier">4> [binary_to_list(Y) || Y <- binary:split(X, [<<".">>], [global])].</font></div><div><font face="Courier">["stuff","junk","excess"]</font></div></div><div><br></div><div>Again with the other approach (convert then split), there's a function that does what we need - string:tokens/2.  This expects a string (aka list) as input</div><div><br></div><div><div><font face="Courier">5> string:tokens(binary_to_list(X), ".").</font></div><div><font face="Courier">["stuff","junk","excess"]</font></div></div><div><br></div><div>Not sure if any of that counts as "more graceful" but more widely you should definitely stick with it - Erlang is certainly worth the initial head-scratching.</div><div><br></div><div>Adrian</div><div>-- </div></div><div>Dr Adrian Roe</div><div>Sent with <a href="http://www.sparrowmailapp.com/?sig">Sparrow</a></div><div><br></div></div>
                  
                <p style="color: #A0A0A8;">On Tuesday, 24 September 2013 at 15:46, <a href="mailto:jasingleton.work@gmail.com">jasingleton.work@gmail.com</a> wrote:</p><blockquote type="cite"><div>
                    <span><div><div><div dir="ltr">I've done a lot of development, but it's been quite a while since I've done anything<br>functional.  Erlang is still brand-new for me, so be warned. <br><br>I've got a (conceptual) string arriving in my sw as a binary, e.g. <<"stuff.junk.excess">><br>and trying to transform it into a list of strings, e.g. ["stuff", "junk", "excess"]<br>The mechanism I'm using is giving me a list of lists of binaries, e.g.<br> [ [<<"s">>, <<"t">>, <<"u">>, <<"f">>, <<"f">>], [<<"j">>, <<"u">>   (etc)<br><br>I ended up hacking it to just take each of the lists of binaries and run it through<br>list_to_binary and then binary to list.  The result is what I really wanted, which is <br>    list_to_binary(binary_to_list( [<<"s">>, <<"t">>, <<"u">>, <<"f">>, <<"f">>]))<br>gives me back<br>    "stuff"<br><br>That's all well and good, and functional, but has two problems:<br>1) I honestly don't get why it worked; I would expect those two operations to<br>    give me back something unchanged.<br>2) There's got to be a more graceful way to achieve this.<br><br>Thoughts?<br><br><br><br></div></div><div><div>_______________________________________________</div><div>erlang-questions mailing list</div><div><a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a></div><div><a href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a></div></div></div></span>
                  
                  
                  
                  
                </div></blockquote><div>
                    <br>
                </div>
            </div></div></div>
                </blockquote>
                 
                <div>
                    <br>
                </div>