SlideShare a Scribd company logo
C#(VB)プログラマのためのF#入門
id:bleis-tift / @bleis
id:bleis-tift / @bleis
id:bleis-tift / @bleis

                   C#
id:bleis-tift / @bleis

                   C#
F#       Scala
id:bleis-tift / @bleis

                   C#
F#       Scala
Git      Hudson          Jenkins
C#(VB)プログラマのためのF#入門
F#
F#
F#
F#
F#
F#
F#
F#
F#
     F#
F#
F#
F#
     F#

          F#
F#
F#

Microsoft
F#

Microsoft

OCaml
F#

Microsoft

OCaml

         .NET Framework
 C#     VB
F#

Microsoft

OCaml

         .NET Framework
 C#     VB

.NET
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
LISP
    etc...


C
LISP
    etc...


C
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C# VB
LINQ
C# VB
LINQ
C# VB
LINQ


C#
C# VB
LINQ


C#
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#   VB
C#   VB
C#   VB
C#   VB
C#   VB




C#   VB
F#
F#
F#
F#




F#
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
0   ”hoge”
0   ”hoge”
0   ”hoge”
0   ”hoge”
0   ”hoge”
0   ”hoge”
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
Func
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
F#
F#




F#
F#
F#
F#
F#
F#
F#


    1        fsi
.   2


    3


.   4


    5              F#
.

.

.
F#


    1        fsi
.   2


    3


.   4


    5              F#
.

.

.
fsi
fsi



F#
fsi



F#

VS
fsi



F#

VS
F#


    1        fsi
.   2


    3


.   4


    5              F#
.

.

.
C#   VB
C#   VB
C#    VB


                      vs. switch Select
     option vs. null Nothing
C#    VB


                      vs. switch Select
     option vs. null Nothing
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
vs.
vs.




     1    ”one” 2   ”two”
”other”
C# VB
F#
F#




function
F#




function
F#




function
C#(VB)プログラマのためのF#入門
’0’
’0’
C#(VB)プログラマのためのF#入門
FizzBuzz
FizzBuzz

FizzBuzz(1)    1
FizzBuzz(2)    2
FizzBuzz(3)    Fizz
FizzBuzz(4)    4
FizzBuzz(5)    Buzz

FizzBuzz(14)   14
FizzBuzz(15)   Fizz Buzz
FizzBuzz(16)   16
FizzBuzz

FizzBuzz(1)    1
FizzBuzz(2)    2
FizzBuzz(3)    Fizz     3        Fizz
FizzBuzz(4)    4
FizzBuzz(5)    Buzz

FizzBuzz(14)   14
FizzBuzz(15)   Fizz Buzz
FizzBuzz(16)   16
FizzBuzz

FizzBuzz(1)    1
FizzBuzz(2)    2
FizzBuzz(3)    Fizz     3        Fizz
FizzBuzz(4)    4
FizzBuzz(5)    Buzz     5        Buzz

FizzBuzz(14)   14
FizzBuzz(15)   Fizz Buzz
FizzBuzz(16)   16
FizzBuzz

FizzBuzz(1)    1
FizzBuzz(2)    2
FizzBuzz(3)    Fizz     3            Fizz
FizzBuzz(4)    4
FizzBuzz(5)    Buzz     5            Buzz

FizzBuzz(14)   14
FizzBuzz(15)   Fizz Buzz         FizzBuzz
FizzBuzz(16)   16
FizzBuzz

FizzBuzz(1)    1
FizzBuzz(2)    2
FizzBuzz(3)    Fizz     3            Fizz
FizzBuzz(4)    4
FizzBuzz(5)    Buzz     5            Buzz

FizzBuzz(14)   14
FizzBuzz(15)   Fizz Buzz         FizzBuzz
FizzBuzz(16)   16
FizzBuzz C# VB
FizzBuzz F#
FizzBuzz F#




  | 0, 0 -> "Fizz Buzz"
----^^^^
FizzBuzz F#




  | 0, 0 -> "Fizz Buzz"
----^^^^
FizzBuzz F#




  | 0, 0 -> "Fizz Buzz"
----^^^^
option vs. null




option   null
option vs. null




option   null
null
null
null
null




API
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
null



null
null



null
null



null

              NullReferenceException
null



null

              NullReferenceException
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
option
option
option
option
option
option
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
mzp
 F#                   Maybe

