OVH Cloud OVH Cloud

tableau multidimensionnel

7 réponses
Avatar
Eric Reinbold
Ave,

C'est encore moi! (Oh l'em....)

Voilà, alors j'ai pondu du lisp et ca donne ca:

(let ((v1 "V:1\n") (v2 "V:2\n"))

(goto-char (point-min))
(while (search-forward "V:1" nil t)
(forward-line)
(setq v1 (concat v1 (buffer-substring (point) (line-end-position)))))

(goto-char (point-min))
(while (search-forward "V:2" nil t)
(forward-line)
(setq v2 (concat v2 (buffer-substring (point) (line-end-position)))))

)

Alors, je voudrais ca (à peu près):

(let ((v1 "V:1\n") (v2 "V:2\n") (......))

(goto-char (point-min))
(while (search-forward "V:1" nil t)
(forward-line)
(setq v1 (concat v1 (buffer-substring (point) (line-end-position)))))

(goto-char (point-min))
(while (search-forward "V:2" nil t)
(forward-line)
(setq v2 (concat v2 (buffer-substring (point) (line-end-position)))))

.......
)

S'il y avait des tableau multidimensionnel, je saurais, mais là?
Ou est-ce que je me fais des noeuds au cerveau?

Eric

7 réponses

Avatar
Matthieu Moy
Eric Reinbold writes:

Ave,

C'est encore moi! (Oh l'em....)

Voilà, alors j'ai pondu du lisp et ca donne ca:



Et si tu nous disais en Français ce que tu cherches à faire ? :-)

S'il y avait des tableau multidimensionnel, je saurais, mais là?



Un tableau de tableaux ne suffit pas ? cf. la doc sur les tableaux
(array, ou vector) dans le manuel emacs lisp.

--
Matthieu
Avatar
Pascal Bourguignon
Eric Reinbold writes:
S'il y avait des tableau multidimensionnel, je saurais, mais là?
Ou est-ce que je me fais des noeuds au cerveau?



En lisp, il y a toujours ce que tu veux. Sinon, tu te le fais!

(require 'pjb-cl) ; http://www.informatimago.com/develop/emacs
(setf m (MAKE-ARRAY '(2 3 4 5) :initial-element 0))
(setf (AREF m 1 1 2 2) 42)
(AREF m 1 1 2 2)
--> 42
m
-->
[[[[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]
[[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]
[[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]]
[[[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]
[[0 0 0 0 0] [0 0 0 0 0] [0 0 42 0 0] [0 0 0 0 0]]
[[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]]]


--
__Pascal Bourguignon__ http://www.informatimago.com/

"Logiciels libres : nourris au code source sans farine animale."
Avatar
Florent Georges
Pascal Bourguignon wrote:

http://www.informatimago.com/develop/emacs



Au fait, je vois que tu y fais référence à Emacs-CL.
L'utilises-tu ? D'après les discussions d'il y a ou an ou
deux dont je me souviens, il restait encore du boulot, et je
ne l'ai jamais utilisé. Et le développement semble mort
maintenant.

Est-ce donc utilisable ? Un détail qui m'avait déplu à
l'époque est l'utilisation systématique de '|' pour les
symboles. Je trouve cela très lourd.

--drkm
Avatar
Pascal Bourguignon
"Florent Georges" writes:

Pascal Bourguignon wrote:

http://www.informatimago.com/develop/emacs



Au fait, je vois que tu y fais référence à Emacs-CL.
L'utilises-tu ? D'après les discussions d'il y a ou an ou
deux dont je me souviens, il restait encore du boulot, et je
ne l'ai jamais utilisé. Et le développement semble mort
maintenant.



Je n'y ai pas regardé depuis.


Est-ce donc utilisable ? Un détail qui m'avait déplu à
l'époque est l'utilisation systématique de '|' pour les
symboles. Je trouve cela très lourd.



Pour ceux qui viennent d'emacs lisp, surement, puisqu'ils ont des noms
en minuscule. Une alternative qu'il serait possible implémenter,
c'est comme avec clisp, une sélection du readtable case en fonction du
package:

(setf *package* (find-package "CL-USER"))
'toto --> TOTO
'emacs:toto --> EMACS:|toto|
'emacs:CamelCase --> EMACS:|CamelCase|
'cl:car --> CL:CAR
'emacs:car --> EMACS:|car|


--
__Pascal Bourguignon__ http://www.informatimago.com/

NOTE: The most fundamental particles in this product are held
together by a "gluing" force about which little is currently known
and whose adhesive power can therefore not be permanently
guaranteed.
Avatar
Florent Georges
Pascal Bourguignon wrote:

Pour ceux qui viennent d'emacs lisp, surement, puisqu'ils ont des noms
en minuscule. Une alternative qu'il serait possible implémenter,
c'est comme avec clisp, une sélection du readtable case en fonction du
package:



C'est personnellement ce que je trouverais plus intuitif comme
integration.

--drkm
Avatar
Eric Reinbold
Eric Reinbold writes:

Ave,

C'est encore moi! (Oh l'em....)

Voilà, alors j'ai pondu du lisp et ca donne ca:

(let ((v1 "V:1n") (v2 "V:2n"))

(goto-char (point-min))
(while (search-forward "V:1" nil t)
(forward-line)
(setq v1 (concat v1 (buffer-substring (point) (line-end-position)))))

(goto-char (point-min))
(while (search-forward "V:2" nil t)
(forward-line)
(setq v2 (concat v2 (buffer-substring (point) (line-end-position)))))

)

Alors, je voudrais ca (à peu près):

(let ((v1 "V:1n") (v2 "V:2n") (......))

(goto-char (point-min))
(while (search-forward "V:1" nil t)
(forward-line)
(setq v1 (concat v1 (buffer-substring (point) (line-end-position)))))

(goto-char (point-min))
(while (search-forward "V:2" nil t)
(forward-line)
(setq v2 (concat v2 (buffer-substring (point) (line-end-position)))))

.......
)

S'il y avait des tableau multidimensionnel, je saurais, mais là?
Ou est-ce que je me fais des noeuds au cerveau?

Eric


Non, z'est pas pozzible! J'arrive pas à définir une variable dans le code. En
l'occurence v1, v2, v3 ... avec comme valeur "V:1", "V:2", "V:3" ...
Et comment arrêter ça? Une fois v? atteint, on arrête. (Bon, ca c'est pour plus tard)

(setq variable (concat "v" (number-to-string (setq x (1+ x)))) chaine (concat "V:" (number-to-string (setq ch (1+ ch)))))

(symbol-value v1)

Debugger entered--Lisp error: (void-variable v1)
(insert v1)
eval((insert v1))
eval-last-sexp-1(nil)
eval-last-sexp(nil)
* call-interactively(eval-last-sexp)

???
Eric
(j'vais p'être me faire descendre?)
Avatar
Matthieu Moy
Eric Reinbold writes:

Non, z'est pas pozzible! J'arrive pas à définir une variable dans le code. En
l'occurence v1, v2, v3 ... avec comme valeur "V:1", "V:2", "V:3" ...
Et comment arrêter ça? Une fois v? atteint, on arrête. (Bon, ca c'est pour plus tard)

(setq variable (concat "v" (number-to-string (setq x (1+ x)))) chaine (concat "V:" (number-to-string (setq ch (1+ ch)))))



Tu définis les variables « variable » et « chaine », qui valent
respectivement "v1" et "V:1" ...

(symbol-value v1)



... et tu utilise une variable v1.

Tu es en train de confondre valeur et nom de variable. Est-ce bien
raisonnable ?

(jette un coup d'oeil à la fonction intern, éventuellement)

--
Matthieu