Emacsの基本的なコマンドは C-u "数字"の後に実行すると"数字"回だけ 繰り返してくれるんだけど、C-yとか M-yの場合、繰り返すんじゃなくて、 "数字"個前の kill-ringの内容が貼り付けられる。 yank-popを使うならさておき anything-show-kill-ringみたいなものを yank-popの代わりに使えば n個前のものを貼りつけというのは不要なので、 繰り返して貼付けという操作がやはり欲しくなる。 10行ぐらい貼りつけて、各行少しずつ直すというような作業はわりと 多いと思います。Vimだと 10yyとか 10ddみたいな感じでとても簡単に できることなんですが、それができないというのはあれなので。 コード 基本的に EmacsWikiとか StackOverflowで見たものを引用 現在の行を複製する関数 キーはお好きなように割り当ててください。 ;
Rubyにおいてシーケンス、つまり意味的に連続する要素の並びを簡単に生成するObject#repeatというものを考えましたよ!以前に考えたEnumerable#repeatを単にすべてのオブジェクトに拡張したものですけど。 class Object def repeat(init=true, &blk) x = self Enumerator.new do |y| y << x if init loop { y << (x = yield x) } end end end repeatは、そのレシーバオブジェクトを初期値として、渡されたブロックを繰り返し適用します。適用の結果はEnumeratorオブジェクトでラップされているので、遅延評価されます。 以下に、問題に答える形で使い方を見せますね。比較のためrepeatを使わない方法も適宜示します。 1. 初項1、公差2の等差数列の最初の2
PythonでCleanやHaskellのリスト相当を準備で、関数プログラミングの準備ができたので、いよいよ関数プログラミングにチャレンジしてみよう。その前に、「関数プログラミングって何がどういいの?」という人は、 なぜ関数プログラミングは重要かを一読しておこう。 まず、Consリストを生成するいくつかの関数を定義しよう。手始めに、指定された値の無限長のConsリストを生成する関数repeat()を作る。 def repeat(v): return Cons.lazyCons(v, lambda: repeat(v)) # 一見再帰呼び出しのようだがそうではない 次に等差数列を生成する関数を定義する。 def seq(start=0, step=1): return Cons.lazyCons(start, lambda: seq(start+step, step)) Pythonのzip
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く