私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
【叩かれて】Emacs Lisp道場【強くなれ】
emacs スレッド一覧へ / emacs とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
Re:>400
それはいいアイディアである
それはいいアイディアである
Tail Recursion は未だに Elisp に実装されていない。
この事実に理由はあるのか?
tail recursion なら実装されてますがなにか?
おまいの言いたいのは tail recursion optimization のことだろ。
理由はもちろんある。
-- 終了 --
おまいの言いたいのは tail recursion optimization のことだろ。
理由はもちろんある。
-- 終了 --
動的スコープの言語では末尾再帰の最適化は不可能
(defun bar ()
(fset 'foo (lambda () (print "bar"))))
(defun foo ()
(bar)
(foo))
(defun bar ()
(fset 'foo (lambda () (print "bar"))))
(defun foo ()
(bar)
(foo))
A* サーチ・アルゴリズムの elisp バーションが
ほしくないわけでもないな。
____________
"Self" is that which is in the process of becoming... --Zeno
Today's Lucky Number: 421
>>409
負けたな
負けたな
ある文字列から四文字ずつ取り出してリストを作りたいのですが
どういう風にすればよいのでしょうか?
"いろはにほへとち" という風な文字列から '("いろはに" "ほへとち")
という風なリストを得たいのです。
文字列は四文字以上で4の倍数であることは保証されています。
どういう風にすればよいのでしょうか?
"いろはにほへとち" という風な文字列から '("いろはに" "ほへとち")
という風なリストを得たいのです。
文字列は四文字以上で4の倍数であることは保証されています。
length と substring を使うと簡単にできました。
どうもすいません。
どうもすいません。
拡張子 .tex を開けると自動的にflyspell-modeになるようにしたくて、
ついでに辞書もデフォルト(英語)からかえたくて、以下の
コードを~/.emacs にいれたんですけど、flyspell-mode
も辞書の変換もうまくいきません。なにがだめなんでしょう?
(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(setq LaTex-mode-hook
'(lambda ()
(setq ispell-personal-dictionary "~/.ispell-dico-perso")
(ispell-change-dictionary "dansk")
))
エラーのメッセージはでないんですけど、、、
ついでに辞書もデフォルト(英語)からかえたくて、以下の
コードを~/.emacs にいれたんですけど、flyspell-mode
も辞書の変換もうまくいきません。なにがだめなんでしょう?
(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(setq LaTex-mode-hook
'(lambda ()
(setq ispell-personal-dictionary "~/.ispell-dico-perso")
(ispell-change-dictionary "dansk")
))
エラーのメッセージはでないんですけど、、、
>>415
>も辞書の変換もうまくいきません。なにがだめなんでしょう?
せっかくadd-hookしたのに、次のsetqで上書きされてます。
danskに萌えたので、設定例も。
(setq LaTex-mode-hook
(lambda ()
(flyspell-mode 1)
(set (make-local-variable 'ispell-personal-dictionary) "~/.ispell-dico-perso")
(ispell-change-dictionary "dansk")
))
>も辞書の変換もうまくいきません。なにがだめなんでしょう?
せっかくadd-hookしたのに、次のsetqで上書きされてます。
danskに萌えたので、設定例も。
(setq LaTex-mode-hook
(lambda ()
(flyspell-mode 1)
(set (make-local-variable 'ispell-personal-dictionary) "~/.ispell-dico-perso")
(ispell-change-dictionary "dansk")
))
>>416
ありがとうございます。萌えてくださって。ってちがうか。
書いて下さった設定例でやってみたんですけど、
やっぱりうまくいきません、、、辞書も、英語のままです。
なにがいったいだめなんでしょうか、、、
ありがとうございます。萌えてくださって。ってちがうか。
書いて下さった設定例でやってみたんですけど、
やっぱりうまくいきません、、、辞書も、英語のままです。
なにがいったいだめなんでしょうか、、、
flyspell-modeだとプロセスを上げっぱなしにし、
それに付随して、辞書の指定はプロセス立ち上げ時なので、
辞書の設定を先に行う必要があるようですね。
こんなんでどうでしょうか。
(setq LaTex-mode-hook
(lambda ()
(let ((ispell-local-dictionary "dansk"))
(set (make-local-variable 'ispell-personal-dictionary) "~/.ispell-dico-perso")
(flyspell-mode 1)
)))
#自分で試してみる気はしません
それに付随して、辞書の指定はプロセス立ち上げ時なので、
辞書の設定を先に行う必要があるようですね。
こんなんでどうでしょうか。
(setq LaTex-mode-hook
(lambda ()
(let ((ispell-local-dictionary "dansk"))
(set (make-local-variable 'ispell-personal-dictionary) "~/.ispell-dico-perso")
(flyspell-mode 1)
)))
#自分で試してみる気はしません
>>420
調べて下さってありがとうございます。m(_ _)m
ですが、やはりだめでした。。。
そもそも、なぜflyspell-modeさえ自動的にたちあがらないのは
なぜなのか、、、
もうちょっとがんばってしらべてみます。
調べて下さってありがとうございます。m(_ _)m
ですが、やはりだめでした。。。
そもそも、なぜflyspell-modeさえ自動的にたちあがらないのは
なぜなのか、、、
もうちょっとがんばってしらべてみます。
げ、そういう状態でしたか。
LaTex-mode-hook じゃなくて latex-mode-hook なのでは?
LaTex-mode-hook じゃなくて latex-mode-hook なのでは?
>>422
あああありがとうございます!(涙
うまくいきました!
あのコードはどっかから拾ってきたものなので盲目に過信してました,,,orz
最初に書いてもらったコードのLaTex をlatexに変えることでいけました。
一応貼っておきます。
(setq latex-mode-hook
(lambda ()
(flyspell-mode 1)
(set (make-local-variable 'ispell-personal-dictionary) "~/.ispell-dico-perso")
(ispell-change-dictionary "dansk")
))
あああありがとうございます!(涙
うまくいきました!
あのコードはどっかから拾ってきたものなので盲目に過信してました,,,orz
最初に書いてもらったコードのLaTex をlatexに変えることでいけました。
一応貼っておきます。
(setq latex-mode-hook
(lambda ()
(flyspell-mode 1)
(set (make-local-variable 'ispell-personal-dictionary) "~/.ispell-dico-perso")
(ispell-change-dictionary "dansk")
))
>>423
プロセスを作成するのは最初のparse時であり、
ispell-change-dictionaryでispellプロセスがあれば殺す、
という処理でした。
この辺はflyspellかispellかは関係ないですね。勘違いしてました。
プロセスを作成するのは最初のparse時であり、
ispell-change-dictionaryでispellプロセスがあれば殺す、
という処理でした。
この辺はflyspellかispellかは関係ないですね。勘違いしてました。
Reply-to:>>425
よかったな。 Lisp の場合、フリーでダウンロードできる本が沢山ある。
探して読め。
____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.
よかったな。 Lisp の場合、フリーでダウンロードできる本が沢山ある。
探して読め。
____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.
Reply-to:>>427
> 引数で与えたローマ字文字列を、平仮名に変換してくれる関数ありませんか?
そんなのあるもなにも、自分で簡単に書けるだろうが。
____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.
> 引数で与えたローマ字文字列を、平仮名に変換してくれる関数ありませんか?
そんなのあるもなにも、自分で簡単に書けるだろうが。
____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.
Reply-to:>>427
> 引数で与えたローマ字文字列を、平仮名に変換してくれる関数ありませんか?
pt を 0 で始める。
pt を相対として、 substring で引数の文字列の
`one-char'、`two-char'、`three-char'
をゲットする。
s は empty string として初期化。
(setq s (concat s
(cond
((string= one-char "a" ) "あ")
((string= one-char "i" ) "い")
...
((string= two-char "ka" ) "か")
...
)))
んで、 pt を動かす。
上の作業を繰りかえせ。
Elisp 道場なんだから、後は自分で組み立てろバカ。
____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.
> 引数で与えたローマ字文字列を、平仮名に変換してくれる関数ありませんか?
pt を 0 で始める。
pt を相対として、 substring で引数の文字列の
`one-char'、`two-char'、`three-char'
をゲットする。
s は empty string として初期化。
(setq s (concat s
(cond
((string= one-char "a" ) "あ")
((string= one-char "i" ) "い")
...
((string= two-char "ka" ) "か")
...
)))
んで、 pt を動かす。
上の作業を繰りかえせ。
Elisp 道場なんだから、後は自分で組み立てろバカ。
____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.
Reply-to:>>427
> 引数で与えたローマ字文字列を、平仮名に変換してくれる関数ありませんか?
pt を 0 で始める。
pt を相対として、 substring で引数の文字列の
`one-char'、`two-char'、`three-char'
をゲットする。
s は empty string として初期化。
(setq s (concat s
(cond
((string= one-char "a" ) "あ")
((string= one-char "i" ) "い")
...
((string= two-char "ka" ) "か")
...
)))
んで、 pt を動かす。
上の作業を繰りかえせ。
Elisp 道場なんだから、後は自分で組み立てろバカ。
> 引数で与えたローマ字文字列を、平仮名に変換してくれる関数ありませんか?
pt を 0 で始める。
pt を相対として、 substring で引数の文字列の
`one-char'、`two-char'、`three-char'
をゲットする。
s は empty string として初期化。
(setq s (concat s
(cond
((string= one-char "a" ) "あ")
((string= one-char "i" ) "い")
...
((string= two-char "ka" ) "か")
...
)))
んで、 pt を動かす。
上の作業を繰りかえせ。
Elisp 道場なんだから、後は自分で組み立てろバカ。
ふつーに書けば
(let ((r-h-alist
'((a . あ) (i . い) (u . う) (e . え) (o . お)
(ka . か) (ki . き) (ku . く) (ke . け) (ko . こ)
(sa . さ) (si . し) (su . す) (se . せ) (so . そ))))
(defconst r-h-table
(let ((table (make-hash-table :test 'eq)))
(dolist (x r-h-alist)
(puthash (car x) (cdr x) table))
table))
(defconst r-h-regexp
(regexp-opt (mapcar (lambda (x) (symbol-name (car x))) r-h-alist))))
(defun r-h (roma)
(let ((start 0) result)
(while (string-match r-h-regexp roma start)
(if (> (match-beginning 0) start)
(push (substring roma start (match-beginning 0)) result))
(setq start (match-end 0))
(push (symbol-name (gethash (intern (match-string 0 roma)) r-h-table))
result))
(push (substring roma start) result)
(apply #'concat (nreverse result))))
こんな感じだろ。cond で比較してくなんて小学生か?
(let ((r-h-alist
'((a . あ) (i . い) (u . う) (e . え) (o . お)
(ka . か) (ki . き) (ku . く) (ke . け) (ko . こ)
(sa . さ) (si . し) (su . す) (se . せ) (so . そ))))
(defconst r-h-table
(let ((table (make-hash-table :test 'eq)))
(dolist (x r-h-alist)
(puthash (car x) (cdr x) table))
table))
(defconst r-h-regexp
(regexp-opt (mapcar (lambda (x) (symbol-name (car x))) r-h-alist))))
(defun r-h (roma)
(let ((start 0) result)
(while (string-match r-h-regexp roma start)
(if (> (match-beginning 0) start)
(push (substring roma start (match-beginning 0)) result))
(setq start (match-end 0))
(push (symbol-name (gethash (intern (match-string 0 roma)) r-h-table))
result))
(push (substring roma start) result)
(apply #'concat (nreverse result))))
こんな感じだろ。cond で比較してくなんて小学生か?
Reply-to:>>439
最適化などいくらでもできる。
その関数をプログラム中に何度も使用のであれば、早くすればよい。
さっきも言ったように「一番直観的な実装方法を書いてやっただけ」だ。
吾の君ので比較した場合、どっちが直観的かは自明である。
____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.
最適化などいくらでもできる。
その関数をプログラム中に何度も使用のであれば、早くすればよい。
さっきも言ったように「一番直観的な実装方法を書いてやっただけ」だ。
吾の君ので比較した場合、どっちが直観的かは自明である。
____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.
438 が最適化されていると感じるのなら
(defconst r-h-alist
'(("a" . "あ") ("i" . "い") ("u" . "う") ("e" . "え") ("o" . "お")
("ka" . "か") ("ki" . "き") ("ku" . "く") ("ke" . "け") ("ko" . "こ")
("sa" . "さ") ("si" . "し") ("su" . "す") ("se" . "せ") ("so" . "そ")))
(defconst r-h-regexp
(regexp-opt (mapcar #'car r-h-alist)))
(defun r-h (roma)
(let ((start 0) (result ""))
(while (string-match r-h-regexp roma start)
(setq start (match-end 0))
(setq result (concat result
(cdr (assoc (match-string 0 roma) r-h-alist)))))
result))
これで理解できるかな。
ローマ字にマッチする正規表現を検索し、結果をひらがなとの対応表から引く。
one-char two-char とやらを cond でだらだら比較するよりずっと「直観的」
じゃないか。
(defconst r-h-alist
'(("a" . "あ") ("i" . "い") ("u" . "う") ("e" . "え") ("o" . "お")
("ka" . "か") ("ki" . "き") ("ku" . "く") ("ke" . "け") ("ko" . "こ")
("sa" . "さ") ("si" . "し") ("su" . "す") ("se" . "せ") ("so" . "そ")))
(defconst r-h-regexp
(regexp-opt (mapcar #'car r-h-alist)))
(defun r-h (roma)
(let ((start 0) (result ""))
(while (string-match r-h-regexp roma start)
(setq start (match-end 0))
(setq result (concat result
(cdr (assoc (match-string 0 roma) r-h-alist)))))
result))
これで理解できるかな。
ローマ字にマッチする正規表現を検索し、結果をひらがなとの対応表から引く。
one-char two-char とやらを cond でだらだら比較するよりずっと「直観的」
じゃないか。
前へ 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
トップメニューへ / →のくす牧場書庫について