unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Re: Learners doubt in LISP
  2004-01-08 19:31 Learners doubt in LISP Rajsekar Manokaran
@ 2004-01-08  9:22 ` Joakim Hove
  2004-01-08 10:27 ` Ganesh Swami
  1 sibling, 0 replies; 3+ messages in thread
From: Joakim Hove @ 2004-01-08  9:22 UTC (permalink / raw)



Rajsekar Manokaran <rajsekar_manokaran@yahoo.co.uk> writes:


> (completing-read "Input: " '(("hai" 10) ("bye" 20)) nil t nil)

[...]

> Now this thing seems to return "bye" or "hai"
> How do I access the 10 or 20 that comes together with it?

    (let* ((alist '(("hai" 10) ("bye" 20)))
           (key     (completing-read "Input: alist nil t nil))
           (value   (nth 1 (assoc-string key alist))))

        ;; Key and value defined in this scope.
 
    )


The function (assoc-string) returns the whole pair, and (nth 1 )
selects the last one. (Maybe a function to perform this combination
already exists?)


HTH - Joakim



-- 
  /--------------------------------------------------------------------\
 / Joakim Hove  / hove@bccs.no  /  (55 5) 84076       |                 \
 | Unifob AS, Avdeling for Beregningsvitenskap (BCCS) | Stabburveien 18 |
 | CMU                                                | 5231 Paradis    |
 \ Thormøhlensgt.55, 5020 Bergen.                     | 55 91 28 18     /
  \--------------------------------------------------------------------/

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Learners doubt in LISP
  2004-01-08 19:31 Learners doubt in LISP Rajsekar Manokaran
  2004-01-08  9:22 ` Joakim Hove
@ 2004-01-08 10:27 ` Ganesh Swami
  1 sibling, 0 replies; 3+ messages in thread
From: Ganesh Swami @ 2004-01-08 10:27 UTC (permalink / raw)
  Cc: help-gnu-emacs

>>>>> "RM" == Rajsekar Manokaran <rajsekar_manokaran@yahoo.co.uk> writes:

    RM> I have just started learning lisp.  I use emacs (which was my
    RM> motivation to learn LISP) to compile things.

    RM> There is a function in emacs called completing-read which when
    RM> passed some strings allows the user to select one string out
    RM> of the many passed. I want to allow the user select a string
    RM> and then use the data associated with the string.

    RM> eg.

    RM> (completing-read "Input: " '(("hai" 10) ("bye" 20)) nil t nil)


| C-h f assoc |----------
| 
| assoc is a built-in function.
| (assoc KEY LIST)
| 
| Return non-nil if KEY is `equal' to the car of an element of LIST.
| The value is actually the first element of LIST whose car equals KEY.


Real lisping:

  (defun y-completing-read (x)
    (cadr 
     (assoc 
      (completing-read "Input: " x nil t nil) 
      x)))


Better readability:

  (defun my-completing-read (x)
    (let ((ret (completing-read "Input: " x nil t nil)))
      (cadr (assoc ret x))
      ))
    

(my-completing-read '(("hai" 10) ("bye" 20)))


cheers,
Ganesh


    RM> reads allowing completions hai and bye.

    RM> the nil t nil are insignificant (t - only allow things on the
    RM> list).

    RM> Now this thing seems to return "bye" or "hai" How do I access
    RM> the 10 or 20 that comes together with it?


-- 
Ganesh Swami

If you want to get laid, go to school;
If you want to get educated, go to the library.
       -- Frank Zappa.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Learners doubt in LISP
@ 2004-01-08 19:31 Rajsekar Manokaran
  2004-01-08  9:22 ` Joakim Hove
  2004-01-08 10:27 ` Ganesh Swami
  0 siblings, 2 replies; 3+ messages in thread
From: Rajsekar Manokaran @ 2004-01-08 19:31 UTC (permalink / raw)





I have just started learning lisp.
I use emacs (which was my motivation to learn LISP) to compile things.

There is a function in emacs called completing-read which when passed some
strings allows the user to select one string out of the many passed. I want to
allow the user select a string and then use the data associated with the
string.

eg.

(completing-read "Input: " '(("hai" 10) ("bye" 20)) nil t nil)

reads allowing completions hai and bye.

the nil t nil are insignificant (t - only allow things on the list).

Now this thing seems to return "bye" or "hai"
How do I access the 10 or 20 that comes together with it?

Thanks in advance.

M Rajsekar

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-01-08 19:31 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-01-08 19:31 Learners doubt in LISP Rajsekar Manokaran
2004-01-08  9:22 ` Joakim Hove
2004-01-08 10:27 ` Ganesh Swami

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).