九日目
- 作者: Miran Lipovača,田中英行,村主崇行
- 出版社/メーカー: オーム社
- 発売日: 2012/05/23
- メディア: 単行本(ソフトカバー)
- 購入: 25人 クリック: 580回
- この商品を含むブログ (69件) を見る
YAPC会場の三角形の中にいます
第6章
モジュール、まあ要するに import 的なものでしょ
- 本当に
import
だった。 - Hackage 聞いたことある
6.1
- 出たHoogle...!
- とにかく便利だという噂を聞いた
- 一部だけのインポートとか
as
とか- モジュール名は大文字、関数は小文字からはじまる。
十日目
京都に18切符で帰る途中で。
6.2
- ghci の
:e
というコマンドを偶然発見した - いい感じにかけた。
nonyIndexNum :: (Eq a) => [a] -> [a] -> Int nonyIndexNum x y = length . filter (isPrefixOf x) $ tails y
putStrLn $map (chr.(+1).ord) "わたしたちはここにいます" => "ゐだじだぢばごごぬぅみず
ゾンビ感出てきていいと思う.
foldl
確かにリストとか処理したらオーバーフロー起こしそう- 起きなかった
- けどまあ言いたいことはわかる。
sum
とか不安foldl'
とは…- 隣の人からいつも
foldl'
を使えという電波を受け取った
- 隣の人からいつも
foldr (+) 0 . map digitToInt $ show 569
ってやったけどsum
でいいことに気づいた。合計40のはじめの数は
succ $ length . takeWhile (/=40) $ map (sum . map digitToInt . show) [1..]
ともとめてて、find
と比べたらリストいちいち作ってリソース食うかなあと言ってたら隣からそれは length
がある時点で数だけ数えてるから大丈夫という音波を受け取った。
6.3
- 連想リスト、javaだと
map
だからなあjava map
とかで調べるとHashMap
しか出てこないし
findKey
,snd $ find (\x -> fst x == "a") [("a", 1)]
では無理だったMaybe
型はまた別らしい。Maybe
型に足し算とかどうするんだろう
- このコードを書いていたら浜名湖通りすぎて見れなかったので悲しい
Map
あるのか。- 順序比較が必要。
Map.fromListWith
便利関数だ
6.4
- publicなものは先頭に書くけどprivateは書かないよって感じ。
- 階層したいならディレクトリで。
第七章
クラス!と思ったら型クラスだった
7.1
data
で取りうる値(コンストラクタ)を定義できる
7.2
:t Shape => <interactive>:1:1: Not in scope: data constructor \
Shape'`- まあ
Bool
もそうだし。 - 型クラスでこういうことやってもそりゃ無理そう。
- まあ
- その下の
area
で2つの型コンストラクタに関する処理を書いている Circle
は値コンストラクタなので、Circle -> Float
みたいにはできないCircle
はFloat -> Float -> Float -> Shape
deriving
はimplements
的なアレ?かと思ったけど勝手にやってくれるのか。便利- 関数っぽいなあと思ったらやっぱり関数だった
- データ型もエクスポートできる
- 関数のとこに型の名前をかく
- 括弧をつけなければ、値コンストラクタはエクスポートされない
- 隠蔽できる
- がパターンマッチもできなくなる