SlideShare a Scribd company logo
SICP 二章 2013年 7月
2.1.1-2.1.4
Cons(truct)
(define x (cons 1 2))
car cdr
高階層化可能
(car (cdr z ))
(Car x ) : 1
(Cdr x ) : 2
データ抽象(階層)
四角形の定義
面積、周辺長さの計
算
面積、周辺長さの計
算
幅と高さの計算
四角形の定義
ラムダ計算 非形式的な概説
(wiki)
例えば、ある数に 2 を加える関数 f を考える。これは通常の書き方では
f(x) = x + 2 と書くことができるだろう。この関数 f は、ラムダ計算の式
(ラムダ式という)では λx. x + 2 と書かれる。変数 x の名前は重要では
なく、 λy. y + 2 と書いても同じである。同様に、この関数に 3 を適用し
た結果の数 f(3) は (λx. x + 2) 3 と書かれる。関数の適用は左結合である。
つまり、 f x y = (f x) y である。今度は、引数(関数の入力)に関数をとり
それに 3 を適用する関数を考えてみよう。これはラムダ式では λf. f 3 と
なる。この関数に、先ほど作った 2 を加える関数を適用すると、 (λf. f 3)
(λx. x + 2) となる。ここで、
(λf. f 3) (λx. x + 2) と (λx. x + 2) 3 と 3 + 2
の3つの表現はいずれも同値である。
Church数 (wikipedia)
0 ≡ λf.λx. X
1 ≡ λf.λx. f x
2 ≡ λf.λx. f (f x)
3 ≡ λf.λx. f (f (f x))...
n ≡ λf.λx. fn x...
直感的には、数 n はラムダ式では f という関数
をもらってそれを n 回適用したものを返す関数
である。つまり、チャーチ数は1引数関数を受け
取り、1引数関数を返す高階関数である。
Church数
○n+1
n を受け取って n + 1 を返す関数を定
義することができる。
SUCC := λn f x. f (n f x)
Church数
○掛け算 m*n
MULT := λm n. m (PLUS n) 0
この定義は、 m と n の乗算は、 0 に n を m回
加えることと等しい、ということを利用して
作られている。
MULT := λm n f. m (n f)
問 2.5
(define (print-point p)
(newline)
(display "(")
(display (car p))
(display ",")
(display (cdr p))
(display ")"))
; devide by 2
(define (getcar n)
(getcar-iter n 0))
(define (getcar-iter n a)
(if (= (remainder n 2) 0)
(getcar-iter (/ n 2) (+ a 1))
a))
; devide by 3
(define (getcdr n)
(getcdr-iter n 0))
(define (getcdr-iter n b)
(if (= (remainder n 3) 0)
(getcdr-iter (/ n 3) (+ b 1))
b))
(define (get-num n )
(cons (getcar n) (getcdr n)))
(define p (get-num 9))
(print-point p)
コメント 赤字が追加部分
remainderのサブルーチンは共通化できるが未実施
(0,2)
問 2.6
; n+1
(define (add1 n) (lambda (f) (lambda (x) (f ((n f) x)))))
;0
(define zero (lambda (f) (lambda (x) x)))
; 1= ramuda f x f x
;;;(print "cunning") ; from danboykis.com
;;;(add-1 zero)
;;;(add-1 (lambda (f) (lambda (x) x)))
;;;(lambda (f) (lambda (x) (f (((lambda (f) (lambda (x) x)) f) x))))
;;;(lambda (f) (lambda (x) (f ((lambda (x) x) x))))
;;;(lambda (f) (lambda (x) (f x)))
(define one (lambda (f) (lambda (x) (f x ))))
;2
(define two (lambda (f) (lambda (x) (f(f x)))))
;3
(define three (lambda (f) (lambda (x) (f(f(f x))))))
問 2.6 その2
;m+n
(define (addc m n) (lambda (f) (lambda (x) ((m f) ((n f) x)))))
;;;;;;; verification
(define (inc n) (+ n 1))
(print ((zero inc) 0))
(print ((one inc) 0))
(print ((two inc) 0))
(print ((three inc) 0))
(print (((add1 zero) inc) 0))
(print (((add1 one) inc) 0))
(define (bai n) (* n 2))
(print ((one bai) 1))
(print ((two bai) 1))
(print ((three bai) 1)) ;;;;; Question ;;;;;;;
(print "1+3=")
(print (((addc one three) inc) 0))
;(print (((addc2 one three) inc) 0))
(print (((addc one three) bai) 1)) ;;;;; Question ;;;;;
(print (((addc three three) bai) 1)) ;;;;; Question ;;;;;

