unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Jean Louis <bugs@gnu.support>
To: Michael Heerdegen <michael_heerdegen@web.de>
Cc: help-gnu-emacs@gnu.org
Subject: Re: Making ielm behave like a shell (getting to previous commands using the up-arrow key)
Date: Fri, 18 Dec 2020 14:19:40 +0300	[thread overview]
Message-ID: <X9yQTIpbqBxhK6Mf@protected.rcdrun.com> (raw)
In-Reply-To: <87mtyb32ud.fsf@web.de>

* Michael Heerdegen <michael_heerdegen@web.de> [2020-12-18 12:02]:
> Jean Louis <bugs@gnu.support> writes:
> 
> > That is how I learned it, instruction was somewhere on how to debug
> > and I used to do it much in Common Lisp that way.
> 
> I must admit that I did not exhaustively understand how you proceed
> because the code examples you had posted are broken (let binding syntax
> broken).
> 
> > When you have
> >
> > (let ((some 1)
> >       (more 2))
> >
> > How do you go about debugging such function?
> 
> Sometimes I insert `message' calls or something more sophisticated to
> output values.  That's the simplest tool.

I will discard the rest of your message to understand one part
first. How do you insert message calls? Give me some example.

For me and in my programming somebody from scheme programming,
probably in Guile teached me that I should be making smaller functions
where each function does something and outputs something. And I that
gave me impression of being very simple. But then in Emacs packages I
too often find long and incomprehensible functions that do not follow
the style I have learned before some years.

From all functions I have rarely there is need to have a long
function. But when I do have longer function then the problem is often
to find out which check or variable changes properly and what is going
on. And in Common Lisp explanations on how to debug programs I have
adopted `setq' style. 

First step:

(let* ((mailing-hash (rcd-db-table-id-hash "mailinglistoptions" option *cf*))
       (mid (gethash 'mailinglistoptions_accounts mailing-hash))
       (mid-hash (rcd-db-table-id-hash "accounts" mid *cf*))
       (accounts-hash (rcd-db-table-id-hash "accounts" mid *cf*))
       (email-list (rcd-email-list mid)))
       )

Second step:

(let* ((setq mailing-hash (rcd-db-table-id-hash "mailinglistoptions" option *cf*))
       (mid (gethash 'mailinglistoptions_accounts mailing-hash))
       (mid-hash (rcd-db-table-id-hash "accounts" mid *cf*))
       (accounts-hash (rcd-db-table-id-hash "accounts" mid *cf*))
       (email-list (rcd-email-list mid)))
       )

Third step:

(let* ((mailing-hash (rcd-db-table-id-hash "mailinglistoptions" option *cf*))
       (setq mid (gethash 'mailinglistoptions_accounts mailing-hash))
       (mid-hash (rcd-db-table-id-hash "accounts" mid *cf*))
       (accounts-hash (rcd-db-table-id-hash "accounts" mid *cf*))
       (email-list (rcd-email-list mid)))
       )

Fourth step:

(let* ((mailing-hash (rcd-db-table-id-hash "mailinglistoptions" option *cf*))
       (mid (gethash 'mailinglistoptions_accounts mailing-hash))
       (setq mid-hash (rcd-db-table-id-hash "accounts" mid *cf*))
       (accounts-hash (rcd-db-table-id-hash "accounts" mid *cf*))
       (email-list (rcd-email-list mid)))
       )

That is how I would be going step by step. But now I will change it to
`setq-local' instead of `setq'

How would you do message calls there?







  reply	other threads:[~2020-12-18 11:19 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-17  3:02 Making ielm behave like a shell (getting to previous commands using the up-arrow key) steve-humphreys
2020-12-17  3:34 ` Okam
2020-12-17  4:27 ` Michael Heerdegen
2020-12-17  4:44   ` steve-humphreys
2020-12-17  5:02     ` Michael Heerdegen
2020-12-17  5:17       ` steve-humphreys
2020-12-17  9:06         ` Jean Louis
2020-12-17  9:13           ` Jean Louis
2020-12-17 22:29           ` Michael Heerdegen
2020-12-18  5:05             ` Jean Louis
2020-12-18  9:01               ` Michael Heerdegen
2020-12-18 11:19                 ` Jean Louis [this message]
2020-12-18 17:14                   ` Drew Adams
2020-12-18 18:36                     ` Jean Louis
2020-12-18 19:11                       ` Drew Adams
2020-12-18 19:53                         ` Jean Louis
2020-12-18 21:15                           ` Drew Adams
2020-12-19  2:07                   ` Michael Heerdegen
2020-12-19  2:51                     ` Drew Adams
2020-12-18 11:28                 ` Jean Louis
2020-12-19  1:55                   ` Michael Heerdegen
2020-12-19  2:45                     ` Drew Adams
2020-12-19  1:57               ` Michael Heerdegen
2020-12-17  8:22   ` Joost Kremers
2020-12-18 10:20     ` Philip K.

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=X9yQTIpbqBxhK6Mf@protected.rcdrun.com \
    --to=bugs@gnu.support \
    --cc=help-gnu-emacs@gnu.org \
    --cc=michael_heerdegen@web.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).