SlideShare a Scribd company logo
Java使いにとっての関数
2014/2/3(Sat.)
第3回 Scala関西ビギナーズ
自己紹介
• 名前:加藤
• Twitter:@amkt922
• 単身赴任で平日東京週末大阪なプログラマ(もともと江
坂)
• 普段はJavaかphpで業務アプリを開発(Javascriptとかも触
りますが)
• Scala力は底辺(今日は間違ってたらマサカリ投げてくだ
さい)
今日はJava使いの壁である
Scalaの一人前に存在している関数
について話します。

※あくまで個人の感想で個人差があります。
Javaの関数(ほんとはメソッド)はだいたい呼
び出して処理をします

呼び出して結果
を取得
ですが
Scalaでは関数を
• 名前をつけずに定義できます
(x:Int, y:Int) => x + y ←関数リテラルってやつ
• 変数に格納できます
val a = (x:Int, y:Int) => x + y ←a(1,2)と呼び出せます
• 関数の引数として渡したり、関数から受け取ったりで
きます
someList.filter((x) => x > 0) ←高階関数ってやつ
まだ分かります
次
Scalaとかの関数型言語では関数の種類で
• 部分関数(Partial function)ってのがあります
• 部分適用された関数(Partially applied function)ってのがあ
ります
• カリー化された関数(Curried function)ってのがあります。
• クロージャー(closure)って呼ばれる関数もあります。
これです!
いろんな関数があるところがJava
プログラマにとっての壁です
※あくまで個人の感想で個人差があります。

なので一つずつ理解していきましょう
部分関数
引数がhogeの時だけ
hogehogeと表示する関
数をつくったりできま
す
hogeじゃないときは
MatchErrorを吐きます

• ある特定の引数のときのみ処理を行う関数

本当に役立つときもあるけど一
般には全関数を使ったほうがい
いよ
部分適用された関数
• 普通に関数を定義するが一部の引数だけ渡して呼び出したりで
きる
• 一部の引数だけ渡した結果、残りの引数を受け取る関数を戻り
ノーマルに足し算する
値として受け取る
関数定義
第2引数は指定しない
(_:Int)
戻り値はIntではなく関数
PartialSumが部分適用された関
数
“2”はy:Intの値のこと
カリー化された関数
• 複数の引数をとる代わりに常にちょうど一つの引数をとる関数
(すごいHaskellより)
(x:Int)(y:Int)(z:Int)と
一つの引数をとるよう
に定義
部分適用された関数を
取得することも可能
クロージャー
• 引数で渡された変数以外の変数をさわれる関数のこと(ただしス
コープ内の)
(y+more)を実行する関数を戻
すouter関数を定義
more変数はouter関数の変数

outerを実行すると(y+more)を実
行する関数オブジェクトを取得
このオブジェクトがクロー
ジャー
Moreを参照するので答えは1001
最後に
こういういろいろある関数の種類と使い分け
に最初につまずきました。
(いまだに何が便利なの?って思ってたりしま
す)
こんなところでつまずいている人もいるので、
Scalaを布教する際には参考にしていただけれ
ば嬉しいです。
以上
ありがとうございま
した

More Related Content

What's hot (20)

PDF
Dark vol4 for_slideshare
ara_ta3
 
PPTX
おっさんES6/ES2015,React.jsを学ぶ
dcubeio
 
PPTX
Scala勉強会 初心者向けハンズオン前編
takeuchi-tk
 
PDF
Scala警察のすすめ
takezoe
 
PPTX
Scalaで学ぶ関数型言語超入門
yujiro_t
 
PDF
Scalaノススメ
Yasuyuki Maeda
 
PDF
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
 
PDF
Scala勉強会_2014_11_18
Shuya Tsukamoto
 
KEY
Beginners Scala in FAN 20121009
Taisuke Shiratori
 
PDF
Scala is-unscared
Kota Mizushima
 
PDF
こわくないScala
Kota Mizushima
 
PDF
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
 
PDF
Phantom Type in Scala
Yasuyuki Maeda
 
PPTX
Scala.jsはじめました!
K Kinzal
 
PPTX
Scala.jsはじめました?
K Kinzal
 
PDF
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 
PPTX
Developing an Akka Edge4-5
saaaaaaki
 
PPTX
Developing an Akka Edge1-3
saaaaaaki
 
PDF
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Tomoharu ASAMI
 
PDF
型無しラムダ計算―OCamlによる実装―
Proktmr
 
Dark vol4 for_slideshare
ara_ta3
 
おっさんES6/ES2015,React.jsを学ぶ
dcubeio
 
Scala勉強会 初心者向けハンズオン前編
takeuchi-tk
 
Scala警察のすすめ
takezoe
 
Scalaで学ぶ関数型言語超入門
yujiro_t
 
Scalaノススメ
Yasuyuki Maeda
 
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
 
