SlideShare uma empresa Scribd logo
1 de 96
Baixar para ler offline
Scalaの限定継続の応用と基本
      in 高橋メソッド
     水島 宏太
     (@kmizu)
限定継続について話します
その前に
継続って何?
「これから行われる残りの計算
 をパッケージ化したもの」
抽象的
わからない
必要なのは具体例
call/cc
説明しづらい
「ファーストクラスreturn」
void foo() {
  Continuation<Void> c =`return`;
  bar(c);
  println("foo end");
}
void bar(Continuation<Void> c) {
  for(int i = 0; i <= 10; i ++ ) {
    if(i >= 5) {
      println("break!");
      c.invoke(null);
    }
  }
}
foo()      "break!"
"foo end"はどこにいった?
void foo() {
  Continuation<Void> c =`return`;
  bar(c);
  println("foo end");
}
void bar(Continuation<Void> c) {
  for(int i = 0; i <= 10; i ++ ) {
    if(i >= 5) {
      println("break!");
      c.invoke(null);
    }
  }
}
foo()      "break!"
foo()の呼び出し元まで吹っ飛ぶ
例外みたい?
だいぶ違う
static Continuation<Integer> continuation;
void main(String[] args) {
  Integer result = hoge();
  println("result = " + result);
  continuation.invoke(200);
}
Integer hoge() {
  println("hoge started");
  foo(`return`);
  println("hoge finished");
}
Integer foo(Continuation<Integer> escape) {
  continuation = escape;
  continuation.invoke(300);return -1;
}
どうなる?
300
200
200
200
200
200
200
200
200
...
無限ループ
なぜ?
static Continuation<Integer> continuation;
void main(String[] args) {
  Integer result = hoge();
  println("result = " + result);
  continuation.invoke(200);
}
Integer hoge() {
  println("hoge started");
  foo(`return`);
  println("hoge finished");
}
Integer foo(Continuation<Integer> escape) {
  continuation = escape;
  continuation.invoke(300); return -1;
}
一度抜けたメソッドに戻れる
タイムマシーンみたいな
一度呼び出したら返ってこない
これが普通の継続
限定継続
の前に応用例
の前に応用例
何の役に立つ?
がわからないとやる気がでない
というわけで応用例
ふつうの継続と同じ分野
利用側のコードだけ説明
実装の説明は難しい
Generator
C#のyieldとか
Pythonのジェネレータ
val x1: Iterator[Int] = make[Int]{yields =>
  yields(1)
  println("X")
  yields(2)
  println("Y")
  yields(3)
}
while(x1.hasNext) {
  println("----")
  println(x1.next)
}
----
1
X
----
2
Y
----
3
yieldでStop the world
nextで再開
使う方は難しくない
Amb
非決定計算
実際にはただの総当り
block {
  val x = amb(1, 2, 3)
  val y = amb(4, 5)
  printf("(%d, %d)%n", x, y)
}
(1, 4)
(1, 5)
(2, 4)
(2, 5)
(3, 4)
(3, 5)
Goto
継続は元々はgotoの形式化
reset {
 var sum = 0; var i = 0
 val LOOP = label // gotoのためのラベルを作成

    sum += i
    i += 1
    if(i <= 100) goto(LOOP) // gotoでジャンプ
    println("1から100までの合計値:" + sum)
}
他にも色々
話を戻して限定継続
色々方式がある
shift/reset
control/prompt
Scalaはshift/resetを採用
普通の継続との違いは?
戻れる範囲を制限
呼び出したら「返って来る」
これだけだとよくわからない
コード例
val answer = reset {
  val x = shift { k: (Int => Int) =>
    println("A")
    println("k(10) = " + k(10))
    println("B")
    8
  }
  println("x = " + x);x * 2
}
println("answer = " + answer)
A
x = 10
k(10) = 20
B
answer = 8
何故こうなる?
resetは継続の範囲を制限
shiftは少しめんどう
val x = shift { k: (Int => Int) =>
   println("A")
   println("k(10) = " + k(10))
   println("B")
   8
 }
kが継続
型はInt => Int
Intを渡すとIntが「返って来る」
println("A")
println("k(10) = " + k(10))
println("B")
8

が評価される
その後が問題
shiftの呼び出し元に「返らない」
resetの呼び出し元に「返る」
ここがわかりにくい点
ところで
println("k(10) = " + k(10))
k(10)で何が起こってる?
shiftの呼び出し元に「返る」
println("x = " + x)
x*2
resetを抜けるまでが評価される
最後にkの呼び出し元に「返る」
kの呼び出しの続きが評価される
何度でもkを呼び出せる
非常にややこしい
普通の人にshift/resetは…
中の人が知っていればいい話
でも面白い
宣伝
『オープンソース徹底活用
Scala実践プログラミング』
     秀和システム
