私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
【叩かれて】Emacs Lisp道場【強くなれ】
emacs スレッド一覧へ / emacs とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
(defun my-mapcar (func list)
(let ((rest list) (results ()))
(while (not (null rest))
(setq results (cons (funcall func (car rest)) results))
(setq rest (cdr rest)))
(nreverse results)))
とかかな。
(let ((rest list) (results ()))
(while (not (null rest))
(setq results (cons (funcall func (car rest)) results))
(setq rest (cdr rest)))
(nreverse results)))
とかかな。
setq とか cons を使いたくないんですとか来た場合に備えておこう。
(require 'cl)
(defun my-mapcar-2 (func lst)
(loop for elem in lst
collect (funcall func elem)))
(require 'cl)
(defun my-mapcar-2 (func lst)
(loop for elem in lst
collect (funcall func elem)))
>>898 つうか、そゆのは大抵自分では考えないだろうし、調べないだろうし、向上心もないだろうし、礼儀も知らないだろうし、
人の忠告も聞かないだろうから。さっさと答を与えればそれ以上しつこく聞いてこない軽い荒らしだと思って対応するが吉。
人の忠告も聞かないだろうから。さっさと答を与えればそれ以上しつこく聞いてこない軽い荒らしだと思って対応するが吉。
自分も書いてみた。リストしか考慮してない。
あんまり慣れてないからどっかまずいところあるかも・・・(自分への免罪符
(defun my-mapcar (func list)
(defun my-mapcar-iter (func list rtn)
(if (null list)
rtn
(my-mapcar-iter func (cdr list)
(setq rtn (cons (funcall func (car list)) rtn)))))
(my-mapcar-iter func list '()))
あんまり慣れてないからどっかまずいところあるかも・・・(自分への免罪符
(defun my-mapcar (func list)
(defun my-mapcar-iter (func list rtn)
(if (null list)
rtn
(my-mapcar-iter func (cdr list)
(setq rtn (cons (funcall func (car list)) rtn)))))
(my-mapcar-iter func list '()))
>>898の質問者はもうダメだろうね。レポートは突破できても試験は無理そうだ……。
授業二三回でればいいだろうになぁ。まったく聞いてなかったんだろうな。授業料無駄だったね。
授業二三回でればいいだろうになぁ。まったく聞いてなかったんだろうな。授業料無駄だったね。
>>909
最近、ちょっと scheme で遊んでたもので・・・。
> Emacs Lisp じゃー再帰は実用的じゃないお。
調べてみたところ、再帰回数が max-lisp-eval-depth で制限されてる、
末尾再帰が最適化されない、のようなことがあるのですね。
> しかも defun は internal define と違ってグローバルだし…。
M-x help f で関数のリスト見たら、my-mapcar-iter があって驚きました。
よくよく考えてみたら、setq はいらなかった。
なんでつけたんだろう。
まずいところ多すぎorz
最近、ちょっと scheme で遊んでたもので・・・。
> Emacs Lisp じゃー再帰は実用的じゃないお。
調べてみたところ、再帰回数が max-lisp-eval-depth で制限されてる、
末尾再帰が最適化されない、のようなことがあるのですね。
> しかも defun は internal define と違ってグローバルだし…。
M-x help f で関数のリスト見たら、my-mapcar-iter があって驚きました。
よくよく考えてみたら、setq はいらなかった。
なんでつけたんだろう。
まずいところ多すぎorz
>>905
改宗すればおk
改宗すればおk
flet を使って書き直すなら、こんなかんじでしょうか。
たしかに my-mapcar-iter が隠れた。これ便利かも。
(require 'cl)
(defun my-mapcar (func list)
(flet ((my-mapcar-iter (func list rtn)
(if (null list)
(reverse rtn)
(my-mapcar-iter func (cdr list)
(cons (funcall func (car list)) rtn)))))
(my-mapcar-iter func list '())))
たしかに my-mapcar-iter が隠れた。これ便利かも。
(require 'cl)
(defun my-mapcar (func list)
(flet ((my-mapcar-iter (func list rtn)
(if (null list)
(reverse rtn)
(my-mapcar-iter func (cdr list)
(cons (funcall func (car list)) rtn)))))
(my-mapcar-iter func list '())))
…再帰するなら labels じゃねーとダメなんじゃね? cl のバグ?
ズバリこうだろ。while 版より短い!! 俺のバイク小屋ハァハァ
(defun my-mapcar (func lst)
(let ((result nil))
(dolist (e lst)
(push (funcall func e) result))
(nreverse result)))
ズバリこうだろ。while 版より短い!! 俺のバイク小屋ハァハァ
(defun my-mapcar (func lst)
(let ((result nil))
(dolist (e lst)
(push (funcall func e) result))
(nreverse result)))
なんとなく nreverse なしのループで書いてみた
(defun my-mapcar (fun list)
(let* ((result (list nil))
(x result))
(while list
(setcdr x (list (funcall fun (car list))))
(setq x (cdr x) list (cdr list)))
(cdr result)))
>>915
flet を macroexpand してみればわかるよ
まあしょうがないんだろうけどちょっと気持ち悪いよね
(defun my-mapcar (fun list)
(let* ((result (list nil))
(x result))
(while list
(setcdr x (list (funcall fun (car list))))
(setq x (cdr x) list (cdr list)))
(cdr result)))
>>915
flet を macroexpand してみればわかるよ
まあしょうがないんだろうけどちょっと気持ち悪いよね
ずびまぜん。
elispで 16進数文字列を整数に変換する楽な方法ってありません?
(hoge "64") => 100
ってなるような。
(defun hoge (s)
(string-to-number (concat "#x" s)))
とかじゃ 0が返ってきてしまいました。
elispで 16進数文字列を整数に変換する楽な方法ってありません?
(hoge "64") => 100
ってなるような。
(defun hoge (s)
(string-to-number (concat "#x" s)))
とかじゃ 0が返ってきてしまいました。
(defun hage (s)
(string-to-number s 16))
↓
(hage "64")
↓
100 ウマー
(string-to-number s 16))
↓
(hage "64")
↓
100 ウマー
おお、そんなところに &optional があったとは...
infoをもっとちゃんと読むべきでした。
どうも有難うございました。
infoをもっとちゃんと読むべきでした。
どうも有難うございました。
知ってる人も多いだろうけど C-h f めちゃくちゃ便利だよ。
関数定義してるソースの該当部分にも飛べる。
関数定義してるソースの該当部分にも飛べる。
あるオブジェクトに対し、car-safeが非nilとなる時
cdrでなくcdr-safeを使うべき局面ってある?
cdrでなくcdr-safeを使うべき局面ってある?
同じ名前の変数 (defvar hoge)と関数 (defun hoge ())が定義されているとき、
変数だけ定義を消すことってできますか?
(unintern 'hoge) だと、両方消えてしまうので。
変数だけ定義を消すことってできますか?
(unintern 'hoge) だと、両方消えてしまうので。
ぬりがとう。
ところでこれ何て読むのですか?
(エフ)メイク・アン・バウンドでいいんかな?
思い出されるcreat()。
ところでこれ何て読むのですか?
(エフ)メイク・アン・バウンドでいいんかな?
思い出されるcreat()。
defconstしてるものには、時に大文字のシンボルを使ってみるのも一興かなと
ふと思った。
たぶんウザいだろうけど。
ふと思った。
たぶんウザいだろうけど。
EmacsがXで動いているときだけ、
C-zでアイコン化しない様にしたいと思っています。
Xで動いているのかterminalで動いているのか判別するには
どうしたらよいのでしょうか。
C-zでアイコン化しない様にしたいと思っています。
Xで動いているのかterminalで動いているのか判別するには
どうしたらよいのでしょうか。
M-x shell
を.emacsファイルの読み込み時に動作させるにはどうしたらよいのでしょうか。
を.emacsファイルの読み込み時に動作させるにはどうしたらよいのでしょうか。
>>934
できました。ありがとうございました。
できました。ありがとうございました。
(global-set-key [?\C-;] 'なにか)
とか
(global-set-key "\C;" 'なにか)
とやってもエラーがでて動きません。
;をjにしたら動いたので”なにか”が間違っていることはいないと思います。
C-;やC-, C-. へのバインドを指定するにはどうしたらよいのでしょうか
どなたか教えていただけないでしょうか?
とか
(global-set-key "\C;" 'なにか)
とやってもエラーがでて動きません。
;をjにしたら動いたので”なにか”が間違っていることはいないと思います。
C-;やC-, C-. へのバインドを指定するにはどうしたらよいのでしょうか
どなたか教えていただけないでしょうか?
[(control ?;)]
設定程度の質問なら、次回からelispスレじゃなくてemacsスレ行きな。
設定程度の質問なら、次回からelispスレじゃなくてemacsスレ行きな。
>>937
ありがとうございます
今後は気をつけます
どうもすいませんでした
そのようにしても動きはしませんでしたが、
それはターミナルからの接続の仕様らしいと分かったので、
別のキーを割りあてることにします
ありがとうございます
今後は気をつけます
どうもすいませんでした
そのようにしても動きはしませんでしたが、
それはターミナルからの接続の仕様らしいと分かったので、
別のキーを割りあてることにします
man ascii
で出てくるコントロールコード以外の
コントロールキーの組み合わせ以外は
端末じゃ動かないよ。
で出てくるコントロールコード以外の
コントロールキーの組み合わせ以外は
端末じゃ動かないよ。
(func "/usr/bin/emacs" "/")
=> ("usr" "bin" "emacs")
こんな感じで、文字列からトークンを抽出する好い奴を
何方か識りませぬか?
=> ("usr" "bin" "emacs")
こんな感じで、文字列からトークンを抽出する好い奴を
何方か識りませぬか?
>>943
幸あれ。
やっぱりあるよね。token で探してたよ
>>942
普通?とりあえずこんなん書いてた
(lambda (string delimiter)
(let* ((iter (lambda (str dlm lst)
(if (and (string-match dlm str) (substring str (1+ (string-match dlm str)) nil))
(funcall iter
(and (string-match dlm str) (substring str (1+ (string-match dlm str)) nil))
dlm
(cons (substring str 0 (string-match dlm str)) lst))
(cons (substring str 0 (string-match dlm str)) lst)))))
(funcall iter string delimiter ())))
幸あれ。
やっぱりあるよね。token で探してたよ
>>942
普通?とりあえずこんなん書いてた
(lambda (string delimiter)
(let* ((iter (lambda (str dlm lst)
(if (and (string-match dlm str) (substring str (1+ (string-match dlm str)) nil))
(funcall iter
(and (string-match dlm str) (substring str (1+ (string-match dlm str)) nil))
dlm
(cons (substring str 0 (string-match dlm str)) lst))
(cons (substring str 0 (string-match dlm str)) lst)))))
(funcall iter string delimiter ())))
下記のような独自スクリプトのメジャーモードを作っています。
function:
if hoge == 0 {
hogehoge;
}
elseif hoge ==1 {
if hoge2 == 0 {
hogehoge2;
}else{
hogehoge3;
}
}
end;
階層は上記のif文のみです。
自動インデントをつけたいのですがどうすればいいでしょうか?
function:
if hoge == 0 {
hogehoge;
}
elseif hoge ==1 {
if hoge2 == 0 {
hogehoge2;
}else{
hogehoge3;
}
}
end;
階層は上記のif文のみです。
自動インデントをつけたいのですがどうすればいいでしょうか?
補足です。generic-x.elを使って作っています。
buffer-local-variableなるものがあるそうですが、
.emacs.elなどでsetq-defaultで設定した値は、
新しいバッファを作る度にバッファごとの値のコピーが作られてしまうんでしょうか。
カスタマイズ性から見るとsetq-defaultの方が使い易そうなのですが、
パフォーマンスに悪影響がでないか心配なんです。
.emacs.elなどでsetq-defaultで設定した値は、
新しいバッファを作る度にバッファごとの値のコピーが作られてしまうんでしょうか。
カスタマイズ性から見るとsetq-defaultの方が使い易そうなのですが、
パフォーマンスに悪影響がでないか心配なんです。
make-variable-buffer-local されてるような変数の話だよね。
これは setq とかで書き換えた時点で、その buffer に local な変数が作られるってシステム。
書き換えるまではどの buffer でも初期値を参照してて、 setq-default はこの初期値を書き換える。
それ自体がコピーの原因になったりはしないはず。
これは setq とかで書き換えた時点で、その buffer に local な変数が作られるってシステム。
書き換えるまではどの buffer でも初期値を参照してて、 setq-default はこの初期値を書き換える。
それ自体がコピーの原因になったりはしないはず。
call-processとかの外部コマンド呼び出し関数で
コマンドの出力(標準出力)を文字列もしくは文字列リストで
返すようなものってないでしょかね?
いちいちバッファに出すのがとても無駄に感じる時がある
コマンドの出力(標準出力)を文字列もしくは文字列リストで
返すようなものってないでしょかね?
いちいちバッファに出すのがとても無駄に感じる時がある
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs スレッド一覧へ
みんなの評価 : ○類似してるかもしれないスレッド
- 【熱く】お前のEmacsにはまった理由【語れ】 (577) - [36%] - 2021/8/28 17:30 ○
- 「Emacsは消滅すべき」、ゴスリング氏 (127) - [17%] - 2023/1/12 15:45
トップメニューへ / →のくす牧場書庫について