2008-09-01から1ヶ月間の記事一覧

メモ

SumiTomohikoの日記: __build_class__ (http://d.hatena.ne.jp/SumiTomohiko/20080926/1222448134) 3.0から入った機能らしい。あまり使い道が思いつかないがあとでチェック。

compact-number-list

昨日のひげぽんさんのお題のPython版。 def compact_number_list(L): if len(L) < 2: return L L2 = [[L[0]]] for i, v in enumerate(L[1:]): if L2[-1][-1] + 1 == v: L2[-1].append(v) else: L2.append([v]) L3 = [] for vs in L2: if len(vs) == 1: L3.ap…

整数リストの変形

ひげぽん OSとか作っちゃうかMona-: Scheme どう書く?的 (http://d.hatena.ne.jp/higepon/20080925/1222326246) 整列済みの number のリストがある。 '(1 3 4 5 6 12 13 15) このようなリストで数が連続している部分は '(1 2 3) -> '(1 . 3) のように両端の…

関数型言語の考え方

以下は私のHaskellなどの関数型言語に対する理解。先日リンクしたHaskellのPPTを見てイメージできた。私は関数型に関して素人なので間違いを含むかも。 for, whileなどのループの制御文は、内部イテレータな「高階関数」は内部に再帰を含んでいると思われる…

メモ

PythonでCleanやHaskellのリスト相当を準備 (http://pgkiss.web.fc2.com/functionalPython/1.html) あとでPythonでの実現方法を勉強してみるつもり。

ScalaからGroovyへ

昨日前の会社の先輩からGroovyという言語を教えてもらった。以下Wikipedia(http://ja.wikipedia.org/wiki/Groovy)からの引用。 その他、Python、…などからも言語機能が取り込まれている。 Groovyではコードブロックをファーストクラス(一級市民)オブジェク…

car, cdr, consと無限リスト

昨日のHaskellの資料のエラトステネスのふるいを元に無限リストの扱いを考えてみた。Pythonのcar、cdr、consは、jijixiさんのコードを拝借(http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070101#p01)。 -- Haskell sieve [] = [] sieve (p:ps) = p…

メモ

「ときどきの雑記帖 i戦士篇」日記経由でメモ。あとで読む。 Haskell プログラミング 〜 純粋関数型言語への誘い〜(http://www.mew.org/~kazu/haskell.pdf) 以下、Python版の実装。出典元は省略。 クイックソート def qsort(L): if len(L) <= 1: return L re…

〜使い

一覧表が見つからなかったのでまとめてみた。ご指摘大歓迎。 Python Pythonista Ruby Rubyist Perl Perl Monger PHP PHPer (ぺちぱー) Scheme Schemer Lisp Lisper ML MLer Java Javanese C# C#er (C Sharper) C C屋、Cげんがー C++ C++屋、Cぷらぷらー Delp…

メソッドのself

最近『初めてのRuby』を読んでいる。Pythonのメソッドの第一引数にselfを書かなくてはいけないが、Rubyと対比して理由がなんとなく分かったので検討してみる。 まずPythonではRubyと同様、インスタンスメソッドとトップレベル関数の区別がない。Pythonではメ…

プログラミングテクニックのまとめ

とりあえず思いついたもののまとめ。 まずは、ベーシックなものから。 変数のスコープをなるべく狭くしろ 他はグローバル変数を使うなとか、モジュール化と界面を意識せよなど。とにかくスコープは重要かつ意外と奥が深い。スコープに関係する機能は、モジュ…

関数にコードブロックを渡す

PythonでRubyのようにコードブロックを渡すやり方。デコレータを利用する。 >>> def each(L): ... def each_(func): ... for x in L: ... func(x) ... return each_ ... >>> L = range(10) >>> >>> @each(L) ... def pr(x): ... print '<', x, '>' ... < 0 > …

富豪的プログラミングとデータ構造

LLなPythonを使うようになって気づいたのだが、自分が仕事で作成する処理の大部分のデータ構造はユーザ定義のクラスを作成する必要なく、組み込みクラスの組み合わせ済んでしまう。最近仕事でJavaを使うようになって複数のデータをある関数の出力として返し…

変数名と値の一覧を限定的にソースコードから取り出す

以下、parse_vars.py # coding: cp932 from compiler import parse, walk, ast class Visitor: def __init__(self, vars_d): self.vars_d = vars_d def visitAssign(self, node): var, val = node.getChildren() if isinstance(var, ast.AssName): if isinst…

メモ

forest book: Python の対話型プロンプトで補完機能を使う (http://d.hatena.ne.jp/t2y-1979/20080901/1220195104) 標準で入っていても良さそうだがreadlineモジュールは標準で入っていない。あとはPygmentsか何かでシンタックスハイライト機能もあったら面…