共著で書きました
限定継続の話もあります
わかりにくければdisってください
質問タイム?

Mais conteúdo relacionado

Mais procurados

Boost.Coroutine
Boost.CoroutineBoost.Coroutine
Boost.Coroutinemelpon
 
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)MITSUNARI Shigeo
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介MITSUNARI Shigeo
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介MITSUNARI Shigeo
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.ContextAkira Takahashi
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
Goの文法の実例と解説
Goの文法の実例と解説Goの文法の実例と解説
Goの文法の実例と解説Ryuji Iwata
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかYuki Miyatake
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座bleis tift
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案yohhoy
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
テーマ「最適化 その2」
テーマ「最適化 その2」テーマ「最適化 その2」
テーマ「最適化 その2」technocat
 

Mais procurados (20)

emc++ chapter32
emc++ chapter32emc++ chapter32
emc++ chapter32
 
Boost.Coroutine
Boost.CoroutineBoost.Coroutine
Boost.Coroutine
 
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
llvm入門
llvm入門llvm入門
llvm入門
 
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
Goの文法の実例と解説
Goの文法の実例と解説Goの文法の実例と解説
Goの文法の実例と解説
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
emcjp Item 42
emcjp Item 42emcjp Item 42
emcjp Item 42
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座
 
Emcjp item21
Emcjp item21Emcjp item21
Emcjp item21
 
C++14 Overview
C++14 OverviewC++14 Overview
C++14 Overview
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
テーマ「最適化 その2」
テーマ「最適化 その2」テーマ「最適化 その2」
テーマ「最適化 その2」
 

Destaque

โบรชัวร์โปรโมชั่นโลตัส Hypermarket รายปักษ์ วันที่ 15 28มีค.55
โบรชัวร์โปรโมชั่นโลตัส Hypermarket รายปักษ์ วันที่ 15 28มีค.55โบรชัวร์โปรโมชั่นโลตัส Hypermarket รายปักษ์ วันที่ 15 28มีค.55
โบรชัวร์โปรโมชั่นโลตัส Hypermarket รายปักษ์ วันที่ 15 28มีค.55โปรโมชั่นทูยู
 
โบรชัวร์โปรโมชั่นโลตัส Hypermarket อาหารสด รายปักษ์ วันที่ 15 21มีค.55
โบรชัวร์โปรโมชั่นโลตัส Hypermarket อาหารสด รายปักษ์ วันที่ 15 21มีค.55โบรชัวร์โปรโมชั่นโลตัส Hypermarket อาหารสด รายปักษ์ วันที่ 15 21มีค.55
โบรชัวร์โปรโมชั่นโลตัส Hypermarket อาหารสด รายปักษ์ วันที่ 15 21มีค.55โปรโมชั่นทูยู
 
โบรชัวร์โปรโมชั่นโลตัสร้านคุ้มค่า รายปักษ์ วันที่ 15 21มีค.55
โบรชัวร์โปรโมชั่นโลตัสร้านคุ้มค่า รายปักษ์ วันที่ 15 21มีค.55โบรชัวร์โปรโมชั่นโลตัสร้านคุ้มค่า รายปักษ์ วันที่ 15 21มีค.55
โบรชัวร์โปรโมชั่นโลตัสร้านคุ้มค่า รายปักษ์ วันที่ 15 21มีค.55โปรโมชั่นทูยู
 
ElasticMQ: a fully asynchronous, Akka-based SQS server
ElasticMQ: a fully asynchronous, Akka-based SQS serverElasticMQ: a fully asynchronous, Akka-based SQS server
ElasticMQ: a fully asynchronous, Akka-based SQS serverAdam Warski
 
โบรชัวร์โปรโมชั่น Makro mail beautiful summer
โบรชัวร์โปรโมชั่น Makro mail beautiful summerโบรชัวร์โปรโมชั่น Makro mail beautiful summer
โบรชัวร์โปรโมชั่น Makro mail beautiful summerโปรโมชั่นทูยู
 
โบรชัวร์โปรโมชั่นโลตัส ครื่องใช้ไฟฟ้าลดร้อนแรง รายปักษ์ วันที่ 15 28มีค.55
โบรชัวร์โปรโมชั่นโลตัส ครื่องใช้ไฟฟ้าลดร้อนแรง รายปักษ์ วันที่ 15 28มีค.55โบรชัวร์โปรโมชั่นโลตัส ครื่องใช้ไฟฟ้าลดร้อนแรง รายปักษ์ วันที่ 15 28มีค.55
โบรชัวร์โปรโมชั่นโลตัส ครื่องใช้ไฟฟ้าลดร้อนแรง รายปักษ์ วันที่ 15 28มีค.55โปรโมชั่นทูยู
 
