Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Parsec 3活用事例: Keepalived構文チェッカ (Haskell Gong 2009)

3,369 views

Published on

Haskellゴング発表資料

Published in: Technology
  • I have done a couple of papers through ⇒⇒⇒WRITE-MY-PAPER.net ⇐⇐⇐ they have always been great! They are always in touch with you to let you know the status of paper and always meet the deadline!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2ZDZFYj ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ❤❤❤ http://bit.ly/2ZDZFYj ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • (Unlimited)....ACCESS WEBSITE Over for All Ebooks ................ accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Parsec 3活用事例: Keepalived構文チェッカ (Haskell Gong 2009)

  1. 1. Parsec 3活用事例 : Keepalived構文チェッカ id:maoe
  2. 2. 自己紹介 青江光敏(id:maoe) http://d.hatena.ne.jp/maoe/ 株式会社はてな インフラチーム ネットワーク設計構築運用 サーバの面倒など
  3. 3. 自己紹介 青江光敏(id:maoe) http://d.hatena.ne.jp/maoe/ 株式会社はてな インフラチーム ネットワーク設計構築運用 サーバの面倒など (インフラチームアルバイト絶賛募集中)
  4. 4. Parsec Haskellでデファクトスタンダードとなってい るparser combinator RWH 16章: Parsecを使う
  5. 5. Parsec Haskellでデファクトスタンダードとなってい るparser combinator RWH 16章: Parsecを使う Parsec 2を前提としている 最新版はParsec 3
  6. 6. Parsec 3で変わること モナド変換子に対応した Applicativeのインスタンスになった モジュール名がText.Parsecになった ByteStringな入力も可能になった ドキュメントがまともになった
  7. 7. Parsec 3で変わること モナド変換子に対応した Applicativeのインスタンスになった モジュール名がText.Parsecになった ByteStringな入力も可能になった ドキュメントがまともになった
  8. 8. モナド変換子でできること Writerモナドでログをとれる? IOモナドでデバッグプリントできる?
  9. 9. モナド変換子でできること Writerモナドでログをとれる? IOモナドでデバッグプリントできる? IOモナドでinclude文を簡単にパーズできるよ うになった!
  10. 10. 例 : Keepalived構文チェッカ
  11. 11. 例 : Keepalived構文チェッカ わかりにくいのでヤメ
  12. 12. 例 : しりとりノート こぶた きょうと たぬき とちぎ include つづき.txt ぎふ きつね ふくい ねこ いばらき どうぶつ.txt つづき.txt
  13. 13. 例 : しりとりノート Line "こぶた" Line "たぬき" Included [ Line "きょうと" , Line "とちぎ" , Line "ぎふ" , Line "ふくい" , Line "いばらき" ] Line "きつね" Line "ねこ"
  14. 14. 構成要素と基本的なパーザ type Note = [Content] data Content = Line String | Included Note pNote = many $ pInclude <|> pLine pLine = Line <$> lexeme (many1 notNewline) lexeme p = p <* spaces
  15. 15. pIncludeの実装方針 includeに続くファイル名(つづき.txt)を取得 parserの入力を新ファイルの内容にセット Text.Parsec.setInputで入力を差し替えられる 新ファイルをパーズ parserの状態を元に戻す 新ファイルのパーズ結果を返す
  16. 16. pIncludeの実装 pInclude = do Line file <- lexeme (string "include") *> pLine Included <$> newContext (pFile file) pFile中でreadFileしてpNoteでパーズしている newContextで現在のポジションや入力を保存し ておき、新たな状態でpFileを呼び出す
  17. 17. デモ 実際のソースコード http://github.com/maoe/shiritori
  18. 18. まとめ Parsec 3からパーザ中でI/Oができるように includeを簡単にパーズできるようになった 発展: include *(glob)にも対応している例 keepalived.confパーザライブラリ http://github.com/maoe/text-keepalived インフラチームアルバイト絶賛募集中
  19. 19. Q&A ご静聴ありがとうございました。

×