[Haskell-cafe] Layer on a layer of record syntax in the type synonym?

Ivan Lazar Miljenovic ivan.miljenovic at gmail.com
Fri Dec 21 14:42:44 CET 2012


On 22 December 2012 00:36, Christopher Howard
<christopher.howard at frigidcode.com> wrote:
> Using a simple type I gave earlier from my monadic type question...
>
> code:
> --------
> data Socket3 a b c = Socket3 a b c
>   deriving (Show)
> --------
>
> Is it possible somehow to layer on record syntax onto a synonym of the type?
>
> The idea would be something like this...
>
> code:
> --------
> type SpaceShip =
>   Socket3 { engine :: Last Engine
>           , hull :: Last Hull
>           , guns :: [Guns]
>           }
> --------
>
> ...purely for the convenience. But this doesn't seem to work with "type"
> as it assumes you are referring to already made constructors, and
> evidently "newtype" only allows use of a single record. I could wrap it
> in a normal "data" declaration but that would add an extra layer of
> complexity I think.

No, you can't suddenly add records in just for a type alias.  You
might be able to create lenses though for setters/getters, though if
you just want getters you can just write them yourself.

>
> --
> frigidcode.com
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>



-- 
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
http://IvanMiljenovic.wordpress.com



More information about the Haskell-Cafe mailing list