SlideShare ist ein Scribd-Unternehmen logo
1 von 81
Downloaden Sie, um offline zu lesen
仮題: R について
@tnoda_
[2015-05-27 Wed]
R について
R について
そんな言語で大丈夫か?
(Shibuya.lisp なのに的な意味で)
かんたんな R の紹介
かんたんな R の紹介
user> (r/mean [1 2 3 4 5])
[3.0]
user> (r/var [1 2 3 4 5])
[2.5]
user> (r/plot (range 10) (range 10))
nil
Outline
Outline
さっき見たものは何?
Outline
さっき見たものは何?
Clojure から R の関数を利用するライブラリ Rashinban のデモ
Outline
さっき見たものは何?
Clojure から R の関数を利用するライブラリ Rashinban のデモ
Clojure と非 Java との連携
Outline
さっき見たものは何?
Clojure から R の関数を利用するライブラリ Rashinban のデモ
Clojure と非 Java との連携
いくつかの方法、Rashinban の選択
Outline
さっき見たものは何?
Clojure から R の関数を利用するライブラリ Rashinban のデモ
Clojure と非 Java との連携
いくつかの方法、Rashinban の選択
Rashinban を支える Clojure の技術
Outline
さっき見たものは何?
Clojure から R の関数を利用するライブラリ Rashinban のデモ
Clojure と非 Java との連携
いくつかの方法、Rashinban の選択
Rashinban を支える Clojure の技術
• R のデータ構造を Clojure で扱う方法
• Clojure の値を R に持ち込む方法
Rashinban
!"#$%&'(
)#*&+,#'(#-
.,'/&0(+
123#-456
7&8+4+3
! .0,9"+(
!
!
!
.:.;;
<,+-+4#
.0,9"+(
.0,9"+(
=>?
=4*4
Clojure で R を使いたい
Clojure で R を使いたい
R 言語で Clojure を実装する (RClojure)
Clojure で R を使いたい
R 言語で Clojure を実装する (RClojure)
死。
Clojure で R を使いたい
R 言語で Clojure を実装する (RClojure)
死。
libR を JVM で利用する
• JNI/JNA
Clojure で R を使いたい
R 言語で Clojure を実装する (RClojure)
死。
libR を JVM で利用する
• JNI/JNA
• SEGV 即死
Clojure で R を使いたい
R 言語で Clojure を実装する (RClojure)
死。
libR を JVM で利用する
• JNI/JNA
• SEGV 即死
• C の世界 <=メモリコピー=> JVM の世界
Clojure で R を使いたい
R 言語で Clojure を実装する (RClojure)
死。
libR を JVM で利用する
• JNI/JNA
• SEGV 即死
• C の世界 <=メモリコピー=> JVM の世界
Clojure で R を使いたい
R 言語で Clojure を実装する (RClojure)
死。
libR を JVM で利用する
• JNI/JNA
• SEGV 即死
• C の世界 <=メモリコピー=> JVM の世界
Client/Server で利用する
• サーバとしての R
• クライアントとしての Clojure
R のクライアントサーバ実装
R のクライアントサーバ実装
Figure : http://rforge.net/Rserve
文献情報
Hornik, K, and F Leisch. “A Fast Way to Provide R Functionality
to Applications.” Proceedings of DSC, no. Dsc (2003).
http://www.ci.tuwien.ac.at/Conferences/DSC-2003/
Proceedings/Urbanek.pdf
Rserve の仕組み
eval()
Rserve 利用の課題
Rserve 利用の課題
Java オブジェクト → Clojure の値
Rserve 利用の課題
Java オブジェクト → Clojure の値
• Rserve から受けとる R 関数の実行結果
Rserve 利用の課題
Java オブジェクト → Clojure の値
• Rserve から受けとる R 関数の実行結果
• R の型に対応する Java のクラスのオブジェクト
Rserve 利用の課題
Java オブジェクト → Clojure の値
• Rserve から受けとる R 関数の実行結果
• R の型に対応する Java のクラスのオブジェクト
• e.g. REXPDouble, REXPString, RList, . . .
Rserve 利用の課題
Java オブジェクト → Clojure の値
• Rserve から受けとる R 関数の実行結果
• R の型に対応する Java のクラスのオブジェクト
• e.g. REXPDouble, REXPString, RList, . . .
• Clojure の値に変換が面倒
Rserve 利用の課題
Java オブジェクト → Clojure の値
• Rserve から受けとる R 関数の実行結果
• R の型に対応する Java のクラスのオブジェクト
• e.g. REXPDouble, REXPString, RList, . . .
• Clojure の値に変換が面倒
Rserve 利用の課題
Java オブジェクト → Clojure の値
• Rserve から受けとる R 関数の実行結果
• R の型に対応する Java のクラスのオブジェクト
• e.g. REXPDouble, REXPString, RList, . . .
• Clojure の値に変換が面倒
Clojure の値 → R の式
Rserve 利用の課題
Java オブジェクト → Clojure の値
• Rserve から受けとる R 関数の実行結果
• R の型に対応する Java のクラスのオブジェクト
• e.g. REXPDouble, REXPString, RList, . . .
• Clojure の値に変換が面倒
Clojure の値 → R の式
• eval() に渡す式を組み立てる必要
Rserve 利用の課題
Java オブジェクト → Clojure の値
• Rserve から受けとる R 関数の実行結果
• R の型に対応する Java のクラスのオブジェクト
• e.g. REXPDouble, REXPString, RList, . . .
• Clojure の値に変換が面倒
Clojure の値 → R の式
• eval() に渡す式を組み立てる必要
• Clojure の値を一旦全て文字列で表現
Rserve 利用の課題
Java オブジェクト → Clojure の値
• Rserve から受けとる R 関数の実行結果
• R の型に対応する Java のクラスのオブジェクト
• e.g. REXPDouble, REXPString, RList, . . .
• Clojure の値に変換が面倒
Clojure の値 → R の式
• eval() に渡す式を組み立てる必要
• Clojure の値を一旦全て文字列で表現
• Clojure と R との表現が異なる場合は面倒
Java から Clojure へ
Protocols による解決
->clj
Protocols とは
Protocols とは
Java のインタフェースのようなもの
Protocols とは
Java のインタフェースのようなもの
• すなわち型 (Java のクラス) に基づくディスパッチ
Protocols とは
Java のインタフェースのようなもの
• すなわち型 (Java のクラス) に基づくディスパッチ
• 貧弱なディスパッチによる多態性の提供
Protocols とは
Java のインタフェースのようなもの
• すなわち型 (Java のクラス) に基づくディスパッチ
• 貧弱なディスパッチによる多態性の提供
Protocols とは
Java のインタフェースのようなもの
• すなわち型 (Java のクラス) に基づくディスパッチ
• 貧弱なディスパッチによる多態性の提供
そんな貧弱なディスパッチで大丈夫か?
Protocols とは
Java のインタフェースのようなもの
• すなわち型 (Java のクラス) に基づくディスパッチ
• 貧弱なディスパッチによる多態性の提供
そんな貧弱なディスパッチで大丈夫か?
• 「大丈夫だ、問題ない」(2 回目)
Protocols とは
Java のインタフェースのようなもの
• すなわち型 (Java のクラス) に基づくディスパッチ
• 貧弱なディスパッチによる多態性の提供
そんな貧弱なディスパッチで大丈夫か?
• 「大丈夫だ、問題ない」(2 回目)
• Java のインタフェースでも困らない
Protocols とは
Java のインタフェースのようなもの
• すなわち型 (Java のクラス) に基づくディスパッチ
• 貧弱なディスパッチによる多態性の提供
そんな貧弱なディスパッチで大丈夫か?
• 「大丈夫だ、問題ない」(2 回目)
• Java のインタフェースでも困らない
Protocols とは
Java のインタフェースのようなもの
• すなわち型 (Java のクラス) に基づくディスパッチ
• 貧弱なディスパッチによる多態性の提供
そんな貧弱なディスパッチで大丈夫か?
• 「大丈夫だ、問題ない」(2 回目)
• Java のインタフェースでも困らない
Protocols の利点
Protocols とは
Java のインタフェースのようなもの
• すなわち型 (Java のクラス) に基づくディスパッチ
• 貧弱なディスパッチによる多態性の提供
そんな貧弱なディスパッチで大丈夫か?
• 「大丈夫だ、問題ない」(2 回目)
• Java のインタフェースでも困らない
Protocols の利点
• Clojure のホスト環境 (Java) に存在する機能
Protocols とは
Java のインタフェースのようなもの
• すなわち型 (Java のクラス) に基づくディスパッチ
• 貧弱なディスパッチによる多態性の提供
そんな貧弱なディスパッチで大丈夫か?
• 「大丈夫だ、問題ない」(2 回目)
• Java のインタフェースでも困らない
Protocols の利点
• Clojure のホスト環境 (Java) に存在する機能
• 速さ
Rashinban での例
1 (defprotocol Rexp
2 (->clj [x]))
3
4 (extend-protocol Rexp
5 REXPDouble
6 (->clj [rds] (-> rds .asDoubles vec))
7 REXPGenericVector
8 (->clj [rxs] (-> rxs .asList ->clj))
9 REXPInteger
10 (->clj [ris] (-> ris .asIntegers vec))
11 REXPLogical
12 (->clj [rls] (->> rls .asBytes (map pos?) vec))
13 REXPNull
14 (->clj [_] nil)
15 REXPString
16 (->clj [rfs] (-> rfs .asStrings vec))
17 REXP
18 (->clj [rexp] (str rexp))
19 RList
20 (->clj [rxs] (reduce (fn
21 [acc k]
Rashinban を支える技術 1
Rashinban を支える技術 1
Protocols
R <=> Clojure のデータ型を自動変換
Rashinban を支える技術 1
Protocols
R <=> Clojure のデータ型を自動変換
クライアント起動時
Rashinban を支える技術 1
Protocols
R <=> Clojure のデータ型を自動変換
クライアント起動時
1 サーバに接続 (RConnection.)
Rashinban を支える技術 1
Protocols
R <=> Clojure のデータ型を自動変換
クライアント起動時
1 サーバに接続 (RConnection.)
2 サーバから built-in 関数一覧を取得
Rashinban を支える技術 1
Protocols
R <=> Clojure のデータ型を自動変換
クライアント起動時
1 サーバに接続 (RConnection.)
2 サーバから built-in 関数一覧を取得
3 built-in 関数に相当する Clojure 関数を作成
Rashinban を支える技術 1
Protocols
R <=> Clojure のデータ型を自動変換
クライアント起動時
1 サーバに接続 (RConnection.)
2 サーバから built-in 関数一覧を取得
3 built-in 関数に相当する Clojure 関数を作成
4 search() 関数を使ってパッケージ一覧を取得
Rashinban を支える技術 1
Protocols
R <=> Clojure のデータ型を自動変換
クライアント起動時
1 サーバに接続 (RConnection.)
2 サーバから built-in 関数一覧を取得
3 built-in 関数に相当する Clojure 関数を作成
4 search() 関数を使ってパッケージ一覧を取得
5 ls() 関数を使ってパッケージ毎に利用可能な関数一覧を取得
Rashinban を支える技術 1
Protocols
R <=> Clojure のデータ型を自動変換
クライアント起動時
1 サーバに接続 (RConnection.)
2 サーバから built-in 関数一覧を取得
3 built-in 関数に相当する Clojure 関数を作成
4 search() 関数を使ってパッケージ一覧を取得
5 ls() 関数を使ってパッケージ毎に利用可能な関数一覧を取得
6 全ての R 関数に相当する Clojure 関数を作成
Checkpoint
Checkpoint
Rashinban (回らないほう)
Checkpoint
Rashinban (回らないほう)
• サーバ/クライアントで R を利用するライブラリ
• Rserve のクライアントを利用
• 起動時に R サーバに接続して利用可能関数を調べる
Checkpoint
Rashinban (回らないほう)
• サーバ/クライアントで R を利用するライブラリ
• Rserve のクライアントを利用
• 起動時に R サーバに接続して利用可能関数を調べる
Protocols
Checkpoint
Rashinban (回らないほう)
• サーバ/クライアントで R を利用するライブラリ
• Rserve のクライアントを利用
• 起動時に R サーバに接続して利用可能関数を調べる
Protocols
• Java インタフェース類似機能
• 貧弱ながら十分かつ高速なディスパッチ
• Clojure の値を何かに変換するときに便利
これから R 言語の話をしよう
• 型
• クラス
• R のオブジェクト指向
R の型
"NULL"' NULL
"symbol"' a variable name
"pairlist"' a pairlist object (mainly internal)
"closure"' a function
"environment"'an environment
"promise"' an object used to implement lazy evaluation
"language"' an R language construct
"special"' an internal function that does not evaluate
its arguments
"builtin"' an internal function that evaluates its
arguments
"char"' a scalar' string object (internal only) ***
"logical"' a vector containing logical values
"integer"' a vector containing integer values
"double"' a vector containing real values
"complex"' a vector containing complex values
"character"' a vector containing character values
"..."' the special variable length argument ***
"any"' a special type that matches all types: there
are no objects of this type
"expression"'an expression object
"list"' a list
"bytecode"' byte code (internal only) ***
"externalptr"'an external pointer object
"weakref"' a weak reference object
"raw"' a vector containing bytes
"S4"' an S4 object which is not a simple object
配列と行列
配列と行列
c(1, 2, 3) の型は?
配列と行列
c(1, 2, 3) の型は?
答え: double
配列と行列
c(1, 2, 3) の型は?
答え: double
> typeof(c(1, 2, 3))
[1] "double"
配列と行列
c(1, 2, 3) の型は?
答え: double
> typeof(c(1, 2, 3))
[1] "double"
R の行列 (matrix) の型は?
配列と行列
c(1, 2, 3) の型は?
答え: double
> typeof(c(1, 2, 3))
[1] "double"
R の行列 (matrix) の型は?
答え: double
配列と行列
c(1, 2, 3) の型は?
答え: double
> typeof(c(1, 2, 3))
[1] "double"
R の行列 (matrix) の型は?
答え: double
> typeof(matrix(c(1, 2, 3, 4, 5, 6), nrow=2, ncol=3))
[1] "double"
R はどのようにして両者を区別するか?
R はどのようにして両者を区別するか?
属性
• R のオブジェクトは任意の属性をもつことができる
• 振舞いに影響を与える属性がある
• class, dim 属性
R はどのようにして両者を区別するか?
属性
• R のオブジェクトは任意の属性をもつことができる
• 振舞いに影響を与える属性がある
• class, dim 属性
例
> attr(matrix(c(1, 2, 3, 4, 5, 6), nrow=2, ncol=3), "dim")
[1] 2 3
> attr(c(1, 2, 3), "dim")
NULL
一つの型、複数のクラス
配列型 (double, integer, …)
• 配列
• 行列
リスト (list)
• リスト
• データフレーム
Protocols で解決できない問題
一つの型に複数のクラス
• REXPDouble
• R の配列 → Clojure のベクタ
• R の行列 → Clatrix (BLAS) の行列
• RList
• R のリスト → Clojure のマップ
• R のデータフレーム → Incanter のデータセット
属性値
• R オブジェクトの属性値を Clojure でも確認したい
• ある条件を満たす Clojure の値を R オブジェクトに変換した
ときに、属性値を付与したい
Rashinban を支える Clojure の技術 2
Multimethods
• 型ではなく値によるディスパッチ
• すなわち、R オブジェクトの属性値でディスパッチ
• Protocols => Multimethods の 2 段階
• Multimethods = 遅い = 一回だけ
• Protocols = 速い = 何回も実行される
Metadata
• Clojure の値には任意のメタデータを付与可能
• R オブジェクト => Clojure 際に属性値をメタデータに
• Clojure => R オブジェクトの際にメタデータを属性値に
Wrap-up
Rashinban
• Clojure から豊富な R の関数を利用
• Rserve ベースのクライアント/サーバ
Clojure
• データ型変換
• Protocols
• Multimethods
• Metadata
• R の属性値を保存

Weitere ähnliche Inhalte

Was ist angesagt?

BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
Hiroshi Ono
 
Sns suite presentation
Sns suite presentationSns suite presentation
Sns suite presentation
Jason Namkung
 
197x 20090704 Scalaで並行プログラミング
197x 20090704 Scalaで並行プログラミング197x 20090704 Scalaで並行プログラミング
197x 20090704 Scalaで並行プログラミング
Net Penguin
 
Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行
guest5f4320
 
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
YoheiOkuyama
 

Was ist angesagt? (20)

はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
 
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
 
Material
MaterialMaterial
Material
 
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmCookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
Sns suite presentation
Sns suite presentationSns suite presentation
Sns suite presentation
 
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjavaきつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
きつねさんと学ぶ Lambda式&StreamAPIハンズオン[関ジャバ2015/7/11] #kanjava
 
Rpscala2011 0601
Rpscala2011 0601Rpscala2011 0601
Rpscala2011 0601
 
演算子オーバーライドをDSLに活用する
演算子オーバーライドをDSLに活用する演算子オーバーライドをDSLに活用する
演算子オーバーライドをDSLに活用する
 
Xtend の紹介
Xtend の紹介Xtend の紹介
Xtend の紹介
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
 
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
 
Brand new Data Processing - StreamAPI
Brand new Data Processing - StreamAPIBrand new Data Processing - StreamAPI
Brand new Data Processing - StreamAPI
 
なぜリアクティブは重要か #ScalaMatsuri
なぜリアクティブは重要か #ScalaMatsuriなぜリアクティブは重要か #ScalaMatsuri
なぜリアクティブは重要か #ScalaMatsuri
 
197x 20090704 Scalaで並行プログラミング
197x 20090704 Scalaで並行プログラミング197x 20090704 Scalaで並行プログラミング
197x 20090704 Scalaで並行プログラミング
 
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
 
Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行
 
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
 
Clojure
ClojureClojure
Clojure
 

Andere mochten auch

Andere mochten auch (12)

Kobe.R #15 - Incanter チョットシッテル
Kobe.R #15 - Incanter チョットシッテルKobe.R #15 - Incanter チョットシッテル
Kobe.R #15 - Incanter チョットシッテル
 
Mad kobe.r14
Mad kobe.r14Mad kobe.r14
Mad kobe.r14
 
Kobe.R #18: 本の紹介: 通称「緑本」
Kobe.R #18: 本の紹介: 通称「緑本」Kobe.R #18: 本の紹介: 通称「緑本」
Kobe.R #18: 本の紹介: 通称「緑本」
 
R6 classes
R6 classesR6 classes
R6 classes
 
Factor型の注意点
Factor型の注意点Factor型の注意点
Factor型の注意点
 
R in life science
R in life scienceR in life science
R in life science
 
R in life science2
R in life science2R in life science2
R in life science2
 
Packages for data wrangling データ前処理のためのパッケージ
Packages for data wrangling データ前処理のためのパッケージPackages for data wrangling データ前処理のためのパッケージ
Packages for data wrangling データ前処理のためのパッケージ
 
サポートベクトルマシン入門
サポートベクトルマシン入門サポートベクトルマシン入門
サポートベクトルマシン入門
 
Rデータ処理入門
Rデータ処理入門Rデータ処理入門
Rデータ処理入門
 
gen-class とバイトコード(第3回 gen-class 勉強会資料)
gen-class とバイトコード(第3回 gen-class 勉強会資料)gen-class とバイトコード(第3回 gen-class 勉強会資料)
gen-class とバイトコード(第3回 gen-class 勉強会資料)
 
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
 

Ähnlich wie Shibuya.lisp #28: 仮題: R について

Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
Ra Zon
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
 
入門機械学習1,2章
入門機械学習1,2章入門機械学習1,2章
入門機械学習1,2章
Kazufumi Ohkawa
 

Ähnlich wie Shibuya.lisp #28: 仮題: R について (20)

Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
 
Deep dive into instanceof
Deep dive into instanceofDeep dive into instanceof
Deep dive into instanceof
 
Vim scriptとJavaとHaskell
Vim scriptとJavaとHaskellVim scriptとJavaとHaskell
Vim scriptとJavaとHaskell
 
ナレッジグラフ/LOD利用技術の入門(後編)
ナレッジグラフ/LOD利用技術の入門(後編)ナレッジグラフ/LOD利用技術の入門(後編)
ナレッジグラフ/LOD利用技術の入門(後編)
 
Integral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common LispIntegral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common Lisp
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
キメるClojure
キメるClojureキメるClojure
キメるClojure
 
Everyday Life with clojure.spec
Everyday Life with clojure.specEveryday Life with clojure.spec
Everyday Life with clojure.spec
 
RubyとJavaScriptに見る第一級関数
RubyとJavaScriptに見る第一級関数RubyとJavaScriptに見る第一級関数
RubyとJavaScriptに見る第一級関数
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
 
Rx Showcase
Rx ShowcaseRx Showcase
Rx Showcase
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
 
Ruby Extended Library
Ruby Extended LibraryRuby Extended Library
Ruby Extended Library
 
入門機械学習1,2章
入門機械学習1,2章入門機械学習1,2章
入門機械学習1,2章
 
普通のプログラミング言語R
普通のプログラミング言語R普通のプログラミング言語R
普通のプログラミング言語R
 

Shibuya.lisp #28: 仮題: R について