カテゴリー
Haskell コンピューター (Computer) プログラミング (Programming)

代数的データ型

何やら訳も分からずに使っていた data という型ですが、これは代数的データ型 という特別な「型」なのだそうです

それを実現しているのは Preludeという Haskellの Interpreter/Compiler system GHCiに付属する標準的なライブラリー (この呼名で正しいのか知りません)のようです 何だかさっぱり分かりません つまり

data Human = Human String derived Show

というのは data型から発生したHumanを定義して、それはString型の変数を持ち、Showという性質を引きずる ということのようです

ものすごく曖昧な理解です とにかく難しい

カテゴリー
Haskell プログラミング (Programming)

助け舟に乗り、Haskellの川を少し上れました

ご指導のおかげでようやく正しいプログラムを書くことができました 書籍を詳細に読めば分かることも闇の中、霞の中をさまよう自分にとっては読んでも頭に入らず分かり無いままとなっていたのです

正しいプログラムは下記です

data Human = Human String deriving Show
data Dog = Dog deriving Show
data Cat = Cat deriving Show

class Greeting a where
    name :: a -> String
    hello :: a -> String
    hello _ = "..."
    bye :: a -> String
    bye _ = "..."

instance Greeting Human where
    name (Human n) = n
    hello h = "Hi, I am " ++ name h ++ "."
    bye _ = "See you soon."

instance Greeting Dog where
    name _ = "a dog"
    hello _ = "Whaon"

instance Greeting Cat where
    name _ = "a cat"
    hello _ = "Meow"

これによりエラーも無くなりましたし、正しく動作しました なんとなく理解できました