私はHaskellを初めて使いました。基本的なデータ型とコンストラクタを関数で見ています。私は以下のコードをやった関数を持つHaskellのデータ型とコンストラクタ?
:
data Name = Name String deriving (Show)
data Age = Age Int deriving (Show)
data Iq = Iq Int deriving (Show)
data Language = Language String deriving (Show)
data DataSubject = DSInformation Name Age Iq Language | DSConstruct {name :: String, age :: Int, iq :: Int, language :: String} deriving (Show)
makeDataSubject :: DataSubject -> DataSubject --Take in info and output a record
makeDataSubject (DSInformation (Name n) (Age a) (Iq i) (Language l)) = (DSConstruct {name = n, age = a, iq = i, language = l})
main = do
let x = makeDataSubject $ (DSInformation (Name "Ron") (Age 34) (Iq 100) (Language "French"))
putStrLn $ show x
ラン罰金、しかし、それは過度に冗長ようだ - どのように私はそれを改善するために作ることができますか?
(つまり、あなたのコンストラクタは、本質的に、入力のいくつかの再パッケージ以外の恒等関数であった。ある)多分これは一例ですが、あなたの 'DataSubject'タイプはなりません。私には非常に意味があります。 'DSInformation'と' DSConstruct'の違いは何ですか?同じタイプのコンストラクタはなぜですか? 'makeDataSubject'の代わりに' DSConstruct'だけで十分ではないのはなぜですか? – jberryman