SlideShare una empresa de Scribd logo
1 de 19
とびだせ
Haskellの森
第一章 はじめの第一歩
自己紹介

• 島崎抄子@shokos
• アメーバ事業本部
• 2012/11入社
ghci

• REPL
• 関数の実行や定義ができる
• :q で終了
• :l で.hsファイル読み込み
ghci例1

• Prelude>   2 + 15

• Prelude>
         succ 4
  succはインクリメントする関数

• Prelude>
        min 4 5
  minは比較して小を返す関数
ghci例2

• Prelude> div 10 3
• Prelude> 10 `div` 2
  バッククオートで囲むと中置関数にな
  る!
ghci例3


• Prelude>
       succ 9 + max 5 4 + 1
  結合の優先度はsucc, max > +
.hsファイル作成


  • エディタを開いて下記を写経
  • baby.hsで保存
doubleMe x = x + x
doubleUs x y = x * 2 + y * 2
.hsファイル実行

• Prelude> :l baby.hs
• *Main> doubleMe 3
• *Main> doubleUs 4 6
リスト1

• Prelude> let hoge = [1,2,3]
• Prelude> hoge ++ [4,5,6]
  ++ はリストの結合

• Prelude>
        aiu ++ eo
  文字列はcharのリスト
リスト2

• Prelude> 2 : [1,2,3]
• Prelude> a : hoge
  :は先頭に結合する
リスト操作1
• Prelude> [1,2,3] !! 2
• Prelude> head [1,2,3]
• Prelude> tail [1,2,3]
• Prelude> init [1,2,3]
• Prelude> last [1,2,3]
リスト操作2
• Prelude> null [1,2,3]
• Prelude> null []
• Prelude> sum [1,2,3]
• Prelude> elem 4 [1,2,3,4]
• Prelude> 5 `elem` [1,2,3,4]
レンジ1

• 列挙できるリスト
• Prelude> [1..20]
• Prelude> [ a .. t ]
• Prelude> [2,4..18]
レンジ2

• Prelude> take 5 [1, 3..]
• Prelude> take 6 (repeat 2)
  無限リストの操作ができる!
リスト内包表記1

• Prelude> [x*2 ¦ x <- [1..10]]
• Prelude> [x*2 ¦ x <- [1..10], x*2 >= 12]
  [出力¦条件]
リスト内包表記2


• 18の約数を求めたい
• Prelude> [x ¦ x <- [1..18], 18 `mod` x == 0]
タプル1

• 複数の違う型を格納できる
• Prelude> (1, hoge , 5.3)
• Prelude> (2, 3)
• Prelude> (2, [ hoge , foo ])
タプル2

• ペアで使うのが一般的
• Prelude> fst (1, 2)
• Prelude> snd (1, 2)
zip

• 2つのリストをペアタプルにする
• Prelude> zip [1,2,3] [ a , i , u ]
• Prelude> zip [1..] [ hoge , foo ]

Más contenido relacionado

La actualidad más candente

Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能hitode909
 
Mongo dbのgridfsについて
Mongo dbのgridfsについてMongo dbのgridfsについて
Mongo dbのgridfsについてMasahiro Saito
 
msysgit1.8.0でプロンプトにブランチ名を表示させる
msysgit1.8.0でプロンプトにブランチ名を表示させるmsysgit1.8.0でプロンプトにブランチ名を表示させる
msysgit1.8.0でプロンプトにブランチ名を表示させるKenichi Yamada
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例Koichi Shimozono
 
Jailが起動しないので調査してみた
Jailが起動しないので調査してみたJailが起動しないので調査してみた
Jailが起動しないので調査してみたToshinori Hayashi
 
Haskellday rf
Haskellday rfHaskellday rf
Haskellday rfrf0444
 
Haskell超初心者勉強会11
Haskell超初心者勉強会11Haskell超初心者勉強会11
Haskell超初心者勉強会11Takashi Kawachi
 
FreeBSDでおうちのルーター
FreeBSDでおうちのルーターFreeBSDでおうちのルーター
FreeBSDでおうちのルーターhoo0005
 
Mac_Terminal_ver1.0
Mac_Terminal_ver1.0Mac_Terminal_ver1.0
Mac_Terminal_ver1.0Satoshi Kume
 
Ruby Postgres 2009
Ruby Postgres 2009Ruby Postgres 2009
Ruby Postgres 2009Akio Ishida
 
GradleによるG*なビルドシステムの構築
GradleによるG*なビルドシステムの構築GradleによるG*なビルドシステムの構築
GradleによるG*なビルドシステムの構築Masatoshi Hayashi
 
