CleanやHaskellといった純粋関数プログラミング言語は生産性が高いとあちこちに書いてあったので、いろいろと勉強しているところだ。 勉強していると、Pythonなどの最近の命令型(imperative)あるいは手続き型(procedural)といわれる言語でもかなり似たような記述ができそうな気がした(さすがにJavaやCとかだと無理そうだが)。そこで、Pythonを使って関数プログラミングの醍醐味をどこまで味わえるかチャレンジしてみることにした。あまり関数プログラミングに馴染みのない人にも理解しやすく説明できるように心がけるつもりだ(というか私もあまり馴染みがない)。 純粋関数プログラミング言語では、遅延評価を行えることが特徴となっている。遅延評価とは、すごく簡単に言ってしまうと、必要になるまで式の評価や文の実行をしないことだ。たとえば、無限に続く数列(数値のリスト)を生成する関数を
We are sorry, but the site you are looking for no longer exists Wikispaces was founded in 2005 and has since been used by educators, companies and individuals across the globe. Unfortunately, the time has come where we have had to make the difficult business decision to end the Wikispaces service. We first announced the site closure in January 2018, through a site-wide banner that appeared to all
COREBlog使用時も生DTMLでエントリーを書き、tDiaryの勝手な整形よりMovableTypeでタグを手打ちする道を選んだ僕ですが、それでも箇条書きをHTMLで書くのは直感的でなさ過ぎるので嫌いです。 そこで、MovableTypeに「Wikiっぽい記法で書いた箇条書きをHTMLに変換してくれるタグ」を追加しようと思い、とりあえずそのアルゴリズムをPythonで書いてみました。(Perlでいきなり書く自信がなかったので) あ、誤解を避けるために書いておくと、もちろんPythonで構造化テキストを扱いたいだけならStructuredTextとかreStructuredTextで検索して適切なライブラリを使う方が楽だと思います。今回はあくまで自分好みの箇条書きフォーマットをHTMLに変換するPerlのプログラムを作るためのプロトタイプってことです。 特徴 インデントの深さで階層構造を
List 1. PEG for DXF (spline only) dxf ::= <header>:h (<spline> | <entity> | <entry>)+:c => (h, c) newLine ::= ("\n" | "\r") number ::= <digit>+:c => int(''.join(c)) label ::= <spaces>? <digit>+:t => int(''.join(t)) attrib ::= <spaces>? (~<newLine> <anything>)+:c => ''.join(c) entry ::= <label>:l <newLine> (<newLine> | <attrib>):a => (l, a) entryX :x ::= <entry>:e ?(e[0]==x) => e[1] entryXX :xx ::=
Welcome to the final installment of this series, which has looked at the advantages of Django's loose binding philosophy. At first, we looked at replacing Django's templating system with Jinja2. Next, we looked at using SQLAlchemy instead of Django's ORM, and in this third segment we are going to look at using CouchDB instead of a traditional object relational database for data storage. CouchDB is
We’re getting things ready Loading your experience… This won’t take long.
We’re getting things ready Loading your experience… This won’t take long.
プログラムがやる気を出しすぎて、必要のない処理やあなたが実行して欲しくないと思っている処理まで行ってしまうのはよくあることである。プログラムにはもっと怠け者であって欲しいのだ。そこで、ジェネレータの出番である。Pythonのジェネレータを用いると、いつどれだけ処理を行って欲しいかを正確に指定することが可能となる。 既にリストの内包表記というものを紹介した。リストの内包表記を用いれば、リストの内容をより自然な方法で表現することが可能なのであった。本稿では、そのリストの内包表記と「いとこ」の関係にあるもの「ジェネレータ」を紹介しよう。ジェネレータを利用すると、シーケンスの各要素を一つずつ構築することが可能となるため、あなたが必要とするだけの処理が行われるようになるのである。 これは遅延評価と呼ばれ、プログラムが値を実際に必要とするまで、特定の値の計算を遅らせるしくみである。遅延評価を利用すれば
Schemepy What is Schemepy? Schemepy is a Python module that enables you to embed a Scheme interpreter in your program. It supports various native Scheme implementations for speed. A fall back pure-Python implementation is also available when no suitable native implementations available. Download Schemepy 1.0.0 source (any platform) Schemepy 1.0.0 i386 deb package (Debian and Ubuntu) Document API:
前のエントリー で簡易S式パーサを re.Scanner で作ったのですが、まぁ個人的にまとめておいたほうが後々使えるだろう、ということでライブラリにまとめました。ダンパもついているので、S式の読み込みの他、PythonオブジェクトをS式で出力することができます。 実装には引き続き re.Scanner を活用しています。おかげで短い行数でキレイにかけているのではないかと。 ダウンロード simplesexp.py ソースはこんな感じ(テストのぞく)。 1import re, sys 2from unicodedata import east_asian_width 3 4try: 5 from re import Scanner 6except ImportError: 7 from sre import Scanner 8 9class ParseError(StandardError
おっPythonハカーを多数抱える、煩悩駆動開発で有名なglucose.jpのお手伝いをする機会があり、4年ぶりにPythonを書いた。2.3以来だったので、2.5を眺めているとデコレーターと呼ばれる機能が導入されていた。 デコレーターとクロージャーを組み合わせれば、メソッドの挙動を自由にカスタマイズすることができる。この機能を使用して、関数の結果をmemcachedでキャッシュする機能を付与するデコレーターを作ってみた。 あらかじめ、CACHE変数をmemcachedクライアントで初期化しておく必要がある。 挙動 ソースは、少々ややこしいけど、実行の仕組みは単純。 Step 1: @cached構文実行時に、ack関数に対して、cached関数が実行され、ack関数がdecorated_funcを呼び出した結果でack関数が置換される。(返り値は、callableなオブジェクトでないとい
python のデコレーター構文 @decorate 解り難い @decorate 構文 Python のデコレーターは理解するのが厄介です。Python のデコレーターは syntax sugar の機能と closure の機能の二つを使って関数オブジェクトを修飾する構文です。でも closure の概念がない C/C++ や Java などの 言語から python も使うようになった者に、三重にネストした関数と @decorator 構文を組み合わせたコード例を使って解説されたのでは脳みそが沸騰するだけです。 私は @decorator を使ったコード例の python virturla machine コードを追跡することで、やっとこさデコレーターを理解しました。私の味わされた苦労を軽減してもらうため、この web page をまとめてみます。 デコレーターを理解した後で考え直し
1. 初めに XML は html のように、タグで文章の意味をあらわす形式で、 技術文書のように構造化された文書をあらわす 形式として最近広く用いられるようになっています。 たとえば、DocBook は XML を用いた技術文書のフォーマットであり、これを元に html, tex, pdf などの出力形式が生成されます。 Python には expat, dom, sax などの複数の XML パーサの ライブラリがあります。ここでは、比較的簡単で、機能も豊富な xml.dom.minidom を取り上げ、 どんな感じで XML をパースし、別形式で出力するか述べます。 2. 参考文献 この文書の種本は以下の2つです。 どちらも英語ですが、xml.dom.minidom について詳しく書かれています。 XML Processing in Dive Into Python 8.7 xml.
Python Perl 2007/06/11 1. pyperl http://aspn.activestate.com/ASPN/CodeDoc/pyperl/perlmodule.html 2. Perl http://www.bioinfo.sfc.keio.ac.jp/class/genpro/Progs/External_sh.py (1) Perl get_genes.pl #!/usr/bin/perl -w use strict; local *FH; my $gbk_file = $ARGV[0]; open(FH, $gbk_file) || die "Cannot open ¥"$gbk_file¥": $!"; while(<FH>){ chomp; if(/^ ¥/gene=¥"([^¥(]+)¥"/){ print "$1¥n"; # Python } } cl
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く