Recommended
PDF
One - Common Lispでもワンライナーしたい
PDF
Inquisitor -Common Lispに文字コード判定を-
PDF
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
PDF
中3女子が狂える本当に気持ちのいい constexpr
PDF
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
PDF
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
PDF
PDF
LLdeade Python Language Update
PDF
Python 機械学習プログラミング データ分析ライブラリー解説編
PDF
PDF
PPT
PDF
PDF
KEY
PDF
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PDF
Wrapping a C++ library with Cython
PDF
KEY
PDF
PDF
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
PDF
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
PDF
PDF
PDF
boost::shared_ptr tutorial
PDF
PDF
PDF
Lisp Tutorial for Pythonista Day 6
PDF
Lisp tutorial for Pythonista : Day 2
PDF
関数型言語テイスティング: Haskell, Scala, Clojure, Elixirを比べて味わう関数型プログラミングの旨さ
More Related Content
PDF
One - Common Lispでもワンライナーしたい
PDF
Inquisitor -Common Lispに文字コード判定を-
PDF
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
PDF
中3女子が狂える本当に気持ちのいい constexpr
PDF
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
PDF
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
PDF
PDF
LLdeade Python Language Update
What's hot
PDF
Python 機械学習プログラミング データ分析ライブラリー解説編
PDF
PDF
PPT
PDF
PDF
KEY
PDF
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PDF
Wrapping a C++ library with Cython
PDF
KEY
PDF
PDF
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
PDF
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
PDF
PDF
PDF
boost::shared_ptr tutorial
PDF
PDF
Similar to Lisp tutorial for Pythonista : Day 1
PDF
Lisp Tutorial for Pythonista Day 6
PDF
Lisp tutorial for Pythonista : Day 2
PDF
関数型言語テイスティング: Haskell, Scala, Clojure, Elixirを比べて味わう関数型プログラミングの旨さ
ODP
括弧への異常な愛情 または私は如何にして心配するのを止めてCommon Lispを愛するようになったか
PDF
PythonでLispを実装した (evalつき)
PDF
PPTX
PDF
純LISPから考える関数型言語のプリミティブ: Clojure, Elixir, Haskell, Scala
PDF
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
PDF
Lispとは何なのか - 同図像性がもたらす力とその利用法
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発
PDF
Lisp Tutorial for Pythonista : Day 3
PDF
PPTX
XMonad-oid on Emacs & More functional Emacs Lisp | 関数型LT大会
KEY
PDF
Scheme Interpreter in Ruby
PDF
PDF
PDF
ODP
More from Ransui Iso
PPTX
「Pythonでやってみた」~広がるプログラミングの愉しみ~
PDF
Lisp Tutorial for Pythonista : Day 4
PDF
PDF
PDF
XML-RPC : Pythonが「電池付属」と呼ばれる理由
PDF
PDF
PySynth : A toy pure python software synthesizer.
PDF
Lisp Tutorial for Pythonista : Day 5
PDF
小中学生Hack-a-thonにオッサンが乗り込んだ話
PDF
ソフトシンセを作りながら学ぶPythonプログラミング
PDF
PDF
Recently uploaded
PDF
論文紹介:"Reflexion: language agents with verbal reinforcement learning", "MA-LMM...
PDF
論文紹介:"MM-Tracker: Motion Mamba for UAV-platform Multiple Object Tracking", "M...
PDF
論文紹介:Simultaneous Detection and Interaction Reasoning for Object-Centric Acti...
PDF
論文紹介: "Locality-Aware Zero-Shot Human-Object Interaction Detection" "Disentan...
PDF
手軽に広範囲でプライバシーを守りながら人数カウントできる ~ LoRaWAN AI人流カウンター PF52 日本語カタログ
PDF
歴史好きのスクラム話 JBUG名古屋#5 AI時代のデータドリブンなプロジェクト管理
PDF
How We Operated Ticket-Driven Development in JIRA.pdf
PDF
LoRaWAN小売業DXソリューション ~天候データと人流カウンターを利用して売り上げアップに貢献!
Lisp tutorial for Pythonista : Day 1 1. Lisp tutorial for Pythonista.
Day #1 : Gentlemen, Start your engine.
Ransui Iso
Strategic Technology Group, X-Listing Co, Ltd.
2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Lisp は長年使われてきたので
その時々の流行とか
知恵が詰まってる
ちょっと詰め込みすぎで整理できてない感もある
先人の知恵を拝借して楽できるということでもある
14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Python と Lisp は意外と似てるしな!
そりゃそうだよ
Python のほうが新しい言語で
いろんな言語のいい所を
上手に取捨選択して取り込んでるもの
25. 26. ぱいそん
def fact(x):
result = 0L
for i in xrange(1, x + 1):
result *= i
return result
りすぷ
(defun fact(x)
(if (< x 1) 1 (* x (fact (1- x))) ))
27. ぱいそん
def fact(x):
result = 0L
for i in xrange(1, x + 1):
result *= i
return result
りすぷ
(defun fact(x)
(if (< x 1) 1 (* x (fact (1- x))) ))
カッコつけて再帰とか使わなくてもいいよ!
28. ぱいそん
def fact(x):
result = 1
for i in xrange(1, x + 1):
result *= i
return result
りすぷ
(defun fact(x)
(let ((result 1))
(loop for i from 1 to x do
(setf result (* result i)))
result))
29. ぱいそん
def fact(x):
result = 1
for i in xrange(1, x + 1):
result *= i
return result
りすぷ
(defun fact(x)
(let ((result 1))
(loop for i from 1 to x do
(setf result (* result i)))
Common Lisp は「ループ上等」な世界
result))
末尾再帰原理主義者の戯言はガン無視してよし!
30. 31. 32. 大丈夫だ。問題ない。
Python のインデントの代わりに
括弧を使っていると思えばいい
普通はエディタがよろしくインデントしてくれるしな!
33. 34. 35. 36. 単純ループ版 157bytes
カッコつけ版 440bytes
37. 38. 39. ぱいそん
l = [1, "a", "b", ["ham", "spam"], 5]
l[0] → 1
l[1:] → ['a', 'b', ['ham', 'spam'], 5]
l[3] → ['ham', 'spam']
l[3][0] → 'ham'
5 in l → True
for x in l: print x
りすぷ
(setf l '(1 "a" "b" ("ham" "spam") 5)
(car l) → 1
(cdr l) → ("a" "b" ("ham" "spam") 5)
(cadddr l) → ("ham" "spam")
(car (cadddr l)) → "ham"
(member 5 l) → (5)
(loop for x in l do (print x))
40. ぱいそん
d = dict()
d["Hello"] = "World"
d["Hello"] → "World"
d[1] = 2
len(d) → 2
for (key, value) in d.items():
print("%s : %s" % (key, value))
りすぷ
(setf d (make-hash-table :test #'equal))
(setf (gethash "Hello" d) "World)
(gethash "Hello" d) → "World"
(setf (gethash 1 d) 2)
(hash-table-count d) → 2
(maphash #'(lambda (key value)
(princ (format nil "~a : ~a~%" key value))) d)
41. ぱいそん
class Greeting(object):
def __init__(self):
self.name = None
def setName(self, name):
self.name = name
def hello(self, name=None):
print("Hello %s!" % name if name else self.name)
obj = greeting()
obj.hello(name="World")
りすぷ
(defclass Greeting ()
((name :initform nil)))
(defmethod set-name ((self Greeting) name)
(setf (slot-value self 'name) name))
(defmethod hello ((self Greeting) &key name)
(princ (format nil "Hello ~a!~%"
(or name (slot-value self 'name)))))
(setf obj (make-instance 'Greeting)
(hello obj :name "World")
42. 43. 44. 45. 46. (setf count 10)
(do () ((<= count 0))
(print count)
(setf count (1- count))
(defmacro while (test-exp &body body)
`(do ()
((not ,test-exp)) ,@body))
(setf count 10)
(while (>= count 0)
(print count)
(setf count (1- count)) )
(defmacro for ((init-exp test-exp update-exp) &body body)
`(do ((,@init-exp ,update-exp))
((not ,test-exp)) ,@body))
(for ((count 10) (> count 0) (decf count 1))
(print count))
47. 48. 49. 50. 51. その他の Python と Lisp の対応は
「 Lisp プログラマのための Python 入門」
by Peter Norvig
を見てね!
http://www.unixuser.org/~euske/doc/python/python-lisp-j.html
52. 53. 準備するお道具
● SBCL
● Emacs
● quicklisp
● Windows を端末にしたい場合は
● Xming
● PuTTY の適切な設定
54. SBCL のインストール
● emerge sbcl
– できるだけ新しいのを使いたいので ~amd64 すべし
– USE フラグは threads と unicode は必須で
– インストールできたら ~/.sbclrc ファイルを作成&編集
;; -*- coding: utf-8 -*-
(setf sb-impl::*default-external-format* :utf-8)
(setf sb-alien::*default-c-string-external-format* :utf-8)
55. Emacs のインストール
● vi 派の人。ごめん、やっぱ Emacs 便利なんで。
● ~amd64 はしなくていいです。
● USE フラグとかは
capella で equery uses emacs とかして調べてね!
● あと、日本語入力のために USE フラグに emacs
を指定して emerge anthy
● 自分の ~/.emacs.el 持ってない人は
~ransui/.emacs.el コピーして適当に編集して使っ
て下さい。
56. QuickLisp のインストール
● PyPi みたいなもん
● wget http://beta.quicklisp.org/quicklisp.lisp
● sbcl --load quicklisp.lisp
● (quicklisp-quickstart:install)
● ややあって
● (ql:add-to-init-file)
● (ql:quickload "quicklisp-slime-helper")
● (quit)
57. Xming のインストール
● ここから DL してインストール
– http://www.straightrunning.com/XmingNotes/
● PuTTY の 設定パネルで
● 接続→ SSH→X11 で
● X11 フォワーディング:チェック
● X ディスプレイの場所 localhost:10
– 鯖側の sshd_conf で X11Forwarding が有効になってい
るかを確認
58. Eclipse 使いたいひと向け情報
● cusp っていう Lisp 用の Plug-in があるらしい
– 情報は
● http://bitfauna.com/projects/cusp/index.html
にある。
● dandelion ってのもあるらしい
– 情報は
● http://sourceforge.net/projects/dandelion-ecl/
● 使ってみた人、感想希望
– もし超イケてるのであれば、 Emacs から乗り換えも有り
59. 参考書
● ふくちゃんのブログ見てね!
– http://caddr.blog98.fc2.com/
● 最初のお勧めは
– Common Lisp 入門
– 実践 Common Lisp
● On Lisp はオンラインで読める
– http://www.komaba.utmc.or.jp/~flatline/onlispjhtml/
– けど、このテキストは Lisp の基礎は分かってるレベルを想定してる
60. 宿題
● Emacs + SLIME もしくは eclipse とかの環境を
ちゃんと作っておいてね!
● 次回から実際にプログラム書きます
● どういう形式でやるかは考え中
● ハンズオン形式?
● 全員がノート PC 持ってるわけじゃないし…