โบรชัวร์โปรโมชั่น Big c aloha summer ระหว่างวันที่ 9 มี.ค.-30 เม.ย.55
โบรชัวร์โปรโมชั่น Big c aloha summer ระหว่างวันที่ 9 มี.ค.-30 เม.ย.55โบรชัวร์โปรโมชั่น Big c aloha summer ระหว่างวันที่ 9 มี.ค.-30 เม.ย.55
โบรชัวร์โปรโมชั่น Big c aloha summer ระหว่างวันที่ 9 มี.ค.-30 เม.ย.55โปรโมชั่นทูยู
 
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門Yoshimura Soichiro
 

Destaque (10)

โบรชัวร์ Samsung big surprise 2012
โบรชัวร์ Samsung big surprise 2012โบรชัวร์ Samsung big surprise 2012
โบรชัวร์ Samsung big surprise 2012
 
โบรชัวร์ Promotion sports world expo mar.2012
โบรชัวร์ Promotion sports world expo mar.2012โบรชัวร์ Promotion sports world expo mar.2012
โบรชัวร์ Promotion sports world expo mar.2012
 
โบรชัวร์โปรโมชั่นโลตัส Hypermarket รายปักษ์ วันที่ 15 28มีค.55
โบรชัวร์โปรโมชั่นโลตัส Hypermarket รายปักษ์ วันที่ 15 28มีค.55โบรชัวร์โปรโมชั่นโลตัส Hypermarket รายปักษ์ วันที่ 15 28มีค.55
โบรชัวร์โปรโมชั่นโลตัส Hypermarket รายปักษ์ วันที่ 15 28มีค.55
 
โบรชัวร์โปรโมชั่นโลตัส Hypermarket อาหารสด รายปักษ์ วันที่ 15 21มีค.55
โบรชัวร์โปรโมชั่นโลตัส Hypermarket อาหารสด รายปักษ์ วันที่ 15 21มีค.55โบรชัวร์โปรโมชั่นโลตัส Hypermarket อาหารสด รายปักษ์ วันที่ 15 21มีค.55
โบรชัวร์โปรโมชั่นโลตัส Hypermarket อาหารสด รายปักษ์ วันที่ 15 21มีค.55
 
โบรชัวร์โปรโมชั่นโลตัสร้านคุ้มค่า รายปักษ์ วันที่ 15 21มีค.55
โบรชัวร์โปรโมชั่นโลตัสร้านคุ้มค่า รายปักษ์ วันที่ 15 21มีค.55โบรชัวร์โปรโมชั่นโลตัสร้านคุ้มค่า รายปักษ์ วันที่ 15 21มีค.55
โบรชัวร์โปรโมชั่นโลตัสร้านคุ้มค่า รายปักษ์ วันที่ 15 21มีค.55
 
ElasticMQ: a fully asynchronous, Akka-based SQS server
ElasticMQ: a fully asynchronous, Akka-based SQS serverElasticMQ: a fully asynchronous, Akka-based SQS server
ElasticMQ: a fully asynchronous, Akka-based SQS server
 
โบรชัวร์โปรโมชั่น Makro mail beautiful summer
โบรชัวร์โปรโมชั่น Makro mail beautiful summerโบรชัวร์โปรโมชั่น Makro mail beautiful summer
โบรชัวร์โปรโมชั่น Makro mail beautiful summer
 
โบรชัวร์โปรโมชั่นโลตัส ครื่องใช้ไฟฟ้าลดร้อนแรง รายปักษ์ วันที่ 15 28มีค.55
โบรชัวร์โปรโมชั่นโลตัส ครื่องใช้ไฟฟ้าลดร้อนแรง รายปักษ์ วันที่ 15 28มีค.55โบรชัวร์โปรโมชั่นโลตัส ครื่องใช้ไฟฟ้าลดร้อนแรง รายปักษ์ วันที่ 15 28มีค.55
โบรชัวร์โปรโมชั่นโลตัส ครื่องใช้ไฟฟ้าลดร้อนแรง รายปักษ์ วันที่ 15 28มีค.55
 
โบรชัวร์โปรโมชั่น Big c aloha summer ระหว่างวันที่ 9 มี.ค.-30 เม.ย.55
โบรชัวร์โปรโมชั่น Big c aloha summer ระหว่างวันที่ 9 มี.ค.-30 เม.ย.55โบรชัวร์โปรโมชั่น Big c aloha summer ระหว่างวันที่ 9 มี.ค.-30 เม.ย.55
โบรชัวร์โปรโมชั่น Big c aloha summer ระหว่างวันที่ 9 มี.ค.-30 เม.ย.55
 
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
 

Semelhante a Scalaの限定継続の応用と基本(改訂版)

競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
Async design with Unity3D
Async design with Unity3DAsync design with Unity3D
Async design with Unity3DKouji Hosoda
 
