ok ... by using "newtype", we are constricting/constraining to a subset of CInt .. e.g. something like a "subtype" of CInt?? (where by "subtype", I mean like the notion of subtype in languages like Ada). For our audience, can you perhaps distinguish (in a typeful way) between the Haskell notion of "type", "newtype" and "data"? Or maybe let's distinguish between these notions not only in a typeful manner, but also in a historical motivation? .. ... motivations are always IMO very, very enlightening!
Regards, vasili On Mon, Oct 6, 2008 at 12:47 AM, Don Stewart <[EMAIL PROTECTED]> wrote: > Used wisely, newtype prevents accidentally constructing illegal values > of Signal type, by treating them as CInts. You can restrict the valid > values of the Signal type to be just those signals you define, not > arbitrary bit patterns that fit in a CInt. > > vigalchin: > > Thanks Don. Maybe both for me and others in order to take the fight to > the > > Klingons and other Baddies, please explain the "typefulness" > protection > > that "newtype" affords over the "Klingon " "type" ... In the code > that I > > contributed to the library, I like to think that I used "newtype" > > appropriately but not perhaps with full understanding. > > > > Thanks, Vasili > > > > On Mon, Oct 6, 2008 at 12:37 AM, Don Stewart <[EMAIL PROTECTED]> > wrote: > > > > vigalchin: > > > Hello, > > > > > > I am reading some extant Haskell code that uses Posix > > signals.... I am > > > confused by the motivation of the following ... > > > > > > type [1]Signal = [2]CInt > > > [3]nullSignal :: [4]Signal > > > [5]internalAbort :: [6]Signal > > > [7]sigABRT :: [8]CInt > > > [9]realTimeAlarm :: [10]Signal > > > [11]sigALRM :: [12]CInt > > > [13]busError :: [14]Signal > > > [15]sigBUS :: [16]CInt > > > > > > OK .. "type" is really just a synomym and doesn't invoke type > > checking > > > like "data" type declarations do .. so why don't we have all > the > > "CInts" > > > substituted by "Signal"? I.e. what did I miss? > > > > Looks like it should all be Signal, and probably should be using a > > newtype, to prevent funky tricks. The Posix layer is a bit crufty. > > -- Don > > > > References > > > > Visible links > > 1. mailto:[EMAIL PROTECTED] >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe