<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>Thank you, Joe,</div><div><br></div><div>So lucid. Wish there was a place where we could capture this so it's easy to find.</div><div><br></div><div>At cost of some programming, perhaps an index page into a set of wikis would be a way of capturing tutorials.</div><div><br></div><div>Best wishes,</div><div><br></div><div>Lloyd<br><br>Sent from my iPad</div><div><br>On Jun 1, 2014, at 5:09 AM, Joe Armstrong <<a href="mailto:erlang@gmail.com">erlang@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, May 31, 2014 at 8:44 PM,  <span dir="ltr"><<a href="mailto:lloyd@writersglen.com" target="_blank">lloyd@writersglen.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi Joe,<br>
<br>
I've resorted to approach 0 many times and much appreciate the generous help I've received from the community. Indeed, response from the author of my Erlang bible is particularly awesome. I hope one day to be competent enough to play it forward.<br>

<br>
I also spend a great deal of time in the Erlang man pages. Problem is that I'm one of those soft-headed liberal arts types. So, I often find the man pages near incomprehensible (and not only Erlang). Yes, I perhaps should have taken more math classes to grasp the elegant concision. But my mind doesn't seem to be wired that way.<br>

<br>
I can't tell you how many times I've looked at the foldl/n docs and tried to understand what the hell is going on. I get the general drift, but can't bring it down to useful code. There's just too much inside-baseball.<br>

<br>
As a self-taught-from-books-and-web Erlang aspirant, I find concrete examples and well-written tutorials most helpful. This gives me leverage to apply your approach 3. In general, the concepts of Erlang are simple enough once I grasp them. In fact, I marvel at the pragmatic elegance. Your books provide particularly lucid explications. But the man pages? My how I wish I had the time and chops to write a parallel set for noobies.<br>

<br>
Indeed, would it be helpful if I walked through and commented on the man doc items that give me headaches?<br></blockquote><div><br></div><div>Absolutely - There is a problem here - which I think should be addressed as soon as</div>
<div>possible - "It is not easy to common and ask question about man pages" -</div><div>I'd really like to see commenting in the style of the real world Haskell book.</div><div><br></div><div>If you're interested take a look at <a href="http://book.realworldhaskell.org/read/types-and-functions.html">http://book.realworldhaskell.org/read/types-and-functions.html</a> - in particular look at how comments are added to the text.</div>
<div><br></div><div>The erlang man pages are generated from XML so a commenting system should be</div><div>easy to make.</div><div><br></div><div>I'd like to see questions about the man pages discussed "inside the man pages"</div>
<div>if you see what I mean - not "outside the man pages" (ie here)</div><div>   </div><div>...</div><div><br></div><div>Folds are very common there are the "iterators with an accumulator"</div><div><br>
</div><div>In an imperative language you might say</div><div> </div><div>    state = state0</div><div>    for(i in x){</div><div>        state = update(state, f(i))</div><div>    }</div><div><br></div><div>In erlang this is a fold</div>
<div><br></div><div>    fold(F, State0, X)</div><div><br></div><div>F is a function of I and State which returns a new state, and I iterates</div><div>over the values in X</div><div><br></div><div>so</div><div><br></div><div>
   fold(fun(I, S) -> I + S end, 0, L)</div><div><br></div><div>is the same as</div><div><br></div><div>    S = 0;</div><div>    for(I in L){</div><div>       S = S + I</div><div>   }</div><div><br></div><div>This is a very common programming pattern</div>
<div><br></div><div>Cheers</div><div><br></div><div>/Joe</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<br>
Many thanks again for your kind help,<br>
<br>
Lloyd<br>
<div class="im"><br>
-----Original Message-----<br>
From: "Joe Armstrong" <<a href="mailto:erlang@gmail.com">erlang@gmail.com</a>><br>
Sent: Saturday, May 31, 2014 1:53pm<br>
To: "Lloyd Prentice" <<a href="mailto:lloyd@writersglen.com">lloyd@writersglen.com</a>><br>
</div><div class="im">Cc: "Erlang-Questions Questions" <<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a>><br>
Subject: Re: [erlang-questions] How to return all records in dets<br>
<br>
</div><div class=""><div class="h5">The thing to Google for is "dets man erlang" - which should get you the man<br>
page<br>
(even better is to store the man pages locally and do "erl -man dets")<br>
<br>
You want to "list" all records (I'm not sure what list means here - it<br>
might mean<br>
"print" or "make a list of").<br>
<br>
To make a list of all records you could say:<br>
<br>
   dets:foldl(fun(X, L) -> [X|L] end, [], Name)<br>
<br>
(Most collections - ie dets, ets, dict, etc. offer some kind of fold<br>
operation that<br>
traverses all objects in the collection)<br>
<br>
To print all records<br>
<br>
  dets:traverse(Name, fun(X) -><br>
                           io:format("~p~n",[X]),<br>
                           continue<br>
                      end)<br>
<br>
No need to worry about match specifications.<br>
<br>
The best place to start is usually by reading the man pages.<br>
<br>
Now that Erlang is is becoming popular you'll find a lot of incorrect<br>
solutions to problems posted on stackoverlow.<br>
<br>
Best approach is<br>
<br>
    0) ask an expert<br>
    1) read the man pages for the module, in question<br>
    2) experiment with the functions in the man pages in the shell<br>
    3) ask/tell this list if the manual pages are ambiguous or<br>
incomprehensible<br>
    4) search Google/stackoverflow<br>
<br>
Cheers<br>
<br>
/Joe<br>
<br>
<br>
<br>
On Fri, May 30, 2014 at 9:56 PM, <<a href="mailto:lloyd@writersglen.com">lloyd@writersglen.com</a>> wrote:<br>
<br>
> Hello,<br>
><br>
> I'm cross-eyed from looking at match specifications. All I want to do is<br>
> list all records in my small dets table. I once ran across a very neat<br>
> query to accomplish that, but for the life can't Google it up.<br>
><br>
> Can some kind soul give me a query that works?<br>
><br>
> Many thanks,<br>
><br>
> LRP<br>
><br>
><br>
><br>
> _______________________________________________<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" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
><br>
<br>
<br>
</div></div></blockquote></div><br></div></div>
</div></blockquote></body></html>