SlideShare a Scribd company logo
1 of 32
Download to read offline
Java から Scala へ
  第2回 関数型言語勉強会 大阪
       2012-11-24
木虎 直樹 @kitora_naoki

シナジーマーケティング株式会社

プログラマ & インフラエンジニア

Java, Scala, JavaScript, Python

Linux, Web, AP, RDBMS, MTA, DNS, network

自然言語処理、データマイニング

アジャイルサムライ読書会 大阪道場主催
対象


関数プログラミング
関数型言語
に興味があるが触ったことはない
または少し触ったことがある
初心者向け
厳密な正確性よりも
わかりやすさを優先
プログラミングパラダイム



命令型プログラミング
関数プログラミング
論理プログラミング


オブジェクト指向プログラミング
関数プログラミングとは


狭義
変更可能 (mutable) な変数、(再) 代入、ルー
プ等の命令型の制御構造を使わずにプログラ
ミングすること


広義
関数を中心にプログラミングすること
関数プログラミングの関数とは


命令型プログラミングにおける関数ではな
く、数学でいうところの関数


y = f(x)
入力 x に対して出力 y のただ一つの値を決定
する規則が与えられているときに y を x の関
数という
なぜ関数プログラミング?

コードが簡潔になることが多い
Unit テストがしやすい
(再) 代入がないので、バグの大きな原因の一
つがなくなる
  特に並列処理
数学的な扱いが容易
 関数の合成
 式変形
関数型言語

関数プログラミングをしやすくす
る特徴をもつプログラミング言語
オブジェクト指向言語と関数型言
語の特徴を統合したマルチパラダ
イムのプログラミング言語
JVM 上で動作し、既存の Java
のプログラムと容易に連携可能
高速に動作
実績が多い
信頼性の高いライブラリ
が豊富
お手軽さに欠ける

public	 class	 Main	 {
	 	 public	 static	 void	 main(String[]	 args)	 {
	 	 	 	 System.out.println("Hello,	 World!");
	 	 }	 
}


$	 javac	 Main.java
$	 java	 Main
Hello,	 World!
Java よりもお手軽

hello.scala
println("Hello,	 World!")


$	 scala	 hello.scala
Hello,	 World!
REPL



$	 scala
scala>	 println("Hello,	 World!")
Hello,	 World!
Java っぽい手続きもふめる
Main.scala
object	 Main	 {
	 	 def	 main(args:	 Array[String])	 {
	 	 	 	 println("Hello,	 World!")
	 	 }
}

$	 scalac	 Main.scala
$	 scala	 Main
Hello,	 World!
型推論

Java
//	 Java	 6	 以前
List<String>	 list	 =	 new	 ArrayList<String>();

//	 Java	 7	 以降
List<String>	 list	 =	 new	 ArrayList<>();


Scala
val	 list	 =	 new	 ArrayList[String]
型推論
Java
public	 int	 square(int	 x)	 {
	 	 return	 x	 *	 x;
}


Scala
def	 square(x:	 Int)	 =	 x	 *	 x
※ただし、原則として戻り値の型を明示的に宣言することをお勧めします。
Java Bean とか
public	 class	 Person	 {
	 	 private	 String	 name;
	 	 private	 int	 age;

	 	 public	 Person(String	 name,	 int	 age)	 {
	 	 	 	 this.name	 =	 name;
	 	 	 	 this.age	 =	 age;
	 	 }

	 	 public	 String	 getName()	 {
	 	 	 	 return	 name;
	 	 }

	 	 public	 int	 getAge()	 {
	 	 	 	 return	 age;
	 	 }

	 	 @Override
	 	 public	 String	 toString()	 {
	 	 	 	 return	 String.format("Person(%s,%d)",	 name,	 age);
	 	 }

	 	 ...snip...
}
Java Bean とか



case	 class	 Person(name:	 String,	 age:	 Int)
強力なパターンマッチ