Chef Howto with Vagrant + Berkshelf
Chef Howto with Vagrant + BerkshelfChef Howto with Vagrant + Berkshelf
Chef Howto with Vagrant + BerkshelfMasahiro NAKAYAMA
 
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜Kenta USAMI
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
菩薩でもわかる!Rで動かすExcelアドインの作り方
 菩薩でもわかる!Rで動かすExcelアドインの作り方  菩薩でもわかる!Rで動かすExcelアドインの作り方
菩薩でもわかる!Rで動かすExcelアドインの作り方 Nagi Teramo
 
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門keroyonn
 

La actualidad más candente (20)

Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能
 
Mongo dbのgridfsについて
Mongo dbのgridfsについてMongo dbのgridfsについて
Mongo dbのgridfsについて
 
Web 02
Web 02Web 02
Web 02
 
msysgit1.8.0でプロンプトにブランチ名を表示させる
msysgit1.8.0でプロンプトにブランチ名を表示させるmsysgit1.8.0でプロンプトにブランチ名を表示させる
msysgit1.8.0でプロンプトにブランチ名を表示させる
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
 
Jailが起動しないので調査してみた
Jailが起動しないので調査してみたJailが起動しないので調査してみた
Jailが起動しないので調査してみた
 
Haskellday rf
Haskellday rfHaskellday rf
Haskellday rf
 
Haskell超初心者勉強会11
Haskell超初心者勉強会11Haskell超初心者勉強会11
Haskell超初心者勉強会11
 
FreeBSDでおうちのルーター
FreeBSDでおうちのルーターFreeBSDでおうちのルーター
FreeBSDでおうちのルーター
 
Mac_Terminal_ver1.0
Mac_Terminal_ver1.0Mac_Terminal_ver1.0
Mac_Terminal_ver1.0
 
Ruby Postgres 2009
Ruby Postgres 2009Ruby Postgres 2009
Ruby Postgres 2009
 
GradleによるG*なビルドシステムの構築
GradleによるG*なビルドシステムの構築GradleによるG*なビルドシステムの構築
GradleによるG*なビルドシステムの構築
 
Chef Howto with Vagrant + Berkshelf
Chef Howto with Vagrant + BerkshelfChef Howto with Vagrant + Berkshelf
Chef Howto with Vagrant + Berkshelf
 
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
菩薩でもわかる!Rで動かすExcelアドインの作り方
 菩薩でもわかる!Rで動かすExcelアドインの作り方  菩薩でもわかる!Rで動かすExcelアドインの作り方
菩薩でもわかる!Rで動かすExcelアドインの作り方
 
What's Cuckoo?
What's Cuckoo?What's Cuckoo?
What's Cuckoo?
 
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門
 
Fabric
FabricFabric
Fabric
 
Currying in perl
Currying in perlCurrying in perl
Currying in perl
 

Destacado

PGに簡単なゲームのやり方を学習させる Vol.1 - まずはQ学習を理解する
PGに簡単なゲームのやり方を学習させる Vol.1  - まずはQ学習を理解するPGに簡単なゲームのやり方を学習させる Vol.1  - まずはQ学習を理解する
PGに簡単なゲームのやり方を学習させる Vol.1 - まずはQ学習を理解する敬 松風敬
 
Start haskell zipper
Start haskell zipperStart haskell zipper
Start haskell zipperShoko Sasaki
 
スピリチュアル自炊
スピリチュアル自炊スピリチュアル自炊
スピリチュアル自炊Shoko Sasaki
 
文芸的プログラミング
文芸的プログラミング文芸的プログラミング
文芸的プログラミングShoko Sasaki
 
Haskellテストスライド
HaskellテストスライドHaskellテストスライド
HaskellテストスライドShoko Sasaki
 
QuickCheck - Software Testing
QuickCheck - Software TestingQuickCheck - Software Testing
QuickCheck - Software TestingJavran
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerLuminary Labs
 

Destacado (7)

PGに簡単なゲームのやり方を学習させる Vol.1 - まずはQ学習を理解する
PGに簡単なゲームのやり方を学習させる Vol.1  - まずはQ学習を理解するPGに簡単なゲームのやり方を学習させる Vol.1  - まずはQ学習を理解する
PGに簡単なゲームのやり方を学習させる Vol.1 - まずはQ学習を理解する
 
Start haskell zipper
Start haskell zipperStart haskell zipper
Start haskell zipper
 
スピリチュアル自炊
スピリチュアル自炊スピリチュアル自炊
スピリチュアル自炊
 
文芸的プログラミング
文芸的プログラミング文芸的プログラミング
文芸的プログラミング
 
Haskellテストスライド
HaskellテストスライドHaskellテストスライド
Haskellテストスライド
 
QuickCheck - Software Testing
QuickCheck - Software TestingQuickCheck - Software Testing
QuickCheck - Software Testing
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 

とびだせHaskellの森1

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n