http://d.hatena.ne.jp/mzp/20110205/monad
option
option
option


A option   A
option


A option   A

               NullReferenceException
option


A option   A

               NullReferenceException
option


A option   A

               NullReferenceException


    None
option


A option   A

               NullReferenceException


    None
option


A option   A

                  NullReferenceException


    None




           null
F#


    1        fsi
.   2


    3


.   4


    5              F#
.

.

.
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#   VB
C#
VB
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
UML
UML
C#(VB)プログラマのためのF#入門
F#
F#
F#
C#(VB)プログラマのためのF#入門
UML
UML
Equals   GetHashCode
UML
Equals   GetHashCode

                       type   of   2
UML
Equals   GetHashCode

                       type   of   2



   F#     C#     VB
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#   VB

          Visitor
F#


    1        fsi
.   2


    3


.   4


    5              F#
.

.

.
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
Schedule
C#
C#
C#
C#
C#
C#




F#
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
F#


    1        fsi
.   2


    3


.   4


    5              F#
.

.

.
F#
F#




F#
 F#        C#   VB
F#




F#
 F#        C#   VB
|>




F#
|>




F#

     F#   F#
                |>
|>




|>
|>




|>
|>
|>




|>
|>




|>
|>
|>
|>
|>
|>
using

C#   VB
          using
using

C#   VB
           using
      F#
using

C#   VB
           using
      F#
using

C#   VB
           using
      F#
using

C#   VB
           using
      F#
use
use
use




      let
use
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
F#
F#




    1   IDE
    2         Express Edition
.   3




.

.
F#




    1   IDE
    2         Express Edition
.   3




.

.
IDE
IDE
C#(VB)プログラマのためのF#入門
F#Depth Colorizer
F#Project Extender
F#Depth Colorizer
    F#Project Extender
2
F#Depth Colorizer
F#Depth Colorizer




F#
F#Depth Colorizer




F#
C#(VB)プログラマのためのF#入門
F#Project Extender
F#Project Extender



F#
F#Project Extender



F#
F#Project Extender



F#
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
F#




    1   IDE
    2         Express Edition
.   3




.

.
Express Edition
Express Edition
Express Edition




Win   F#CTP   Visual Studio 2010 Shell
Express Edition




Win   F#CTP    Visual Studio 2010 Shell


Mac   mono
Express Edition




Win   F#CTP     Visual Studio 2010 Shell


Mac   mono
      Mac
      MBA13
F#




    1   IDE
    2         Express Edition
.   3




.

.
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
Twitter   F# User Group
Twitter F# User Group
Visual Studio F#
   1
Twitter F# User Group
Visual Studio F#
   1
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
2
C#(VB)プログラマのためのF#入門
F#
F#

     F#
F#

     F#
F#
F#
F#




VS        C#   VB
F#




VS        C#   VB
     F#
F#




VS         C#   VB
      F#
F#   F#
F#




VS                C#   VB
        F#
F#     F#
     NUnit
F#




VS                                 C#   VB
                F#
F#             F#
             NUnit
     NUnit                FsUnit
C#(VB)プログラマのためのF#入門
F# .NET
F# .NET
F#
F# .NET
F#
F#
F# .NET
F#
F#
          F#
F# .NET
F#
F#
       F#
      F#
special thanks
PowerShell sort
          @mzp
            @otf
        @rf0444
        @RKTM
  @wof moriguchi

More Related Content

What's hot (14)

PPTX
Lexing and parsing
Elizabeth Smith
 
PDF
Python master class part 1
Chathuranga Bandara
 
PDF
Python master class 2
Chathuranga Bandara
 
PPT
Introduction to PHP
Kengatharaiyer Sarveswaran
 
PDF
Theperlreview
Casiano Rodriguez-leon
 
PDF
07 -pointers_and_memory_alloc
Hector Garzo
 
PDF
Chatbots are so last decade
Alexandra Sunderland
 
PDF
Perl::Lint - Yet Another Perl Source Code Linter
moznion
 
PDF
Static analysis for perl
moznion
 
PPTX
What's new in c#7
Kyrylo Bezpalyi
 
PDF
C variables and constants
ArghodeepPaul
 
PPT
Programming languages vienna
greg_s
 
PPT
Ruby Hell Yeah
Anupom Syam
 
