姫路 IT 系勉強会 Vol. 11 L1 グランプリ Haskell
-
Upload
kazkuki-oakamoto -
Category
Technology
-
view
498 -
download
4
description
Transcript of 姫路 IT 系勉強会 Vol. 11 L1 グランプリ Haskell
姫路 IT 系勉強会 Vol. 11 @kakkun61 1/27
姫路 IT 系勉強会 Vol.11L1 グランプリ
Haskell
@kakkun61
姫路 IT 系勉強会 Vol. 11 @kakkun61 2/27
自己紹介
● 岡本和樹● @kakkun61● 23 歳● 大阪府立大学 4 回生● Haskell 歴 本格的には半年ぐらい
姫路 IT 系勉強会 Vol. 11 @kakkun61 3/27
Haskell
姫路 IT 系勉強会 Vol. 11 @kakkun61 4/27
Haskell
姫路 IT 系勉強会 Vol. 11 @kakkun61 5/27
Haskell
● 純粋関数型● 遅延評価● 参照透明● 代数的データ型● モナド
姫路 IT 系勉強会 Vol. 11 @kakkun61 6/27
Haskell
● 純粋関数型● 遅延評価● 参照透明● 代数的データ型● モナド
こわくないよ!
姫路 IT 系勉強会 Vol. 11 @kakkun61 7/27
Haskell
● とりあえず『すごい Haskell たのしく学ぼう!』読む
● 読んだら気付いたら分かってる
姫路 IT 系勉強会 Vol. 11 @kakkun61 8/27
Haskell
姫路 IT 系勉強会 Vol. 11 @kakkun61 9/27
Haskell
● 会議で委員会が発足しそこで作られた珍しい言語
● 学術的な方面から● 1990 年に最初のバージョン
姫路 IT 系勉強会 Vol. 11 @kakkun61 10/27
Haskell
● デファクトスタンダード● The Glorious Glasgow Haskell Compilation System
● GHC● Simon Peyton Jones と Simon Marlow
姫路 IT 系勉強会 Vol. 11 @kakkun61 11/27
Haskell
● Simon Peyton Jones● Microsoft Research in Cambridge● C-- の作者でもある
姫路 IT 系勉強会 Vol. 11 @kakkun61 12/27
問題 1 Fizz Buzz
● 1-100 の Fizz Buzz
姫路 IT 系勉強会 Vol. 11 @kakkun61 13/27
問題 1 Fizz Buzz
姫路 IT 系勉強会 Vol. 11 @kakkun61 14/27
問題 1 Fizz Buzz
● fizzbuzz● 数値を取って文字列を返す関数● 1→"1"● 3→"fizz"● 5→"buzz"● ……
姫路 IT 系勉強会 Vol. 11 @kakkun61 15/27
問題 1 Fizz Buzz
● map fizzbuzz [1..100]● [1, 2, 3, 4, 5, …… 100]● ↓● ["1", "2", "fizz", 4, "buzz", …… "buzz"]
姫路 IT 系勉強会 Vol. 11 @kakkun61 16/27
問題 1 Fizz Buzz
● mapM_ putStringLn ["1", "2", "fizz", 4, "buzz", …… "buzz"]
● それぞれの要素を 1 行に表示する
姫路 IT 系勉強会 Vol. 11 @kakkun61 17/27
問題 2 GPA 計算
● A-D, F→4-1, 0 に変換し平均● 出典● AtCoder Regular Contest #3 A 問題
姫路 IT 系勉強会 Vol. 11 @kakkun61 18/27
問題 2 GPA 計算
姫路 IT 系勉強会 Vol. 11 @kakkun61 19/27
姫路 IT 系勉強会 Vol. 11 @kakkun61 20/27
問題 2 GPA 計算
姫路 IT 系勉強会 Vol. 11 @kakkun61 21/27
問題 2 GPA 計算
姫路 IT 系勉強会 Vol. 11 @kakkun61 22/27
問題 3 tail -n 5
● tail -n 5
姫路 IT 系勉強会 Vol. 11 @kakkun61 23/27
問題 3 tail -n 5
姫路 IT 系勉強会 Vol. 11 @kakkun61 24/27
問題 3 tail -n 5
● arg ← getArgs● 引数に束縛
姫路 IT 系勉強会 Vol. 11 @kakkun61 25/27
問題 3 tail -n 5
● contents ←● if null args● then getContents● else readFile $ head args● args が null なら標準入力を● じゃなかったら args の 1つめのファイル名のファイルを読んで contents を束縛
姫路 IT 系勉強会 Vol. 11 @kakkun61 26/27
問題 3 tail -n 5
● putStr . unlines . reverse . take 5 . reverse . lines $ contents
● contents (文字列)を lines で行のリストに変換
● reverse で反転● take 5 で頭から 5つだけにする● reverse で反転
姫路 IT 系勉強会 Vol. 11 @kakkun61 27/27
問題 3 tail -n 5
● putStr . unlines . reverse . take 5 . reverse . lines $ contents
● unlines で行のリストを改行区切りの 1つの文字列に
● putStr で出力