More Related Content

What's hot

20130921_曲面の微分幾何学
20130921_曲面の微分幾何学20130921_曲面の微分幾何学
20130921_曲面の微分幾何学
matsumoring
 
ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)
yutannihilation
 
CG2013 07
CG2013 07CG2013 07
CG2013 07
shiozawa_h
 
kagamicomput201806
kagamicomput201806kagamicomput201806
kagamicomput201806
swkagami
 
3次元の凸包を求める
3次元の凸包を求める3次元の凸包を求める
3次元の凸包を求める
abc3141
 
プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介
Kentaro Iizuka
 
データとは何か
データとは何かデータとは何か
データとは何か
Kenta Suzuki
 
OpenGLと行列
OpenGLと行列OpenGLと行列
OpenGLと行列
miyosuda
 
kagamicomput201707
kagamicomput201707kagamicomput201707
kagamicomput201707
swkagami
 
Ninja of Train
Ninja of TrainNinja of Train
Ninja of Traintomerun
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - Komeometo
 
Precise garbage collection for c
Precise garbage collection for cPrecise garbage collection for c
Precise garbage collection for cmiura1729
 
CG2013 06
CG2013 06CG2013 06
CG2013 06
shiozawa_h
 

What's hot (20)

20130921_曲面の微分幾何学
20130921_曲面の微分幾何学20130921_曲面の微分幾何学
20130921_曲面の微分幾何学
 
python-geohex
python-geohexpython-geohex
python-geohex
 
ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)
 
Ilerpg Study 002
Ilerpg Study 002Ilerpg Study 002
Ilerpg Study 002
 
llvm入門
llvm入門llvm入門
llvm入門
 
CG2013 07
CG2013 07CG2013 07
CG2013 07
 
kagamicomput201806
kagamicomput201806kagamicomput201806
kagamicomput201806
 
3次元の凸包を求める
3次元の凸包を求める3次元の凸包を求める
3次元の凸包を求める
 
プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介
 
データとは何か
データとは何かデータとは何か
データとは何か
 
OpenGLと行列
OpenGLと行列OpenGLと行列
OpenGLと行列
 
Ilerpg Study 003
Ilerpg Study 003Ilerpg Study 003
Ilerpg Study 003
 
kagamicomput201707
kagamicomput201707kagamicomput201707
kagamicomput201707
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
Ninja of Train
Ninja of TrainNinja of Train
Ninja of Train
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - K
 
Precise garbage collection for c
Precise garbage collection for cPrecise garbage collection for c
Precise garbage collection for c
 
Ilerpg Study 004
Ilerpg Study 004Ilerpg Study 004
Ilerpg Study 004
 
CG2013 06
CG2013 06CG2013 06
CG2013 06
 
動的計画法
動的計画法動的計画法
動的計画法
 

Viewers also liked

Grace
GraceGrace
Grace
albanks96
 
Cultura Digital
Cultura DigitalCultura Digital
Cultura Digital
Oswaldo Lorenzo
 
Sia_final2016
Sia_final2016Sia_final2016
Enterprise applications diffusion within organizations: A social learning per...
Enterprise applications diffusion within organizations: A social learning per...Enterprise applications diffusion within organizations: A social learning per...
Enterprise applications diffusion within organizations: A social learning per...Oswaldo Lorenzo
 
Cicadas- Math
Cicadas- MathCicadas- Math
Cicadas- Math
ljanita
 
Rakuten Hackathon 2014
Rakuten Hackathon 2014Rakuten Hackathon 2014
Rakuten Hackathon 2014
S W
 
Facebook Pages Customizations
Facebook Pages CustomizationsFacebook Pages Customizations
Facebook Pages Customizations
Rahul Singh
 
The smart manager on technology
The smart manager on technologyThe smart manager on technology
The smart manager on technologyOswaldo Lorenzo
 
Study latin
Study latinStudy latin
Study latin
S W
 
Maximizing business value from information technology investment
Maximizing business value from information technology investmentMaximizing business value from information technology investment
Maximizing business value from information technology investmentOswaldo Lorenzo
 
