SlideShare ist ein Scribd-Unternehmen logo
1 von 150
Downloaden Sie, um offline zu lesen
型! 型!
#comb_mu
@minamiyama1994
2014/08/10
皆さん
初めての人は初めまして
久しぶりな人は久しぶり
南山まさかずです
東京生まれの
広島育ち
19歳大学生(休学中)
C++
とか
Haskell
とか
Coq
とか
そういうのをやってます
仕事はRubyだけどな!
閑話休題
「型」
ご存じですか?
型
取りうる値の集合
データに対するメタ情報
……
?
例えば
0は整数型
”hoge”は文字列型
http://t.coはURL型
こんなものです
楽しい!
さて
型があると何が嬉しいの?
例えば
「URL」×「実数」
?????
「ファイル」−「文字列」
?????
「あり得ない計算」
これは型で防げる
エラーになるからな!
ところで
動的型付け
静的型付け
こういった概念がある
型でエラーが防げる
いつ防ぐの?
実行時に防ぐ
これが動的型付け
実行する前に防ぐ
これが静的型付け
Rubyとかは動的型付け
C++とかは静的型付け
戦略の違い
動的型付け
致命的なエラー検知が
実行時に行われる
脆弱性になりうる
「適当な状態で
動かしたい」
動かせる
そう、動的型付けならね
※エラーが確実に
弾けるとは言っていない
静的型付け
致命的なエラー検知が
実行前に行われる
安心!
「適当な状態で
動かしたい」
ムズカシー
何事も
良し悪しということで……
総括
型
プログラムの安全性を
担保するもの
動的型付け
実行時に型チェック
静的型付け
コンパイル時に型チェック
おしまいおしまい
ではないです
型に関する概念について
型に関して重要な
概念がいくつかあります
ダックタイピング
動的型付け言語で使われる
???「あのメソッド
ありゃええやん」
インターフェースが
合ってればいいや
割とアバウト
多相型/ジェネリクス
型を限定しない
「具体的な型じゃないけど
処理書いとくね!」
型に関するワイルドカード
個々の型について
いちいち書かなくてもいい
便利!
代数的データ型
代数的?????
例えば
直和型
集合論で言う直和
「型の足し算」
例えば
直積型
集合論でいう直積
「型の掛け算」
集合論での概念
この考え方を
型にも適用したのが
「代数的データ型」
依存型
「値に依存した型」
型の中に値が入り込む
値が違うと型も違う
線形型
「何回使われうるか」
これを型情報に含めたもの
etc,etc…...
型に関する概念は
他にもあります
TAPL読めば
大体なんとかなる説
では、おしまいおしまい
……
終わらせないぜ!
定理証明系の話をしよう
型で証明できる世界
……?
「日本語でおk」
型は命題に対応します
「Aを受け取り
Bを返す関数が実装可能」
「AがあればBを導き出す妥
当な処理がある」
「「A」が成り立てば
「B」が成り立つ」
命題!
「妥当な処理」が証明
「妥当な処理」
つまりプログラムですね
総括
型は命題に対応します
プログラムは
証明に対応します
ある型を持つ
関数が実装できる
ある命題を証明できる
これを利用して
「型で証明する」
のが目的の言語がある
Coq
とか
Agda
とか
Idris
とか
「定理証明系」と
呼ばれます
「型で定理を証明」
かっこ良くないですか?
型を活用すれば
こんなことも出来るよ
そんなお話でした
おしまいおしまい
今度こそね
ご清聴
ありがとうございました
※時間があれば質疑応答

Weitere ähnliche Inhalte

Mehr von 真一 北原

Database.persistentの話
Database.persistentの話Database.persistentの話
Database.persistentの話真一 北原
 
能年玲奈ちゃん駆動開発
能年玲奈ちゃん駆動開発能年玲奈ちゃん駆動開発
能年玲奈ちゃん駆動開発真一 北原
 
templateを依存型っぽく使ってみる
templateを依存型っぽく使ってみるtemplateを依存型っぽく使ってみる
templateを依存型っぽく使ってみる真一 北原
 
すごいMonad入門
すごいMonad入門すごいMonad入門
すごいMonad入門真一 北原
 
Lt駆動開発03 コンパイル時fizz buzzやってみた
Lt駆動開発03 コンパイル時fizz buzzやってみたLt駆動開発03 コンパイル時fizz buzzやってみた
Lt駆動開発03 コンパイル時fizz buzzやってみた真一 北原
 
Lt駆動開発03 サイト運営してみた結果
Lt駆動開発03 サイト運営してみた結果Lt駆動開発03 サイト運営してみた結果
Lt駆動開発03 サイト運営してみた結果真一 北原
 
型安全Printf作ってみた
型安全Printf作ってみた型安全Printf作ってみた
型安全Printf作ってみた真一 北原
 
能年玲奈ちゃんのファンとして本気を出してみた
能年玲奈ちゃんのファンとして本気を出してみた能年玲奈ちゃんのファンとして本気を出してみた
能年玲奈ちゃんのファンとして本気を出してみた真一 北原
 
第2回 mix c++勉強会@tokyo 資料
第2回 mix c++勉強会@tokyo 資料第2回 mix c++勉強会@tokyo 資料
第2回 mix c++勉強会@tokyo 資料真一 北原
 
C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料真一 北原
 

Mehr von 真一 北原 (12)

Database.persistentの話
Database.persistentの話Database.persistentの話
Database.persistentの話
 
能年玲奈ちゃん駆動開発
能年玲奈ちゃん駆動開発能年玲奈ちゃん駆動開発
能年玲奈ちゃん駆動開発
 
型!
型!型!
型!
 
templateを依存型っぽく使ってみる
templateを依存型っぽく使ってみるtemplateを依存型っぽく使ってみる
templateを依存型っぽく使ってみる
 
すごいMonad入門
すごいMonad入門すごいMonad入門
すごいMonad入門
 
すごいCoq入門
すごいCoq入門すごいCoq入門
すごいCoq入門
 
Lt駆動開発03 コンパイル時fizz buzzやってみた
Lt駆動開発03 コンパイル時fizz buzzやってみたLt駆動開発03 コンパイル時fizz buzzやってみた
Lt駆動開発03 コンパイル時fizz buzzやってみた
 
Lt駆動開発03 サイト運営してみた結果
Lt駆動開発03 サイト運営してみた結果Lt駆動開発03 サイト運営してみた結果
Lt駆動開発03 サイト運営してみた結果
 
型安全Printf作ってみた
型安全Printf作ってみた型安全Printf作ってみた
型安全Printf作ってみた
 
能年玲奈ちゃんのファンとして本気を出してみた
能年玲奈ちゃんのファンとして本気を出してみた能年玲奈ちゃんのファンとして本気を出してみた
能年玲奈ちゃんのファンとして本気を出してみた
 
第2回 mix c++勉強会@tokyo 資料
第2回 mix c++勉強会@tokyo 資料第2回 mix c++勉強会@tokyo 資料
第2回 mix c++勉強会@tokyo 資料
 
C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料
 

Kürzlich hochgeladen

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 

Kürzlich hochgeladen (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

型! 型!