Scala勉強会_2014_11_18
Shuya Tsukamoto
 
Beginners Scala in FAN 20121009
Taisuke Shiratori
 
Scala is-unscared
Kota Mizushima
 
こわくないScala
Kota Mizushima
 
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
 
Phantom Type in Scala
Yasuyuki Maeda
 
Scala.jsはじめました!
K Kinzal
 
Scala.jsはじめました?
K Kinzal
 
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 
Developing an Akka Edge4-5
saaaaaaki
 
Developing an Akka Edge1-3
saaaaaaki
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Tomoharu ASAMI
 
型無しラムダ計算―OCamlによる実装―
Proktmr
 

Viewers also liked (20)

PDF
15 reasons why you can call yourself a traveller
HostelsClub.com
 
PDF
Pdabc831
dylaraf
 
PPTX
Last presentationaug
tbenn002
 
PPTX
Onesubject fortyphotos
Kara Wilson Smith
 
PDF
ICANN54 İşletme Özeti
ICANN
 
PDF
Travel tips for havana
HostelsClub.com
 
PDF
Brazil besides carnival
HostelsClub.com
 
PDF
ICANN 51 Business Digest
ICANN
 
PDF
ICANN 52 シンガポール ビジネスダイジェスト
ICANN
 
PDF
لوس أنجلوس ملخص الأعمال ICANN 51
ICANN
 
PDF
Social Media 101
PublicLibrarySG
 
PPT
School work-transition assignment-02
Silvia Eme de Be
 
PDF
ICANN 52 Singapur İşletme Özeti
ICANN
 
PDF
Ten minute introdction to ICANN for Business
ICANN
 
PDF
ICANN55 Boletim informativo empresarial
ICANN
 
PDF
ICANN 第 52 届 新加坡会议 商业文摘
ICANN
 
PDF
ICANN 50 Business Digest_Chinese
ICANN
 
PDF
ICANN第47届 德班会议 商业文摘
ICANN
 
PDF
ICANN 50 Business Digest
ICANN
 
PDF
ICANN 53 ビジネスダイジェ
ICANN
 
15 reasons why you can call yourself a traveller
HostelsClub.com
 
Pdabc831
dylaraf
 
Last presentationaug
tbenn002
 
Onesubject fortyphotos
Kara Wilson Smith
 
ICANN54 İşletme Özeti
ICANN
 
Travel tips for havana
HostelsClub.com
 
Brazil besides carnival
HostelsClub.com
 
ICANN 51 Business Digest
ICANN
 
ICANN 52 シンガポール ビジネスダイジェスト
ICANN
 
لوس أنجلوس ملخص الأعمال ICANN 51
ICANN
 
Social Media 101
PublicLibrarySG
 
School work-transition assignment-02
Silvia Eme de Be
 
ICANN 52 Singapur İşletme Özeti
ICANN
 
Ten minute introdction to ICANN for Business
ICANN
 
ICANN55 Boletim informativo empresarial
ICANN
 
ICANN 第 52 届 新加坡会议 商业文摘
ICANN
 
ICANN 50 Business Digest_Chinese
ICANN
 
ICANN第47届 德班会议 商业文摘
ICANN
 
ICANN 50 Business Digest
ICANN
 
ICANN 53 ビジネスダイジェ
ICANN
 
Ad

Recently uploaded (11)

PPTX
新卒・中途採用者向け採用ピッチ資料2025年7月版(20250702).pptx
Official74
 
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
PPTX
オープンソース界隈の利用者や技術者から見たオープンソースEDAとは? What is open source EDA from the perspecti...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
 
PDF
go tool と Minimal Version Selection アルゴリズム
Keisuke Ishigami
 
PDF
漁船に搭載されている電子装備と漁法について_VRC海洋学研究会_海のLT会発表資料
Yuuitirou528 default
 
PDF
第3回デジタル理学療法学会のシンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」での話題提供
Matsushita Laboratory
 
PDF
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
 
PDF
2023年版Web3技術の理想と現実
Syuhei Hiya
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
PDF
第3回デジタル理学療法研究会学術大会シンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」の講演資料.
Matsushita Laboratory
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
新卒・中途採用者向け採用ピッチ資料2025年7月版(20250702).pptx
Official74
 
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
オープンソース界隈の利用者や技術者から見たオープンソースEDAとは? What is open source EDA from the perspecti...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
 
go tool と Minimal Version Selection アルゴリズム
Keisuke Ishigami
 
漁船に搭載されている電子装備と漁法について_VRC海洋学研究会_海のLT会発表資料
Yuuitirou528 default
 
第3回デジタル理学療法学会のシンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」での話題提供
Matsushita Laboratory
 
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
 
2023年版Web3技術の理想と現実
Syuhei Hiya
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
第3回デジタル理学療法研究会学術大会シンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」の講演資料.
Matsushita Laboratory
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
Ad

Java使いにとっての関数