Process based management examples of information technology enablers
Process based management examples of information technology enablersProcess based management examples of information technology enablers
Process based management examples of information technology enablers
Oswaldo Lorenzo
 

Viewers also liked (11)

Grace
GraceGrace
Grace
 
Cultura Digital
Cultura DigitalCultura Digital
Cultura Digital
 
Sia_final2016
Sia_final2016Sia_final2016
Sia_final2016
 
Enterprise applications diffusion within organizations: A social learning per...
Enterprise applications diffusion within organizations: A social learning per...Enterprise applications diffusion within organizations: A social learning per...
Enterprise applications diffusion within organizations: A social learning per...
 
Cicadas- Math
Cicadas- MathCicadas- Math
Cicadas- Math
 
Rakuten Hackathon 2014
Rakuten Hackathon 2014Rakuten Hackathon 2014
Rakuten Hackathon 2014
 
Facebook Pages Customizations
Facebook Pages CustomizationsFacebook Pages Customizations
Facebook Pages Customizations
 
The smart manager on technology
The smart manager on technologyThe smart manager on technology
The smart manager on technology
 
Study latin
Study latinStudy latin
Study latin
 
Maximizing business value from information technology investment
Maximizing business value from information technology investmentMaximizing business value from information technology investment
Maximizing business value from information technology investment
 
Process based management examples of information technology enablers
Process based management examples of information technology enablersProcess based management examples of information technology enablers
Process based management examples of information technology enablers
 

Similar to SICP

代数的実数とCADの実装紹介
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介
Masahiro Sakai
 
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
Masahiro Sakai
 
Church Numerals
Church NumeralsChurch Numerals
Church Numerals
Masato HORINOUCHI
 
Slide
SlideSlide
Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Etsuji Nakai
 
表現行列の問題
表現行列の問題表現行列の問題
表現行列の問題
nabeshimamasataka
 
表現行列問題
表現行列問題表現行列問題
表現行列問題
政孝 鍋島
 
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
Kazuyuki TAKASE
 
Introduction to Categorical Programming
Introduction to Categorical ProgrammingIntroduction to Categorical Programming
Introduction to Categorical Programming
Masahiro Sakai
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
Fixstars Corporation
 
Common LispでGPGPU
Common LispでGPGPUCommon LispでGPGPU
Common LispでGPGPU
gos-k
 
3次元図形をSchemeで造ろう!
3次元図形をSchemeで造ろう!3次元図形をSchemeで造ろう!
3次元図形をSchemeで造ろう!
vi-iv
 
diffの真髄
diffの真髄diffの真髄
diffの真髄
fuku68
 
Clean
Clean Clean
Clean
osamu kimura
 
Clean
Clean Clean
Clean
osamu kimura
 
LLVM最適化のこつ
LLVM最適化のこつLLVM最適化のこつ
LLVM最適化のこつ
MITSUNARI Shigeo
 
すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-
Hiromasa Ohashi
 
R intro
R introR intro
Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit Scala
Kota Mizushima
 

Similar to SICP (20)

代数的実数とCADの実装紹介
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介
 
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
 
Church Numerals
Church NumeralsChurch Numerals
Church Numerals
 
Slide
SlideSlide
Slide
 
Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料
 
表現行列の問題
表現行列の問題表現行列の問題
表現行列の問題
 
表現行列問題
表現行列問題表現行列問題
表現行列問題
 
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
 
Introduction to Categorical Programming
Introduction to Categorical ProgrammingIntroduction to Categorical Programming
Introduction to Categorical Programming
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 
フラグを愛でる
フラグを愛でるフラグを愛でる
フラグを愛でる
 
Common LispでGPGPU
Common LispでGPGPUCommon LispでGPGPU
Common LispでGPGPU
 
3次元図形をSchemeで造ろう!
3次元図形をSchemeで造ろう!3次元図形をSchemeで造ろう!
3次元図形をSchemeで造ろう!
 
diffの真髄
diffの真髄diffの真髄
diffの真髄
 
Clean
Clean Clean
Clean
 
Clean
Clean Clean
Clean
 
LLVM最適化のこつ
LLVM最適化のこつLLVM最適化のこつ
LLVM最適化のこつ
 
すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-
 
R intro
R introR intro
R intro
 
Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit Scala
 

Recently uploaded

MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 

Recently uploaded (16)

MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 