X hago2 shortcoding 20110827
X hago2 shortcoding 20110827X hago2 shortcoding 20110827
X hago2 shortcoding 20110827uskey512
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門SatoYu1ro
 
Boost9 session
Boost9 sessionBoost9 session
Boost9 sessionfreedom404
 
Brief introduction of Boost.ICL
Brief introduction of Boost.ICLBrief introduction of Boost.ICL
Brief introduction of Boost.ICLyak1ex
 
Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016Yoshio Terada
 
モナドをつくろう
モナドをつくろうモナドをつくろう
モナドをつくろうdico_leque
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるAtsushi Tadokoro
 
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目hecomi
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
ぱっと見でわかるC++11
ぱっと見でわかるC++11ぱっと見でわかるC++11
ぱっと見でわかるC++11えぴ 福田
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!bitter_fox
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチMasami Ichikawa
 
関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会Koichi Sakata
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1Susisu
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 TipsTakaaki Suzuki
 

Semelhante a Scalaの限定継続の応用と基本(改訂版) (20)

競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
Async design with Unity3D
Async design with Unity3DAsync design with Unity3D
Async design with Unity3D
 
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
Actor&stm
Actor&stmActor&stm
Actor&stm
 
X hago2 shortcoding 20110827
X hago2 shortcoding 20110827X hago2 shortcoding 20110827
X hago2 shortcoding 20110827
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
 
Boost9 session
Boost9 sessionBoost9 session
Boost9 session
 
Brief introduction of Boost.ICL
Brief introduction of Boost.ICLBrief introduction of Boost.ICL
Brief introduction of Boost.ICL
 
Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016
 
モナドをつくろう
モナドをつくろうモナドをつくろう
モナドをつくろう
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
 
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
ぱっと見でわかるC++11
ぱっと見でわかるC++11ぱっと見でわかるC++11
ぱっと見でわかるC++11
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
 
関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
 

Mais de Kota Mizushima

ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてKota Mizushima
 
株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状Kota Mizushima
 
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Kota Mizushima
 
Scalaの現状と今後
Scalaの現状と今後Scalaの現状と今後
Scalaの現状と今後Kota Mizushima
 
Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning TipsKota Mizushima
 
こわくない型クラス
こわくない型クラスこわくない型クラス
こわくない型クラスKota Mizushima
 
About Capabilities for Uniqueness and Borrowing
About Capabilities for Uniqueness and BorrowingAbout Capabilities for Uniqueness and Borrowing
About Capabilities for Uniqueness and BorrowingKota Mizushima
 
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful librariesScala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful librariesKota Mizushima
 
Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力Kota Mizushima
 
Scalaの現状と課題
Scalaの現状と課題Scalaの現状と課題
Scalaの現状と課題Kota Mizushima
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発Kota Mizushima
 
日本Scalaユーザーズグループ発足
日本Scalaユーザーズグループ発足日本Scalaユーザーズグループ発足
日本Scalaユーザーズグループ発足Kota Mizushima
 
Implicit Implicit Scala
Implicit Implicit ScalaImplicit Implicit Scala
Implicit Implicit ScalaKota Mizushima
 
Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit ScalaKota Mizushima
 

Mais de Kota Mizushima (20)

ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修についてドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修について
 
kollectionの紹介
kollectionの紹介kollectionの紹介
kollectionの紹介
 
株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状
 
Macros in nemerle
Macros in nemerleMacros in nemerle
Macros in nemerle
 
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -
 
Introduction to PEG
Introduction to PEGIntroduction to PEG
Introduction to PEG
 
Scalaの現状と今後
Scalaの現状と今後Scalaの現状と今後
Scalaの現状と今後
 
Power of Scala
Power of ScalaPower of Scala
Power of Scala
 
Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning Tips
 
こわくない型クラス
こわくない型クラスこわくない型クラス
こわくない型クラス
 
こわくないScala
こわくないScalaこわくないScala
こわくないScala
 
Scala is-unscared
Scala is-unscaredScala is-unscared
Scala is-unscared
 
About Capabilities for Uniqueness and Borrowing
About Capabilities for Uniqueness and BorrowingAbout Capabilities for Uniqueness and Borrowing
About Capabilities for Uniqueness and Borrowing
 
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful librariesScala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
 
Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力
 
Scalaの現状と課題
Scalaの現状と課題Scalaの現状と課題
Scalaの現状と課題
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
日本Scalaユーザーズグループ発足
日本Scalaユーザーズグループ発足日本Scalaユーザーズグループ発足
日本Scalaユーザーズグループ発足
 
Implicit Implicit Scala
Implicit Implicit ScalaImplicit Implicit Scala
Implicit Implicit Scala
 
Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit Scala
 

Scalaの限定継続の応用と基本(改訂版)