少し前に Twitter で画像を発見して、めちゃめちゃ欲しかった本が届きました。
その名も「魔力Haskell (magic haskell)」です!!!
名前が強そうだし、表紙もカッコ良いのですぐに購入を決めました。
しかし、写真を良く見てもらうとわかりますが、中国語なんです・・・。
たぶん辞書とか使ったら読めると思うので、その辺は良いのですが、日本国内で販売している書店がありません・・・。
Google で検索してもヒットするのは「天猫」や「淘宝網」ばかりで、eBay ならまだ英語が通じるので Google 翻訳などで何とかなるにしても、中国語でやりとりするとなると不安でしかありません・・・。
なので、もう少し探していると「Amazon」で売っていることがわかりました!しかし、「Amazon.jp」ではなく「Amazon.cn」ということで、日本のアカウントではログインすることができず、新たに「Amazon.cn」のアカウントを取得し、国際発送してもらうことにしました。
ちなみに、書籍の価格は定価79元 (Amazon だと 53元)でしたが (1元はだいたい16円~17円ぐらいなので、書籍代はとてもお安いです) 、それに対して国際発送の送料は110元・・・。
魔力Haskell もう2つ買えるんだけど・・・と思いながら安心・安全の Amazon を利用しました。ちなみに元も通貨の単位として¥を使うみたいで、(¥53.00) などと表記されていました。
3日程度でちゃんと届いたので、結果的には Amazon にして正解だったように思います。
届いた本の状態は
- 軽く表紙が曲がっている
- 軽く背表紙が曲がっている
- 書籍全体が湿気にやられた感じになっている
という感じで破れたりは無かったです!
書籍に関する個人的な感想としては、Haskell を学ぶ1冊目としてはオススメしないだろうと思います。立ち位置としては RWH のような感じですが、何かプロダクトを作るというものではなく、ライブラリの紹介 + 実例が豊富に載っています。特に、パッケージの紹介に関しては個人的にも納得できるラインナップでした。また、型レベル演算の話など比較的新しいトピックも入っているため、3冊目ぐらいに読むと良いのかもしれません。
最後に、まだ読んでないですが書籍の内容を軽く紹介して終わりにしたいと思います。
— Part 1
1章 Haskell の基礎
・Haskell の凄く簡単な説明
・Prelude でよく使う関数の紹介
・ghci
2章
・data
・パターンマッチ
・case
・@パターン
・exhaustiveness checking
・Bool, Maybe
・レコード構文
・レイアウトルール
3章
・リスト
・partial function と total function の説明
・lazy evaluation
・spine
・図でリストの構造を説明している点がわかりやすい
4章
・タプル
・型推論
・型関数
・カインド
・zipWith
・説明に js のコードがちょくちょく出てくる
・カリー化
5章
・ユニット
・$ と &
・λ関数
・関数合成
・where
・ガード式
・言語拡張: MultiWayIf
・point-free
・η-conversion
6章
・高階関数 (map, filter, foldl, foldr)
・integral
・scanl
7章
・型クラス
・言語拡張: InstanceSigs
・Show/Read
8章
・Ord クラス
・Enum クラス
・Bounded クラス
・Num クラス
9章
・type
・newtype
・bottom
・unlifted type, lifted type
・lazy evaluation, eager evaluation
・call-by-need, call-by-value
・表示的意味論と参照透明性
・:print, :sprint, :force
・seq, deepseq
・strict
10章
・モジュールについて
・cabal
・ghc-pkg
・haddock
・formal form, weak head normal form
— Part 2
11章
・Functor
・category
・Hask category
・Identity, Const
12章
・Lens (view, set, over)
13章
・Applicative
・liftA, liftA2, liftA3
14章
・Monoid
・Product, Sum
・Any, All
・Endo
・Dual
・ZipList
15章
・parser
・optparse-applicative
16章
・Monad
・do 記法
・when, unless, void
17章
・リスト内包表記
・MonadPlus
・sequence, sequence_
・mapM, mapM_
・replicateM, replicateM_
・forever
・filterM
・foldM, foldM_
18章
・Reader モナド
19章
・State モナド
・Random
20章
・IO モナド
・IORef
・forkIO
・ST
・unsafePerformIO
— Part 3
21章
・GHC 拡張
・TupleSections, LambdaCase, MultiWayIf, BinaryLiterals, BangPattern, NamedFieldPuns, RecordWildCards
・irrefutable pattern
・UNPACK, INLINE, INLINABLE, NOINLINE
・-o, -prof, -0x/0, -vx/v, -Wall, -Werror, -static, -threaded
・profile
22章
・Foldable
・Traversable
・Data.Coerce
23章
・計算量について
・array
24章
・モナド変換子
・ReaderT
・Identity, IdentityT
・StateT
・RandT
25章
・lift
・MonadIO
・MonadState, MonadReader
・type family
・Lazy StateT, Strict StateT
・Writer
26章
・bytestring
・text, utf8-string
・mono-traversable
27章
・wai/warp
・wai-extra
・WebSocket
・Socket
28章
・persistent
・esqueleto
29章
・Template Haskell
・Q モナド
・splice
・reify
30章
・並列, 平行について
・STM
31章
・Typeable
・Dynamic
・existential type
・type family
・data family
・GADT
・DataKinds
32章
・aeson
33章
・exception