
I've made a new datatype data Visibility a = Hidden a | Shown a I want to create a type that's a list of hidden and visible integers. So something like this: type possiblyVisibleInts = [Visibility Int] The idea is that some of the ints will be hidden and some will be shown. But it doesn't work. Why not? This seemed even odder to me after poking around in ghci: :t [Just 5, Nothing] gives [Just 5, Nothing] :: Num a => [Maybe a] So clearly it's possible to have a list of a type that has 2 constructors--you're not restricted to having a list that only contains Just, for example. ghci is also OK with e.g. :t [Hidden 5, Shown 6] [Hidden 5, Shown 6] :: Num a => [Visibility a]

Works for me:
Prelude> data Vis a = Hidden a | Shown a
Prelude> :t [Hidden "foo", Shown "bar"]
[Hidden "foo", Shown "bar"] :: [Vis [Char]]
Prelude> type VisListInt = [Vis Int]
Prelude> let foo = (id :: VisListInt -> VisListInt)
Prelude> :t foo
foo :: VisListInt -> VisListInt
Prelude> :t foo [Hidden 2]
foo [Hidden 2] :: VisListInt
What error message are you seeing?
Cheers,
Alex
On Tue, 3 Nov 2015 at 14:24 Thomas Jakway
I've made a new datatype
data Visibility a = Hidden a | Shown a
I want to create a type that's a list of hidden and visible integers. So something like this:
type possiblyVisibleInts = [Visibility Int]
The idea is that some of the ints will be hidden and some will be shown.
But it doesn't work. Why not? This seemed even odder to me after poking around in ghci:
:t [Just 5, Nothing] gives [Just 5, Nothing] :: Num a => [Maybe a]
So clearly it's possible to have a list of a type that has 2 constructors--you're not restricted to having a list that only contains Just, for example.
ghci is also OK with e.g.
:t [Hidden 5, Shown 6] [Hidden 5, Shown 6] :: Num a => [Visibility a] _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners

Woops, thanks a ton! On 11/3/15 5:45 PM, Ozgur Akgun wrote:
On 3 November 2015 at 22:24, Thomas Jakway
mailto:tjakway@nyu.edu> wrote: type possiblyVisibleInts = [Visibility Int]
The case of the first letter is important: for type names, the first letter has to be capital.
Ozgur
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
participants (3)
-
Alex Hammel
-
Ozgur Akgun
-
Thomas Jakway