[erlang-questions] dets:info/2

Garrett Smith g@REDACTED
Sun Jun 30 20:09:48 CEST 2013


Hi Tim,

On Sun, Jun 30, 2013 at 12:50 PM, Tim <erlang@REDACTED> wrote:
> Ooookaaaay.  I see I'm going to have to unlearn a lot of assumptions to get my brain into the Erlang groove.  :)

If you can avoid it, don't make assumptions when you're sorting this
stuff out :)

To reiterate Joseph's point, the Erlang shell is where you want to go
first for info. It's usually pretty easy to experiment with APIs in
the shell, which will give you a hands on experience that's sometimes
hard to get from online docs and books.

A lesser know pattern, related to your problem, is to avoid creating
flattened strings when you're generating content for file-like IO
(file system, sockets. etc.).

Rather than this:

   Name = "Joe",
   "My name is " ++ Name

Do this:

   Name = "Joe",
   ["My name is ", Name]

This is an example of an "iolist", which is an arbitrarily nested list
containing strings (lists of integers) and binaries. It's a powerful
abstraction has it lets you efficiently build string/binary content
without pointlessly flattening them.

> Thanks for sorting that out - it does now work as expected.
>
> One parting question though:  If integers and strings (lists of integers) are _not_ interchangeable, why doesn't this line generate an error?
>
> {html, MyInfo}.

My guess is the server is treating the integer as a character and it's
getting rolled into an iolist (see previous comment).

Garrett



More information about the erlang-questions mailing list