私はあなたの目標が何であるかについての少し混乱している、しかし、のはビットで、このビットを通過し、多分私は右のポイントを打つだろうしましょう:
:t
はあなた伝えます変数のタイプ;あなたが渡したものを正確に返すだけなので、型に適用すると意味がありません。ここでエラーが:t
がパラメータとしてデータ値のいくつかの種類を期待していることを教えて注意してください:
Prelude> :t Maybe
<interactive>:1:1: Not in scope: data constructor `Maybe'
Prelude> :t (Maybe Integer)
<interactive>:1:2: Not in scope: data constructor `Maybe'
<interactive>:1:8: Not in scope: data constructor `Integer'
あなた部分のタイプを作成することができます
Prelude> type T = Maybe
Prelude> Just 5 :: T Integer
Just 5
type T a = Maybe a -- alternately, with explicit type parameters
Prelude> Just 'a' :: T Char
Just 'a'
が
あなたはがを作成することはできませんがパーシャルタイプのデータコンストラクタは、データを表さないためです。タイプにパラメータ化されていないMaybe
またはVector
の値はどのような値ですか?あなたはMaybe
値Nothing
を持つことができることを考えるように傾斜するかもしれないが、Nothing
は次のように入力されている:
Prelude> :t Nothing
Nothing :: Maybe a
Nothing
が任意のMaybe a
ことができるということでキーを、それはまだそれがNothing
だ知っているa
を必要とします。 (私に何かのガラスを取ってもらうのではなく、あなたが「私に一杯飲んだ」と言ったら、少なくとも私の思考が終わるまで、あなたは正当に遵守できません。
あなたは確かに部分的にそれらが適用されていたら、完全タイプを返します機能適用作成することができます。
Prelude> let f = Just :: a -> T a
Prelude> f 5
Just 5
Prelude> :t f 'a'
f 'a' :: T Char
[このページ](https://webcache.googleusercontent.com/search?q=cache:3GDV7F446NMJ:www.haskell.org/pipermail/haskell-cafe/2013-May/108350.html+&cd= 1&hl = en&ct = clnk&gl = us)が役に立つかもしれません。 –
タイプ 'T1'には値が含まれていないので、そのための'コンストラクタ 'を作成することはできません。 – augustss
FYIでは、 "型の型"はghciで ':kind T1'を実行することで得ることができる* kind *と呼ばれます。 – Wes