LoginSignup
1

More than 5 years have passed since last update.

PureScript by Example の 6.11, 6.12, 6.13 を読む

Last updated at Posted at 2016-12-23

この記事は (bouzuya) PureScript Advent Calendar 2016 の 23 日目。 (bouzuya) PureScript Advent Calendar 2016 は bouzuya の PureScript 学習の記録だ。

概要

PureScript by ExamplePureScript Language GuidePursuit を見ながら進めていく。

今日は 6.11, 6.12, 6.13 を読む。ソースコードの例は purescript-book の exercises/chapter6 にある。

※注意事項: 英語と日本語訳では大きな差異がある。0.10.x に対応している英語の側で進める。

この章のおさらい

この章では型クラス (type classes) を扱うらしい。

class / instance キーワードおよび型クラス Show / Eq / Ord / Field / Semigroup / Monoid / Foldable / Functor を見た。必要に応じて :: 演算子で型を指定する方法、関数への型注釈 (type annotation) やインスタンスの重複ができないことも見た。型クラスの型変数が 0 個の場合や複数個の場合を見た。型変数間の関係の記述についても見た。 PartialEither が例で出てきた。

Pursuit:

PureScript by Example 6.11

スーパークラス (superclass) 。型クラスに他の型クラスへの依存関係を設定できる。

例として EqOrdSemigroupMonoid が挙げられている。

class Eq a <= Ord a where
  compare :: a -> a -> Ordering

class Semigroup m <= Monoid m where
  mempty :: m

<= で書く感じ。

PureScript by Example 6.12

この章の実例。ハッシュのライブラリをつくる。

newtype HashCodeclass Hashable をつくって、 instance hashInt :: Hashable Int などをつくっている。特に面白いところはなさそう。

PureScript by Example 6.13

まとめ。型クラスの紹介だったね。

次回以降の TODO

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1