Lexing and parsing
Elizabeth Smith
 
Python master class part 1
Chathuranga Bandara
 
Python master class 2
Chathuranga Bandara
 
Introduction to PHP
Kengatharaiyer Sarveswaran
 
Theperlreview
Casiano Rodriguez-leon
 
07 -pointers_and_memory_alloc
Hector Garzo
 
Chatbots are so last decade
Alexandra Sunderland
 
Perl::Lint - Yet Another Perl Source Code Linter
moznion
 
Static analysis for perl
moznion
 
What's new in c#7
Kyrylo Bezpalyi
 
C variables and constants
ArghodeepPaul
 
Programming languages vienna
greg_s
 
Ruby Hell Yeah
Anupom Syam
 

Viewers also liked (20)

PDF
F#の基礎(?)
bleis tift
 
PDF
F#によるFunctional Programming入門
bleis tift
 
PPTX
関数型言語初心者の俺がF#触ってみた
Takashi Nishisaki
 
PDF
関数型言語のすすめ
bleis tift
 
PDF
F#事例発表
bleis tift
 
PDF
Better C#の脱却を目指して
bleis tift
 
PDF
とことんF#よぷよ! F# + XNA ゲームプログラミング入門
zecl1231
 
PDF
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
bleis tift
 
PDF
.NET系開発者から見たJava
bleis tift
 
PDF
VBAを書きたくない話(Excel-DNAの紹介)
bleis tift
 
PDF
ぼくのかんがえたさいきょうのLL
bleis tift
 
PDF
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
貴志 上坂
 
PDF
yieldとreturnの話
bleis tift
 
PDF
F#の基礎(嘘)
bleis tift
 
PDF
モナドハンズオン前座
bleis tift
 
PPTX
解説?FSharp.Quotations.Compiler
bleis tift
 
PDF
async/await不要論
bleis tift
 
PDF
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
parrotstudio
 
PDF
たのしい高階関数
Shinichi Kozake
 
PDF
良質なコードを高速に書くコツ
Shunji Konishi
 
F#の基礎(?)
bleis tift
 
F#によるFunctional Programming入門
bleis tift
 
関数型言語初心者の俺がF#触ってみた
Takashi Nishisaki
 
関数型言語のすすめ
bleis tift
 
F#事例発表
bleis tift
 
Better C#の脱却を目指して
bleis tift
 
とことんF#よぷよ! F# + XNA ゲームプログラミング入門
zecl1231
 
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
bleis tift
 
.NET系開発者から見たJava
bleis tift
 
VBAを書きたくない話(Excel-DNAの紹介)
bleis tift
 
ぼくのかんがえたさいきょうのLL
bleis tift
 
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
貴志 上坂
 
yieldとreturnの話
bleis tift
 
F#の基礎(嘘)
bleis tift
 
モナドハンズオン前座
bleis tift
 
解説?FSharp.Quotations.Compiler
bleis tift
 
async/await不要論
bleis tift
 
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
parrotstudio
 
たのしい高階関数
Shinichi Kozake
 
良質なコードを高速に書くコツ
Shunji Konishi
 
Ad

Similar to C#(VB)プログラマのためのF#入門 (20)

PDF
ASP.NET で作るとあるTwitter Bot -開発環境からネット公開までぜんぶ無料だよ!-
Jun-ichi Sakamoto
 
PDF
仕事で使うF#
bleis tift
 