SICP

  • 1. SICP 二章 2013年 7月 2.1.1-2.1.4
  • 2. Cons(truct) (define x (cons 1 2)) car cdr 高階層化可能 (car (cdr z )) (Car x ) : 1 (Cdr x ) : 2
  • 4. ラムダ計算 非形式的な概説 (wiki) 例えば、ある数に 2 を加える関数 f を考える。これは通常の書き方では f(x) = x + 2 と書くことができるだろう。この関数 f は、ラムダ計算の式 (ラムダ式という)では λx. x + 2 と書かれる。変数 x の名前は重要では なく、 λy. y + 2 と書いても同じである。同様に、この関数に 3 を適用し た結果の数 f(3) は (λx. x + 2) 3 と書かれる。関数の適用は左結合である。 つまり、 f x y = (f x) y である。今度は、引数(関数の入力)に関数をとり それに 3 を適用する関数を考えてみよう。これはラムダ式では λf. f 3 と なる。この関数に、先ほど作った 2 を加える関数を適用すると、 (λf. f 3) (λx. x + 2) となる。ここで、 (λf. f 3) (λx. x + 2) と (λx. x + 2) 3 と 3 + 2 の3つの表現はいずれも同値である。
  • 5. Church数 (wikipedia) 0 ≡ λf.λx. X 1 ≡ λf.λx. f x 2 ≡ λf.λx. f (f x) 3 ≡ λf.λx. f (f (f x))... n ≡ λf.λx. fn x... 直感的には、数 n はラムダ式では f という関数 をもらってそれを n 回適用したものを返す関数 である。つまり、チャーチ数は1引数関数を受け 取り、1引数関数を返す高階関数である。
  • 6. Church数 ○n+1 n を受け取って n + 1 を返す関数を定 義することができる。 SUCC := λn f x. f (n f x)
  • 7. Church数 ○掛け算 m*n MULT := λm n. m (PLUS n) 0 この定義は、 m と n の乗算は、 0 に n を m回 加えることと等しい、ということを利用して 作られている。 MULT := λm n f. m (n f)
  • 8. 問 2.5 (define (print-point p) (newline) (display "(") (display (car p)) (display ",") (display (cdr p)) (display ")")) ; devide by 2 (define (getcar n) (getcar-iter n 0)) (define (getcar-iter n a) (if (= (remainder n 2) 0) (getcar-iter (/ n 2) (+ a 1)) a)) ; devide by 3 (define (getcdr n) (getcdr-iter n 0)) (define (getcdr-iter n b) (if (= (remainder n 3) 0) (getcdr-iter (/ n 3) (+ b 1)) b)) (define (get-num n ) (cons (getcar n) (getcdr n))) (define p (get-num 9)) (print-point p) コメント 赤字が追加部分 remainderのサブルーチンは共通化できるが未実施 (0,2)
  • 9. 問 2.6 ; n+1 (define (add1 n) (lambda (f) (lambda (x) (f ((n f) x))))) ;0 (define zero (lambda (f) (lambda (x) x))) ; 1= ramuda f x f x ;;;(print "cunning") ; from danboykis.com ;;;(add-1 zero) ;;;(add-1 (lambda (f) (lambda (x) x))) ;;;(lambda (f) (lambda (x) (f (((lambda (f) (lambda (x) x)) f) x)))) ;;;(lambda (f) (lambda (x) (f ((lambda (x) x) x)))) ;;;(lambda (f) (lambda (x) (f x))) (define one (lambda (f) (lambda (x) (f x )))) ;2 (define two (lambda (f) (lambda (x) (f(f x))))) ;3 (define three (lambda (f) (lambda (x) (f(f(f x))))))
  • 10. 問 2.6 その2 ;m+n (define (addc m n) (lambda (f) (lambda (x) ((m f) ((n f) x))))) ;;;;;;; verification (define (inc n) (+ n 1)) (print ((zero inc) 0)) (print ((one inc) 0)) (print ((two inc) 0)) (print ((three inc) 0)) (print (((add1 zero) inc) 0)) (print (((add1 one) inc) 0)) (define (bai n) (* n 2)) (print ((one bai) 1)) (print ((two bai) 1)) (print ((three bai) 1)) ;;;;; Question ;;;;;;; (print "1+3=") (print (((addc one three) inc) 0)) ;(print (((addc2 one three) inc) 0)) (print (((addc one three) bai) 1)) ;;;;; Question ;;;;; (print (((addc three three) bai) 1)) ;;;;; Question ;;;;;