もともと、やりたかったのは("1" "2" "3")というリストを(1 2 3)に変換してやることです。
lang
1(setq foo '("1" "2" "3")) 2(dolist (num foo) 3 (setq num (string-to-number num)) 4) ;=>nil 5foo ;=>("1" "2" "3")
ではfooの中身が変わらず。
setqではなくsetcarを使う必要があるのだろうとは思うのですが、
その場合nthcarの引数に「リストの何番目を参照しているのか」が必要となります。
しかし、dolist中に何番目の要素を参照しているのかを知る方法がわからず困っています。
当初の目的自体は
lang
1(let ((i 0)) 2 (while (< i (length foo)) 3 (setcar (nthcdr i foo) (string-to-number (nth i foo))) 4 (setq i (+ i 1)) 5 ) 6 ) ;=>nil 7foo ;=>(1 2 3)
とすることで達成できたのですが、
リストが複雑になってくると毎回手動でイテレーションするのはバグ作りこみそうで怖いです。
そこで、できればdolistのようなマクロを使いたいのですが、
Emacs組み込み関数や有名なマクロで、
このような目的を果たせるものはあるでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/12/18 11:53
退会済みユーザー
2014/12/18 12:07