PPTX
FP Day 2011 - Turning to the Functional Side (using C# & F#)
Phillip Trelford
 
PPTX
F#3.0
Rodrigo Vidal
 
PPTX
Using the Windows 8 Runtime from C++
Microsoft Developer Network (MSDN) - Belgium and Luxembourg
 
PPTX
Tech Days Paris Intoduction F# and Collective Intelligence
Robert Pickering
 
PPSX
Detecting Clones across Microsoft .NET Programming Languages (WCRE2012)
imanmahsa
 
PPTX
How To Code in C#
David Ringsell
 
KEY
Anti Patterns
Anupom Syam
 
PDF
C sharp chap2
Mukesh Tekwani
 
PDF
Madrid F# Meetup: Introduction to F#
Alfonso Garcia-Caro
 
PPT
F# Eye for the C# Guy
gueste3f83d
 
PPTX
Can F# make us better as .NET developers?
Kevin Avignon
 
PPT
F# Sample and Resources
Rhonda Tipton
 
PDF
Dimitry Solovyov - The imminent threat of functional programming
Dmitry Buzdin
 
PPTX
Introduction to F#
Talbott Crowell
 
PDF
Machine vision and device integration with the Ruby programming language (2008)
Jan Wedekind
 
PPT
Introduction to c#
OpenSource Technologies Pvt. Ltd.
 
PPTX
Virtual Separation of Concerns (2011 Update)
chk49
 
DOC
10266 developing data access solutions with microsoft visual studio 2010
bestip
 
ASP.NET で作るとあるTwitter Bot -開発環境からネット公開までぜんぶ無料だよ!-
Jun-ichi Sakamoto
 
仕事で使うF#
bleis tift
 
FP Day 2011 - Turning to the Functional Side (using C# & F#)
Phillip Trelford
 
Tech Days Paris Intoduction F# and Collective Intelligence
Robert Pickering
 
Detecting Clones across Microsoft .NET Programming Languages (WCRE2012)
imanmahsa
 
How To Code in C#
David Ringsell
 
Anti Patterns
Anupom Syam
 
C sharp chap2
Mukesh Tekwani
 
Madrid F# Meetup: Introduction to F#
Alfonso Garcia-Caro
 
F# Eye for the C# Guy
gueste3f83d
 
Can F# make us better as .NET developers?
Kevin Avignon
 
F# Sample and Resources
Rhonda Tipton
 
Dimitry Solovyov - The imminent threat of functional programming
Dmitry Buzdin
 
Introduction to F#
Talbott Crowell
 
Machine vision and device integration with the Ruby programming language (2008)
Jan Wedekind
 
Virtual Separation of Concerns (2011 Update)
chk49
 
10266 developing data access solutions with microsoft visual studio 2010
bestip
 
Ad

More from bleis tift (16)

PDF
PCさえあればいい。
bleis tift
 
PDF
No more Legacy documents
bleis tift
 
PDF
効果の低いテストの話
bleis tift
 
PDF
テストの自動化を考える前に
bleis tift
 
PDF
札束でExcelを殴る
bleis tift
 
PDF
SI屋のためのF# ~DSL編~
bleis tift
 
PDF
yield and return (poor English ver)
bleis tift
 
PDF
現実(えくせる)と戦う話
bleis tift
 
PDF
JSX / Haxe / TypeScript
bleis tift
 
PDF
自分戦略
bleis tift
 
PDF
F#で始めるスマートフォンアプリ
bleis tift
 
PDF
SCMBC闇LT資料
bleis tift
 
PPTX
SCMBC Git入門セッション発表資料
bleis tift
 
PDF
輪るビングドラム.NET
bleis tift
 
PDF
SCM Boot Camp
bleis tift
 
PDF
Vim再入門
bleis tift
 
PCさえあればいい。
bleis tift
 
No more Legacy documents
bleis tift
 
効果の低いテストの話
bleis tift
 
テストの自動化を考える前に
bleis tift
 
札束でExcelを殴る
bleis tift
 
SI屋のためのF# ~DSL編~
bleis tift
 
yield and return (poor English ver)
bleis tift
 
現実(えくせる)と戦う話
bleis tift
 
JSX / Haxe / TypeScript
bleis tift
 
自分戦略
bleis tift
 
F#で始めるスマートフォンアプリ
bleis tift
 
SCMBC闇LT資料
bleis tift
 
SCMBC Git入門セッション発表資料
bleis tift
 
輪るビングドラム.NET
bleis tift
 
SCM Boot Camp
bleis tift
 
Vim再入門
bleis tift
 

Recently uploaded (20)

PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
PDF
Market Insight : ETH Dominance Returns
CIFDAQ
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PDF
State-Dependent Conformal Perception Bounds for Neuro-Symbolic Verification
Ivan Ruchkin
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PDF
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PPTX
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
PPTX
python advanced data structure dictionary with examples python advanced data ...
sprasanna11
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PPTX
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
Market Insight : ETH Dominance Returns
CIFDAQ
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
State-Dependent Conformal Perception Bounds for Neuro-Symbolic Verification
Ivan Ruchkin
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
The Future of Artificial Intelligence (AI)
Mukul
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
python advanced data structure dictionary with examples python advanced data ...
sprasanna11
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 

C#(VB)プログラマのためのF#入門