8/25 (金) 19:00-20:30
今回は第9章の途中から。引き続き『型と型クラス』の学習です。静的片付け言語であるHaskellでは型と型クラスは非常に大事なところですのでじっくりいきます。
HaskellのclassやinstanceはJavaのクラスやインスタンスとは意味的に違うので最初はけっこう混乱しがちなのですが、「そういうもの」と割り切ってしまえば考え方それ自体が難しいわけではないので、比較的スムーズにアタマに入ってきます。せっかくなので、適当に型を作ってみました。
data Hoge = Hoge Int deriving Show
instance Enum Hoge where
toEnum n = Hoge n
fromEnum (Hoge n) = n
こうするとghciでHoge型のリストを簡単に作成できることが分かりました。「写経会」と銘打ちつつ本に載っていないコードをたたいている時間が結構あるな:)
$ ghci MyData3.hs
(プロンプトが表示されます)
*Main> [Hoge 0..Hoge 10]
[Hoge 0,Hoge 1,Hoge 2,Hoge 3,Hoge 4,Hoge 5,Hoge 6,Hoge 7,Hoge 8,Hoge
9,Hoge 10]
ついでにEnumクラスをちょっと覗いてみました。Haskellの型システムの美しさを再確認して、また一層Haskellが好きになりました。
ただ今回はnewtypeの使いどころというかうれしさみたいなもの今ひとつ理解することができませんでした。次回までの個人的な宿題にしたいと思います。
今回は第9章の途中から。引き続き『型と型クラス』の学習です。静的片付け言語であるHaskellでは型と型クラスは非常に大事なところですのでじっくりいきます。
HaskellのclassやinstanceはJavaのクラスやインスタンスとは意味的に違うので最初はけっこう混乱しがちなのですが、「そういうもの」と割り切ってしまえば考え方それ自体が難しいわけではないので、比較的スムーズにアタマに入ってきます。せっかくなので、適当に型を作ってみました。
data Hoge = Hoge Int deriving Show
instance Enum Hoge where
toEnum n = Hoge n
fromEnum (Hoge n) = n
こうするとghciでHoge型のリストを簡単に作成できることが分かりました。「写経会」と銘打ちつつ本に載っていないコードをたたいている時間が結構あるな:)
$ ghci MyData3.hs
(プロンプトが表示されます)
*Main> [Hoge 0..Hoge 10]
[Hoge 0,Hoge 1,Hoge 2,Hoge 3,Hoge 4,Hoge 5,Hoge 6,Hoge 7,Hoge 8,Hoge
9,Hoge 10]
ついでにEnumクラスをちょっと覗いてみました。Haskellの型システムの美しさを再確認して、また一層Haskellが好きになりました。
ただ今回はnewtypeの使いどころというかうれしさみたいなもの今ひとつ理解することができませんでした。次回までの個人的な宿題にしたいと思います。