SlideShare a Scribd company logo
多相Variantの紹介
 うさぎ組 in #fpstudy
    2012/05/19
Self Introduction
名前:きょん(kyon_mm)

Blog : うさぎ組

Target : 開発環境改善

Groovy、テスト、自動化、アジャイル、品質保証

24歳うさみみ系男子

SCMBootCamp、Nagoya.Testing、 StartupGroovy
今日発表する理由
またもや@bleisさんと@mzpさんにはめられた件
http://d.hatena.ne.jp/kyon_mm/20120421/1335018515
ということで
多相Variant
Variant
型安全なenumみたいな
値もてるけどな!
Variant
type irof1 = Osaka_irof of PG
             |Fukuoka_irof of PG;;
type irof2 = Tokyo_irof of PG;;
それぞれにパターンマッチ
  とか使えて便利!
あー
全国のirof を対象にしたい
つまり
irof を統一したい
書いてみる
type irof = Irof1 of irof1
          | Irof2 of irof1;;
あれ?
Irof1 とか Irof2 とか
ちょっと邪魔ですね
そこで
多相Variantですよ!
type irof1 = [`Osaka_irof of PG
             |`Fukuoka_irof of PG];;
type irof2 = [`Tokyo_irof of PG];;
再度
irofを統一したい!
type irof = irof1
          |irof2 ;;
スッキリ!!!
あれ?
でも、こんなものが。。。
#いろふさん目撃証言
OCamlの多相Variant紹介 #fpstudy
OCamlの多相Variant紹介 #fpstudy
OCamlの多相Variant紹介 #fpstudy
irofを追加したい!
そこで!
多相Variantですよ!
確認
追加したいirof
Okayama_irof
  Nara_irof
 Nagoya_irof
追加しよう
type w_irof = [`Okayama_Irof
! ! ! ! ! ! ! |`Nara_Irof
! ! ! ! ! ! ! | irof1];;
簡単にirofさんを
追加できます!!
いまのは
要素を追加したけど
クライアント側では
もちろん静的に処理を追加
  できるわけです
ちょっと戻ると
多相
Variantで型が被っていると
  コンストラクタで
type A = [Foo| Num of int];;
type B = [Bar | Num of int];;
let func = function
   Num i -> i
 | _ -> failwith "Not Number";;
このときにAとして
使われる。。。
でも、多相にしておけば
   大丈夫!
func を多相的に使えます。
ほかに
多相Variantには3つある
開いている
閉じている
 固定
固定
固定 ->
定義されているものと丁度合う
開いている
開いている ->
少なくとも定義されているもの
    をもっている
閉じている
閉じている ->
定義されているもののうちどれ
   かをもっている
   (定義以外はダメ)
まぁいろいろ便利です。
ご清聴ありがとうぴょん◆

More Related Content

PDF
シェル芸生放送
PDF
IoT experiment at Nijo-castle, Kyoto
PPTX
Pythonでも型をつけたいだけの人生だった
PDF
V-To World - What is V-To - Koinu
PDF
RiotでVironというOSSを作ったお話。
PPTX
Lina katayose pyladies3周年LT
PDF
Swiftの新機能 Optional
PDF
Kotlinの紹介
シェル芸生放送
IoT experiment at Nijo-castle, Kyoto
Pythonでも型をつけたいだけの人生だった
V-To World - What is V-To - Koinu
RiotでVironというOSSを作ったお話。
Lina katayose pyladies3周年LT
Swiftの新機能 Optional
Kotlinの紹介

Viewers also liked (9)

PDF
今日から始めるClojure
PDF
Material
PDF
20120519 inverse fizzbuzz を解いてみよう
PDF
たのしい関数型
PDF
C#erがF#に這い寄ってみた
PDF
代数的データ型をラムダ計算の中で表現する方法
PDF
恊働ロボットCOROの開発における形式的仕様の適用事例
PDF
第一回関数型言語勉強会 大阪
PDF
O caml2014 leroy-slides
今日から始めるClojure
Material
20120519 inverse fizzbuzz を解いてみよう
たのしい関数型
C#erがF#に這い寄ってみた
代数的データ型をラムダ計算の中で表現する方法
恊働ロボットCOROの開発における形式的仕様の適用事例
第一回関数型言語勉強会 大阪
O caml2014 leroy-slides
Ad

More from kyon mm (20)

PDF
Scrum,Test,Metrics #sgt2016
PDF
Kaizen process with test #hackt
PDF
ザ・ジェネラリスト #5000dai
PDF
ICST2015 GUI Testingの紹介 #SIGSTJ
PDF
焦らず急いでの意味
PDF
Sta introduction in_kyoto #devkan
PDF
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
PDF
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
PDF
#STAC2014 システムテスト自動化ハンズオン
PDF
テストファースト、自動テストを導入するという事について(@社内勉強会)
PDF
Gradle 2.2, 2.3 news #jggug
PDF
テストとリファクタリングに関する深い方法論 #wewlc_jp
PDF
Groovyで学ぶプロセス代数 #jjug
PDF
テストエンジニアの品格 #automatornight
PDF
@kyon_mmの書籍の読み方 #AsianAA
PDF
JenkinsとGitで実装するGatewayCheckIn Pattern #AsianAA
PDF
GradleのREPLプラグイン紹介 #jggug
PDF
契る意味 #pykonjp2014
PDF
いつでも聞けるTDD入門 #TDDBC_NAGOYA
PDF
Test Retrospective #kyon_kao_wedding in Tokyo
Scrum,Test,Metrics #sgt2016
Kaizen process with test #hackt
ザ・ジェネラリスト #5000dai
ICST2015 GUI Testingの紹介 #SIGSTJ
焦らず急いでの意味
Sta introduction in_kyoto #devkan
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 システムテスト自動化ハンズオン
テストファースト、自動テストを導入するという事について(@社内勉強会)
Gradle 2.2, 2.3 news #jggug
テストとリファクタリングに関する深い方法論 #wewlc_jp
Groovyで学ぶプロセス代数 #jjug
テストエンジニアの品格 #automatornight
@kyon_mmの書籍の読み方 #AsianAA
JenkinsとGitで実装するGatewayCheckIn Pattern #AsianAA
GradleのREPLプラグイン紹介 #jggug
契る意味 #pykonjp2014
いつでも聞けるTDD入門 #TDDBC_NAGOYA
Test Retrospective #kyon_kao_wedding in Tokyo
Ad

OCamlの多相Variant紹介 #fpstudy

Editor's Notes