[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Understanding the "let" construct and the setting of variables
From: |
Jean Louis |
Subject: |
Re: Understanding the "let" construct and the setting of variables |
Date: |
Thu, 17 Dec 2020 07:34:51 +0300 |
User-agent: |
Mutt/2.0 (3d08634) (2020-11-07) |
> -*- lexical-binding: t; -*-
* steve-humphreys@gmx.com <steve-humphreys@gmx.com> [2020-12-17 03:26]:
> Let's introspect two questions.
>
> 1. In what simple circumstances would one use a "setq" in the body
> of a let?
Whenever I find myself in linear programming within a function and
need to change variable I will use setq. Some global variables are
rather set with setq:
(set-buffer buffer)
(setq header-line-format (concat buffer " ➜ Finish with `q' or `h'"))
(cf-org-view-mode)
(insert blob)
(setq org-hierarchical-todo-statistics nil)
(org-update-parent-todo-statistics)
(goto-char 1)
But I will often use it in construction of lists:
(defun rcd-cgi-parse-query-string (query-string)
"Parse QUERY-STRING that normally comes from the environment
variable `QUERY_STRING'. Return PLIST."
(let* ((query-string (url-unhex-string query-string))
(parts (split-string query-string "&"))
(length (length parts))
(plist '()))
(dolist (part parts plist)
(let* ((data (split-string part "="))
(prop (car data))
(val (cadr data)))
(setq plist (plist-put plist (intern prop) val))))))
(defun iota (count &optional start step)
"Return a list containing COUNT numbers, starting from START
and adding STEP each time. The default START is 0, the default
STEP is 1"
(let* ((start (if start start 0))
(step (if step step 1))
(last (+ start count))
(counter 0)
(list '())
(elt start))
(while (< counter count)
(push elt list)
(setq elt (+ elt step))
(setq counter (1+ counter)))
(reverse list)))
How I understand it is that `setq' I can freely use on variables
already defined with and within my `let' as then the variable
will not become global.
(defun my-fun ()
(let ((my-var nil))
(setq my-var 2)))
(my-fun)
my-var is not defined
(defun my-fun ()
(let ((my-var nil)))
(setq my-var 2))
(my-fun)
my-var is here defined as 2 and became global variable.
And each time that variable is already defined with `defvar' one
can then change it with setq.
Jean
- Understanding the "let" construct and the setting of variables, steve-humphreys, 2020/12/16
- Re: Understanding the "let" construct and the setting of variables,
Jean Louis <=
- Re: Understanding the "let" construct and the setting of variables, steve-humphreys, 2020/12/17
- Re: Understanding the "let" construct and the setting of variables, Emanuel Berg, 2020/12/19
- Re: Understanding the "let" construct and the setting of variables, Jean Louis, 2020/12/19
- Re: Understanding the "let" construct and the setting of variables, Emanuel Berg, 2020/12/20
Re: Understanding the "let" construct and the setting of variables, Emanuel Berg, 2020/12/18
Re: Understanding the "let" construct and the setting of variables, Joost Kremers, 2020/12/16