Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Haskell
Wiki community
Recent changes
Random page
HaskellWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
型
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==データの宣言== Haskellでは型を<code>data</code>宣言を通じて導入、または宣言します。一般的にデータ宣言はこのように行います。 data [context =>] type tv1 ... tvi = con1 c1t1 c1c2... c1tn | ... | conm cmt1 ... cmtq [deriving] まだHaskellをあまり理解していいない方にはおそらく説明になっていないかもしれません。 上の宣言の本質は、<hask>data</hask>キーワードを使って、付属的なコンテキストを与え、型の名前と多くの[[type variable]]を与えることにあります。 その後、多くの[[constructor]]が続きます。これらは[[type variable]]か[[type constant]]のリストになっています。最後に付属的に<code>deriving</code>が続きます。 他にも多くの微妙な事柄が必要です。たとえばデータコンストラクタに必要なパラメータは[[eager]]でなければならない、どんな[[Type class|class]]が[[deriving]]の中で許可されているか、コンストラクタ内の[[field]]名の使い方、[[context]]が実際になにをするのかなどです。これらについてはそれぞれの記事を参照してください。 いくつかの例を見てみましょう。Haskellの標準データ型[[Maybe]]は普通このように宣言されています。 <haskell> data Maybe a = Just a | Nothing </haskell> これは、'''Maybe'''型は''a''で表される1つの型変数を持っていて、'''Just'''と'''Nothing'''という2つの[[constructor]]を持っているということを意味しています。(Haskellでは型名とコンストラクタ名は大文字で始まらなければいけないことに注意してください) '''Just'''コンストラクタは1つのパラメータ"a"をとります。 他の例として、二分木 (binary [[Tree]])を考えてみましょう。このように表されます。 <haskell> data Tree a = Branch (Tree a) (Tree a) | Leaf a </haskell> ここで、'''Tree'''のコンストラクタの1つ'''Branch'''はコンストラクタのパラメータには2つのtreeを取る一方で、'''Leaf'''は型変数"a"だけを取ります。Haskellではこういった再帰型は非常によく使われる[[:Category:Idioms |patterns]]です。
Summary:
Please note that all contributions to HaskellWiki are considered to be released under simple permissive license (see
HaskellWiki:Copyrights
for details). If you don't want your writing to be edited mercilessly and redistributed at will, then don't submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!
Cancel
Editing help
(opens in new window)
Toggle limited content width