Java だと数値と Enum, String などのみ
int	 monthNumber	 =	 0;
switch	 (month.toLowerCase())	 {
	 	 case	 "january":
	 	 	 	 monthNumber	 =	 1;
	 	 	 	 break;
	 	 case	 "february":
	 	 	 	 monthNumber	 =	 2;
	 	 	 	 break;
	 	 ...
強力なパターンマッチ
val	 monthNumber	 =	 month.toLowerCase	 match	 {
	 	 case	 "january"	 =>	 1
	 	 case	 "february"	 =>	 2
	 	 ...	 snip	 ...

コンストラクタパターン
case	 class	 Person(name:	 String,	 age:	 Int)
val	 p	 =	 Person("duke",	 17)

val	 name	 =	 p	 match	 {
	 	 case	 Person(name,	 age)	 =>	 name
	 	 case	 _	 =>	 ""
}
型付きパターン
Java
if	 (x	 instanceof	 String)	 {
	 	 return	 ((String)x).length();
}	 else	 if	 (x	 instanceof	 Integer)	 {
	 	 return	 ((Integer)x).intValue();
...


Scala
x	 match	 {
	 	 case	 s:	 String	 =>	 s.length
	 	 case	 i:	 Int	 =>	 i
...
パターンガード


p	 match	 {
	 	 case	 Person(name,	 age)	 if	 age	 >=	 20	 =>	 "adult"
	 	 case	 _	 =>	 ""
}
正規表現パターン

val	 numeral	 =	 "([0-9]+)".r
val	 alpha	 =	 "([a-zA-Z]+)".r
args	 match	 {
	 	 case	 numeral(n)	 =>	 println("numeral:	 "	 +	 n)
	 	 case	 alpha(s)	 =>	 println("alphabet:	 "	 +	 s)
	 	 case	 s	 =>	 println("other:	 "	 +	 s)
}
高階関数
関数を引数にしたり、戻り値にした
りする関数
def	 using[A](file:	 File)(f:	 Reader	 =>	 A):	 A	 =	 {
	 	 val	 r	 =	 new	 FileReader(file)
	 	 try	 {
	 	 	 	 f(r)
	 	 }	 finally	 {
	 	 	 	 r.close
	 	 }
}
高階関数
2011年度卒業生の最高得点
Java
int	 max	 =	 -1;
for	 (Student	 s:	 students)	 {
	 	 if	 (s.gradYear	 ==	 2011)	 {
	 	 	 	 max	 =	 Math.max(max,	 s.score);
	 	 }
}
Scala
students.filter(
	 	 s	 =>	 s.gradYear	 ==	 2011
).map(s	 =>	 s.score).max
高階関数
リストの要素から偶数を取り出し並べ替え
Java
List<Integer>	 evens	 =	 new	 ArrayList<>();
for	 (Integer	 i:	 list)	 {
	 	 if	 (i	 %	 2	 ==	 0)	 {
	 	 	 	 evens.add(i);
	 	 }
}
Collections.sort(evens);

Scala
list.filter(_	 %	 2	 ==	 0).sortWith(_	 <	 _)
その他にも…

遅延評価
並列処理、並行処理
強力な型システム
暗黙の変数、暗黙的型変換
XML リテラルと操作メソッド
などなど
学習リソース
  書籍
  Scala スケーラブルプログラミング 第2版
  基本です
  http://www.amazon.co.jp/dp/4844330845



  オンライン学習
  Functional Programming Principles in Scala
  Odersky 教授直々の講義
  https://www.coursera.org/course/progfun
学習リソース
チュートリアル
A Tour of Scala
オフィシャルのチュートリアル
http://docs.scala-lang.org/tutorials/tour/tour-of-scala.html


Scala School!
Twitter 社が公開してくれているチュートリアル
http://twitter.github.com/scala_school/
学習リソース

その他
Scala Style Guide
コーディング規約
http://docs.scala-lang.org/style/


Effective Scala
Twitter 社が公開しているベストプラクティス集
http://twitter.github.com/effectivescala/
IDE
IntelliJ IDEA + Scala plugin
http://www.jetbrains.com/idea/


Scala IDE
ecipse のプラグイン
http://scala-ide.org/


Typesafe Scala IDE
Typesafe 社が eclipse と Scala IDE をパッケージング
http://typesafe.com/stack/scala_ide_download

More Related Content

Viewers also liked

命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへNaoki Kitora
 
第一回関数型言語勉強会 大阪
第一回関数型言語勉強会 大阪第一回関数型言語勉強会 大阪
第一回関数型言語勉強会 大阪Naoki Kitora
 
Developers summit 2016_kansai
Developers summit 2016_kansaiDevelopers summit 2016_kansai
Developers summit 2016_kansaiNaoki Kitora
 
関数プログラミングことはじめ
関数プログラミングことはじめ関数プログラミングことはじめ
関数プログラミングことはじめNaoki Kitora
 
Scala kansai summit-2016
Scala kansai summit-2016Scala kansai summit-2016
Scala kansai summit-2016Naoki Kitora
 
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Kazuyuki Mori
 
機械学習とデータ分析プロセス
機械学習とデータ分析プロセス機械学習とデータ分析プロセス
機械学習とデータ分析プロセスNaoki Kitora
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your BusinessBarry Feldman
 

Viewers also liked (8)

命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ
 
第一回関数型言語勉強会 大阪
第一回関数型言語勉強会 大阪第一回関数型言語勉強会 大阪
第一回関数型言語勉強会 大阪
 
Developers summit 2016_kansai
Developers summit 2016_kansaiDevelopers summit 2016_kansai
Developers summit 2016_kansai
 
関数プログラミングことはじめ
関数プログラミングことはじめ関数プログラミングことはじめ
関数プログラミングことはじめ
 
Scala kansai summit-2016
Scala kansai summit-2016Scala kansai summit-2016
Scala kansai summit-2016
 
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要
 
機械学習とデータ分析プロセス
機械学習とデータ分析プロセス機械学習とデータ分析プロセス
機械学習とデータ分析プロセス
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
 

Similar to 第2回関数型言語勉強会 大阪

BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
2013-12-08 西区プログラム勉強会
2013-12-08 西区プログラム勉強会2013-12-08 西区プログラム勉強会
2013-12-08 西区プログラム勉強会Takatoshi Murakami
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsShogo Sensui
 
Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Naoki Aoyama
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミングOuka Yuka
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-Kazunari Hara
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)Masahiro Hayashi
 
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングpi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングkunihikokaneko1
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックスTomoharu ASAMI
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Ra Zon
 
ゼロから始めるScala文法 (再)
ゼロから始めるScala文法 (再)ゼロから始めるScala文法 (再)
ゼロから始めるScala文法 (再)Suguru Hamazaki
 
Shibuya.lisp #28: 仮題: R について
Shibuya.lisp #28: 仮題: R についてShibuya.lisp #28: 仮題: R について
Shibuya.lisp #28: 仮題: R についてtnoda
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and designTomoharu ASAMI
 
Java8から始める関数型プログラミング
Java8から始める関数型プログラミングJava8から始める関数型プログラミング
Java8から始める関数型プログラミングstylefreeslide
 

Similar to 第2回関数型言語勉強会 大阪 (20)

ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
2013-12-08 西区プログラム勉強会
2013-12-08 西区プログラム勉強会2013-12-08 西区プログラム勉強会
2013-12-08 西区プログラム勉強会
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
 
Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
 
Scala東北紹介
Scala東北紹介Scala東北紹介
Scala東北紹介
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
 
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングpi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
 
ゼロから始めるScala文法 (再)
ゼロから始めるScala文法 (再)ゼロから始めるScala文法 (再)
ゼロから始めるScala文法 (再)
 
Shibuya.lisp #28: 仮題: R について
Shibuya.lisp #28: 仮題: R についてShibuya.lisp #28: 仮題: R について
Shibuya.lisp #28: 仮題: R について
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and design
 
Introduction Xtend
Introduction XtendIntroduction Xtend
Introduction Xtend
 
Java8から始める関数型プログラミング
Java8から始める関数型プログラミングJava8から始める関数型プログラミング
Java8から始める関数型プログラミング
 

Recently uploaded

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Recently uploaded (8)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

第2回関数型言語勉強会 大阪