More Related Content
PDF
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」 PDF
PDF
PDF
PDF
PDF
PDF
PDF
What's hot
PDF
PPTX
PPTX
PDF
PDF
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash PDF
R入門(dplyrでデータ加工)-TokyoR42 KEY
PPTX
PDF
PPTX
KEY
PDF
Lisp batton - Common LISP PDF
これからの「言語」の話をしよう ―― 未来を生きるためのツール PDF
KEY
Enumerable な何か、あるいは怠惰なる反復 PDF
PDF
Livesense tech night immutable-js at a glance PDF
PDF
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜 PDF
Similar to すごいHaskell読書会#1 in 大阪
PDF
PDF
PDF
PDF
KEY
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜 PDF
PDF
PDF
ODP
PDF
KEY
Algebraic DP: 動的計画法を書きやすく PDF
PPT
PDF
ODP
PDF
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2) PPTX
Programming Haskell Chapter 11 切符番号選び PDF
PPTX
PPTX
すごいHaskell読書会#1 in 大阪
- 1.
- 2.
- 3.
- 4.
基本的なところ
だいたい想像通りです
+,-,*,/,div,mod
True ¦ False
not True # => False
True == False # => False
True /= False # => True
Selipnir + 3 # => ?
- 5.
実は...
今までのは全部関数呼び出しです
succ 5# => 6
max 9 10 # => 10
max (9 + 2) 10 # => 11
succ 9 * 10 # => 100
5 * 2 # => 10
9 `max` 10 # => 10
(*) 5 2 # => 10
- 6.
関数定義
関数名 引数 =処理
doubleUpMe x = x * 2
if 式
odd n = if n `mod` 2 == 1 then True else False
else は必須
- 7.
リスト
連結
[1, 2,3] ++ [4, 5, 6] # => [1, 2, 3, 4, 5, 6]
1:[2, 3, 4] # => [1, 2, 3, 4]
要素にアクセス
Haskell !! 3 # => k
ネスト
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
比較
- 8.
- 9.
- 10.
- 11.
- 12.
Range
[1, 2, 3,4, 5, 6, 7, 8, 9, 10] # => ugly!
[1..10] # => cool!
[ a .. z ] # => abcdefghijklmnopqrstuvwxyz
[2, 4..2 * 9] # => [2, 4, 6, 8, 10, 12, 14, 16, 18]
[1..] # => [1, 2, 3, 4, 5.....]
[2, 4..] # => 2の倍数の無限リスト
take 12 (cycle "hoge ") # => "hoge hoge ho"
take 3 (repeat 5) # => [5, 5, 5]
replicate 3 5 # => [5, 5, 5]
- 13.
リスト内包表記
[x * 2 ¦ x <- [1..10]]
[x * 2 ¦ x <- [1..10], x > 5]
ジェネレータ フィルタ
[1 ¦ _ <- [1, 2, 3], _ <- [4, 5, 6]]
[[x * 2 ¦ x <- xs] ¦ xs <- [[1,2,3], [4,5,6], [7,8,9]]]
- 14.
タプル
複数の違う型の要素をまとめて1つの値として使う
( Mountain Lion , 10.8)
違う型を入れられる
固定長
zip
zip [1, 2, 3] [4, 5, 6] # => [(1, 4), (2, 5), (3, 6)]
zip [1,2,3,4] (repeat "hoge") # => [(1,"hoge"),(2,"hoge"),
(3,"hoge"),(4,"hoge")]
- 15.
型
型宣言
zip ::[a] -> [b] -> [(a, b)]
型にあってないものはコンパイルできない
-> Haskell ではコンパイル時にすべての型が自明
型推論
コンパイラが予想して補完してくれてた
read 5 みたいなのは実行時まで推論できない
read 5 :: Int のように明示してやる
- 16.
- 17.
- 18.
- 19.
[today exercise1]
以下の関数を自分で定義してみる
null
sum
product
elem
python のスライスを実装する
ex) slice 2 5 [1..7] # => [3, 4, 5]
- 20.
[today exercise2]
フィボナッチ数列のn番目の数列を返す関数を作る
FizzBuzzの n 項目から m 項目までのリストを返す関数を作る
ex) fizzBuzz 50 100 # => 50番目から100番目までを返す
fizzBuzz :: Int -> Int -> [[Char]]
- 21.
[today exercise3]
3けたの整数のうち、次の条件を満たすものを「良い整数」とよぶこ
とにします。
条件:3けたの整数を2つの整数に分けてその和を考えると、常にも
との整数の約数になっている。
(例)330は3と30に分けても、33と0に分けても和が330の約数に
なっています。このため、330は「良い整数」となります。ですが、
702は7と02に分けた場合は約数になりますが、70と2に分けてしま
うと約数になりません。よって、702は「良い整数」ではありませ
ん。
一の位が0でない「良い整数」を4個求めなさい。