狠狠撸

狠狠撸Share a Scribd company logo
バッテリー強奪!
PythonをCommon Lispから使う
2018-03-27, lisp meetup #63
だれ、おまえ。
TANAKA Shinichi
Common Lisp使い
Nimも好き
twitter: @sin_clav
github: @t-sin
今日の話題
PythonのライブラリをCommon Lispから使う話
Python (1)
いわずと知れたヘビの言語
インデントベースのヒューマンフレンドリーな構文
と言われる
>>> def fib(n):
>>> a, b = 0, 1
>>> while a < n:
>>> print(a, end=' ')
>>> a, b = b, a+b
>>> print()
>>> fib(1000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
Python (2)
いわずと知れたヘビの言語
インデントベースのヒューマンフレンドリーな構文
と言われる
深層学習やらWeb開発やらで人気
膨大な標準ライブラリを持っている
Pythonファンはよく、非同期プロセスからzipファイルの圧縮展開ま
でこなす標準ライブラリを説明するのに、「バッテリー同梱
(batteries included)」というフレーズを良く使います
--- https://www.python.jp/about/
どれくらい バッテリー同梱 なのか?
どれくらい バッテリー同梱 なのか?
re : 正規表現
readline : GNU readlineのラッパ
difflib : テキスト差分
datetime : 日付と日時
zlib , gzip , bz2 : 圧縮
hashlib , hmac , secret : 暗号関連
curses : ターミナル表示制御
html : HTMLのパース?エンティティの操作
urllib : URLを扱う(リクエストも含む)
wave , aifc , ossaudiodev : オーディオ(デバイス)関係
……まだまだあります
いっぽうCommon Lisp
いっぽうCommon Lisp
いろんなライブラリがあるけど…
該当する機能のライブラリがない
古くてパッチを当てないといけない
未完成品
Common Lispあるある
Common Lisperのジレンマ
Pythonのような豊富なライブラリほしい
しかしPythonは書きとうない
S式がいいでござる
ライブラリできるまで、それまで、ただ利用したいだけ
よろしい、ならば强夺だ。
burgled-batteries
https://github.com/jingtaozf/burgled-batteries
burgled-batteries
https://github.com/jingtaozf/burgled-batteries
ただしPython2.xにしか対応していないので…
burgled-batteries3!!!
https://github.com/snmsts/burgled-batteries3
ちなみに、類似プロジェクトとして
Python-on-Lisp
初期の試み。入出力をストリームにマップしたりする
Pyffi
より洗練されたPython-on-Lisp
CLPython: https://github.com/metawilm/cl-python
Pythonをommon Lispで実装した版!
などがある
使用方法
使用方法 (1)
ロードして…
CL-USER> (ql:quickload :burgled-batteries3)
To load "burgled-batteries3":
Load 1 ASDF system:
burgled-batteries3
; Loading "burgled-batteries3"
...
(:BURGLED-BATTERIES3)
Pythonを初期化して…
CL-USER> (burgled-batteries3:startup-python)
#<CLOSURE (FLET SB-UNIX::RUN-HANDLER :IN SB-SYS:ENABLE-INTERRU
使用方法 (2)
使う
CL-USER> (burgled-batteries3:run "10")
10
CL-USER> (burgled-batteries3:run
"[n for n in range(10)]")
#(0 1 2 3 4 5 6 7 8 9)
CL-USER> (burgled-batteries3:run
"sum([n for n in range(10)])")
45
使う!!!
CL-USER> (burgled-batteries3:run "import sys")
; No value
CL-USER> (burgled-batteries3:run
"sys.getdefaultencoding()")
"utf-8"
(ほしいけど)まだない機能
PythonモジュールをCommon Lispパッケージにマップ
実現するにはいくつか問題が…
イテレータ等いくつかのデータ型のマップ
デモ1: 正規表現
※まっとうなCLerは cl-ppcre を使いましょう
デモ2: AWSのリソースを操作
boto3をインストール済みとする
デモ3: サーバーオーケストレーション
Ansibleをインストール済みとする
というように
いろんなことができるんです。
まとめ
Pythonのバッテリーを強奪し、
膨大な標準ライブラリを利用できた
Python向けのナイスなライブラリを利用できた
より強い統合は、今後に期待
Ad

Recommended

タコスで機械学習 Python編
タコスで機械学習 Python編
Hiroto Yamatsuka
?
苍耻尘辫测の魅力
苍耻尘辫测の魅力
__106__
?
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
?
最近思った机械学习(笔测罢辞谤肠丑)のベストプラクティス
最近思った机械学习(笔测罢辞谤肠丑)のベストプラクティス
Masato Fujitake
?
笔测迟丑辞苍で笔辞诲肠补蝉迟を聴く
笔测迟丑辞苍で笔辞诲肠补蝉迟を聴く
Masato Fujitake
?
笔测迟丑辞苍で自动化した话1
笔测迟丑辞苍で自动化した话1
Masato Fujitake
?
ぬくもり - LT駆動開発19
ぬくもり - LT駆動開発19
niconicoumauma
?
Python : for文の解説
Python : for文の解説
Seong-Hun Choe
?
続?厂贰颁顿マシン
続?厂贰颁顿マシン
t-sin
?
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
t-sin
?
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
t-sin
?
Common Lispっぽいものをつくっています
Common Lispっぽいものをつくっています
t-sin
?
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
t-sin
?
谜の言语贵辞谤迟丑が谜なので実装した
谜の言语贵辞谤迟丑が谜なので実装した
t-sin
?
PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)
t-sin
?
Common lispでグラフィックアート
Common lispでグラフィックアート
t-sin
?
One - Common Lispでもワンライナーしたい
One - Common Lispでもワンライナーしたい
t-sin
?
Inquisitor -Common Lispに文字コード判定を-
Inquisitor -Common Lispに文字コード判定を-
t-sin
?

More Related Content

More from t-sin (10)

続?厂贰颁顿マシン
続?厂贰颁顿マシン
t-sin
?
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
t-sin
?
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
t-sin
?
Common Lispっぽいものをつくっています
Common Lispっぽいものをつくっています
t-sin
?
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
t-sin
?
谜の言语贵辞谤迟丑が谜なので実装した
谜の言语贵辞谤迟丑が谜なので実装した
t-sin
?
PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)
t-sin
?
Common lispでグラフィックアート
Common lispでグラフィックアート
t-sin
?
One - Common Lispでもワンライナーしたい
One - Common Lispでもワンライナーしたい
t-sin
?
Inquisitor -Common Lispに文字コード判定を-
Inquisitor -Common Lispに文字コード判定を-
t-sin
?
続?厂贰颁顿マシン
続?厂贰颁顿マシン
t-sin
?
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
t-sin
?
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
Common Lisp製のテキストエディタLemにフレーム多重化機能をつくった
t-sin
?
Common Lispっぽいものをつくっています
Common Lispっぽいものをつくっています
t-sin
?
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
t-sin
?
谜の言语贵辞谤迟丑が谜なので実装した
谜の言语贵辞谤迟丑が谜なので実装した
t-sin
?
PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)
t-sin
?
Common lispでグラフィックアート
Common lispでグラフィックアート
t-sin
?
One - Common Lispでもワンライナーしたい
One - Common Lispでもワンライナーしたい
t-sin
?
Inquisitor -Common Lispに文字コード判定を-
Inquisitor -Common Lispに文字コード判定を-
t-sin
?

バッテリー強奪! PythonをCommon Lispから使う